忍者ブログ

Home

Born Neet

[PR]

  • 2025-02-23 (Sun)
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

  • Comments (Close):
  • TrackBack (Close):

コストパフォーマンス良し。iPhone&iPod touchアプリを作ろう!

読んだ。
この内容で1500円は安い。
※ iPhone関連は部数が見込めるから安くできるのかなぁ…。

メモやお絵かき、ピアノアプリの他、実際にAppStoreで販売しているアプリ(簡易版)の説明もある。

ただ、前書きに書かれているほど初心者向けかというと、ちょっと疑問。
たしかにC言語から説明されているけど、サンプルアプリの説明はあっさりしており、
置いてかれるんじゃないかと思う。

むしろ何かしらのプログラミング経験がある人が、とりあえずobjcで動くアプリを作ってみるのにちょうど良い感じ。

僕としてはこの本を読んで非常によかった。
なぜなら今までおかしていた大きな勘違いに気づくことができたから。

それは、「@class」はヘッダファイルに、「#import」は実装ファイルに書くということ。

今まで、class名だけ使うものは「@class」、プロパティとかにアクセスする場合は「#import」で、どっちもヘッダファイルに書くものという訳の分からない思い込みをしてた。

なんの疑いもなくそうしてきたもんだから一瞬信じられなくて、詳解 Objective-C 2.0を読みなおしてみたら、やっぱり僕の勘違いだった。

今まで苦労してた相互に参照するケースもこれで解決するのか!?
今までの苦労はなんだったんだ…。

というわけで(?)値段のわりにはオススメです。

PR

電子書籍の作り方ハンドブック—iPhone、iPad、Kindle対応

こっちも読んだ。

photo
電子書籍の作り方ハンドブック―iPhone、iPad、Kindle対応
ジャムハウス
アスキー・メディアワークス 2010-09-01

by G-Tools , 2010/09/23

電子書籍関連の歴史とサービス紹介。
あとsigilの使い方。

電書(誰でも作れる電子書籍の影響でこう略すことにしてます)のことを何も知らない人がEPUBな本を作るなら参考になるかも。1500円とお手頃だし。

ただ電子書籍関連の本を読み漁ってる僕には正直物足りなかった。

あと、sigilの使い方を説明している人が(EPUBで使われる)XHTMLに詳しくないらしく、<br>と書いちゃったり、<font>使いまくったり、bodyのtext属性使ったり…とちょっといただけません。

iBooksが外部CSSを読めないらしい(知りませんでした…orz)のでHTML内に装飾を書くのは仕方ないとして、<style>の利用をオススメしてほしいものです。

というわけで、電子書籍の知識のsigilの使い方を軽く予習 or おさらいするのにはよいかも、本でした。

プレゼンのコツは、情熱と練習。スティーブ・ジョブズ 驚異のプレゼン

せっかく読んだ本の内容を忘れちゃわないように、感想をブログに書いておくことにした。(昔もちょっと書いてたけど)
というわけで第1段はこれ。

photo
スティーブ・ジョブズ 驚異のプレゼン―人々を惹きつける18の法則
カーマイン・ガロ 外村仁 解説
日経BP社 2010-07-15

by G-Tools , 2010/09/23

サブタイトルが「人々を惹きつける18の法則」となっていることもあり、
一見テクニック集かな、と思ったけど全然違った。

プレゼン本というよりは自己啓発本に近いかも、情熱プログラマーみたいな。

プレゼンに一番大事なのは “情熱” 、これは繰り返し述べられている。
ネタバレにならない程度に引用しておくと、

結局、自分が夢中になれないのなら他人が夢中になってくれるはずがないのだ。(P. 213)

聴衆に感銘を与えられるスピーカーになりたいが今の仕事がどうしても好きになれない場合、 仕事を変えることを考えるべきだ。(P. 218)

こんな感じ。
うん、いいこと言うね。2つめとか刺さる。
よせよ、痛いじゃないかね…。

もうひとつ、練習の大切さも強調されている。

聞き手に訴えるのはストーリーである。スライドではない。(P. 22)

ストーリーを語るのはスライドではない。あなたなのだ。(P. 40)

スライドに情報を詰め込んでいる暇があったら練習しろよ、と。

あとこれも当たり前だけど、簡潔さも大事。
ちゃんと理解している人はどんな難解なことでも簡単に説明できるはず。

2分の訓戒
リーダーは簡素化するのが仕事です。今後の方針を2分で説明できなければいけないのです。(P. 173)

『学ぶのに25年もかかったことを5分で教えられるわけがないでしょう』。もちろん、彼には程なくやめてもらったよ」(P. 220)

他にもいろいろといいことが書いてあり、得るものが多かったです。
上では引用するのは避けましたが、スライドを作る際気をつけるべきこと等、実践的なテクニックもちゃんと載っています。

いやぁ、売れている本だから期待してなかったけど、いい本でした。

最後に僕が一番気に入っているところを引用しておきます。
こんなにストレートに言われちゃ、次のプレゼン頑張るしかないですよね。
(強調は僕が付けました。)

ゲイツは難解だがジョブズは明快だ。ゲイツは抽象的だがジョブズは具体的だ。ゲイツは複雑だがジョブズは簡潔だ。
疑問に思う人もいるかも知れない。「ビル・ゲイツはジョブズほど簡潔なしゃべり方をしないかもしれない。でも、世界一の金持ちになった人物だ。それなりにきちんとしたことをしているのではないか。」と。
そのとおりだ。ゲイツはウィンドウズを発明した。世界のコンピューターの90%にインストールされているオペレーティングシステムを発明したのだ。
でもあなたはウィンドウズを発明していない。あれはゲイツだから許されるしゃべり方であり、あなたには許されない。
(P. 209-210)

Macでvsftpd

  • 2010-09-17 (Fri)
  • mac

iPhone/iPadアプリからFTPしたくて、どうすればいいのかなーと調べてたら、
「SimpleFTPSample」なるものをAppleが公開してあっさり解決した

…かと思ったら、僕のmac(10.6 snow leopard)にはFTPサーバがいなくてテストできないことが判明した。
そして自分自身にftpd関連の知識が欠落していることにも気づき愕然とした。

というわけで、macにvsftpd(※)を入れてみることにした。
※ ftpdのデファクトスタンダードが何かすらわかんなかったけど、
 Redhat系で標準な気がするvs(Very Secureの意味なんだ!)ftpdをチョイス。

参考

インストール

手抜きでmacports使います。

sudo port install vsftpd

設定

お次は設定です。sampleをコピーして変更します。

cd /opt/local/etc/ sudo cp -p vsftpd.conf.sample vsftpd.conf sudo vi vsftpd.conf # 匿名禁止 anonymous_enable=NO # ローカルユーザによるログイン・アップロードを許可 local_enable=YES write_enable=YES # asciiモード許可 ascii_upload_enable=YES ascii_download_enable=YES :wq

起動&テスト

sudo vsftpd ps -ef | grep ftp | grep -v grep ftp localhost Trying ::1... ftp: Can't connect to `::1': Connection refused Trying fe80::1%lo0... ftp: Can't connect to `fe80::1%lo0': Connection refused Trying 127.0.0.1... Connected to localhost. 220 (vsFTPd 2.2.2) Name (localhost:test): test 331 Please specify the password. Password: **** 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> bye

できました。

超適当ですがテスト用としては十分でしょう。
※ 必要な時にしか立ち上げないのでセキュリティ面もそんな気にしない感じで。

IB不使用&オープンソースなiPadアプリ(テキストエディタ)を作る 第8回:内蔵ブラウザとメール送信

第8回の今回は、編集中のファイルを
内蔵Webブラウザで表示&メール送信してみます。

当初予定していた目次からどんどん離れていきますが、
まぁいいでしょう。

今回の内容は非常に簡単なのでサクっといきます。

[参考]

基本的には、参考文献(第1回参照)だけで十分でしたが、
1点だけ、Stack Overflowにお世話になりました。
UISegmentedControlをToolbarに入れる時は、UIBarButtonItemでWrapしないといけないんですね…。

[素材]

引き続き、Soft * Accessory様の素材をお借りしています。

1. Webブラウザ

まずは内蔵ブラウザでのプレビュー機能。
UISegmentedControlでSource/Browserを選択して切り替えます。

というわけでやることは、DetailViewControllerのinitでボタンを追加して、
ブラウザを開くメソッドを作るだけです。


		// SegmentedControlの作成
		UISegmentedControl *segment = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Source", @"Browser", nil]];
		segment.segmentedControlStyle = UISegmentedControlStyleBar;
		segment.selectedSegmentIndex = 0;
		[segment addTarget:self action:@selector(segmentDidPush:) forControlEvents:UIControlEventValueChanged];

		// Toolbarに入れる為にUIBarButtonでWrap
		UIBarButtonItem *segmentButton = [[UIBarButtonItem alloc] initWithCustomView:segment];
		
		// Toolbarに設定
		NSArray *items = [NSArray arrayWithObjects:flexible, undoButton, redoButton, fixed, leftButton, rightButton, flexible, segmentButton, nil];
		[toolbar setItems:items];
		
		
// SegmentedControlが変化した時に呼ばれる		
- (void)segmentDidPush:(UISegmentedControl *)sender {
	
	// 0ならソース
	if (0 == sender.selectedSegmentIndex) {
		webView_.hidden = YES;
	}
	// 1ならブラウザ
	else if (1 == sender.selectedSegmentIndex) {
				
		[self saveContents];
		[self changeUrl];
		
		webView_.hidden = NO;
	}
	
}


// WebViewでファイルを開く
- (void)changeUrl {

	webViewReloaded = NO;
	
	[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
	
	// <meta charset="UTF-8" />しないと文字化けする
	NSURL *url = [NSURL fileURLWithPath:path_];
	NSURLRequest *req = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:60];
	[webView_ loadRequest:req];

}

これだけでWebViewでローカルファイルを開けます。簡単ですね。
(UIWebViewDelegateを実装して、読み込み完了後にIndicatorを非表示にしてますが、割愛します。)

2. メール送信

次はメール送信、こちらはWebViewでの表示以上に簡単です。
MessageUIフレームワークをimportして、MFMailComposeViewControllerにメール処理をしてもらうだけです。

// DetailVIewController.h

#import <MessageUI/MessageUI.h>

@interface DetailViewController : UIViewController <UIPopoverControllerDelegate, UISplitViewControllerDelegate, UIWebViewDelegate, MFMailComposeViewControllerDelegate> {
// DetailVIewController.m

		// メールボタン追加
		UIBarButtonItem *mailButton  = [[UIBarButtonItem alloc] initWithTitle:@"Mail" style:UIBarButtonItemStyleBordered target:self action:@selector(mailDidPush)];

		NSArray *items = [NSArray arrayWithObjects:flexible, undoButton, redoButton, fixed, leftButton, rightButton, flexible, segmentButton, fixed, mailButton, nil];
		[toolbar setItems:items];

// メールボタンから呼ばれる
- (void)mailDidPush {
	
	if ([MFMailComposeViewController canSendMail]) {
		MFMailComposeViewController *mailViewController = [[MFMailComposeViewController alloc] init];

		// delegateじゃなくmailComposeDelegate
		// delegateにするとUINavigationViewControllerDelegateを実装してないって怒られる
		mailViewController.mailComposeDelegate = self;

		// 本文&添付
		NSData *data = [NSData dataWithContentsOfFile:path_];
		[mailViewController setSubject:[path_ lastPathComponent]];
		[mailViewController setMessageBody:textView_.text isHTML:NO];
		// とりあえず全部plain textとして扱っちゃう
		[mailViewController addAttachmentData:data mimeType:@"text/plain" fileName:[path_ lastPathComponent]];
		
		[self presentModalViewController:mailViewController animated:YES];
	}
}

//  処理が終わったら非表示にする
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error {
	[controller dismissModalViewControllerAnimated:YES];
}

[完成]

いい感じです。
内蔵ブラウザ
メール送信

[まとめ]

いかがだったでしょうか?
だいぶ見栄えもよくなってきたのでは、と自画自賛しています。

まだ細かいバグが残ってるので、
その辺りを調整してリリース申請してみようかと思います。

それでは、次回もご期待下さい。

[コード]

今回のコードは「Edhita8.zip」に入っています。
GitHubのdownloadページからダウンロードして下さい。

Downloads for tnantoka's Edhita - GitHub

Home

Search
Loading
Feeds
Links
スポンサードリンク

Page Top