Upgrade to Pro — share decks privately, control downloads, hide ads and more …

日本のマジョリティへのCI/CD導入戦略 / 20250415 Hiromitsu Akiba...

日本のマジョリティへのCI/CD導入戦略 / 20250415 Hiromitsu Akiba & Kenji Matsuyoshi

DevOpsDays Tokyo 2025
https://www.devopsdaystokyo.org/

株式会社SHIFT
アジャイル推進部 部長
秋葉 啓充

アジャイル推進部 DevOps推進1G グループ長
松吉 研二

SHIFT EVOLVE

April 14, 2025
Tweet

More Decks by SHIFT EVOLVE

Other Decks in Technology

Transcript

  1. Copyright SHIFT INC, All Rights Reserved. 2025 / DevOpsDays Tokyo

    2025 日本のマジョリティへの CI/CD導入戦略 15 04 14:00- 14:40 株式会社SHIFT アジャイル推進部 部長 秋葉 啓充 あきば ひろみつ 株式会社SHIFT アジャイル推進部 DevOps推進1G グループ長 松吉 研二 まつよし けんじ
  2. 3 Copyright SHIFT INC, All Rights Reserved. DXの総合サービスを提供し、累計顧客数は約3,200社へ(2024年5月末時点) 事業の変遷 はじまりは「ソフトウェアテスト」

    2009年 市場をブルーオーシャンとして捉え成長 出所:SHIFT. 統合報告書 2022. 2023年4月20日, 20p. コンサルティング 開発 セキュリティ 性能 デジマ ERP Agile AI 人事コンサル PMO ソフトウェア開発産業の市場規模は 約16.5兆円 ※ソフトウェアテスト業務は全開発工程の33.8%と想定 (ソフトウェア開発データ白書2018‒2019) ※経済産業省 2021年情報通信業基本調査(2020年度実績) (ソフトウェア開発に関連する業界の売上高合計より算定) ※検証工程を専業とする国内企業の売上高規模による推定
  3. 4 Copyright SHIFT INC, All Rights Reserved. 自己紹介 経歴 大阪府出身。2007年に

    外資系SIerの子会社でエンジニアとしてキャリ アスタート。 ベンチャーを経て2020年にSHIFT入社。 コンサル、スクラムマスター、インフラアーキテクト、自動化PM、 エンジニアリングマネージャーなどを担当し、2025年3月より現職。 登壇歴 2025年:DevOpsDays Tokyo、SHIFT Agile FESほか 2024年:openSUSE.Asia Summit、SHIFT EVOLVEほか 2023年:SHIFT 89祭ほか 2022年:JaSST‘22 Kansaiほか #心理的安全性 #GitHub Trends#クラウド海峡横断部 #RPA #ローコード #AI #自動化 #CI/CD #哲学 #ポストモダン #2男児の父 #人間は9タイプ #フットサル #IoT 秋葉 啓充(あきば ひろみつ) アジャイル推進部 部長 入社:2020年4月
  4. 5 Copyright SHIFT INC, All Rights Reserved. 自己紹介 経歴 大学卒業後、11年間システム開発会社で携帯サイトやECサイトの開

    発を実施案件ではPL、会社ではチームリーダー(課長職)に従事。 その後、3年間GISクラウドシステムの企画〜運用・保守まで実施。 SHIFTに参画してから • テスト自動化でリアルタイム現新比較の仕組みをスクラッチ開発 • 標準化された自動化技術の適用、運用支援など様々な業界のお客様 への営業技術支援(プリセールス) • フレームワーク/サービス開発 • 組織マネジメント #テスト自動化 #CI/CD #DevOps #マネージャー賞受賞 #お茶目なジェントルマンで賞 #2児の父 松吉 研二(まつよし けんじ) アジャイル推進部 DevOps推進1G グループ長 入社:2017年4月
  5. 6 Copyright SHIFT INC, All Rights Reserved. 明るく 楽しく 前向きに

    あ た ま 「あたま」はほかにも使える 集める 確かめる 前に進める あ た ま 「あたま」を活用する 私たちが大事にしていること:
  6. 10 Copyright SHIFT INC, All Rights Reserved. 部分的なテスト自動化やCI導入などをしてきたが、 顧客の文化を変えるまでにはいたっていなかった。 DevOps文化を当たり前にしたいが、どれだけ当事者意識を

    もってしても、第三者である私たちでは限界があるのか? 私たちはDevOps文化を当たり前にしていきたい その常識、変えてみせる。 いや、限界などないはずだ!
  7. 12 Copyright SHIFT INC, All Rights Reserved. 文化を変えるためのアプローチ 出典:https://speakerdeck.com/twada/building-automated-test-culture-2024-winter-edition 技術「が」文化「に」影響を与える

    何もしてないから壊れる 自然と壊れが発生する現代において、継続的な活動を定着させていく要素は文化、プロセス、ツール(技術)。 文化を作るには時間がかかるので、プロセスとツールから変化を加えれば、 文化として定着させていけるのでは?が出発点。
  8. 15 Copyright SHIFT INC, All Rights Reserved. どんな状況に対しても100点が取れるものは存在しないが、 マジョリティがはじめるときのプロセスとツールの標準をつくれば 及第点が取れるレベルのものはつくれるかもしれない

    そうもいかないので… まずはブランチ戦略をつく作り、 それを支える仕組みやプロセスを考えてみることに 1. それぞれの状況、ステージによって考える 2. 似たところがあったりなかったり 3. 複数の支援を続けるなかで気づく
  9. 16 Copyright SHIFT INC, All Rights Reserved. CI/CDを行ううえで、プロセスやツールの使い方を周知するためのドキュメントをつくっちゃったりしませんか? 生成AIでどんなドキュメントをつくるのか聞いてみると…たくさん出てきました。 例えば、ルールを守りやすくするため、開発ガイドを用意

    z 1.CI/CD利用アカウントの作成手順 1. CI/CDツール(例:Jenkins, GitLab CI, GitHub Actions)のアカウント 作成手順 2. アクセス権限の設定方法 3. セキュリティベストプラクティス 2.ブランチ戦略 1. ブランチの命名規則 2. ブランチの種類(例:main, develop, feature, release, hotfix) 3. ブランチのマージポリシー 4. ブランチの保護ルール 3.パイプラインの構築方法 1. パイプラインの基本構成 2. 各ステージ(ビルド、テスト、デプロイ)の詳細 3. パイプラインのトリガー条件 4. パイプラインのエラーハンドリング 4.コードレビューとマージの手順 1. プルリクエスト(PR)の作成手順 2. コードレビューのガイドライン 3. マージの承認プロセス 5.テスト戦略 1. ユニットテスト、統合テスト、エンドツーエンドテストの実施方法 2. テストカバレッジの基準 3. テスト結果のレポート方法 z 6.デプロイメント戦略 1. デプロイメントの種類(例:ローリングデプロイ、ブルーグリーン デプロイ、カナリアリリース) 2. デプロイメントの手順 3. ロールバック手順 7.モニタリングとアラート設定 1. モニタリングツールの設定方法(例:Prometheus, Grafana) 2. アラートの設定基準と通知方法 3. ログ管理の方法 8.セキュリティガイドライン 1. セキュリティスキャンの実施方法(例:SAST, DAST) 2. セキュリティベストプラクティス 3. 秘密情報の管理方法(例:シークレット管理) 9.インフラストラクチャの設定 1. インフラストラクチャのコード化(IaC)ツールの使用方法(例: Terraform, Ansible) 2. 環境のセットアップ手順(例:開発、ステージング、本番) 10.ドキュメント管理とナレッジシェア 1. ドキュメントの保存場所とアクセス方法 2. ナレッジシェアの方法(例:Wiki, Confluence) 3. ドキュメントの更新手順
  10. 21 Copyright SHIFT INC, All Rights Reserved. 日本のマジョリティによくある中長期・大規模開発では、mainへPRがマージされたものが すぐに本番リリースできるものではないことが多い。 これを使いこなすためにはFeature

    Flagや高度な自動テストが整備され、featureを小さく分割し、 それぞれを本番リリース可能な形で開発できる程度に成熟したチームが必要。 GitHub flow 本番リリース?
  11. 24 Copyright SHIFT INC, All Rights Reserved. 日本のマジョリティによくある中長期・大規模開発向けにプロジェクト単位でブランチを切り、 その下で開発・テスト・不具合修正を行うシンプルなフロー ブランチ戦略

    - 正常系 main project/プロジェクト名称 PR PR 前回PJ完了 PJ完了 PR PR merge /rebase work/作業名称 work/作業名称 開発&テスト PR issue/不具合名称 通常コミット マージコミット PRパイプラインを実行(静的解析/UT) CIパイプラインを実行(静的解析/UT/オートバージョニング/パッケージング/デリバリー) マージコミットに対してCIパイプラインを実行 プロテクトブランチ
  12. 25 Copyright SHIFT INC, All Rights Reserved. mainブランチの最新コミットが本番と同じソースコードであるため、開発プロジェクト中のHotfix は、mainブランチからhotfixブランチを切り、その下で開発・テストを行うシンプルなフロー ブランチ戦略

    - Hotfix main project/プロジェクト名称 PR PR 前回PJ完了 PJ完了 PR PR merge /rebase work/作業名称 work/作業名称 開発&テスト PR PR PR PR issue/不具合名称 issue/不具合名称 merge issue/不具合名称 hotfix/緊急リリース名称 通常コミット マージコミット PRパイプラインを実行(静的解析/UT) CIパイプラインを実行(静的解析/UT/オートバージョニング/パッケージング/デリバリー) マージコミットに対してCIパイプラインを実行 プロテクトブランチ
  13. 26 Copyright SHIFT INC, All Rights Reserved. mainブランチの最新コミットが本番と同じソースコードであるため、開発プロジェクト中のHotfix は、mainブランチからhotfixブランチを切り、その下で開発・テストを行うシンプルなフロー ブランチ戦略

    - Hotfix main project/プロジェクト名称 PR PR 前回PJ完了 PJ完了 PR PR merge /rebase work/作業名称 work/作業名称 開発&テスト PR PR PR PR issue/不具合名称 issue/不具合名称 merge issue/不具合名称 hotfix/緊急リリース名称 直接projectにマージ(PR)しようとすると、コンフリクト している場合は、main,hotfix,projectどれもプロテクト ブランチのため、コンフリクトを解消する方法がない。 (厳密にはないわけではないが)コンフリクト発生有無 により場合分けをすると、手順やルールが煩雑になり、 慣れていないチームでは混乱を招くため、issueブラン チ経由のような方法に統一することを推奨。 必要に応じてコンフリクトの解消や 開発中のプロジェクトに合わせた修正を行う。 通常コミット マージコミット PRパイプラインを実行(静的解析/UT) CIパイプラインを実行(静的解析/UT/オートバージョニング/パッケージング/デリバリー) マージコミットに対してCIパイプラインを実行 プロテクトブランチ
  14. 32 Copyright SHIFT INC, All Rights Reserved. ガードレール(フールプルーフ)により壊れにくくする →PRパイプラインのブランチ条件やジョブで、ブランチ戦略のルールに則っているかチェックする ブランチ戦略の半分は優しさでできている

    main project/プロジェクト名称 PR PR 前回PJ完了 PJ完了 PR PR merge /rebase work/作業名称 work/作業名称 開発&テスト PR PR PR PR merge issue/不具合名称 hotfix/緊急リリース名称 issue/不具合名称 issue/不具合名称 通常コミット マージコミット PRパイプラインを実行(静的解析/UT) CIパイプラインを実行(静的解析/UT/オートバージョニング/パッケージング/デリバリー) マージコミットに対してCIパイプラインを実行 プロテクトブランチ
  15. 33 Copyright SHIFT INC, All Rights Reserved. ガードレール(フールプルーフ)により壊れにくくする →PRパイプラインのブランチ条件やジョブで、ブランチ戦略のルールに則っているかチェックする ブランチ戦略の半分は優しさでできている

    main project/プロジェクト名称 PR PR 前回PJ完了 PJ完了 PR PR merge /rebase work/作業名称 work/作業名称 開発&テスト PR PR PR PR merge issue/不具合名称 hotfix/緊急リリース名称 issue/不具合名称 issue/不具合名称 通常コミット マージコミット PRパイプラインを実行(静的解析/UT) CIパイプラインを実行(静的解析/UT/オートバージョニング/パッケージング/デリバリー) マージコミットに対してCIパイプラインを実行 プロテクトブランチ ガードレール例 mainへのマージが可能なのはproject,hotfixのみとし、間違った ブランチからPRが作成されていないか検査してあげる。 ガードレール例 project,hotfixへのマージが可能なのはwork,issueのみとし、間違った ブランチからPRが作成されていないか検査してあげる。
  16. 35 Copyright SHIFT INC, All Rights Reserved. オートバージョニングとトレーサビリティ • ビルド番号相当をバージョン番号に含める(下図ではパッチバージョンをビルド番号として扱っている)

    • CIパイプラインにおいてgitコマンドを駆使して自動的にビルド番号をカウントアップしてタグ付けする • リポジトリ内のファイルにはバージョン番号はもたない、もしくは固定値とし、手作業でのバージョンアップやコミットをしない ブランチ戦略の半分は優しさでできている main project/1.1 PR PR 前回PJ完了 PJ完了 PR PR merge /rebase work/作業名称 work/作業名称 開発&テスト PR PR v1.0.5 PR PR issue/不具合名称 issue/不具合名称 merge issue/不具合名称 hotfix/緊急リリース名称 v1.1.0 v1.1.1 v1.1.2 v1.1.3 v1.0.6 通常コミット マージコミット PRパイプラインを実行(静的解析/UT) CIパイプラインを実行(静的解析/UT/オートバージョニング/パッケージング/デリバリー) マージコミットに対してCIパイプラインを実行 プロテクトブランチ
  17. 37 Copyright SHIFT INC, All Rights Reserved. アーティファクト同一性 • コミット

    : ビルドアーティファクト : バージョン : デプロイ環境 = 1 : 1 : 1 : N • 1つのコミットに対して、ビルドアーティファクトもバージョン番号も1つ、それを複数の環境にデプロイ可能にする • テスト・QAがすべて完了した同じアーティファクトを本番にもリリースする ブランチ戦略の半分は優しさでできている dev stg IT〜 単体テスト 本番稼働 dev stg prod IT〜 単体テスト dev 単体テスト dev stg IT〜 単体テスト main project/1.1 PR PR 前回PJ完了 PJ完了 PR PR merge /rebase work/作業名称 work/作業名称 開発&テスト PR PR v1.0.5 PR PR issue/不具合名称 issue/不具合名称 merge issue/不具合名称 hotfix/緊急リリース名称 本番稼働 dev stg prod IT〜 単体テスト v1.1.0 v1.1.1 v1.1.2 v1.1.3 v1.0.6 通常コミット マージコミット PRパイプラインを実行(静的解析/UT) CIパイプラインを実行(静的解析/UT/オートバージョニング/パッケージング/デリバリー) マージコミットに対してCIパイプラインを実行 プロテクトブランチ
  18. 39 Copyright SHIFT INC, All Rights Reserved. Gitだけであれば、mainブランチへのマージだけはFast Forwardマージすることで、マージコミットをつくらず に本番リリースしたコミットを指すようにできる。

    少し脱線 通常コミット マージコミット PRパイプラインを実行(静的解析/UT) CIパイプラインを実行(静的解析/UT/オートバージョニング/パッケージング/デリバリー) マージコミットに対してCIパイプラインを実行 プロテクトブランチ main project/プロジェクト名称 PR 前回PJ完了 PR PR merge /rebase work/作業名称 work/作業名称 開発&テスト PR issue/不具合名称 PJ完了 mainブランチをFFマージ
  19. 41 Copyright SHIFT INC, All Rights Reserved. パイプラインだけではなく、クラウドインフラも型として作成した • バックエンド、フロントエンドそれぞれに対応し、ビルドツールやプログラミング言語のパターンを複数作成

    • プロジェクト管理ツールや静的解析の組み込みをすることもある その他の工夫ポイント CI/CDサービス ベンダー Azure GitHub プロジェクト管理 Azure Boards VCS Azure Repos GitHub パイプライン Azure Pipelines GitHub Actions パッケージレジストリ Azure Artifacts GitHub Packages アプリケーション 言語 Java Python フレームワーク Spring Boot Django/Flask パッケージマネージャー Maven Pipenv/Poetry ビルドツール ユニットテスト JUnit5 django.test/pytest SAST/SCA SonarQube/Trivy コンテナレジストリ Azure Container Registry GitHub Packages Black/isort/Flake8/Ruff 開発プロセス 開発プロセス 小規模(内製)ウォーターフォール アジャイル デプロイ方式 デプロイ方式 TypeScript React/Vue.js/Nuxt npm Jest/Vitest ESLint/Prettier/Biome 物理/仮想マシン + In-Placeデプロイ … Azure Static Web Apps Vite SAST/SCA Azure App Service GitHub Advanced Security GitHub Projects Checkstyle/SpotBugs
  20. 42 Copyright SHIFT INC, All Rights Reserved. お客様の声 ブランチ戦略が分かりやすくて、メンバーからもすごく好評です。 優しいブランチ戦略のおかげで、すぐにCI/CDの恩恵を受けることができました。

    おかげで、チーム全体が継続的に改善する文化に変わりました。 結果としてパフォーマンスもぐんと上がったんです。 前は“壊したらどうしよう…”ってビクビクしてたんですけど、今は安心して作業 できるようになりました。おかげで、いろんなことにチャレンジしやすくなりま したね。 ツールやプロセスのベースを提供してもらうことでCI/CDをお手軽に導入するこ とができました。 CI/CDに慣れていくことで、すぐに直そうという意識が芽生えて、綺麗に保ちた い気持ちが強くなりました。 CI/CDを簡単に導入できたおかげで、ブランチの健康状態がリアルタイムで把握 できるようになり、現場と管理者との信頼関係が改善され、スムーズなプロジェ クト運営が可能となりました。
  21. 43 Copyright SHIFT INC, All Rights Reserved. 着実にお客様から感謝の声はいただけている。 しかし、 まだまだDevOpsを当たり前にしている企業は多くはない。

    わたしたちはDevOps文化を当たり前にしていきたい もっとDevOpsを 普及していくために 最後に提言を言わせて いただきます
  22. 46 Copyright SHIFT INC, All Rights Reserved. Agile Japanサテライト :

    SHIFT Agile FES 開催!! 生成AI時代における人間の情熱とプロダクト Tably株式会社 代表取締役 及川 卓也 トップエンジニアが語るDX最前線 イオン株式会社 CTO 兼 イオンスマートテクノロジー株式会社 CTO 山﨑 賢 株式会社クレディセゾン 取締役 兼 専務執行役員 CTO 兼 CDO 小野 和俊 Kent Beckの思想と学びの道筋 株式会社SHIFT ソリューション事業部 アジャイル推進部 部長 秋葉 啓充 株式会社アトラクタ Founder兼CTO アジャイルコーチ 吉羽 龍太郎 2025.5.17 SAT 09:50-18:30 ONLINE+ONSITE