プログラマ行進曲第二章

主にソフトウェア関連の技術をネタにした記事を執筆するためのブログ

『iPhone SDKの教科書』学習日記 その2

今日も今日とて、大して書く事がないな〜なんて思いつつ、更新を致します。

本日は『iPhone SDKの教科書』を使ったiPhoneプログラミングの学習の第2回目です。

iPhone SDKの教科書―Cocoa Touchプログラミング、最初の一歩

iPhone SDKの教科書―Cocoa Touchプログラミング、最初の一歩

今回は前回と違い、ほとんど学習が進まず、p211からp226間でしか進みませんでした。しかもコンパイルエラーが出て、しかも原因が分からず立ち往生!

何がミスしているのか自分でもよくわかっていなく未だに原因不明なので、ここにソースコードでもコピペしてみて、明日冷静な頭になってから見直す事にしようと思います。

SmashViewController.h

#import <UIKit/UIKit.h>

@interface SmashViewController : UIViewController {
	IBOutlet UIButton *target; // 目標(UFO)
}

- (IBAction)smash; // UFOがタッチされた時
- (void)move:(NSTimer *)timer; // タイマーから呼び出される

@end

SmashViewController.m

#import "SmashViewController.h"

@implementation SmashViewController



/*
// The designated initializer. Override to perform setup that is required before the view is loaded.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
        // Custom initialization
    }
    return self;
}
*/

/*
// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView {
}
*/



// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
// ビューの読み込みが完了したときに呼び出されるメソッド
- (void)viewDidLoad {
    [super viewDidLoad];
	
	// 乱数の初期化
	srand(time(NULL));
	
	// タイマーの作成(動作開始)
	[NSTimer scheduledTimerWithTimeInterval:0.5 // 時間間隔(秒)
				         target:self // 呼び出すオブジェクト
				       selector:@selector(move:) // 呼び出すメソッド
                                       userInfo:nil // ユーザ利用の情報オブジェクト
                                        repeats:YES]; // 繰り返し
}

- (void)move:(NSTimer *)timer {
	// タイマー動作時の処理
	
	// UFOを移動
	int x = rand() % 320;
	int y = rand() % 480;
	target.center = CGPointMake(x, y);
}

/*
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
*/


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning]; // Releases the view if it doesn't have a superview
    // Release anything that's not essential, such as cached data
}


- (void)dealloc {
    [super dealloc];
}

@end

SmashViewController.mファイル内の

	[NSTimer scheduledTimerWithTimeInterval:0.5 // 時間間隔(秒)
				         target:self // 呼び出すオブジェクト
				       selector:@selector(move:) // 呼び出すメソッド
                                       userInfo:nil // ユーザ利用の情報オブジェクト
                                        repeats:YES]; // 繰り返し

のところ、より具体的には"@selector(move:)"のところでエラーが出ているんですよね。

まあ、クールダウンしたらエラー原因を解いてみて、進んでみようという感じです。

『iPhone SDKの教科書』学習日記 その1

今日はアルバイトの書類提出やら色々と社会生活復帰に向けて動いていた関係で(何もないときと比べて)あまり自由な時間がない中、以前軽く紹介した『iPhone SDKの教科書』を使ってiPhoneアプリ開発の学習をしました。

iPhone SDKの教科書―Cocoa Touchプログラミング、最初の一歩

iPhone SDKの教科書―Cocoa Touchプログラミング、最初の一歩

この本を読んだのは2日くらい前からで、今日でp211(※全p375)まで読み終わり、その範囲で課題になっているアプリケーションを自分で実装しました。と言っても最初の方は流し読みですので、それほど大変ではなかったかなというのが正直な印象です。

今日学習してきた事の中で何となく気づいた事でもメモしておきます。

【本日の学習成果】

  • アプリを開発するときは「小さくても良いから完結したアプリを作ること」を優先する方が良い。少なくとも、経験の浅い個人レベルではそうした方が良いというのが私の考え。
  • アプリ開発には「アプリ開発に関する技術力」ももちろん大切だが、それと同じくらいに「どんなアプリを作るかという青写真がどれだけはっきりとしているか?」という点もかなり重要である。

iPhoneアプリ、作ってやるぜ!(と息巻く)

いつもの如く散歩して、本屋に立ち寄り、こんな本を買って、「さあ、またプログラミングをしてやるぜ!」と息巻いています。この状態もいつまで続くでしょうか? 本人も謎です。

iPhone SDKの教科書―Cocoa Touchプログラミング、最初の一歩

iPhone SDKの教科書―Cocoa Touchプログラミング、最初の一歩

何となく今まで出版されていたiPhoneプログラミングの書籍と違い、「iPhoneプログラミングの仕方を教える」というよりも「イメージしているiPhoneアプリをどうやって形にするか?」というところを重視しているような気がして、今の自分が求めているものに近いかな〜って思って衝動買いしてしまいましたよ。

飽きるまで、ちょっとアプリ開発に挑戦してみようと思います。

『ソーシャルラーニング新時代「ネット動画で学ぶ最適な方法」+nobi-taroトークセッション』レポート <MCお勧めiPhoneアプリ紹介もあるよ>

今日はアップルストア銀座で『ソーシャルラーニング新時代「ネット動画で学ぶ最適な方法」+nobi-taroトークセッション』というイベントがあったので、それに参加してきました。今日のブログの更新はそのイベントのレポートにしようと思います。ただ、イベント中は聞いているのに集中していて、あまりメモも取れなかったため、細かいレポートは出来ませんので、ご了承ください。

このイベントは主に前半と後半で内容が分かれるという構成で、前半はキャスタリア株式会社が「ネット動画で学ぶ最適な方法」というテーマで同社の提供するサービスを紹介するという内容、後半は人気ポッドキャストの「nobi-taro podcast/TALKSHOW」のトークセッションという内容でした。前半は知らない話しだったので興味を持って聞けたし、後半はいつも聞いている(といっても最近から聞き始めたのですが)podcastのお二人が目の前で実際に話しをしていたので、それだけでも面白かったですね〜。

キャスタリアが描く次世代の教育

<映像に情報を付与する"fusen">

今回のイベントの前半、キャスタリア株式会社のお話は「Podcastを利用したソーシャルラーニング」として同社が提供するサービスの「Castalia」の紹介でした(簡単に言うと)。

イベント前半はキャスタリア株式会社の代表取締役の山脇智志さんがメインMC、同じく取締役の松村太郎さんがサブMC(というのかな?)を務め、「Castalia」を含めた次世代の教育の方法として有効と思われる「Podcastを利用したソーシャルラーニング」の話しを色々とされたのですが、細かい話しは「メモを取りきれなかった」&「理解できなかった」ため、簡単に内容をまとめると…

  • Googleに代表される現在の検索では、「適切なキーワードを知らないと求める情報を得るのが難しい」という問題がある。
  • 特に「映像のようなものから有意義な情報を引き出す(検索する)」のは、もともとある程度情報を知っている人でないと、かなり難しい。
  • このような問題を解消するために"fusen"というシステム(サービス)を作った。
  • "fusen"は映像などのコンテンツから情報を得るためのもので、「動画などにも付けられるタグ」のようなものである。現在、東邦チタニウム株式会社さんが「動画で示された作業工程の問題点を社員で議論し、情報共有する」などの目的で"fusen"を利用している。
  • この"fusen"が「Castalia」などのサービス上で展開されることで、今まで自分が欲しいと思った情報などにアクセスしやすくなると同時に、ユーザー同士が作り出す情報共有も可能となる。

…自分で書いていてよく分からなくなってしまいましたが、私が考えるに、「Googleのようなキーワード検索の限界を超えた情報共有や教育の仕組みを"fusen"というシステムで形にしていこう」という内容だと思います。ある意味、連想検索エンジンの想−IMAGINE Book Searchとか新書マップみたいに、従来の検索エンジンでは不可能だった枠組み作りをしていると言ったところでしょうか。

これ以上はちゃんと理解していなくて書けないので、「もっと知りたい!」という方は実際にCastaliaを体験してみるといいんじゃないかなと思います。

nobi-taro podcastトークセッション

<松村太郎さんと林信行さんお勧めのiPhoneアプリ+ α >

なんかとっても釣り要素満点な小見出しですが(笑)、単にあまりメモが取れなかったので、覚えていることが少なくてこうなっただけです。一応簡単に内容をまとめます。

  • 海外ではTwitterで#tag(ハッシュタグ)をつけることが流行っている。何故かというと、#tagをつけることでタグを付けた情報を検索することが可能になり、それと同時にTwitter上で旬な話題を瞬時に共有することが出来るようになったから。この#tagで会議などでもインタラクティブなやり取りや一体感が生まれる事例も出てきた。
  • iPhoneの展開も多様になってきている。(例:エンタープライズ分野でiPhoneを1000台導入したベリングポイント日本法人など)
  • 事前に#tagで集めた質問などに答える。(「次期iPhoneの噂について」とか…すいません、後は忘れてしまいました…難しくて…)
  • 松村太郎さんと林信行さんお勧めのiPhoneアプリの紹介。

軽くまとめましたが、後半の内容は特にメモを取るよりも聞くことに集中していたため、正確さが結構欠けていると思います。何か間違えているところがありましたら、コメントで指摘お願い致します(前半の内容もですけど)。かなりメモし忘れた部分もありますので、内容をちゃんと知りたい方は後日配信されるであろう「nobi-taro podcast/TALKSHOW」をチェックするといいと思いますよ。

最後に、会場で松村太郎さんと林信行さんが「これいいですよ」と話しの端々で言っていたiPhoneアプリを紹介してみたいと思います。

事前に言い訳しておきます。私はiPhoneiPod touchも持っていないので、記述が不正確な可能性が高いです。ご注意を。

  • StageHand
    • 林信行さんお勧め。Keynoteを遠隔操作するアプリ。公式のRemote(であってますか?)と違い、途中のスライドを飛ばしたり、一番最初のスライドにすぐに戻れたりできるので、時間調整しやすいのが魅力とのこと。林さんはよくKeynoteを使ってプレゼンをするらしく、重宝しているとおっしゃってました。
  • iTalk Recorder
    • これも林信行さんお勧め。Griffin Technology社が提供する録音用アプリです。ICレコーダーみたいなものですね。林さんのお勧めポイントは「クイック録音機能」とのことで、「ボタンを押した瞬間から録音が始められる」ため、取材ですぐに録音したいときに役立っているそうです。(余談ですが、私もこれ、欲しいんですよね。ICレコーダーにもなれるところは魅力です)
  • Summizer
    • iPhoneTwitter検索アプリ。林信行さんお勧め。林さんはTwitter関連アプリを6つほど(!)入れているらしく、これもその一つだそうです。Twitter上のホットな話題を調べられるのが魅力だとか。
  • Brightkite
    • こちらは松村太郎さんお勧め。位置情報対応のSNSサービスのiPhoneアプリみたいです。お勧めポイントなどは(確か)特におっしゃってなかったのですが、キャスタリア株式会社の"fusen"と同じく、写真と位置情報を合わせることで新たな楽しみが出来ると同時に情報共有が面白い、というところなのでしょうかね。
  • ウェザーニュース タッチ
    • これも松村太郎さんお勧め。というか、松村太郎さんが「天気」が好きだから、らしいです(笑)。何でも、天気図をいじっていると、森田さんのような気分になれるとかなんとか。
  • クレヨン・フィジックス Deluxe
    • これも松村太郎さんお勧め(のはず)。ゲームアプリ。面白いらしいです。詳しくは述べていなかったはずですが。でも、確かに面白そうな見た目だと思います。iPhone向きのゲームなんですかね。
  • AQUA FOREST
    • これも松村太郎さんお勧めです。ゲームアプリ。例により詳しくは述べていなかったので詳細は割愛。というか、ここまで紹介されたゲームって全てハドソン提供ですね。ハドソンはiPhoneのゲームを結構出しているそうですが、こういったところにその様子が垣間見えます。
  • 看板
    • これが+αの部分で、キャスタリア株式会社の山脇さんお勧めの(というか、会場で使っていた)アプリです。遠くからでも見えるテキストを表示するというアプリで、今回のイベントで山脇さんはイベント終わりに向けて「まとめて」とか松村太郎さんに指示を出していたりとかしていました(笑)

あと一つ会場で言っていたアプリがあったんですけど、ちょっと聞き逃してしまいました。誰か知っている方がレポートしているかもしれませんし、もしちゃんと聞いたという方がいらっしゃいましたら、コメント欄などで是非教えてくださ〜い(呼びかけ)。

かなり長くなってしまったレポートでしたが、今回は参加してみて本当に良かったと思います。特に"fusen"の取り組みは個人的に面白いな〜と感じたので、これから動向を見ていくつもりです。

おそらく他の場所でもレポートなりpodcastなりで情報を追えると思いますし、これから名古屋(3月12日)と大阪(3月13日)のアップルストアでも同様のイベントがあるとのことなので、興味がある方は寄ってみては如何でしょうか?

【編集後記】
…いやあ、かなり時間がかかった… 書くのに。 何といっても、iPhoneアプリのAppStoreへのリンクを貼付けるのに時間がかかりました。やりかたが分からないから、「ネットでリンクを探す」→「ソース表示」→「該当箇所をコピペ」(最後が一番時間がかかった)という作業は、はっきりいって面倒くさかったです。でも、今まで書いた中で一番まともなレポートになったと思うので、これでよしとします。