CircleCIとは何か?
対象読者
エンジニアになるために、CircleCIの技術を習得したいが、どんな技術なのか理解できていないという方向けに記事を書いています。
この記事の読み方
最初にネットの記事でもあるようなことを(難しいこと)を誤解を生まないように書きます。その後に、本記事の投稿者である私の解釈(簡単に)を入れます。
Circle CI/CDとは何か?
CI/CDとは「Continuous Integration/Continuous Delivery」の略で、日本語では継続的インティグレーション/継続的デリバリーという。この開発手法をクラウドでサービス化した代表的なものが、CircleCIという。
解釈
アプリ開発におけるテスト、デプロイを自動化したツールのこと。そのツールで1番使われているメジャーなものがCircleCI。しかし、注意しなければいけないのは、自動でテストを行ってくれるが、テストコードを書くのは人間であるということ。
使われるようになった背景
CI/CDが近年重要視されるようになってきた理由として、2つの大きな流れがあるように思います。1つ目は自動化テストの重要性の高まり、2つ目はアジャイル開発のプラクティスの浸透と進化です。
あらゆる作業がどんどんコンピューターで行われるようになっている今日では、ソフトウェアを使ってない企業や組織はほぼないと言ってよいでしょう。これだけソフトウェアが普及していくと、当然品質に対する要求も高くなり、今まで手動でテストしていた分野でも積極的に自動化テストを取り入れるようになってきます。
顕著な例として挙げられるのが、フロントエンドのコードのテストではないでしょうか? WebページがHTMLと少量のJavaScriptで書かれていた時代は、フロントエンドのテストを書くことは稀でした。しかし、Reactなどの高度で複雑なフレームワークが登場したり、ビジネスロジックをフロントエンドにも持たせることが多くなるにつれて、フロントエンドのテストを書くことは必須となりました。
解釈
ソフトウェアが色んな企業で使われるようになり。品質向上を求めるようになった。そして手動でテストを行っていたが、自動で行えるようになり急速に普及した。フロントエンドに複雑な機能を持った物も登場し、フロントエンドでもテストを実行するようになった。
どういう開発の時に使われるのか?
アジャイル開発の浸透と進化もCI/CDの普及を推し進めています。アジャイル開発とは小さな変更をインクリメンタルに加えていくことで、プロダクトを少しずつ開発していく手法です。この手法が実際の開発現場で有効なことが分かり、今ではより多くのチームがアジャイル開発をするようになりました。
アジャイル開発で重要なことはスピードです。より小さな粒度の変更をいかに早くテスト/リリースしてフィードバックを得るかがアジャイル開発の成功の鍵となりますが、CI/CDを使うことでこれらを実現することができます。
そして、近年アジャイル開発そのものも進化しています。もっとも目覚ましい分野として、より抽象化されたアプリケーションの運用環境の登場があると思います。DockerやKubernetesのコンテナ技術とAWSやGCPなどのクラウド技術が進歩したおかげで、本番環境にコードをデプロイすることは驚くほど簡単になりました。テストをパスした変更を常にリリースして、バグがあればロールバックを行う。こうゆう作業はもちろん手動でもできますが、CI/CDで自動化することでより効率的にできるようになります。
解釈
アジャイル開発という開発スピードが早い開発には、CI/CDという開発手法は必須になっている。自動化や、クラウドの進化により、さらにこの開発手法が多くの企業で採用される。
まとめ
CircleCiとはクラウド上で自動テスト、自動デプロイを行ってくれるもの。現時点で多くの企業がこの開発手法を採用している。特にアジャイル開発において必ずと言っていいほど、使われるらしい。
最後に
ここまで読んでくださり、ありがとうございます。引用だらけで僕の解釈も間違っていることがあったかもしれません、もし間違っていたらコメントください。ではまた