BitriseやAIを活用して次世代のタクシー配車サービスを
DeNAについて
1999年に創業した株式会社ディー・エヌ・エー(以下DeNA)はゲームを中心に、多種多様な事業を展開しています。インターネット技術がコモディティー化する中、新たな柱としてAI技術に注目し、事業を横断して活用しています。現在、DeNAは社員数は連結で2,437名(2019年3月末現在)を数え、うちエンジニアは約600名在籍しています。DeNAのミッションはDelight and Impact the Worldです。インターネットやAIを活用し、永久ベンチャーとして世の中にデライト(喜び)を届けることを長期の経営指針として、世の中に貢献し歓迎されるような新しい価値を提供すべく、挑戦を続けています。今回は、「MOV」という次世代タクシー配車サービスに関してBitriseを活用した経緯について記載しています。
Anything, Anywhere
DeNAのオートモーティブ事業では「インターネット×AI」で交通システムにイノベーションを起こしたいと考えています。また,「Anything Anywhere. あらゆる人やモノが、安全・快適に移動できる世界を。」をミッションに掲げており、交通領域の先駆者であるパートナー様と共に、日本の交通システムにイノベーションを起こしていこうとしております。その事業のひとつである「MOV」は、乗務員用専用端末とユーザ向けのアプリが直接連動した次世代タクシー配車サービスです。そして、AIによる需給予測を活用した「お客様探索ナビ」の提供を行っており、運行中の車両から収集するビッグデータ解析することで、乗りたい時にすぐ乗れるだけでなく、タクシーの稼働率を向上させることも目指しています。
きっかけ
過去のプロジェクトでは、自由度の高さから Jenkins を利用していたこともありましたが、ワークフロー / パイプラインだけでなく、環境自体のメンテナンスを各プロジェクトで行わなければならず、巷でよく言われている「Jenkinsおじさん」が必要であり、そのコストは低くはありませんでした。そんなことから、クラウドのCI/CDサービスを新たに検討していました。しかし、当社では GitHub Enterpriseを利用していることから、利用可能なCI/CDサービスは限られており、その中で、モバイル開発に特化したBitriseが存在していたのが、我々がBitriseに出会ったきっかけです。Bitriseはモバイルに特化しているということもあり、Androidの署名ファイルをUploadできることや、過去利用してきたサービスに比べ、Webのワークフローエディタだけで設定が完結します。そのため設定ファイルをひたすら直してcommit / pushの作業から解放されました。また、pushのタイミングで社内向けにアプリを配布するようにしており、関係者が常に最新版に触れられるようになりました。
MOV ✖️ Bitrise
MOVでは、スマートフォン向けアプリや関連する組込機器用のアプリをBitriseでビルドしています。これらの1週間のビルド合計数は約 340 回となります。また、これらの中には iOS / Android の両クライアント向けのアプリも当然ながらビルドしています。iOS/Androidのアプリのビルドは1週間でそれぞれ約60くらいビルドされています。
iOSプロセス
push対象のブランチが master の場合は開発用ビルド、リリース候補の場合はQA用ビルドを実施して社内向けに配布しています。リリースタグを生成した場合は、本番用ビルドを実施して App Store Connect へのアップロードを行います。App Store Connect での処理が完了したら、dSYMをダウンロードしてCrashlyticsにアップロードするワークフローも実施しています。(参考:bitcode を有効にしたアプリでも dSYM のアップロードを自動化する)
Androidプロセス
Pull Request が作成されると、ビルドとテストが実施されます。この時のテストや静的解析は他のCIサービスを利用して並列実行しています。それらが問題なく完了し、レビューも OK が出た時点でその Pull Request はマージされます。この時マージ先ブランチがmaster / releaseであればQA用ビルドを社内に配布する流れとなっています。最後にタグが作成されると、GitHub上のRelease Noteを更新するようにもなっています。
Customization
当社は GitHub Enterprise を利用していることから、いくつか独自にステップを作成して利用しています。まず第一に、VPN接続ステップがあります。Bitriseにて GitHub Enterprise からソースのチェックアウトを可能にするために、当社のSWETグループが作成して提供しております。他には、Release Note記述の steps-github-release が GitHub Enterprise 未対応のためカスタムステップを作成して利用しています。またカスタムステップではありませんが、OS(iOS, Android)のプライベートAPIを利用していないか、コードやバイナリのチェックツールを実行しています。
再現可能なビルドを
モバイルアプリのビルドや、iOSアプリのアーカイブはローカルマシンで行うとマシンリソースをかなり奪われるため、Bitriseに任せられることで次の作業に素早く移ることができています。また、リリースビルドを手元で作ると、「実は違うブランチだった」、「ビルド後にpushしていなかった」、「その人の環境だけビルドにかかわるconfigが異なる」など、同じビルドの再現性が失われるリスクもありますが、必ずBitriseでビルドを行うことで、そのビルドが再現可能であることと、バイナリがBitrise上に残ることが担保されています。そのため、何か問題があった際も証跡を辿り、その問題の発生してるバージョンのビルドを簡単に探し出すことができ、無駄な時間が減っており、その分サービスの質の向上に専念できています。