iOSとAndroidのアプリ開発について
2011-07-29 13:47
というわけでアプリ開発環境である。iOSはObjective-Cで直接作成し、Androidの場合はJava実行環境の上でJavaもどきで作成する。
これの優劣についてはいろいろな議論がある。それらを見ていくと、少なくともAndroidに関しては何らかのVirtual Machineを用いる選択肢しかなかったことを知る。
いや、もちろんAndoirdでもNativeで開発はできるだよ。でもGoogle自身がそれを推奨していない。一つその証拠を挙げよう。Javaのライセンス料に関して、GoogleとOracleの間で行われている裁判で以下のメールが「発掘」されたという。
"If Sun doesn't want to work with us, we have two options: 1) Abandon our work and adopt MSFT CLR VM and C# language - or - 2) Do Java anyway and defend our decision, perhaps making enemies along the way."
via: Old Google Emails About Java Brought Into Suit by Oracle - John Paczkowski - News - AllThingsD
SunがGoogleとやらない、というのであれば二つオプションがある。
1)C#を使うこと(C#用の仮想マシンの上で実行される)
2)とにかくJavaを使っちゃう。(将来敵が増えるだろうけど)
このメールは「いやー、まさかJavaのライセンスが必要とは思いませんでした」という「わざとじゃないんです」という言い訳に対する反証として挙げられたもの、ということだが。
ここでは「Sunが協力しない場合」の代替手段として、いずれも何らかの仮想マシンを必要とする案が挙げられていることに注意しよう。つまりGoogle自身、Android上でNativeによるアプリ開発は考えていない、ということである。
この「仮想マシン上でのアプリ開発」というのは、セキュリティを保つための一つの手段である。iPhone発表直後にはこんな観測もあった。
iPhoneの割り切りと次の一手 - 雑種路線でいこう から引用アプリケーションのダウンロードを認めないことも,同様に現時点では合理的な判断といえる.OS Xはサンドボックス機能を持つ仮想機械を組み込んでいないため,Appleが主張するように現時点でセキュリティを保つことが難しい.JavaやFlashなどを組み込む手もあるが,これらはiPhoneの新しい操作性に対応していない.いずれiPhoneに勝手アプリを載せられるようになるかも知れないが,優れたサンドボックス技術とiPhone的なユーザー体験のアプリケーションを,容易に構築できるライブラリを組み込んだ実行環境をOS Xで構築することが先決だ.
もし仮に私がAppleでiPhoneやiPodを担当していたら,まずiPodもiPhoneと同じOS Xベースに移行する.次にDashboard WidgetのAPIを複数の指での操作に対応できるよう拡張し,iPod/iPhoneでローカル実行できる勝手アプリの開発用に提供する.性能やAjax,Flashからの移植性を高めるために,ECMA ScriptのエンジンをAVM2ベースに差し替えるのも一案だ.
当初は「iPhone上のアプリ開発はWeb2.0で」とかなんとかいっていたAppleだが、その後本当にObjective-Cでの開発を認めた。正直これには驚いた。それまで携帯端末上でのアプリ開発は仮想マシン上のものばかりだったからだ。もちろんauではKCP+の上で開発が可能だけど、KCP+上での開発の「閉鎖性」はAppleの比ではない。というか、開発を断念させるため、あらゆる手段を尽くしているとしか思えない。
----
といわけで今日の結論。現在のiOS上でのアプリ開発環境は実は結構驚くべきものなんじゃないか、ということ。少なくとも私はとても驚いた。