Android版iQONの開発で利用しているサービス&ツールを紹介します

f:id:vasilyjp:20180927090637j:plain


Androidアプリを効率良く開発する上で各社様々な外部サービスやツールを利用していると思います。今年の6月にGoogleからトップデベロッパーに選ばれた弊社VASILYでも効率化のため多くのサービスやツールを利用しています。 今回は2015年11月の今、実際にAndroid版のiQONで利用しているサービスやツールを紹介したいと思います。

ログ解析

Puree
BigQuery

数ヶ月前までアプリのログ解析に関してはLocalyticsを利用していましたが、アプリの規模が大きくなってきたことと優秀なデータサイエンティストが会社にジョインしてくれたことで、自社で生のログを管理した方が都合良くなってきました。そのためLocalyticsをやめて新しい仕組みに置き換えました。 新しい仕組みはクックパッド社で開発されたログコレクタのライブラリであるPureeを利用して自社のサーバーにログを送り、そこからBigQueryに流す形になっています。 そこからBigQueryでSQLを実行して数値を取ったり、別のサービスを使ってBigQueryからデータを取得したりして分析を行っています。

クラッシュ解析

Crashlytics

クラッシュ解析に関してはCrashlyticsを利用しています。 これまでCrashlytics -> BugSence (現Splunk MINT) -> Google Analyticsといろいろ他社のサービスも利用していましたが、レポートの即時性や見やすさなどを考慮して、結局Crashlyticsに戻ってきました。 今ではアプリのリアルタイムの動向が見られるAnswersという機能と、後述するBetaという機能が入ったため非常に役立っています。 Twitter社が提供するFabricに統合されたため導入するとアプリ全体のメソッド数がかなり増えてしまいますが、Multi-dex Supportしていたり、メソッド数に余裕があったりするプロジェクトでは利用する価値があるサービスだと思います。

リリース作業・テストの自動化

Beta

社内テストや検証などでAPKの配布を行う場合にはCrashlyticsの機能であるBetaを利用しています。 過去には他社サービスを利用していた時期もありましたが、iOSで先にBetaを利用していたこともあり社内でサービスの統一ができた点と、Crashlyticsに内包されているためにすぐに利用開始できた点からBetaを採用しました。

 

CircleCI
AWS Device Farm

テストやリリース作業の自動化にはCircleCIを利用しています。 Betaと組み合わせてAPKの自動配布を行ったり、Developer ConsoleへのAPKの自動アップロードを行ったりして、作業効率の向上を図っています。 詳しくはこちらを参照してください。 またAWS Device FarmによってE2Eテストを自動化しています。しかし、先日からCloud Test Labの検証を始めましたが、非常に素晴らしいサービスなため今後はこちらに乗り換える可能性が高くなってきました。 *Cloud Test Labは現在、クローズドαテスト中のためGoogleからの完全招待制になっているそうです

IDE

Android Studio

IDEはチーム全員がAndroid Studioを利用しています。 Preview版の頃からAndroid Studioで開発を行っているため、使い始めて早2年になりますがアップデートを重ねて非常に使いやすいものになってきました。 昨年の12月に正式版である1.0が出て現在は1.4まで開発が進んでいますが、これまで様々な機能が追加されてきました。 追加された機能の中でも特に利用しているものがMemory Monitorになります。アプリのメモリ使用量をリアルタイムに表示してくれるため開発を行う上で非常に役立っています。ただし異常を発見した際、詳細を追うには従来通りにMemory Analyzerを利用する方が効率良いので今後のAndroid Studioのアップデートに期待しています。

CLIツール

dumpsysコマンド

VASILYでは通年で学生インターンを募集していますが、Androidチームにジョインした学生に最初に教えることは、このdumpsysコマンドの使い方です。 dumpsysコマンドをしっかり押さえていると、自分たちのサービスのコードリーディングが捗るのはもちろんのこと、他社のアプリを覗き見したいときに非常に便利です。 adbには様々なツールがありますがdumpsysは使用頻度が特に多いと感じています。 dumpsysコマンドに関してはマネーフォワード社のブログによくまとまっているのでぜひ参照してみてください。

UI実装

・Grid

現在少しずつマテリアルデザインに移行中ですが、マテリアルデザインのUI実装を行う際にデザインから1dpのズレも出さないためにGridというUI確認ツールを作りました。 機能は至ってシンプルで、マテリアルデザインでよく使われる間隔である8dpの網をオーバーレイ表示で画面全体に敷き詰めるだけになります。 非常にシンプルなツールですが、エンジニアとデザイナー間でUIの確認をする際に非常に役立っています。 簡単に作れて開発効率とUIのクオリティが上げられるのでぜひとも作ってみてください。

 

・開発者向けオプション > レイアウト境界を表示

開発者向けオプションの中でもお馴染みの機能ですが、Gridと同様にUI実装を行う際によく使用する機能になります。 MarginとPaddingがどのようにかかっているのかを目視で確認できるためUI実装に役立つだけではなく、コードレビュー時に最適なレイアウトファイルが組めているか確認するときにも役立っています。

その他

・SORACOM Air

帯域制限をかけた低速な通信速度で動作確認を行えるように、株式会社ソラコムが提供しているIoT向けデータ通信SIMであるSORACOM Airを最近導入し始めました。 ユーザーコンソールからSIMの管理・操作が行え、帯域の制限を開発者が簡単に行うことができるため使い勝手が良いです。SDKも用意されており、コードからも容易にあらゆる操作が可能になっています。ドキュメントも充実しているので大変便利です。 @Horie1024がSORACOM SDKを使用して帯域を変更する方法をブログにまとめているのでぜひ参照してみてください。

まとめ

細かいものを入れると書ききれないほど様々なサービスやツールを利用していますが、今回は利用頻度が高いものや、チーム内でホットなものを中心に紹介しました。 2年前にも同じ内容の記事を書かせていただきましたが、この2年で変わったもの、変わらないものがそれぞれあり感慨深かったです。 今後もチームの開発環境や効率が向上するなら新しいサービスやツールをどんどん導入していきたいと考えているため、オススメがありましたらぜひとも教えてください。

最後に

VASILYでは、新しい技術が大好きなエンジニア&学生インターンを募集しています。少しでもご興味のある方は是非こちらからご応募よろしくお願いいたします。

カテゴリー