とりあえずやってみればいいじゃん

とりあえずやってみればいいじゃん

エンジニア関連のことについてつらつら書くブログ

Bitriseの今とこれから #cicd_test_night

Bitriseさんが来た勉強会の2日目にブログ枠で参加したので、そのレポートを書きます。

testnight.connpass.com

Keynote (Bitriseから)

1日目はBitriseとはどんなものなのかという基礎的な話が多かったですが、2日目はより踏み込んだ内容やロードマップについての話が出てきました。

Bitrise CLIはローカルにダウンロードできる

Bitrise CLIオープンソースでローカルにダウンロードすることができます。設定ファイルをローカルにダウンロードしてカスタマイズし、自分のリポジトリに上げるといったことも可能です。Bitrise.ioではbitrise.ymlの差分を見ること、リストアすることもできます。公式ブログの関連記事はこちらです。

Bitrise上でDangerを走らせることができる

もちろんチェックするポイントは自分でカスタマイズすることができます。例えばPRにissueのリンクがあるかどうか、PRのサイズはでかすぎないかなどをチェックすることができます。Danger + ktlintの例はこちら、BitriseでDangerを使うことに関しての記事はこちらに書かれています。

iOSにおける、Code Signingの自動化

面倒なCode Signingも、Bitriseで自動化することができます。詳細はこちらに。

Flankによるテストの並列実行

Flankを使うとFirebase Test Labを使う時に複数のテストケースをパラレルに実行することができます。Flankではどのテストにどれくらいのコストがかかったのかを把握することもできます。レポートはHTML形式、XML形式等で出力されます。今後はもっとスマートなシャーディングを提供しようと思っているそうです。ちなみにFirebase Test Lab for iOSではFirebaseのアカウントなしに、Bitriseのアカウントのみで実行することができるとのこと。

ダッシュボードのリニューアル

ローディング時間が高速化されたり、セキュリティ周りが強化されたりします。

Enterprise版

カスタマーサポートでは英語以外のサポートも受けることができます。その際はカスタマーサクセスエンジニアが担当してくれます。

日本へのサポート強化

日本にデータセンターを置いたり、日本語のカスタマーサポートを置いたり、日本のイベントに頻繁に来たりする予定のようです。他にも日本語のドキュメントが充実しているなどの現状があります。ちなみに日本語ネイティブのカスタマーサクセスエンジニアを募集しているそうです。

Q&A

Q.Firebase Test Labについて。通常使う場合は回数制限、課金などが必要だがこの場合は?
A.無料で考えている。テストの時間制限はある。テスト結果を直接Test Labにコンビネーションしていく予定。

Q.ワークフローを中断して再開できるような機能を実装する予定は?
A.現時点では可能ではあるが、複雑になってしまう。来年やろうとは思っている。パラレルビルドは提供しようと思っている。

Q.今後GitHub Checksへの対応は?
A.スケジュールに入っているが、ちょっと遅れている。

Q.CIのパイプラインを全員が見られるように、みんながビルド状況がわかるようにはならないのか(現在どのブランチのビルドが実行されているか、テストの成功可否などの情報)。
A.すでに提供できているはず。わからなければ問い合わせへ。

Q.検索ページへの要望。GitHubのようなスター機能、言語のフィルター機能があると良い。
A.すぐ始めるところ。

Q.ドキュメントの日本語化について。英語が更新されると日本語が古くなるので、バージョニングのシステムがほしい。
A.同時にアップデートできるようにしていくつもり。

Q.ビルド後のログの表示に非常に時間がかかる。ビルドエラーの原因究明時など。改善する予定は? A.認識はしている。USのストアに保存されているのでちょっと時間がかかっている。改善は進める。

LT

CI/CD Test on ReRep @Spring_MTさん

開発ポリシーとして「便利なツールは使っていく」「環境の同一性を重視」「ステートレス、変更不可能な状態で成果物を持つ」というものがあるそうです。成果物を作る時に重要になってくるのがCIですが、アプリではBitriseを使っているとのこと。Bitriseにした理由はGUIで簡単にセットできたり、fastlaneと連携できたりするところが良かったからだそうです。テストや配布の自動化はこれから取り組む予定のようです。

私とBitriseとCircleCI - 私がAndroid CI/CDを移行して得られたもの - @nemoto_tadashiさん

従来までの手動デプロイだと違うバイナリをデプロイしてしまうなどの間違いが発生していたが、Bitriseにしてからそのアップロードが正確に、自動的にできるようになって良かったと言います。移行する中で学んだこととしては「とりあえずやってみることが大事」「柔軟性のため、fastlaneなどを使いつつ徐々にコード化していくと良い」「人数やプロジェクトの状態に合わせて使うと良い」だそうです。

アプリの検証がどのくらい行われているか調べてみた @hentekoさん

CDは検証回数を圧倒的に増やし、アプリの品質を高めることが価値であると思うので、DeployGateの統計データを元に、世のアプリはどれくらい検証されているかを調べてみたとのこと。DeployGateは

  • 93カ国で使われている
  • アプリのアップロード回数:9万5千回/月
  • アプリのインストール回数:20万回/月
  • 1アプリごとのインストール数:37.3回/月、1,8回/日
    • 上位アプリの場合:2386.8回/月、119回/日
  • 上位アプリのAPIでのアップロード数:237.4回/月

自動アップロード自体は多いものの、自動化しているユーザという観点で見てみると半数弱くらいであり、まだまだ手動デプロイが多いそうです。アップロードは毎回やると大変だし、インストールはエンジニアでなくても手軽にできるようにすべきだし、どのバージョンなのかなどのフィードバックの精度を高めることを意識してほしいとのことです。自動化をやるなら手軽な配布の部分からやると入りやすいそうです(BitriseにはDeployGateに簡単にアップできるStepもあるとのことです)。

React NativeアプリをBitriseでCDする @れこさん

talks.leko.jp

前まではCircle CIだけ使っていたが、今はGitHubでプッシュしたらCircle CIでテストして、Bitriseで公式のStepを使って配布という形式を取っているそう。自動化は最初にビルド、次に配布に取り組んだようです。時間がないからテストを書かないのではなく、テストを書かないから時間がないということを念頭に置き、テストに取り組んでいるようです。

社内ライブラリの更新を自動化する話 @Ryo Sakaguchiさん

現在デザインの共通化、UIに関する共通言語を作るためにデザインシステムを社内で作成途中とのこと。デザインシステムはアトミックデザインに沿って作っており、マルチプラットフォームに提供しているようです。この取り組みにあたって、プライベート、セキュアにしておきたい、常に最新のものを使いたいという思いからAWSのS3に上げてアクセスを制限したり、Bitriseを使って関連する各リポジトリにPRを作成しテストができる環境を作ったそうです。今後はiOSにも同様の仕組みを取り入れたり、デザインシステム自体の更新作業を自動化することを考えているそうです。

CI/CD専用モニタと心理的安全性 @nakashoさん

www.slideshare.net

CIの価値の中でも「プロジェクトを可視性を改善できること」「製品に対する開発チームの自信を深めること」に焦点を当てたトークでした。CI/CD専用モニタを設置することで進捗具合を皆が把握できたり、それによって進んでるという安心感を得られることができたり、コミュニケーションのネタになったりと、心理的安全性を高める効果があったそうです。

グッズ

1日目2日目両方で豪華なノベルティが配られていました。

f:id:akatsuki174:20181119010331j:plain

私は両日参加していたのでパーカーももらえました。裏起毛のあったか仕様です。

f:id:akatsuki174:20181119010425j:plain

Bitriseさんありがとうございます!

togetter

最後に

中の人がどんな思いで作っていて、これからどうしようと思っているのかを聞くことができたり、他社での工夫事例を聞くことができてとても参考になりました。

来日してくださったBitriseの方、会場提供を始めとした諸々の取り仕切りをしてくださったDeNAの方、通訳をしてくださった方、ありがとうございました!