>100 Views
January 27, 26
スライド概要
【オンライン】はじめてのCI/CD:CircleCIで学ぶ "開発サイクルの自動化・効率化"
https://circleci.connpass.com/event/380634/
開発の質と速度を底上げしよう! 世界中のエンジニアが愛用する CI/CD ツール「CircleCI」の公式アカウントから日本語で最新情報をお届けします。 最新イベント・ミートアップ情報はこちら: http://circleci.connpass.com
はじめてのCI/CD CircleCIで学ぶ 開発サイクルの自動化・効率化 岡本 秀高 ( @hidetaka_dev ) Senior Field Engineer 1
>Agenda 今日のゴール: 自分のプロジェクトで CI/CDを始められる状態になる 1. 2. 3. 4. 5. CI/CDとは何か → なぜ必要か理解する CircleCIの基本 → 仕組みを理解する デモ → 動くところを見る 設定ファイルのポイント → 書き方を学ぶ 次のステップ → 始め方を知る 2
自己紹介 Hidetaka Okamoto (岡本秀高 ) ● CircleCI Senior Field Engineer ● https://hidetaka.dev ● http://wp-kyoto.net 3
ソフトウェア開発における最大の悩み事 本当にこのパッチ / プルリクエストを リリースしても大丈夫なのか? 4
「リリースは怖い・勇気のいる作業」と感じる人は多い ● デプロイして障害が起きたらどうしよう ● テストやチェックはこれで万全なのか? ● 何か見落としている点はないか? ● そういえばリリース作業誰がやる? 5
「リリースは怖い・勇気のいる作業」と感じる人は多い ● デプロイして障害が起きたらどうしよう ● テストやチェックはこれで万全なのか? ● 何か見落としている点はないか? ● そういえばリリース作業誰がやる? 「リリースによる障害が怖い。 だからリリースの頻度や回数は減らしたほうが安心」 6
「リリースは怖い・勇気のいる作業」と感じる人は多い ● デプロイして障害が起きたらどうしよう ● テストやチェックはこれで万全なのか? ● 何か見落としている点はないか? ● そういえばリリース作業誰がやる? 「リリースによる障害が怖い。 だからリリースの頻度や回数は減らしたほうが安心」 7
低頻度の大きなリリースが一番危険 “ 1つ目は、このアプローチでは...最後のリリースから多くの変更 が溜まると、 意図しない重大な不具合が発生 し、 大幅なリリース遅延を発生 させることに繋がる点です。ˮ ● 1デプロイに含まれる変更が多くなる ● 変更量が増えると、バグ混入リスクも増加する ● 「どのコミットでバグが混ざったか」の特定や、 修正のための調査が大変になる https://www.oreilly.co.jp//books/9784814400690/ 8
安心したデプロイのためにできること デプロイと 機能リリースの分離 ● 通称: Feature Flag ● if文やDBで機能提供の オンオフを制御 ● コードをデプロイしても、 機能自体はリリースしない ● 「できたものからリリース」 できる体制を作るための仕組み 9
安心したデプロイのためにできること 細かく頻繁にコードをデプロイする Thank you. 1. Feature Flag ● ● コードはあるが、機能は「 OFF」 役割: 挙動を変えずにマージする 2. 小さなマージ ● ● 土台(リファクタ・型)から統合 役割: 巨大PRやコンフリクト回避 3. 自動検証( CI) ● ● Pushのたびに機械がチェック 役割: 常に動く状態をキープ 10
リリース頻度を増やすために必要なこと(再掲) 本当にこのパッチ / プルリクエストを リリースしても大丈夫なのか? 11
リリース頻度を増やすために必要なこと(再掲) 本当にこのパッチ / プルリクエストを リリースしても大丈夫なのか? → レビュー間に合うの? 12
レビューを ボトルネックにしない ● デプロイ頻度 Pull Requestの数が増えると レビューの量や回数も増える ● レビュアーの数が増えずに 量や数だけ増えると、 見落としリスクが増加する ● 見落とし = 障害発生リスク 13
機械的にわかるミスを、レビュアーに届けない Thank you. ● 機械的に発見できるミス ○ Lint / Test / Build / etc.. ● 人間が判断すべきミス ○ 仕様の考慮もれ ○ UX的なエラー 14
機械的にわかるミスを、レビュアーに届けない ● CI = 常に動く状態をキープ(シグナル提供) ● CD = ボタン1つでリリース可能な状態を維持 Thank you. → 自信を持って頻繁にリリースできる 15
ここまでのまとめ ● リリースによる障害リスクや影響度合いは、 「頻度を減らしてまとめてやる」ほうが危険になる ● 長くとも1ヶ月以内には、コードをリリースする そのためには、開発の粒度や完了判定の調整から ● 頻度を増やすためには、自動チェックが不可欠 CI および CD を整備することで、頻度の増加に耐えれる体制へ 16
>Agenda 今日のゴール: 自分のプロジェクトで CI/CDを始められる状態になる 1. 2. 3. 4. 5. CI/CDとは何か → なぜ必要か理解する CircleCIの基本 → 仕組みを理解する デモ → 動くところを見る 設定ファイルのポイント → 書き方を学ぶ 次のステップ → 始め方を知る 17
CircleCI: 世界最大規模 の CI / CDプラットフォーム Our mission: 世界中のだれもが、思い浮かんだアイデアを すぐにソフトウェアとして配信できるように支援す る ● 複数のリポジトリサービスに対応 : GitHubやBitbucket / GitLabなどの複数サービスをサポート ● Pipeline/ Config as Code: タスクの条件や定義を YAMLで管理。URLベースの共有にも対応 ● 大規模な CI / CD活用を支援する機能群 : CircleCIを ご利用中のお客様(一部) テスト分割や並列化 / パフォーマンス分析機能 SSHデバッグ / リトライやロールバック機能 / etc… 18
ForresterによるTotal Economic Impact Studyレポートよ り:https://circleci.com/blog/circleci-delivers-664-roi-and-1398-million-npv-according-to-total-economic-impact-study/ 19
セキュリティ要件などに応じて運用方法を決定 クラウド サーバー インスタンスのセットアップ、 セキュリティ、メンテナンスはすべてCircleCIが実施 ディベロッパー/ ユーザー データベース 顧客が管理するネットワーク内に 顧客専用のCircleCIをセットアップ ディベロッパー/ ユーザー ビルドの フリート キャッシュ & アーティファクト VCS (GitHub.com または Bitbucket Cloud) + データベース ビルドの フリート VCS キャッシュ & アーティファ クト (GitHub.com または GitHub Enterprise Server) セルフホストランナー: 実行環境だけ顧客管理のネットワーク内に配置する 20
デモ:最初の CI/CDパイプライン Step 1 Gitリポジトリ接続 Step 2 Configファイル編集 Step 3 パイプライン実⾏ Gitリポジトリをプラットフォー ムに連携し、コードの変更を⾃動 検知する設定を⾏います。 YAML形式の設定ファイルを編集 し、ビルドやテスト、デプロイの ⼯程を定義します。 変更をプッシュしてワークフロー を起動し、⾃動化されたプロセス を完了させます。 21
Step 1: まずは「ビルドが通るか」を自動化する コードをPushするたびに、ビルドが成功するかを自動でチェック。 The Configuration (.circleci/config.yml) The Result 22
Step 2: 増加するテストに対応するため、並列化する 素早く検証するため、テストやリントなどのチェックを並列実行する The Configuration (.circleci/config.yml) The Result 直列実行・同時実行・並列ジョブを組み合わせ、 最短でフィードバックを得る仕組みを作る 23
ここまでのまとめ ● CircleCI は設定ファイル一つで CI/CD を開始できる ● Pipeline→Workflow→Job の階層構造を理解する ● まずはビルドチェックから、段階的に拡張していく 24
>Agenda 今日のゴール: 自分のプロジェクトで CI/CDを始められる状態になる 1. 2. 3. 4. 5. CI/CDとは何か → なぜ必要か理解する CircleCIの基本 → 仕組みを理解する デモ → 動くところを見る 設定ファイルのポイント → 書き方を学ぶ 次のステップ → 始め方を知る 25
Thank you. 26
設定ファイル作成は VS Code拡張で安心 初めての開発をアシストする機能群 ○ 構文チェック YAML構文ミスをエディタでチェック ○ コード補完 入力候補の自動表示 ○ ローカルからのテスト実行 エディタからpush無しでCIをテスト実行 https://marketplace.visualstudio.com/items?itemName=circleci.circleci https://circleci.com/docs/guides/toolkit/vs-code-extension-overview/ 27
orbsを使って セットアップをシンプルに 初めての開発をアシストする機能群 ● 共有可能な CI / CD 設定 = orbs ● CircleCI / SaaSベンダーなどが公開 ● 言語別の最適化された実行環境 ○ circleci/node, circleci/ruby, etc.. orbs + VS Code 拡張で、 https://circleci.com/developer/orbs/orb/circleci/node 初心者も簡単に最適化されたパイプラインを 28
設定ファイルで詰まったら・・・ 1 サンプルや Orbs から始める 2 VS Code 拡張で構文チェック https://circleci.com/docs/sample-config 🔧 タイポや必須項目の不足を確認 https://buildersbox.corp-sansan.com/entry/2021/01/07/110000 テスト実行機能で素早く試す 3 少しずつ追加する 4 公式ドキュメントで調べる 🎯 まずはビルドだけ実行する 📖 Configuration Reference → テストの整備や Lint / 型チェック https://circleci.com/docs → 並列実行... 29
ここまでのまとめ ● YAML の基本構造 : version, jobs, steps, workflows ● Orbを使えば複雑な設定を簡単に実装できる ● VS Code 拡張でローカルテストが可能 30
>Agenda 今日のゴール: 自分のプロジェクトで CI/CDを始められる状態になる 1. 2. 3. 4. 5. CI/CDとは何か → なぜ必要か理解する CircleCIの基本 → 仕組みを理解する デモ → 動くところを見る 設定ファイルのポイント → 書き方を学ぶ 次のステップ → 始め方を知る 31
今日から始める 2つのアクション まずはCI / CDを動かしてみよう 自分のPJに入れてみよう ① CircleCI アカウント作成(無料) ① .circleci/config.yml を追加 → circleci.com/signup ② ビルドが通るかだけ確認 ② デモプロジェクトを fork これだけで「壊れたコード」に気づける → https://circle.ci/node-con-app ③ 段階的にテストを追加 ③ パイプラインが動くのを見る Lint → Unit Test → Integration... 「百聞は一見に如かず」 『入門 継続的デリバリー』もチェックしよう まずは、最初のビルドを成功させてみる 32
初学者が躓きやすいポイント ❌ よくある失敗 ⭕ 推奨アプローチ ● 最初から完璧を目指す ● 最初はビルドが通るだけで OK ● 全テストを一気に追加 ● 速いテストから段階的に ● カバレッジ目標を設定 ● カバレッジは後から ● すべて自動化しようとする ● 手動で理解してから自動化 → 小さく始めて、継続的に改善 「できるだけ早く、多くのシグナルを得る」 — 『入門 継続的デリバリー』 33
One more things… 34
安心したデプロイのためにできること AIによる開発の発達と 品質やセキュリティへの懸念 ● コードの作成や提案の高速化 ● 単純作業やテスト生成の効率化 vs ● レビューコストの増加 ● 脆弱性やハルシネーションリスク https://circleci.com/ja/blog/risks-rewards-generative-ai/ 35
テストの修正や不具合が 起きた時の対応も全部、 生成AIがやってくれたらいいのに 36
Open Preview 自律型 AI エージェント Chunk ● CI / CDパイプラインを監視 ● 不安定な ( Flaky )テストを検知 テストを修正する PR を作成 ● CircleCIを使った PR の自動検証 ● アドホックな コーディングタスクにも対応 37
Closed Preview 効率的なテスト実行計画を自動的に作成 Smarter Testing テスト実行対象を自動選択 ● ● 変更内容を分析して 必要なテストのみを実行 選択した理由なども分析可能 並列テストの実行時間最適化 ● ● 並列実行するテストの 実行時間を平均化 後続のジョブ開始時間を短縮 38
学習リソースとコミュニティ さらに学ぶための情報源 ● 公式ドキュメント https://circleci.com/docs ● ROI Calculator: 自社の状況でコスト削減効果を試算 https://circleci.com/autonomous-validation-roi/ ● https://www.oreilly.co.jp//books/9784814400690/ ● ● ● ● 実装順序の指針 レガシー環境への適用 シグナル設計の原則 etc.. 2025 State of Software Delivery Report 最新の業界データとインサイト https://circleci.com/resources/2025-state-of-softw are-delivery/ ● 入門 継続的デリバリー CircleCI の「How」だけでなく CI/CD の「Why」を学べる Twitter: CircleCIJapan 39