こんにちは。スマートフォングループの石野です。
ディレクターのためのスマートフォン講座」第3回目を担当します。

前回に引き続いて Android と iPhone の比較ですが、アプリについてもう少し突っ込んでみます。Android アプリを使ったことが無い方はぜひご覧ください。

はじめに / サンプル紹介


なるべく直感的に把握していけるよう、実際に iPhone / Android でアプリをリリースしている『LDNReader』を例に見ていきます。ニュースリーダー系アプリです。機能面はほぼ同一であり、比較しやすい対象です。

※以下は iPhone / Android アプリを開発する上でのガイドラインではありませんのでご注意ください。あくまで『LDNReader』は一例にすぎず、Android の概念を学習するのが目的です。

※実際にダウンロードする際は以下よりお願いします。
iPhone版  Android版


1. レイアウトにおいて生じる違い


[戻るボタン] [メニューボタン] が Android 端末自体に搭載されていることから、レイアウト設計が変わってきます。

iPhoneAndroid
トップ画面 (カテゴリ一覧画面)
index_iindex_a
カテゴリ別記事一覧画面
category_icategory_a
記事詳細画面
article_iarticle_a

◆画面上部をチェック

上の階層へと戻るための画面遷移ボタンなど、主にナビゲーションの役割を担っているのが iPhone 版の最上部タイトルバーです。それに比べ、端末に [戻るボタン] があるためにアプリ画面で省ける Android の方はスッキリとしていますね。

◆下部をチェック

下部のメニュー構成は大分似せています。ただこちらでも Android 側では [メニューボタン] をタップすることで、下部メニューを隠すことができるので、メインコンテンツの表示領域を広げることができます。

2. アプリ間設計の違い その1 “戻るボタン”


[戻るボタン] の有無によって、ここにも設計の違いが生じます。まずは記事詳細画面において記事内の外部リンクをタップした際の挙動を見比べてみます。

iPhoneAndroid
アプリ内ブラウザ画面Webブラウザ (LDNReader外)
browser_ibrowser_a

iPhone 版では、アプリ内でWebページを表示する「UIWebView」を使って画面で記事を開いています。ナビゲーションボタン (三角形 左右) が上部に設置され、先ほどの記事詳細画面へ戻れるようになっています。

マルチタスクが可能になる iOS 4 より以前に開発リリースしているため (2010年4月)、シングルタスクではアプリ間で戻ってきにくい性質上、なるべくアプリ内での閲覧に支障をきたしたくなかったため、こういう実装を行いました。

Android 版では挙動を変えています。別アプリとしてWebブラウザが新しく起動し、そちらで記事を開きます。
Android にはその優れた [戻るボタン] があるため (アプリをまたがって戻れるため)、既存のWebブラウザを起動させても支障ありません。

3. アプリ間設計の違い その2 “インテント”


続いて「インテント」について説明していきます。
Android アプリの特長の1つである「インテント」、これはアプリ間の連携をスムーズにしてくれる仕組みです。

インテント (intent): 意図・目的

Android では、そのアプリケーションプログラムが何を行いたいかという “意図・目的” をシステムへと渡すことで、該当する適切なアプリを判断し、起動してくれる便利な構造をもっています。
“意図・目的” がたとえ明示的でなくとも、判断するための情報 (インテントフィルター) をもとに、適当なアプリを起動させることができます。

これがどう設計に組み込まれているか、LDNReader で見てみましょう。

iPhoneAndroid
記事画面詳細
左下ボタンタップ時
share_ishare_a

LDNReader 上で読んで気になった記事は、Twitter など外部サービスへと投稿して共有することができるのですが、iPhone 版では Twitter 投稿などをアプリ側で、独自UIで実装しています。

対して Android 版では、外部サービス投稿にあたって個別に実装は行っていません。しかし共有はできます。
記事詳細画面左下のボタンをタップすると、“記事を共有” を目的とするアプリがリストアップされています。Twitter・Facebook・Gmail など、お馴染みアプリからユーザは任意に選択可能です。

注目したいのは、こちら。
share_a2

『aLDClip』という livedoor クリップ投稿アプリですが、こうした自分で端末にインストールしているアプリもちゃんと候補となってくれます。
aLDClip

LDNReader 側で aLDClip 用に何か個別設定を入れる必要はなく、aLDClip 側でインテントの受信対応を行うだけで実現できています。Android における非常に優れた概念と言えます。

※補足しておくと、インテントは他のアプリとの間でのみ使用されるものではありません。そもそもアプリ内においての画面遷移など、1つ1つの機能 (正確に言えばアクティビティという概念) を呼び出す際に使われています。

◆ [iPhone] ShareKitについて


インテントと対比する概念ではないので注意ですが、iPhoneアプリにおける こと“共有”機能については、自前で実装するか、あるいはオープンソースで公開されている“ShareKit”といったものを利用することもできます。

こちらはアプリに組み込むことで、Twitter・Facebook・Tumblr・Instapaperといった各種ソーシャルサービスへ簡易投稿できるようになります。そのサービス選択肢は、予めShareKit側で対応してあるものに限ります。

4. アプリ更新通知の違い


アプリにおける新着通知の方法はいくつかありますが、LDNReader では iPhone / Android でこういった実装を行っています。

iPhoneAndroid
ホーム画面
home_ihome_a
livedoor のアイコンが表示されている↑

ステータスバーを引っ張ると↓
home_a2

iPhone 版では、ホーム画面のアプリアイコン右上に数字を表示して通知しています。
※ちなみにこのバッジ表示はアプリの用途によっては好みが別れるため、オン / オフをユーザの好みで選択できるようにしています。

通知に関して、Android では端末上部に存在するステータスバーの領域を使うことが一般的です。バックグラウンドで動作させておくことで、livedoor のアイコンが表示されて更新を知らせてくれます。


いかがでしたか。興味が沸いた方はぜひ他のアプリも見比べてみてください。

第2回同様に概念的な部分に多く割いてきましたが、次回からはより実践的・専門的になっていきます。まだまだ始まったばかりの集中連載、ご期待ください。