hishidaの開発blog

EBシリーズ(EBPocket,EBWin,EBMac,EBStudio),KWIC Finder,xdoc2txt,読書尚友の開発者ブログ

EBPocket iPhone

MacBookを購入してはや1ヶ月。
Cocoaに慣れるためと、VisualStudioで開発してきたソフトがそもそも移植できるかどうかの検証のために、はじめは小さなアプリケーションから移植してみることにした。EBWinに添付しているEPWING辞書圧縮ユーティリティのEBShrinkを移植して、だいたい移植のこつがつかめた。その結果わかったことは...

  • Cocoa統合開発環境なので、特にObjective-C専用の環境ではない。C++Rubyでの開発も可能。
  • CocoaObjective-Cは、ファイルの拡張子を .m から .mm にするだけで、C++のクラスを混在したコーディングが可能である。Objective-C++という変態言語!
  • EB SeriesのC++のソースは、MFCの環境依存の部分を取り除けば、拡張子も .cpp のままでコンパイルできる。そしてObjevtive-CからC++のクラスを使用することができる(拡張子を.mm にするのを忘れずに)。作業の内容的には、gccへの移植、またはPOSIXへの移植と考えていい。というわけでEPWINGの検索に絡む下位ルーチンは予想以上に早く移植が終わった。もしすべてObjective-Cで書き直しが必要だったら、あまりに大変で投げ出してしまったと思う。もちろん、UIにからむ上位構造はまったく新しく作ることになる。
  • MacOSのAppKitとiPhoneのUIKitは、似て非なるものである。WindowsMFCとWindowsMobileのMFCはサブセットの関係だったが、UIKitはAppKitのサブセットではない。Mac OSiPhone用のソフトをリリースしたければ、それぞれ開発する必要がある。
  • ファイル名のエンコーディングUTF-8である。C/C++のプログラムでは、charのまま扱っても大丈夫。CocoaのFoundation KitのNSStringはMFCのCStringにあたる便利なクラスだが、内部エンコーディングUnicode。だが豊富な変換関数があるので、特に苦労しない。
  • MFCよりもModel-View-Controllerのきり分けが厳密で、設計がきれいだ。MFCだと、本のサンプルでもViewの部分にほとんどの処理を書いてたりする。ViewはInterFace Builderで開発するが、これは感激もので、VisualStudioやEclipseに比べて段違いに優れている。(もっとも最近のWPFやシルバーライトは使ったことがないが)
  • 言語としてのObjective-Cは、[ ] 内はSmalltalkだと思えば速やかに習得できる。だがデバッグが難しい。 C++のクラスのメソッドは静的バインディングだが、Objective-Cは動的バインディングで実行時にメソッドをサーチするので、実行時にならないとバグがわからないことがある。またメモリ管理の自動解放がないので、オブジェクトの生存期間に非常に気を使う。なおかつメモリリークしやすい。
  • 開発に参考になる書籍は非常に少ない。AppleがWebで公開しているチュートリアルから入るのが早道だと思う。その後、サンプルを動かしながら理解していく感じ。みんな苦労しているみたい。

やっとiPhoneシミュレータで検索と表示ができるようになった。

目標としては今年第1四半期中にだいたいの開発をすまし、ベータテスターを募集してテストする予定。そして安定したら、Apple Store に登録を試みるつもり。
基本機能にしぼったフリー版と、フル機能の有料版を出す予定。価格はWindowsMobileのEBPocket Professionalよりは、少し高くなると思う。なにしろAppleの取り分が30%なので。(Vectorは15%)。

MacBookCocoaが添付されることと性能を考えると、かなりお買い得な機械だと思う。NeXT Step由来の最新の開発環境を買ったら、Unix互換OS(Mac OS X)と、WindowsとマルチブートできるPC互換機(MacBook本体)がついてくる感じ。惜しむらくはあと少し軽ければ...。