2019/06/20(木)に行われた「CI/CD Test Night #4」のまとめです。
ハッシュタグは#cicd_test_nightです🐦
イベントページはこちら↓
開場
- 時間:19:00-
会場はDeNAさんです。
非常にたくさんの方が集まっています。CI/CDに関する知見は多くのエンジニアにとって必要だということがわかります。

LT
MacStadium使ってみた
- 時間:19:25–19:40
- 発表者:hisa9chiさん(@hisa9chi )
Mac Stadiumの基本的な使い方についての発表でした。
「Mac Stadium」とは、macOS物理マシンのホスティングサービスです↓
DeNAさんではUnityを使ったゲーム開発を行っているため、CI/CDを回すためにはハイスペックな物理マシンが必要とのことです。
ただし、それには以下の金銭的な問題があります。
- 物理マシンを置くスペース
→ヒカリエ(渋谷の一等地)に何十台もの物理マシンを置いているとして、土地代を考えたらかなりの値段になると思われる - 電気代
これらの問題を解決するために、Mac Stadiumが使えないか検討しているということです。
まだお試し中であり、他の類似サービスと使用感の比較もしていないとのことでした。
類似サービスは以下があります。
Mac in Cloud
Host My Apple
CI/CDを回していて、「もっとハイスペックなマシンが欲しい」と感じている方にはとても参考になる内容です。
Mac Stadiumを使う際に参考にしたいスライドです。
CI/CD パイプラインを最速で組み立てるための 4 つのポイント
- 時間:19:40–19:55
- 発表者:manabusakaiさん(@manabusakai)
CI/CDのパイプラインを素早く構築する方法についての発表でした。
アイスブレイクで「CI/CDのパイプラインを組み立てるのが好きな方✋」と聞かれていたのですが、ほぼ手が挙がりませんでしたw
私も手を挙げませんでした…。でも改めて思うと率先して構築しているし、そんなに嫌いではないかもです笑
「パイプラインファースト」という言葉を初めて聞いたのですが、こういうことのようです↓
つまり、「パイプラインファーストを実行するために最速でパイプラインを構築できるようにする」というのが今回の発表の目的です。
最速でパイプラインを構築する4つのポイントは以下の通りです。
- まずローカルで試す
CI/CDサービス上で試すと時間がかかるため
- 依存関係のインストールはパイプライン外で行う
キャッシュを効かせづらく、設定ファイルが複雑になるのを避けるため
→わかっていてもAgentのスペックが日々最新に更新されていくので、パイプライン内でCocoaPodsなどをインストールしてしまいます…。 - パイプライン共通で使えるものをパッケージ化する
→パイプラインをクローンして構築していました…。Azure Pipelinesにもパッケージ化のような機能があれば使いたいです。 - CIとCDのパイプラインを分離する
新規開発をパイプラインファーストで行う際に参考にしたいスライドです。
ちなみに私がパイプライン構築の際に工夫したことはこちらです…。Android側の方々には頭が上がりません…。
Voicy iOSのCI環境をゼロから整えた話
- 時間:19:55–20:05
- 発表者:TaiheiMishimaさん(@tihimsm)
iOSアプリ開発のCI環境を0から構築されたお話でした。
Mishimaさんは初LTとのことでしたが、堂々とお話しされていてすごいと思いました😊
CI環境を作りやすいものから作ったとのことでしたが、優先度の高いものから作るべきだったとのことです。
スライドを見て最初に思ったのは、「こんなにたくさんのことを自動化しているのか」ということでした。私はざっくりいうと「テストの実行」と「アプリの配布」の2つしか自動化していないので、参考になりました。
証明書やProvisioning Profileは「fastlane match」というサービスを使い、Gitリポジトリで暗号化して管理しているとのことでした。
証明書をリポジトリで管理するという発想はなかったのですが、そもそもmatchがそのようなサービスのようです↓
matchについてはこちらの記事が詳しそうでした↓
SwiftLint + DangerでLintの指摘を自動化するのはいいなと思いました。私はSwiftLintをローカルでしか使っていなく、環境によって警告が異なったり、指摘をいちいち手入力で書き込むのが手間だと思っていたので、取り入れたいです。
ただ私はGitHubでなくAzure Reposでソースを管理しているので、Dangerが使えるのかわかりませんでしたが、コマンドラインでも実行できそうです。
iOSアプリ開発でCI環境を0から構築する際に参考にしたいスライドです。
Travis CIのBuild Matrixを活用して、Swift製ライブラリをLinux対応させる
- 時間:20:10–20:20
- 発表者:ikesyoさん(@ikesyo)
Swift製のライブラリをLinux対応したお話でした。
難しくてあまり着いていけなかったのですが、とにかくすごいと思いました。
Swiftには公式のDockerイメージがあるようです↓
「swiftenv」というpyenvのようなツールがあるのを初めて知りました↓
CI/CDサービスの紹介でAzure Pipelinesも含めてくださったのは嬉しかったです。
Swift製のライブラリをLinux対応させる際に参考にしたいスライドです。
5分でわかった気になるTEKTON
- 時間:20:20–20:25
- 発表者:ShuheiKitagawaさん
スライドを上げられているかはわかりませんでした。
「Tekton Pipelines」を初めて聞いたのですが、パイプラインのエンジンのようです。
今後は他のCI/CDサービスでもエンジンにTektonが使われるようになるかもしれない、とのことです。
ソフトウェア品質を支えるE2Eテストのビルドパイプライン作り
- 時間:20:25–20:30
- 発表者: Yuki Tamazawaさん(@yukimikan88)
E2E(End to End)テストのパイプラインについてのお話でした。
恥ずかしながら「E2Eテスト」という言葉の意味がわからないのですが、「システムテスト」と同義でしょうか…?
「シフト・レフト」という言葉を初めて聞きました↓
テストのフレームワークはAppiumを使われていました。
私はXcode標準のXCUITestを使っているのですが、Appiumも人気のようです。
テスト管理にはTestRailを使われていました↓
TestRailは使ったことがないので、使用感が気になります。
ビルドした.apkや.ipaファイルを一旦S3に保持する理由がわからなかったのですが、こういうことのようです↓
AppiumやTestRailを使う際に参考にしたいスライドです。
老後必要資金2000万円時代に送る、Azure Pipelinesによる継続的テスト
- 時間:20:30–20:35
- 発表者: ikuma_hayasakaさん(@siro_uma)
Azure PipelinesでAppiumのE2Eテストを実行されたお話でした。
タイトルのインパクトは今日イチで、本当に初LTなのか疑いますw
「老後に2,000万円必要なので、CI/CDをお金を掛けずに無料枠で使おう!」という内容でしたw
私もiOSアプリ開発でCI/CDにAzure Pipelinesを使っているので、Azure Pipelinesについての発表が増えるのは嬉しいです。
私が話を聞き逃していたのかもしれませんが、「Lang: Python」とはどういうことだったのでしょうか…?
と思ったら、AppiumはRubyの他にPythonやJavaなどの言語でも書けるようです。すご…
Azure PipelinesでAppiumを使う際に参考にしたいスライドです。
懇親会
- 時間:20:45–21:50
懇親会ではおいしい唐揚げなどを食べながら、CI/CDについてのお話をすることができました🍻

Mishimaさんの発表で、CrashlyticsにdSYMファイルを上げるのを自動化されているとのことでしたが、そもそも私は毎回手動でdSYMファイルを上げていないです…。
他のメンバーが上げているのか、上げ忘れているのか気になるので、後ほど調査します。
こちらもMishimaさんから伺ったのですが、メタデータの書かれたファイルを用意すれば、App Store Connectの操作を自動化できるとのことです。
ただ、うちのチームでは、リリースノートを書くなどの申請作業はPO(エンジニアでない)が行っているので、TestFlightに上げるまでが自動化できていればいいかもしれません。
とても便利そうなので使ってみたいですが笑
おわりに
CI/CD Test Nightは初参加でしたが、いろいろなお話を伺えて楽しかったです。
SWETやスピーカーの方々をはじめ、ありがとうございました!