iPhoneアプリを作ってみるテスト
http://developer.apple.com/jp/iphone/program/
いきなり始めてみた。丸4日でなんとかOpenGLで立体をレンダリングできる所まで到達できた。割と良いペースなんじゃないか?(^^;
当初「全部Objective-Cで書くのか。先が思いやられるぜ。」と思っていたけど、実はObjective-Cが必須なのはGUIツールキット「Cocoa touch」を使う部分だけなのだ。それ以外、たとえば低レベル描画や音関係のAPI(「Core XXXX」と呼ばれるもの)は普通のC言語の関数で提供されているし、OSの基本サービスがUNIXシステムコールなのは言うまでもない。
Objective-Cのフレームワークで全てが賄えないのは、iPhoneが.NETやJavaの環境と決定的に異なる点だろう。例えば、Java用のOpenGLはJavaのクラスで提供されているが*1、iPhoneの場合はWin32やLinuxと同様にCのAPIだ。逆に言えば、カスタム描画がメインのアプリなら、ロジックのほとんどをC言語あるいはC++言語で書くことが可能なわけだ。
AppleはCocoa touch以外でGUIを作る事を推奨していないけど、GUI以外のロジックをObjective-Cでない言語で記述することに制限はない(と思う)。無理にフレームワーク化するより現実的で無難な落とし所とも思うし、それならCocoaもC++にしてくれよ、とも思うが、全く言語が選べないJava環境より実は間口が広いんじゃないだろうか?Intel Macがないと開発できない、という点を除けばね(笑)
それにしても、Objective-CはC言語ベースなのにC言語を否定したいのかと思わせる文法だよね(^^;。まぁ、慣れてくれば悪くないし、何よりネイティブでありながらメソッドの解決が動的に行われるのは非常に面白いと思うけどね。詳細は追ってないけど、どうやら内部的には「メソッド名」と「関数ポインタ」のペアを保持しているみたい。
実行コード=ネイティブだった時代に、柔軟性のあるGUIツールキットを実現するために設計された言語なのかもしれないね。もっとも、Xcode+Interface Builderの組み合わせはVisual Studio 6時代のMFC+リソースエディタのほうがマシというレベルで、RADとしてはDelphiやC++Builderに遠く及ばないんだけど。言語とツールキットの設計は悪くないだけに惜しい。
ところで、OpenGLってチャラく使えるのね〜。Direct3D(DirectX7時代ね)で悪戦苦闘した悪夢が嘘のようだ(笑)
*1:他に方法がないけどね(^^;