2013年8月4日日曜日

モバイルアプリケーションプラットフォームの勉強 (Understanding overview of mobile application platform)

自分の勉強の為に主要なモバイルアプリケーションプラットフォームの情報をまとめてみました。/ I have collected information of major mobile application platforms for my own understanding.

2013年8月現在存在する主要なモバイルアプリケーションプラットフォームは以下の8つです (リンク先は全てWikipedia) / Below is the 8 major mobile application platforms as of August, 2013 (all hyperlinks are linked to Wikipedia):
  1. Android (Google)
  2. iOS (Apple)
  3. BlackBerry (BlackBerry)
  4. Symbian (Accenture)
  5. Windows Phone/Windows Mobile (Microsoft)
  6. BREW/REX OS (Qualcomm)
  7. Tizen (Intel)

※上位5位の順序はIDCによる2012年通年の端末出荷台数シェアに基づく / The order of the first 5 items are based on the research by IDC on the share of shipped mobile handsets in 2012.

ここで、各プラットフォームを実行環境やアプリケーション開発という観点から比較してみましょう。 / Below is the comparison of these platforms from viewpoints of runtime environment, application development, etc.

各プラットフォームの比較
Name Android iOS Blackberry Symbian Windows Phone BREW Tizen
CPU architecture ARM (v5 or later), MIPS, x86 ARM Snapdragon (Based on ARM v7) ARM ARM ARM ARM, x86
OS kernel Linux kernel XNU kernel Java Virtual Machine (v7 or before) / UNIX kernel based on QNX (v10) Symbian OS kernel Windows CE (v7) / Windows NT (v8) REX OS kernel Linux kernel
Application type Java application (running on Dalvik VM) Native Objective-C application Java application (v7 or before) / Native C++ application Native Symbian C++ application C#, Visual Basic (running on either Silverlight or XNA Framework) Native C++ applicationHTML5, JavaScript (Web framework) / C, C++ (Native framework)
Development environment Android SDK (application) / Android NDK (runtime, library) iOS SDK (included in Xcode) BlackBerry Java SDK / BlackBerry Native SDK Symbian SDK Windows Phone SDK Brew MP SDK Taizen SDK
これを見ると、幾つかの共通点が分かります。 / Now we could see something in common.

  1. 動作CPUはARMが基本 / All of them works on ARM as CPU architecture
  2. OSカーネルはLinuxもしくはUNIXベースが多い (XNUがベースとするのはMachというUNIX, QNXは商用のリアルタイムUNIX) / Most of them runs on Linux or UNIX-based kernel (XNU is based on a UNIX called "Mach", and QNX is a commercial real-time UNIX)
  3. アプリケーションはJavaやXNAの様な中間言語アプリかC++やObjective-Cのようなオブジェクト指向言語で開発するネイティブアプリタイプが多い (中間言語アプリもJavaやC#はオブジェクト指向言語) / Application runs on an interpreter, i.e., Java, XNA, or runs as a native application written in an object-oriented language, i.e., C++, Objective-C (an object-oriented language is also used for the interpreter, i.e., Java, C#)

上記のプラットフォームがターゲットとするハードウェアは、スマートフォンやタブレットなどの比較的コンピューティングリソースが豊富な組み込み機器ですが、それにしてもARMが独占しているというのが面白いです。同じく組み込み機器で成功しているMIPSがAndroid以外のプラットフォームにサポートされていないのは何故なのでしょうか。Intel自身が開発に携わっているTaizenを除くとx86をサポートしているのはAndroidだけですが、これはx86が元々デスクトップPC向けに進化してきたアーキテクチャなので、ARMに比べて不利な点があるという事でしょうか。IntelのAtomはどこへ行ったのでしょう。

Linuxが多く使われているのは、オープンソースであり、かつ多くのプラットフォームに移植されてきた歴史がある、という点からでしょうか。コードサイズを削減して目的に特化したカーネルを生成したり、必要なデバイスドライバを追加したり、場合によってはカーネルの処理そのものを変更・削除したり、Linuxであれば低コストで柔軟に対応が出来そうです。今どきスクラッチからOSを開発する、等という事はよほどの理由が無い限りやらないのでしょうね。

オブジェクト指向言語が多く使われているというのは興味深いです。オブジェクト指向言語のランタイムは比較的リソースが豊かな環境に向いていて、組み込みではCなどよりシンプルな処理系を持つ言語が適していると思っていました。スマートフォンやタブレットはリソースが豊富で、コードを削減したり処理負荷を軽減するよりもアプリケーション開発時の生産性を上げる事の方が重要、という事でしょうか。

モバイルアプリケーションプラットフォームひとつ取っても、色々と興味深い点が多いです。時間がある時に追加で調べてみようかと思います。

0 件のコメント:

コメントを投稿