モバイルアプリケーション人気の高まりにつれ,数多くの人たちが,それぞれの環境での 開発経験の比較意見 を公表している。1年ほど前には,iPhone と Android の開発環境の詳細なレビューを David Green 氏が公開している が,John Blanco 氏も先週,この2つの環境を比較分析して発表した。両氏の意見は,言語に関しては一致している。
Java の採用は,Objective-C よりはるかに優れた選択です。プライベートメソッド,内部クラス,匿名クラス,ジェネリック,優れた機能構文,多方面にわたる大量のサードパーティコードなど,Java の利点には枚挙にいとまがありません。比較にならないほどです。
しかし Xcode と Eclipse については意見の相違がある。John は,
私は Eclipse をとても気に入っていました。ひとつの IDE をマスタすれば,何をするにも役に立つからです。しかし1年以上の間,Eclipse の使用から離れて [...] 戻ってきたら [...] 恐ろしいことになっていて [...] いったい何が起きたのでしょうか。Eclipse は肥大化して,のろまで,ちょっとしたエディタ修正 (XML や Java,Android マニフェストなど) などの操作にも数秒を要する,退屈でつまらないものになっていました。[...] これのせいで,Android の作業は *悲惨* な体験になっています。それに比べると,Xcode での作業は快適そのものです。しなやかで,超高速で,コード入力中には何らの遅延もありません。私は当然,Xcode を選択します。文句なく Xcode の勝ちです。
一方 Dave は,Eclipse のインクリメンタルコンパイラを,開発環境としての最大の利点と捉えている。Xcode のコンテントアシストは役に立たない上,開くウィンドウの数が多過ぎる,というのが氏の意見だ。
Xcode はあまりにひどくて,何から話を始めていいのか分からないくらいです。最低でもここにリストアップした点を修正しない限り,Xcode が IDE として存続することなどあり得ないでしょう。
それでも Dave は,iPhone の Interface Builder については評価している。
シミュレータの観点から見た場合,John は,iPhone のシミュレータに GPS や加速度計機能のエミュレーションが欠けている点にいくつかの制限を認めつつも,その正確さに感銘を受けている。
iPhone のシミュレーションに含まれないデバイス機能を問題と思ったことは,ほとんどありません。動作が高速な上,いつでもシャットダウン可能ですし,リセットや言語の変更など思いのままです。一方で Android のエミュレータは,私が体験した中で最悪のエミュレータです。何しろ BlackBerry のエミュレータ以下なのですから,どうしようもありません。アプリを実行しただけでエミュレータ上で動作しなくなり,すべて最初からやり直さなければならなくなったことも度々です。しかも恐ろしいほど遅いのです。ひとつの操作の表示に8秒かかったこともありました。先ほど述べた Eclipse の問題と関連しているのかも知れませんが,このような問題が iPhone 開発では *起こらない* ことには注目すべきでしょう。私の出会った Android 開発者も一様に,Android のエミュレータは使いものにならない,アプリケーションを直接デバイスで実行するようにしている,と言っています。
これに対して Dave は,フル機能のデバッガ,JUnit が利用できること,メモリプロファイルツールなど,10年に及ぶ Java 開発の絶え間ない発展の成果を,Android 開発環境の利点と見ている。
私が初めて Objective-C のソースを書いてから,この秋で 20 年になるが,その経験の素晴らしさゆえ,ペンシルバニア大学のコンピュータラボを長らく離れられなかったことを思い出す。それほどはるかな過去から Xcode が,今日とほとんど同じ形で (NeXTStep として) 利用可能だった というのは,多くの人々には想像しがたいことだろう。NeXTStep の基礎的要素である Interface Builder は,1985 年から開発に携わった Jean-Marie Hullot 氏と,CERN で Web の基礎を築いた NeXTStep の開発リーダ Tim Berners-Lee 氏の発案によるものだ。Jean-Marie の他に 初期の ORM ツール を開発した Jack Greenfield 氏などの人々が参加して,モデル駆動エンジニアリングの強固な基礎を築き上げた。このような革新的な過去を考えれば,Xcode が 2010 年の今日も存在することは驚きでもない。しかし現在も,時代に即した存在なのだろうか? 今でも先進的なのだろうか? 発展の余地はあるのか? Object-C に対する最近の機能追加は,今もなおそれを十分に現代的な言語であり続けさせているだろうか,あるいは Xcode は,より先進的なモデル駆動ツールに対して遅れを取っていて,今後デファクトとしての支持を急速に失う運命にあるのだろうか? MVC の将来性にも疑問は起こる。あるいは Android の目標と活動のコンセプトの方が優っているのだろうか?
読者はこれをどう捉えるだろう?