2012年の私とモバイルプラットホーム

皆様、今年もよろしくお願いいたします。

毎年書いている今年の抱負ですが、今年もモバイルプラットホームとそのサービスを中心に私の活動を進めていく予定です。

以下、私見ですがここまでの各プラットホームの印象と今後の関わり方をまとめました。

Android

Androidは昨年も躍進を続け、スマートフォンでは第1位のシェアを獲得するに至りました。
毎年恒例となったプラットホームの最新版とそのリファレンスデバイスも発表されましたが、今回はなんと日本のキャリア(docomo)からの発売という驚きもありました。

順風満帆に見えるAndroidですが、新たな訴訟の数々、セキュリティインシデントの発生、幾つかのメーカの撤退、日本メーカの苦戦等、利益を享受しているのはGoogleだけではないかとも言われており、急速に発展してきたツケとしての綻びが目立つようにもなってきました。

アプリケーションはOracleのではなくオープンソース実装のJava言語により書かれ、独自の"Dalvik"と呼ばれる仮想マシン上で動作します。開発環境に恐らく世界で一番使われているであろう"Eclipse"を使っていることも手伝い、この二年で爆発的に開発者人口を増やしました。

MVCの概念にあまり拘らず、ActivityとViewという分かり易い構成でアプリケーションを書けるのでJavaプログラマの参入障壁も低いのですが、画面レイアウトを書く方法が独自で昨今のGUIデザイナを使った設計に比べると面倒なので、本格的なアプリケーションを書くにはある程度の修行が必要です。 そのセキュリティの脆弱性に関する風評も手伝って、企業での採用では苦戦することが目立つのが残念です。

私の仕事的にはAndroidは一段落付いたので、今年は少し距離を置くつもりです。

Windows Phone 7

過去の反省をフィードバックした強固なOSとシンプルなMetro UIを持つ、それまでのWindows Mobile路線とは一線を画したプラットホームです。

定評のある開発環境(Visual Studio, Expression Blend)と使いやすい過去の資産(Silverlight/WPF/Xna)を利用したプログラミング環境は取っつきやすく、アプリケーションを作るのが非常に快適です。

特にSilverLight(+Expression Blend)をベースにしたMVVMベースの設計はコード量を抑えることが出来、同じ機能を持つアプリを、互いのエキスパートが開発したならば、Androidの2/3〜1/2の工数で作れるのではないかと思わせます。

私はこのプラットホームは仕事に使うには一番のプラットホームだと評価しています、がしかし、悲しいかな未だシェアが低く、デバイスもプラットホームにより規定されており新しさが感じらないこともあり、現在はまだブレークしているとは言い難い状態です。

欧米ではNokiaの投資により良い端末(Lumiaシリーズ)が出て来たこともあり期待されていますが、日本はそのNokiaが撤退して久しく、当分はこのままでしょう。

去年、暫くこのプラットホームを追い続けましたが、他のプラットホームとの兼ね合いで一旦中断しています。しかし、完全に止めた訳では無く、やりたいことを途中で止めていることもあるので、また続きを始めたいと考えています。(逆に言うと手馴れた言語とプラットホームなので何時でも再開できると考えています)

iOS (iPhone/iPad)

言わずと知れたApple社のモバイルデバイス向けプラットホームです。 
スマートフォンとしてのシェアのNo1はAndroidに取って代わられましたが、iOSデバイス(タブレット、DAP、etc)という括りであれば、Androidも敵わないシェアがあるのは想像に難くありません。また、このプラットホームはMac同様にハードウェアソフトウェァのデザイン性が非常に高く、昔から根強いファンが付いているのも特徴です。

私が唯一経験の無いその開発プラットホームは、一部Mac OS Xの基本的なフレームワークを引き継ぎつつ独自のUIフレームワークを新規に追加したもので、Mac専用※の開発言語である"Objective-C"と、同じく専用の開発環境"Xcode"を使います。

Objective-CC言語を本格的なオブジェクト指向での設計、実装で使えるようにBrad Coxらが拡張した言語ですが、MVC概念を強力に推し進めるその思想が他のプラットホームに比べて敷居が高いのと変態な言語仕様の好き嫌いから、Macを使っているのにも関わらずiOSでの開発を行わないプログラマも多数いるようです。

私はiOSどころかMacOS X、ひいてはMacの使用経験すら無いので、選択と集中の観点からこのプラットホームでの開発は避けていたのですが、Androidに次ぐ(実質的には一位)シェアのプラットホームを無視する訳にはいかず、ゼロからの開始はリスクがあるのも分かっていながら腰を据えて取り組むことにしました。


え? HTML5はどうすんの? という声が聞こえてきますが、それはそれでiOS上での開発を一通りやった上でまた考えようかと。一度に複数のことはできないのです。



コンパイラオープンソースに寄贈されており、GNUStepと呼ばれるプラットホームも存在するが、それでiOSデバイスの開発が出来る訳ではない。