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

第56回Android端末の動作検証の課題を解決[前編]

サイバーエージェントでは現在数多くのAndroid向けアプリを提供していますが、問題となるのはそれぞれのAndroid端末を個別に検証しなければならないこと。この課題を解決するべく立ち上がった、ブルンナー グンタ氏写真1とキンヌネン シモ氏写真2に具体的にどのような課題があるのかを伺いました。

多数の製品が存在するAndroidにおける検証の苦労

インターネットに接続してさまざまなアプリやコンテンツを楽しめる新たなモバイルデバイスとして、スマートフォンが普及しています。このスマートフォンはiPhoneとAndroidの2強対決となっていますが、それぞれで製品展開の形は大きく異なります。

写真1 ブルンナー グンタ氏
写真1 ブルンナー グンタ氏

iPhoneはアップルがハードウェアからソフトウェアまで一括提供しており、モデル数もけっして多くありません。一方Androidは、基本的にオープンソースでコードが公開されていて、さまざまなハードウェアベンダが独自にAndroidをカスタマイズし、さらにハードウェアスペックも異なる製品を発売しています。このため、Android向けのWebアプリやネイティブアプリは製品によって挙動が異なることがあるため、機種ごとに個別に動作検証をしなければなりません。これが大きな負担となっているのです。

もちろん、日本向けのサービスであれば、日本市場で一般に流通しているAndroid端末に絞ることも可能でしょう。ただ、それでも数十もの製品があるため、検証作業はけっして容易ではありません。

こうした課題を解決すべくブルンナー グンタ氏とキンヌネン シモ氏が開発したのが、複数台のAndroidをいっせいに操作することで検証作業の負荷を大幅に軽減するツールです。このプロジェクトはどのように始まったのでしょうか。

「私たち2人は別々のゲームを作っていたのですが、プロジェクトの移動で別の部署に異動し、2人で何をするか相談していました。最初は、2人でアプリ開発を支援するライブラリを作ろうと考えました。しかし、ライブラリを作れば、当然その検証が求められます。とくに、汎用的に使われるライブラリでは検証が大変で、多数の端末で調査しなければなりません。それをどうにかできないかと考えたのが最初です(グンタ氏⁠⁠。」

ブラウザが持つバグの影響を受けやすいWebアプリ

こうした検証は、携帯通信事業者のオフィスに⁠缶詰⁠になってテストを繰り返すことになると言います。

「サイバーエージェントにも検証用のスマートフォンがいくつかありますが、すべてではないので、携帯通信事業者に出向いて1日ずっと各端末を触りながら検証するという作業を行っていました。これが本当に大変だったのです(グンタ氏⁠⁠。」

さらに、Android端末では予想外のバグに出くわすことも多いようです。

写真2 キンヌネン シモ氏
写真2 キンヌネン シモ氏

「あるメーカの製品には、大量のバグが潜んでいました。たとえばHTML5 Canvasを使うと、いきなり端末がクラッシュするなど致命的なバグが放置されていたんです。しかし開発者としては、そういった製品でもサポートしたい。それは本当にジレンマなんです(シモ氏⁠⁠。」

またバグの出方は、Webアプリとネイティブアプリによっても違うとグンタ氏は説明します。

「Androidの場合、ネイティブアプリであればOSに起因するバグはそこまで出ません。しかしWebアプリでは、メーカごとにWebブラウザをカスタマイズしています。それはメーカごと、あるいは端末ごとの独自色を出したいということだと思います。ただ、そのカスタマイズによって多くのバグが混入してしまっているんです。このため、Webアプリの検証では、多くのWebブラウザのバグに直面することになります(グンタ氏⁠⁠。」

シモ氏は、あるAndroid端末における複雑な状況を説明します。

「たとえば世界中で人気のあるAndroid端末は、実はWebブラウザが3つあります。デフォルトブラウザ、Google Chrome、そしてアプリからWebブラウザを利用するWebViewと呼ばれるしくみです。これらが各端末で共通ならいいのですが、実は違うんです。ある端末はGoogle Chromeのソースコードをフォークして手を入れ、それをデフォルトブラウザのアイコンで表示しています。なので、デフォルトブラウザでもAndroid端末によって実体が違うという状況が起きているわけです(シモ氏⁠⁠。」

製品ごとに異なる操作方法を覚えることも時間の無駄

さて、Androidのようなデバイスでデバッグを行うとき、エミュレータを使うという手がまず考えられます。しかし、検証用途で使うのは厳しいようです。

「まず大きな問題として、ものすごく遅いんですね。我慢できれば何とかできるレベルではありますが……。そしてそれ以上に問題なのは、メーカが手を入れているところはエミュレータで再現できないことです。つまりエミュレータで動作しても、実機では動かないという現象に遭遇することになります(グンタ氏⁠⁠。」

そうすると、やはり物理的なデバイスを手元に用意して検証せざるを得ません。グンタ氏が先に話したとおり、数多くの端末を検証するには携帯通信事業者のオフィスで検証作業を行いますが、慣れない環境で検証を行うのはストレスが大きいでしょう。さらに、端末ごとに異なる操作方法に慣れることも大変だとシモ氏は話します。

「たとえば、物理的なボタンは製品によって異なりますよね。慣れた端末であれば問題ありませんが、初めて使う端末はまず操作方法から理解しなければなりません。それが本当に時間の無駄だと感じます(シモ氏⁠⁠。」

こうした検証の手間は、当然開発コストにも大きな影響を与えることになります。しかしエンジニアとしては、あきらめるという選択肢はありません。そこで2人が取り組んだのが、PCに接続したスマートフォンをネットワーク経由でリモートコントロールするしくみです。後編はその内容について詳しく解説していきます。

おすすめ記事

記事・ニュース一覧