ホーム > タグ > Android

Android

iPhoneとAndroid、エンジニア的に比べてみた

iPhoneとAndroid、エンジニア的に比べてみた

現在、iPhone 3GSを利用しているが以前はHT-03A、俗に言うGoogleケータイを利用していたことがある。ハードウェアスペックが足らず、のちにモッサロイドと呼ばれるほどトロい動作のため、iPhoneに乗り換えてしまった。日本初のAndroid携帯だったにもかかわらずまったく売れず、あたかもXperiaが初めてのAndroidのような扱い。
実は、HT-03AもXperiaもソフトウェア的にはほとんど一緒で、ハードウェアスペックがかなりあがって、ソニー独自のアプリがインストールされているだけだ。

iPhoneとXperia(Android)を比べる記事はよくあるのだが、今回は、
あまり書かれていない、よりエンジニア的な比べ方をしてみようと思う。

iPhoneとAndroidの比較表
iPhone Android
デスクトップの機能 ランチャー ランチャー
通知領域
ウィジェット
実装できる機能 基本的に通常のアプリのみ 通常のアプリの他、
サービス(デーモン)、ホーム画面、ウィジェット、IME、
がんばればOS自体
マルチタスク iPhone OS 4.0 からサポート サポート済み
ハードウェアボタン ホームボタン ホームボタン
メニューボタン
戻るボタン
開発環境 Xcode eclipse
開発言語 objective-c java

デスクトップの機能

 まず、デスクトップ(と呼んでいいのか分からないが)の機能だが、iPhoneはいわゆるアプリランチャーとしての機能しか無い。あえていうなら、アイコンの上に書かれる数字で未読数等を知らせるのみだ。iPhoneOS4.0でやっとフォルダ機能が追加されることになった。
 Androidでは、インストールされているアプリを起動するランチャー以外に、
WindowsやMacでいうデスクトップとしての場所が用意される。そこには、アプリのショートカットや
ウィジェットと呼ばれる小さなアプリを配置でき、カレンダーやTwitterのタイムラインの一部など、画面を表示するだけで情報を表示できる機能がある。これはiPhoneOS4.0でも無い機能だ。
Androidには他にも、通知領域というWindowsのタスクトレイのような、ユーザーに処理の終了を伝えたりする場所が用意されている。

実装出来る機能

iPhoneでは、基本的に起動して、使って、終了する、普通のアプリしか実装できない。
なので、IMEのカスタマイズ(カーソルキーや、アルファベットの予測変換等)の細かなカスタマイズはできず、Appleによる公式アップデートを期待するしかない。
 Androidでは、IMEをつくって、デフォルトのものと置き換えたり、ホーム画面も自由につくって、変更できる。ウィジェットやサービスといった、バックグラウンドで常時動作するものなど、いろいろなアイデアを思いつく機能を実装できる。ここはAndroidのかなり優位なところだと思う。

マルチタスク

 iPhoneでは、OS4.0でのサポートが発表されたが、Androidではすでに実装済みである。
 Androidでは、マルチタスクやスレッドを有効に利用して、ウィジェットや通知領域を利用した
アプリを実装できる。iPhoneではマルチタスクはサポートされたが、それを有効に利用できる他の機能が不足しているように見える。
 他に、重要な点として、Androidでは「インテント」という重要な機能がある。
これは、アプリの一部機能を他のアプリと連携して動作する機能だ。文章で説明すると難しいのだが、例えば、Windowsでは、カメラで撮った写真を見る場合、付属のペイントでも見れるが、他の好きなソフトを自由に使うことができる。Windows等では当たり前の機能だが、iPhoneでは「ファイル」という概念がなく、アプリの中で扱うデータは写真やiPod内の音楽データなど一部例外を除き、そのアプリ内だけでしか利用できない。(あり)。AndroidではWindows等と同じように、データを扱うアプリを自由に選択でき、さらに、それが細かくわけられている。例えば、Exploreのようなインタフェースで、画像を表示するアプリがある場合、Explorerのような部分と画像を表示する部分、2つのアプリ(インテント)として個別に利用することができる。つまり、画像を選択するのはAアプリで、画像を見るのはBアプリ、といった使い方ができるのだ。この新しい概念が、マルチタスクやスレッドといったものをさらに有効利用できる機能としていると思う。

ハードウェアボタン

 iPhoneでは、ハードウェアボタンはホームボタン1つ(電源や音量ボタンはあるが)であり、アプリの切り替え(終了)に使われる。
 Androidでは、ホームボタン、メニューボタン、戻るボタンの3つがあり、特にメニューボタンと戻るボタンが、Android独自の共通したインタフェースとして機能する。メニューボタンは、マウスの右クリックで出る、コンテキストメニューのような位置づけで、その画面で利用できる機能が、画面下部にメニューとして表示される。戻るボタンは、そのまま1つ前の画面、今出ているメニューを消す等、とりあえずこのボタンを押せば、前の状態に戻る(UNDOとは違う)。どちらが良いのかは、賛否両論あると思うが、私のは、iPhoneで、まず画面のどこを押したら分からない状態よりも、とりあえずメニューボタンを押せば、その画面でできることが表示されるところが、わかりやすいと思う。

開発環境/言語

 iPhoneは、XcodeというMacに付属の統合環境とObjective-C言語で開発する。非常に良くできたツールだが、EclipseやVisualStudioとはちょっと操作感が違うので慣れが必要だ。しかし、これは統合環境というより、Objective-CやCocoaフレームワークとの違いの方が大きいかもしれない。Objective-Cは、非常に面白い言語だが、文法が他の言語とちょっと違うので、これも慣れが必要。
 また、iPhoneのSDKには、シミュレータも含まれているので、作ったアプリはちゃんと確認できるが、実機にインストールしようとすると、Appleへの開発者登録(有料)が必要になる。
 Androidは、現在主流の言語のJavaで開発されており、アプリの開発もJavaで可能。開発環境も、利用者の多いEclipseで利用できる。もちろんシミュレータもあるが、実機での確認も容易に可能。iPhoneに比べ、開発者の敷居は非常に低いと思う。

総論

全体的にAndroidのほうが、ソフトウェアの開発環境、動作環境ともに、自由度が高く、エンジニアとしてはおもしろい機能が満載だ。iPhoneは、昨今のAppleの方針と同じく、締め付けがきつく、自由度は高くない。
現在のAndroidアプリの市場はこの敷居の低さのせいもあってか、数は爆発的に増えているが、アプリの質としてはピンきりで、まだまだといった感じ。iPhoneアプリは、Androidに比べれば成熟してきているが、機能不足や限界を感じさせるアプリも多く見える。

私は、ソフトウェア的にはAndroidがかなり好きである。AndroidがiPhone並に流行って、
大手のサービスやソフトウェアが参入してきてほしいと思う。

ホーム > タグ > Android

Tag cloud
Amazon
いろいろ

ページの上部に戻る