Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
アーキテクチャ勉強会
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
yuta-sanada0089
November 10, 2018
130
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
アーキテクチャ勉強会
yuta-sanada0089
November 10, 2018
Featured
See All Featured
Utilizing Notion as your number one productivity tool
mfonobong
4
620
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
600
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
Typedesign – Prime Four
hannesfritz
42
3.2k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
540
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
550
How to Ace a Technical Interview
jacobian
280
24k
Optimizing for Happiness
mojombo
378
71k
Skip the Path - Find Your Career Trail
mkilby
1
260
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
410
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
43k
Optimising Largest Contentful Paint
csswizardry
37
4k
Transcript
アーキテクチャ勉強会 CI/CD環境について
自己紹介 名前: 真田雄太(両OSやるマン) 普段の業務: スマホアプリ開発(Android/iOSアプリ) 言語: Kotlin,Java/Swift エディタ: Android Studio/Xcode
最近の興味: DevOps,Firebase
現在担当しているプロジェクト ゴルフ場予約アプリのAndroid 版を担当。既存のアプリをJava からKotlinにリニューアル。
今日お話しする内容 ・CI/CDについて勉強するようになったきっかけ ・CI/CDとは? ・CI/CDでできること(メリット等) ・導入のタイミング ・CI/CDサービスについて
CI/CDについて勉強するようになったきっかけ 理由は主に以下の4つ ・スマホアプリエンジニア界隈では関心が高まってきている分野である(勉強会が人気で 毎回抽選) ・リリースの手順がかなり面倒で自動化を覚えて楽したい ・面談でもCI/CDに関する知識を結構問われることが多く勉強する必要性はずっと感じて いた ・今の現場で技術選定、設計から携わることになった
TEST NIGHT
TEST NIGHT 毎月開催してるにも関わらず聴講枠の申し込みが殺到する人気の勉強会。何回か応募 して今週ようやく当選(324/180人)。CI/CDやテスト等はスマホアプリ開発者の間では関 心が高い分野。個人的にも数多くあるCI/CDツールを他社の方は何を基準にして決めて いるのか、どのように実践しているのかなど非常に興味がある。(iOSは特に証明書やプ ロビジョニングファイル、AppleIDの管理などがややこしかったり、MacOS対応していな いツールが多いなど結構辛い部分が多いので…)
CIとは? CI(Continuous Integation) : 継続的インテグレーション ビルドを継続的に行い、フィードバックを早期に受けるための仕組み ・ビルド : アプリのビルド、自動テスト、ドキュメント生成 etc
・継続的 : 基本的にはコードが変わった時点で常に実行 ・フィードバック : ビルドの成功、失敗(何で失敗したか)、ビルドにかかった時間etc 手作業でこうしたプロセスを実施することはコストが嵩むため、通常は CIツールを用いて実施する。
CIの価値 リスクの軽減 ・問題の早期発見(問題が溜め込まれたり大きなバグの発生を防ぐ ) ・自分の開発環境以外で動かすことで開発環境についての思いこみを減らせる 開発者の生産性向上 ・繰り返しの多い手作業の削減により労力が節約 ・開発や思考力を要する仕事に集中できる (割ける時間が増える) プロダクトの安心感
・常にCIが動いていれば安心感が得られる (フィードバックでアプリの状態が見えるため問題が生じたときに気付きやすい )
CDとは? CD(Continuous Delivery): 継続的デリバリー CIを拡張し、ビルド・テストが通ったらステージング環境や本番環境へ自動でリリースできるようにし、 反復可能なプロセスを構築する仕組み。 ・GUIの操作で簡単にテスト・検証済みモジュールを任意の環境へリリースが行える ・自分の望むバージョンのアプリケーションを好きな環境にリリースできる。問題が発生してもすぐに リリース前の状態に戻せるようにする。 ・開発者だけでなくチームに関わるメンバーにもリリース権限を持たせる。テスター、運用担当者な
ど
CDの価値 チーム間の作業を効率化 ・テスター:アプリの新バージョンと旧バージョンを検証することができる ・サポート担当者:アプリをテスト環境にデプロイし、不具合を再現できる ・開発者:ビルドを本番環境へデプロイ など。GUI上で操作できリリースが簡単に行える。
CDの価値 リリースの負担を減らせる ・小さく早いサイクルでリリースが可能になる ・手順書に従って手動でリリースする必要がなくなる ・リリース後に不具合があった場合でも容易に前の状態に戻すことができる 素早いフィードバック ・CIと同様(状態の見える化) 検証回数を圧倒的に増やす ・アプリの品質を高めることになる
補足 テストの自動化と言っても、CI/CDサービスやツールが自動でテストを作成してくれるわ けではなく。あくまで、実行するテストは自分たちで書く必要があり、CI/CDは主にそれら を任意のタイミングで自動で実行してくれるだけです。 ※...ちなみに実務で使う前はテストも自動で作ってくれるものだと思っていました。
導入のタイミング できればプロジェクトの初期から導入 ・途中からだと自動化しづらいプロダクトを作ってしまっている場合があったりする ・後半になるにつれテストが通らない、ローカルでは実行できるのに、といった問題が発生しやすく なり構築自体が面倒になったり、状況的に優先順位が下がってしまいには導入しなくていいかという 結論に達してしまう ・リリース後だと保守や改修等で思った以上に余裕がなく手が回らない 面倒が少ないプロジェクトの初期に導入した方が良い
自動化を支えるCI/CDツール CI/CDは非常に多くのツールがあるが大きく分けてオンプレミス型とクラウド型がの2種 類に分類される。それぞれの特徴と代表的なサービスについて紹介します。
オンプレミス型 オンプレミス型は一般的に拡張性が高い一方、自分たちで構築・運用する管理コストが発生する。 代表的なサービス ・Jenkins ・Bamboo メリット ・セキュリティが強固である ・拡張性が高い ・ビルドするマシンの性能を自分たちで調整できる ・オープンソースであることが多い
デメリット ・運用コストが高い ・サーバーを自前で用意する必要がある ・属人的になりやすい
クラウド型 クラウド型はサーバーなどを自前で用意する必要がなく、すぐに使い始めることができるが拡張性は 低い。 代表的なサービス ・TarvisCI ・CicleCI ・Werker メリット ・サーバーを自前で持たなくて良い ・簡単に始められる
デメリット ・有料(個人規模の小さいサービスなら無料枠で充分な事が多い ) ・ビルドするマシンの性能が得られない事が多い ・拡張性が低い
選定にあたって 利用するサービスは1つじゃないとダメというわけではない ・用途に応じて使い分けたり、複数のサービスを組み合わせたりするのも一つの手 最近のクラウドCIサービスは簡単にできる事が増えている 複雑な事、細かい事、をやろうとするとJenkinsが良い事が多い ・Jenkinsでなくともできないことはなさそうだがハードルが高い … FreePlanやお試し期間で触って試してみるのが良い ← 今絶賛お試し中!
None
まとめ CI/CDを取り入れるとコードが変わるたびにビルドやテスト、リリースなど繰り返しの多い 手作業を自動化することができ、労力を大幅に削減することができる。それによって、問 題(バグ)などの早期発見や開発の生産性が飛躍的に向上する等の恩恵が受けられる。 導入はやや手間にはなりますが一度導入してしまえばそれ以降はCIやCDが自動でサ イクルを回し続けてくれるので結果的に開発期間を短縮できます。 単純で面倒で面白くない作業はCIに任せて結果だけ教えてもらいましょう!
最後に 最近のCI/CDサービスは導入が簡単になってすぐに個人でも始めることができます。ま ずはFreePlanでCI/CDを取り組んでみましょう!