(c) ウジロー|写真素材 PIXTA
iPhone開発者座談会ログ。デブサミ2009 への反応がすごくて戸惑っていますが、
荻原剛志教授の実例で学ぶ Objective-C 2.0 と GUI の関係~ iPhone アプリ開発を視野に入れてのメモもそれなりにまとめたので公開します。
ただ、私がエンジニアではないので、途中理解できなかったところははぶき、理解がおかしいところもそのままにして公開していますので突っ込みをぜひよろしくお願いします。
プログラミング言語の歴史
95年から多くのプログラミング言語が生まれた。Windows95の影響。
GUIの歴史
ゼロックスのAlt Computer→アップルのLisa→Macintosh→NeXTstep
アプリケーション記述にObjective-Cを導入していた。
荻原教授は大阪大学に300台導入させた人。1992年、世界最大のNext Computerのネットワークを作った。このころからObjective-Cを使って記述していた。表計算、グラフィックソフト、メーラー、ワードソフトなどなどがGUIの形で普通に動いていた。これはWindows95以前のこと
なんとなく参考:
スティーブジョブスの起業術:起業したばかりのNext Computerをどうたきつけたか! | AppBank
現在、Objective-CはOSX、iPhoneなどなど様々な場所で使用されている。
プログラミング言語としてのObejective-C
C言語にオブジェクト指向を取り入れた、概念や記法はSmallTalkの影響
C++
Cの中にC++を混ぜて書くことはできない。Cを学んでからC++を習得するのには結構かかる。Cを学ぶのと同じ労力以上とも言われる。
Objective-C
2.0から学ぶ量が大きくなったが、Cにオブジェクト指向を加えた程度。2.0が新機能として押しているものとして、ガベージコレクション(iPhoneは使えない)、宣言プロパティ、そして高速列挙が挙げられるが、ランタイムシステムが大幅に変更されているのが一番大きな変更点と言える。
ターゲットアクションパラダイム
オブジェクト同士を連携させるための基本概念。メッセージを送る相手をターゲット、送るメッセージをアクションと呼び、かつターゲットとメッセージ?の双方を動的に変更できる。
GUI制御には、Cocoaバインディングという方法もある。
メッセージを送る相手と送るメッセージの内容を動的に変更することができる。メッセージを送る相手が分からなくとも動的に動作させることができる。これにより、動的にリソースを扱うことができる。
実際のコード解説と作ったプログラムを動かしてみる
ターゲットアクションという概念にもとづいてどうアプリケーションを開発するか階層的なビューでマウスを処理する基本的なプログラム。ボタンをクリックすると色が変わる。別のボタンにも動作が波及する。といったもの。(後日談:何か作って説明してほしいということで、公演の二日前に作ったもの)
OSXのソフトウェアをiPhoneの上で実装際に注意すること
AppkitというクラスはiPhoneOSにおいてはUIkitとなる。微妙に異なる部分が多いので気をつけること。ヘッダーファイルの切り替えなどで対策。
他にも、NSRectをCGRectにするなど。
グラフィックなどのAPIではCore Foundationを使う場面が多い。
高速化が必要な部分はC言語でばかり記述することになる。