みなさま、こんにちは
2月より株式会社チームスピリットにJOINしました id:ts-yokouchi です。
弊社では一般公開のエンジニア向け勉強会を不定期で開催しております。
2/9にトレタさん、一休さんと CI/CD をテーマに共催の勉強会を開催させていただきまして
なんと 初回20名の参加枠に80名近くの参加応募 をいただくことができました!
界王拳並みに増席させていただき、当日も天気が悪いにもかかわらず、
多くの人にお集まりいただきましてありがとうございました!
Jenkinsのプロダクションビルドを誤ってポチるという苦い経験のあるワタシですが
自分はフロントエンド領域がメインであり、 あまりCI/CDに関する前提知識がない状態でしたが、
とても面白い発表ばかりで、レポートさせていただきます!
発表
トレタアプリのCI/CD環境
Keiichi Inoueさん(株式会社トレタ)
「CI/CDは大人のピタゴラスイッチ」楽しみながらやっているとのコメントが印象的でした!
CircleCIは環境構築手順をcircle.ymlにコード化できるため、Jenkinsと比べ秘伝のタレが生まれにくいんですね。
入門としてCircleCIを触ってみるのもいいかな、と思いました。
(2017年2月現在、Freeプランがあるみたいです。)
ReactとSeleniumの幸せな関係
Akira Kuratani(株式会社チームスピリット)
弊社Kurataniの発表です。スライドが途中急にFancyなデザインになります。
最近のHTMLはJavaScriptから動的に生成される関係で、 フレームワークに依存した構造になることも少なくありません。 テストを円滑に構築するにはそれを見越してDOMを設計していく必要があります。
コーダーとテスターがお互いに歩み寄りを意識しなければtestableなHTML にはなりにくいというお話でした。
デプロイ完全自動化から1年で起きたこと
Masaki Iizakoさん(株式会社一休)
一休さんにおけるCI/CD周りの改善、チームとして取り組むためにやってたことを発表いただきました。 組織が拡大してくにあたりグループで取り組んでいく必然ができたことと、 必要十分を見極め、改善を繰り返していくことが大切なのだそうです。
また
「Qiitaに資料を作って、共有した気になってはいけない」
個人的にとてもグサっとくる言葉でした。
CircleCI の結果をSlack通知してみる
Yusuke Nakahiraさん(株式会社チームスピリット)
弊社Nakahiraによる、CircleCIによるESLint/Slack連携の発表です。
ざっくりいうとPRをフックにESLintを実行し、GitHubの該当行へコメントした上でSlackへ通知 という環境を構築したお話でした。
なんとSlack連携に関しては10分くらいでできてしまったそうで、
CircleCIについては環境構築自体のハードルがかなり低いというのは
嬉しいポイントだなと思いました!
(おそらく何回も試行錯誤するわけですからね…)
iOSアプリ開発のCI/CD環境と ユビレジでのtry
Noritaka Kamiyaさん(株式会社ユビレジ)
「iOS、デプロイ環境を作るなら 今が旬 」 突然のパワーワードに全て持ってかれてしまいましたが、
毎年プラットフォームの変更に煽りを受けるiOS界隈では、最適なCI環境もコロコロ変わってしまうそうで、
年一回の変更後、その年のノウハウが溜まってくるのがちょうど今の時期なのだそうです。
みなさん!今、今ですよ。iOSのデプロイ環境作るなら!
テストとデプロイだけがやりたいことですか?
Soutaro Matsumotoさん(株式会社アクトキャット)
アクトキャットさんが開発されているSideCIのご紹介いただきました。
SideCIはコードレビューに焦点を当てたプロダクトで、 Lintの自動実行とプロダクトに合わせた柔軟なルールを簡単に書けるというのが 特徴だそうです。
後者はQuerlyというgemで実現しているそうで、Githubに公開されているますので チェックしてみてください。
あと、「強い気持ちがあれば Lint指摘を無視できるボタン」は非常に興味深かったです。
ios/android app_build/test pipeline
Masashi Kurita さん (DeNA Co., Ltd.)
定量的な分析からテスト戦略の立案、実行効果測定までをお話しいただきました。
メトリクスを使ったPDCAサイクルはとても説得力があり、具体例を教えて いただけたのはとても勉強になりました。
ところでご紹介いただいたスマートフォン検証システムのSTFは
どっかで触ってみたいとず〜っと思ってます。
フレクトでのSphinx CI
Shun Saitoさん ( 株式会社フレクト )
中身とは直接は関係ないですが、自分、スライドのデザインにとても感銘を受けました。 伝えるためのデザインとクオリティが両立していてお手本にしたい!と思う資料でした!
内容は
- エンジニアが楽しくかけるドキュメント作成
- ビジネス的に価値のあるドキュメント作成
をCIによって自動化するというものでした。 他の方とは全く違った切り口の発表でとても面白かったです。
まとめ
CI/CD環境については特に「コレ」といったデファクトスタンダートがあるわけではなく、 例えばCircleCIに関しては扱うのは比較的容易でも、コスト/速度面などでトレードオフがあり、 チームに合わせて技術選定をしていく必要がありそうです。
特にiOSについては環境構築についてかなりの試行錯誤が必要そうですね。
他にも、属人化しやすいという面があり、
- 迫り来る秘伝のタレ化とどう戦うか?
- どうナレッジを共有していくか?
- チームとして取り組んでいくには?
という点を意識しないといけないのではと感じました。
アプリケーションエンジニアからすると、普段CI/CD周りについて悩むケースはほとんどないと思いますが、
プロジェクト全体に影響するものですから、意識していかなければいけないものではあります。
これを機会に自分も、まずはプライベートでデプロイ職人(?)の第一歩を
踏み出してみようかと思います。
なお当日の様子はハッシュタグ #cicd_night からもご覧になることができます。
参加してくださった皆様、誠にありがとうございました!
※写真はライブペインティング(トイレ地図アート)の様子です。