サイバーエージェントを支える技術者たち

第68回 主力の「Amebaアプリ」をネイティブ化!

この記事を読むのに必要な時間:およそ 3 分

誰も手を付けていない領域に果敢にチャレンジ

─⁠─とくにネイティブアプリとしてAndroidとiOSの両方でアプリを作る場合,どうしてもOSごとの差が出てしまうと思いますが,そのあたりはどのように判断したのでしょうか。

藤原:見た目的なところではできるだけ共通化するように心がけていますが,デザイン面や操作性についてはそれぞれのOSの方針に準拠する形で進めています。そのため,細かい部分でどうしても違いが生じるので,AndroidチームとiOSチームでお互いが開発しているものを触り比べて,⁠ここはこうすべきだよね」とか「ここは違うけれど,これでいいよね」といった擦り合わせをよくやりました。

─⁠─WebViewからネイティブ化を進めていくうえで,とくに難しさを感じたのはどういったところでしょうか。

藤田:とくにLollipop対応では,従来よりもアニメーションが増えるなど動きが大きくなったので,そこの作り込みはたいへんだと感じました。今まで誰も手を付けていない部分なので,難しい部分はありましたね。

ギア:「Amebaアプリ」は情報量が多く,その分サーバに対するリクエストも増えます。そのリクエストの管理や,リクエストの優先順位の判断はたいへんでした。また,ネイティブ化するとエラーハンドリングがたいへんになります。ネットワークに接続できない,あるいはサーバがメンテナンス中といったケースを想定し,それにどう対処するのかをチェックすることも必要です。

写真3 田坂 和暢氏

写真3 田坂 和暢氏

田坂:ギアが話したように,1画面を表示するために複数のAPIにアクセスする必要があり,それがすべて成功すれば問題はありませんが,たとえば4個中2個は成功する,というようなケースにどうすべきかの判断は難しかったです。また,ページが長いので,まず最初に表示する部分のAPIにアクセスし,それが終わったら画面の下のほうで表示するコンテンツのAPIをたたくというところのハンドリングは苦労した部分です。

ネイティブ化して画面がリッチになった結果,入門書に載っているような実装のしかたではコードが肥大化してしまうため,メンテナンス性や品質の低下につながりかねません。そうした問題を改善できるライブラリをギアが作ってくれたおかげで,なかなか気持ちよく開発することができています。

ギア:シンプルなライブラリですが,GitHubでnghialv/Hakubaとして公開しているので,興味があればぜひ見てください。

ネイティブアプリならではのメリット

─⁠─開発側として,ネイティブ化のメリットを感じるのはどういった部分でしょうか。

写真4 レ ヴァン ギア氏

写真4 レ ヴァン ギア氏

藤原:まず1つは,アニメーションなど動きのある部分でできることの幅が広がることです。ネイティブだとキャッシュが使えるのも大きいですね。WebViewの場合,ネットワークの状況に左右される部分が大きくなりますが,ネイティブであれば更新頻度がそれほど高くないものはキャッシュして次回も使えます。現状はチューニング中という状況ですが,そういったところを作り込めるのもメリットです。

多分世の中でよく使われているアプリは,起動したらまず前回の状態が再現されて,そのあとにサーバに接続して新しい情報をマッピングするという処理がほとんどだと思います。こういった作りにできるのはネイティブならではの部分で,⁠Amebaアプリ」もその方向で開発を進めています。

また,WebViewよりもネイティブのほうが機種依存の内容は少なくなると感じています。Androidは端末によって各社がOSに手を加えている部分はありますが,使えるAPIは同じです。ただ,WebViewは端末によって違いがあり,そこをアプリ側で吸収しなければなりません。最近のAndroidではOSごとの差分を吸収するサポートライブラリが提供されていますが,その中にWebViewが含まれていないのも苦労するポイントです。ネイティブ化により,こういった部分の負担が減るのは大きいですね。

─⁠─最後に,今後の展開について教えてください。

田坂:iOS版の「Amebaアプリ」では,動画を強化していこうという話があるので,要件が固まり次第対応する予定です。実はブログ投稿に動画機能を付けていて,それが非常に評判が良いので,その動画を使ってよりリッチに見せたり,あるいは動画を加工して投稿できるようにするなど,動画投稿の機能を強化していきたいです。

また,現状は画面遷移をOS標準にしていますが,iOS7からカスタマイズが可能になり,海外のソーシャルメディア系アプリの中には従来とは異なる画面遷移を実装しているものがあります。今後はそういったところにもチャレンジしていきたいですね。

藤原:今回は時間に余裕がない中でとにかく出し切ったという印象ですが,まだまだ完成度は高められると思っています。たとえば先ほどお話したように,ネイティブだからこそできること,具体的にはキャッシュの活用や,UI/UXをもっとリッチにしたりするというところで,改善を重ねていくつもりです。

著者プロフィール

川添貴生(かわぞえたかお)

株式会社インサイトイメージ代表取締役。企業サイトの構築及び運用支援のほか、エンタープライズ領域を中心に執筆活動を展開している。

メール:mail@insightimage.jp