分サイバーエージェントでは現在数多くのAndroid向けアプリを提供していますが,問題となるのはそれぞれのAndroid端末を個別に検証しなければならないこと。シモ氏(写真2)に具体的にどのような課題があるのかを伺いました。多数の製品が存在するAndroidにおける検証の苦労インターネットに接続してさまざまなアプリやコンテンツを楽しめる新たなモバイルデバイスとして,スマートフォンが普及しています。このスマートフォンはiPhoneとAndroidの2強対決となっていますが,それぞれで製品展開の形は大きく異なります。グンタ氏iPhoneはアップルがハードウェアからソフトウェアまで一括提供しており,モデル数もけっして多くありません。Androidは,基本的にオープンソースでコードが公開されていて,さまざまなハードウェアベンダが独自にAndroidをカスタマイズし,さらにハードウェアスペックも異なる製品を発売しています。このため,Android向けのWebアプリやネイティブアプリは製品によって挙動が異なることがあるため,機種ごとに個別に動作検証をしなければなりません。これが大きな負担となっているのです。日本向けのサービスであれば,日本市場で一般に流通しているAndroid端末に絞ることも可能でしょう。それでも数十もの製品があるため,検証作業はけっして容易ではありません。シモ氏が開発したのが,複数台のAndroidをいっせいに操作することで検証作業の負荷を大幅に軽減するツールです。このプロジェクトはどのように始まったのでしょうか。「私たち2人は別々のゲームを作っていたのですが,プロジェクトの移動で別の部署に異動し,2人で何をするか相談していました。最初は,2人でアプリ開発を支援するライブラリを作ろうと考えました。ライブラリを作れば,当然その検証が求められます。汎用的に使われるライブラリでは検証が大変で,多数の端末で調査しなければなりません。それをどうにかできないかと考えたのが最初です(グンタ氏⁠)⁠。」ブラウザが持つバグの影響を受けやすいWebアプリこうした検証は,携帯通信事業者のオフィスに“⁠缶詰⁠”になってテストを繰り返すことになると言います。「サイバーエージェントにも検証用のスマートフォンがいくつかありますが,すべてではないので,携帯通信事業者に出向いて1日ずっと各端末を触りながら検証するという作業を行っていました。これが本当に大変だったのです(グンタ氏⁠)⁠。」さらに,Android端末では予想外のバグに出くわすことも多いようです。「あるメーカの製品には,大量のバグが潜んでいました。Canvasを使うと,いきなり端末がクラッシュするなど致命的なバグが放置されていたんです。開発者としては,そういった製品でもサポートしたい。それは本当にジレンマなんです(シモ氏⁠)⁠。」またバグの出方は,Webアプリとネイティブアプリによっても違うとグンタ氏は説明します。「Androidの場合,ネイティブアプリであればOSに起因するバグはそこまで出ません。Webアプリでは,メーカごとにWebブラウザをカスタマイズしています。それはメーカごと,あるいは端末ごとの独自色を出したいということだと思います。そのカスタマイズによって多くのバグが混入してしまっているんです。このため,Webアプリの検証では,多くのWebブラウザのバグに直面することになります(グンタ氏⁠)⁠。」シモ氏は,あるAndroid端末における複雑な状況を説明します。「たとえば世界中で人気のあるAndroid端末は,実はWebブラウザが3つあります。Chrome,そしてアプリからWebブラウザを利用するWebViewと呼ばれるしくみです。これらが各端末で共通ならいいのですが,実は違うんです。Chromeのソースコードをフォークして手を入れ,それをデフォルトブラウザのアイコンで表示しています。デフォルトブラウザでもAndroid端末によって実体が違うという状況が起きているわけです(シモ氏⁠)⁠。製品ごとに異なる操作方法を覚えることも時間の無駄さて,Androidのようなデバイスでデバッグを行うとき,エミュレータを使うという手がまず考えられます。検証用途で使うのは厳しいようです。「まず大きな問題として,ものすごく遅いんですね。我慢できれば何とかできるレベルではありますが......。それ以上に問題なのは,メーカが手を入れているところはエミュレータで再現できないことです。エミュレータで動作しても,実機では動かないという現象に遭遇することになります(グンタ氏⁠)⁠。」そうすると,やはり物理的なデバイスを手元に用意して検証せざるを得ません。グンタ氏が先に話したとおり,数多くの端末を検証するには携帯通信事業者のオフィスで検証作業を行いますが,慣れない環境で検証を行うのはストレスが大きいでしょう。端末ごとに異なる操作方法に慣れることも大変だとシモ氏は話します。「たとえば,物理的なボタンは製品によって異なりますよね。慣れた端末であれば問題ありませんが,初めて使う端末はまず操作方法から理解しなければなりません。それが本当に時間の無駄だと感じます(シモ氏⁠)⁠。」こうした検証の手間は,当然開発コストにも大きな影響を与えることになります。エンジニアとしては,あきらめるという選択肢はありません。そこで2人が取り組んだのが,PCに接続したスマートフォンをネットワーク経由でリモートコントロールするしくみです。後編はその内容について詳しく解説していきます。リモートコントロール著者プロフィール川添貴生(かわぞえたかお)株式会社インサイトイメージ代表取締役。企業サイトの構築及び運用支援のほか、エンタープライズ領域を中心に執筆活動を展開している。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。