i-Willink
|Tech|✍️ Yutaro SHIRAI

「創る」ことに熱中するために。i-Willinkが考える、持続可能なCI/CDパイプラインの設計思想

エンジニアが本来の価値提供である「創る」ことにフルコミットできる環境を作るための、CI/CDパイプラインの最適化と実践的な工夫について解説します。

Sustainable CI/CD Pipeline Hero Image
i-Willink CI/CD Philosophy
DevOpsNext.jsGitHub Actions

主な技術要素

GitHub ActionsAWS CDKDependabotPlaywright

パイプラインの特徴

  • 賢い条件分岐による時短
  • インフラ変更の自動検知
  • 多層的な品質チェック
  • 依存関係の自動更新

現代のWeb開発において、CI/CD(継続的インテグレーション/継続的デリバリー)はもはや「あれば便利」なツールではなく、開発プロセスの「心臓部」と言えます。

しかし、ただツールを導入するだけでは十分ではありません。ビルド時間が長すぎて開発のリズムが崩れたり、エラー通知がオオカミ少年化して無視されたりと、運用に乗らないケースも少なくありません。

私たちi-Willinkは、エンジニアが本来の価値提供である「創る」ことにフルコミットできる環境を作るため、CI/CDパイプラインの最適化に徹底的にこだわっています。本記事では、一般的なCI/CDの意義を整理した上で、私たちが公開している「Next.js Amplify Starter Kit」に実装されている、実践的な工夫とこだわりをご紹介します。

実践的パイプライン構成

私たちのスターターキットでは、以下のようなフローで品質担保とデプロイを行っています。無駄な処理を省きつつ、必要なチェックは厳格に行うバランスを重視しています。

CI/CD Pipeline Flow
Push
to develop
Model Context Protocol
Paths Filter
Checks
Lint/Type/Test
Deploy
Staging
Docs Only = CI Skipped

設定の具体例:Pathsフィルタリング

GitHub Actionsの `paths-ignore` を使うことで、ドキュメントのみの変更時にCIが走るのを防いでいます。

.github/workflows/ci.ymlYAML
on: push: paths-ignore: - '**.md' - 'docs/**' - '.vscode/**'

📚CI/CDの基礎知識と導入意義

CI/CDとは何か

CI(Continuous Integration)は、コードの変更を頻繁にマージし、自動テストや静的解析を行うことで、バグを早期に発見するプロセスです。CD(Continuous Delivery/Deployment)は、テストを通過したコードを自動的に本番環境やステージング環境へデプロイする仕組みです。

導入のメリットとデメリット

👍 メリット

  • 品質の安定化: 手動テストの漏れを防ぎ、常に一定の品質基準をクリア。
  • リリース高速化: デプロイ作業自動化で、機能提供までの時間を短縮。
  • 心理的安全性: 「壊してもCIが教えてくれる」安心感。

⚠️ デメリット(課題)

  • 初期構築コスト: 適切な設計には専門知識と時間が必要。
  • 維持コスト: 依存更新や実行時間増加へのメンテナンス。

💡i-Willink流・CI/CDへの3つのこだわり

私たちは、上記の「維持コスト」や「実行時間」の課題を最小化し、メリットを最大化するために、以下のような独自の工夫を凝らしています。

⏱️

① 時間とリソースを浪費しない「賢い条件分岐」

GitHub Actionsは便利ですが、無駄に走らせればコストも待機時間も増大します。「必要な時に、必要なジョブだけ」を実行する設計を徹底しています。

  • Pathsフィルタリングの活用: ドキュメント変更のみならビルドを実行しないなど、関連するワークフローのみをトリガーして時間を短縮。
  • Concurrencyによる無駄の排除: 連続push時に古いジョブを自動キャンセルし、最新の結果だけを待ちます。
🤖

② エンジニアを作業員にしない「完全自動化」への執念

「デプロイ手順書を見ながらコマンドを叩く」時間をゼロにすることを目指しています。

  • インフラ変更の自動検知: AWS CDKによるインフラ定義(IaC)の変更も検知し、自動的に環境へ適用(cdk deploy)します。
  • 依存関係更新の自動化: Dependabotでライブラリ更新からPR作成、テスト実行まで自動化。「マージボタンを押すだけ」の状態を作ります。
🛡️

③ 障害を未然に防ぐ「品質のゲートキーパー」

スピードを上げても、品質が下がっては本末転倒。デプロイ後に冷や汗をかかないための厳格なチェック体制です。

  • 多層的なチェック: Lint、Type Check、Unit Testを並列実行し、一つでも失敗すればマージをブロック。
  • インフラリソースの命名規則チェック: CDKスタック名の動的生成ロジックに厳格なチェックを追加し、環境取り違え等のミスを防止。

🚀まとめ:技術で「創る」を加速させる

私たちが提供するスターターキットには、これらの「開発者体験(DX)を最高にするための知見」がコードとして実装されています。 CI/CDは一度作って終わりではありません。チームの成長やプロダクトのフェーズに合わせて、常に最適化し続ける必要があります。

「環境構築やデプロイ周りの面倒事から解放されたい」「もっとプロダクトの本質的な価値づくりに時間を使いたい」 そう考えるエンジニアの方々にこそ、私たちが磨き上げたこの開発基盤を体験していただきたいと考えています。

スターターキットをチェック

i-Willinkの実践的なCI/CD構成が実装されたリポジトリをご覧ください。

GitHubで見る