14:00最近、CI/CDという単語を見ることが増えてきました。Google、Microsoft、Oracleなどの大きなIT企業が自社のCI/CDツールを発表したり、CI/CDのスタートアップの買収などの話が過去一年にいくつもありました。実際CI/CDに対する需要は急速に高まっています。その裏には自動化の重要性の高まりやアジャイル開発の浸透・進化があります。2回の連載でこの流れについて見ていきましょう。筆者についてCI/CDとはなぜ今CI/CDか?Page2テスト自動化のメリットCI/CDは自動化ツールPage3単なる自動化ツールを超えて継続的デプロイリスクマネージメントフィードバックを素早く得るまとめはじめに本連載では、CI/CDを始めて学ぶ方にも、すでに知っている方にも、できるだけ新しいことを発見してもらえるように心かげました。連載の1回目は主にCI/CDの概要と導入のメリットから始めて、CI/CDで加速する最新のアジャイル開発手法を解説します。前半は入門者向けの内容ですが、後半は一歩踏み込んだソフトウェア開発でのCI/CDの役割についてです。連載の2回目はCI/CDサービスの代表の一つである「CircleCI」を使って実際にCI/CDの設定方法や具体的な機能について解説します。プロジェクトの登録などの導入から始めて、実際の開発現場で役立つ機能やプラクティスを紹介します。CI/CDを最大限に活用できたとき、あなたのチームは今より数段上のソフトウェア開発が行えるようになります。この連載でそのお手伝いができれば幸いです。Japanでさまざまな活動を行っています。Delivery」の略で、日本語では継続的インティグレーション/継続的デリバリーといいます。CI/CDは1つの技術を指すものでなく、ソフトウェアの変更を常にテストして自動で本番環境にリリース可能な状態にしておく、ソフトウェア開発の手法を意味します。CI/CDを取り入れると、バグを素早く発見したり、変更を自動でリリースしたりできるようになります。CIやCircleCIなどが有名です。オンプレミス型は一般的に拡張性が高い一方、自分たちで構築・運用する管理コストが発生します。クラウド型は拡張性が低いですが、サーバーなどを自前で用意する必要がなく、すぐに使い始めることができるのが大きな魅力です。Build以下はオンプレミス型とクラウド型のメリットとデメリットの対比です。どちらを選ぶかはチーム次第ですが、よほど大規模な組織でCI/CDを専任で運用できるチームがない限り、筆者はインフラの管理コストがかからないクラウド型をおすすめします。CI/CDサービスのオンプレミス型とクラウド型との比較オンプレミス型クラウド型メリット拡張性が高いビルドするマシンの性能を自分たちで調整できるオープンソース(であることが多い)サーバーを自前で持たなくていい簡単に始められるアップデートをしなくてよいコミュニティでナレッジを共有できるデメリット運用コストが高いサーバーを自前で用意する必要がある有料(通常無料枠もあります)ビルドするマシンの性能を選べないことが多いなぜ今CI/CDか?CI/CDが近年重要視されるようになってきた理由として、2つの大きな流れがあるように思います。1つ目は自動化テストの重要性の高まり、2つ目はアジャイル開発のプラクティスの浸透と進化です。あらゆる作業がどんどんコンピューターで行われるようになっている今日では、ソフトウェアを使ってない企業や組織はほぼないと言ってよいでしょう。これだけソフトウェアが普及していくと、当然品質に対する要求も高くなり、今まで手動でテストしていた分野でも積極的に自動化テストを取り入れるようになってきます。WebページがHTMLと少量のJavaScriptで書かれていた時代は、フロントエンドのテストを書くことは稀でした。Reactなどの高度で複雑なフレームワークが登場したり、ビジネスロジックをフロントエンドにも持たせることが多くなるにつれて、フロントエンドのテストを書くことは必須となりました。CI/CDを使うと、コードの変更が発生するたびに自動でテストが行われるので、テストの実行忘れや、環境依存のテストを失くすことでの品質を向上させることができます。テストの自動化についてちなみに、テストの自動化と言っても、CI/CDサービスやツールが自動でテストを作成してくれるわけではありません。実行するテストは自分たちで書く必要があり、CI/CDは主にそれらを任意のタイミングで自動で実行してくれるだけです。アジャイル開発の浸透と進化もCI/CDの普及を推し進めています。アジャイル開発とは小さな変更をインクリメンタルに加えていくことで、プロダクトを少しずつ開発していく手法です。この手法が実際の開発現場で有効なことが分かり、今ではより多くのチームがアジャイル開発をするようになりました。アジャイル開発で重要なことはスピードです。小さな粒度の変更をいかに早くテスト/リリースしてフィードバックを得るかがアジャイル開発の成功の鍵となりますが、CI/CDを使うことでこれらを実現することができます。近年アジャイル開発そのものも進化しています。目覚ましい分野として、より抽象化されたアプリケーションの運用環境の登場があると思います。DockerやKubernetesのコンテナ技術とAWSやGCPなどのクラウド技術が進歩したおかげで、本番環境にコードをデプロイすることは驚くほど簡単になりました。テストをパスした変更を常にリリースして、バグがあればロールバックを行う。ゆう作業はもちろん手動でもできますが、CI/CDで自動化することでより効率的にできるようになります。まとめると、CI/CDを使うとテスト自動化することで品質を高めるだけではなく、その後のリリース作業も自動化することで、よりアジャイルな開発ができるようになります。Leadとして技術全般を担当。趣味は電動キックボードで日本で普及するように様々な活動をしています。圧縮・解凍UNIX基本講座@CodeZine『CodeZine(コードジン)』の公式アカウントです。【NEW】デブスト2019デブサミ2019福岡・関西デブサミ2019夏デブスト関西デブサミ2019×ログインEメールパスワード※旧SEメンバーシップ会員の方は、同じ登録情報(Eメール&パスワード)でログインいただけます。イラストの無断転載を禁じます。記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。