1台のPCから複数端末に同じ指示を与えて実機テスト
続けて藤原氏は、「iOSアプリ開発者の方には申し訳ないが…」と断りを入れつつ、Android向けの統合開発環境に話題を移した。
Android開発者にとっての最近の大きな関心事の一つに、IDE(統合開発環境)が挙げられるだろう。これまでどおりEclipse(Eclipse ADT:Android Development Tool)を使うのか。それとも、Android Studioに乗り換えるべきか。藤原氏は「Android Studioのほうが、本番環境と開発環境との切り替えがスムーズで、gradle(jarファイルの生成などに使用するビルドツール)をより有効に使える」としながらも、Amebaのネイティブアプリ開発ではEclipseを使っているという。
その理由の1つは、Android Studioのバージョンが0.4.2(2014年2月現在)の「Early Access Preview」であること。今後のメジャーリリースの際には、仕様把握などのために開発をいったん止めなければならないことも想定される。
そして、もっと大きな理由として藤原氏が挙げたのは、EclipseにはSave Actions(保管アクション)の機能があることだ。Save Actionsを有効にしておけば、ファイルを書き換えて保存する際に、ソースコードのフォーマット(整形)やクリーンナップを自動実行させることができる。
「複数人のエンジニアが、複数のアプリの開発を入れ替わり立ち替わり担当していく現場では、エンジニアごとの書き方や癖により、ソースコードが全体的にバラバラでわかりづらくなってしまうし、コンフリクトの原因にもなりかねない。だからといって、人の手で書き方を統一するのは大きな負担になる。そこで、コードフォーマッタで自動整形し、強制的に統一することにした。エンジニアは機能追加など本来の業務に専念できる」(藤原氏)
また、antを使えば本番環境と開発環境の切り替えが「これならgradleを使わなくてもいいだろうというレベル」(藤原氏)で簡単にできたことも、Eclipseを選ぶ理由となった。
開発環境の整備はこれだけではない、Androidアプリ開発では手間のかかるデバッグを効率化し、スピーディに行うために独自ツールを開発して活用しているという。
「Androidのデバッグで一番の障壁は、端末の種類が多いこと。そこで、ブラウザからリアルタイムで複数のAndroid端末を同時にテストできるツール「Smartphone Test Farm(STF)」を開発した」(藤原氏)。
STFでは、PCに複数のAndroid端末実機を接続し、ブラウザ上で接続した端末すべてに同じ指示を与えて実機テストを行うことができる。たとえブラウザ上のリモート操作でも多数の端末を1台ずつ操作するのは大変だが、STFは接続した端末を一斉に操作・テストできるのがポイントだ。たとえば、Web表示テストなら、1つのURLを指定すれば各端末で同じページが同時に表示され、表示結果の違いなどが即座に確認できる。もちろんブラウザ表示だけでなく、apkファイルをインストールしてアプリをテストしたり、logcatでログを取得して見たりすることも可能で、Android端末の実機が手元にあるのとほとんど変わらないデバッグ環境を実現している。
このように、さまざまなツールを活用することでAmebaネイティブアプリ開発チームが目指したのは、「誰が作っても同じように作る」「全部のアプリを同じように作る」ことのできる仕組みと体制だという。
「ネイティブエンジニアのチーム全体が、1人のスペシャリストであるかのように機能する。1人のスペシャリストがスピーディに、常に高いクオリティを保ってすべてのアプリを開発していくのと同じように、チームが開発を行う。そのような体制にできたのではないかと感じている」(藤原氏)
それが、「多くのネイティブアプリを複数人で流動的に開発する場合に、どのようにして“スピード”と“クオリティ”を担保するか」という課題に対する、藤原氏らが出した一つの答えということだろう。