2021年のChangelogから振り返るCircleCI - その2

# はじめに
CircleCIの中の人、Senior Developer Advocateの舟木将彦と申します。
昨日の[その1](https://qiita.com/mfunaki/items/b163708c9ac22d7456aa)に引き続き、本日もChangelogからCircleCIの2021年5月以降を振り返っていきます。

なお、2021年3月~4月の振り返りに関しては、その1をご覧くださいませ。
- [2021年のChangelogから振り返るCircleCI - その1](https://qiita.com/mfunaki/items/b163708c9ac22d7456aa)

# 2021年5月
## [プラットフォーム] Armリソースの公開
11月30日にもAWSからEC2 on Graviton3の発表がありましたが、クラウドサイドもArmプロセッサ上での実行が熱いです。

- [Announcing new Amazon EC2 C7g instances powered by AWS Graviton3 processors](https://aws.amazon.com/jp/about-aws/whats-new/2021/11/amazon-ec2-c7g-instances-aws-graviton3-processors/)

コストパフォーマンスの高さや地球へのやさしさ、x64前提のDockerイメージはそのまま動作しないなど様々な面はあるものの、FargateのGraviton2サポートなども後押しして、選択肢の一翼を占めるのは間違いないと思われます。

- [AWS Fargate の AWS Graviton2 のサポートを発表 – サーバーレスコンテナのコストパフォーマンスが最大 40% 向上](https://aws.amazon.com/jp/blogs/news/announcing-aws-graviton2-support-for-aws-fargate-get-up-to-40-better-price-performance-for-your-serverless-containers/)

CircleCIでもArm上でUbuntuを実行し、パイプラインを実行することが可能になりました。

- [Armリソース](https://circleci.com/docs/ja/2.0/arm-resources/)
- CircleCIブログ: [Arm コンピューティング リソース クラスによる CI/CD パイプラインの管理](https://circleci.com/ja/blog/managing-ci-cd-pipelines-with-arm-compute-resource-classes/)

私もCircleCIランナー on Raspberry Pi on Arm64 Ubuntuについては以前に記事を書いたものの、サーバサイドのArmについては、ちゃんと記事がかけていないので、コンテナ回りの話(ローカルではx64のような組み合わせケース)も含めて、ご紹介させていただこうと思います。

- CircleCIブログ: [CircleCIで組み込み開発(3) - CircleCIランナーを使って実機でテストする](https://circleci.com/ja/blog/physical-computing-with-circleci-3/)

# 2021年6月
## [効率化] プライベートOrb のサポート開始
CircleCIでのコンフィグを部品化し、再利用性を高める(その結果、ベストプラクティスが共有されていく、ミスが削減できる) Orb ですが、これまでの「誰にでも公開される」パブリックなOrbだけでなく、6月から有料プランのお客様への公開範囲を組織内に限定したプライベートOrbの提供をはじめました。さらに、12月からはすべてのお客様への提供を開始しました(しかもFreeプランでもPrivate Orbの数は無制限)。

- [Orbの概要](https://circleci.com/docs/ja/2.0/orb-intro/#%E3%83%97%E3%83%A9%E3%82%A4%E3%83%99%E3%83%BC%E3%83%88-orbs-%E3%81%A8-%E3%83%91%E3%83%96%E3%83%AA%E3%83%83%E3%82%AF-orbs-%E3%81%AE%E6%AF%94%E8%BC%83)

また、CircleCIが持つコンフィグの再利用の仕組みや、プライベート Orbの開発方法に関しては、私が作成したビデオをご覧くださいませ。

- [CircleCIを使ってCI/CDでもモジュール化＋再利用度を高めよう](https://youtu.be/T9mr3LudDdQ)

# 2021年7~8月
## [効率化] パイプラインの手動実行とパラメーターの指定
従来、GitHubのようなバージョン管理システム(VCS)にファイルが追加・更新され、プッシュされることでパイプラインの実行が自動的に開始されていました。任意のタイミングでパイプラインを実行するためには、APIからトリガーすることができましたが、ウェブ上のCircleCIの画面からも手動でパイプラインを実行できるようになりました。

また、手動でパイプラインを実行する際に、画面上でパイプライン変数を指定することが可能になりました。

- [パイプライン変数](https://circleci.com/docs/ja/2.0/pipeline-variables/)

私個人は、ビルドやテストの際に使用するコンテナイメージをビルドするジョブだけを手動で実行する、という使い方をしています。ビルドやテストのたびに特定のライブラリをインストールするのではなく、特定ライブラリをインストールしたコンテナイメージをCircleCIで作成しています。これにより、コンテナイメージを任意のタイミングや一定期間ごとに更新したり、それによってビルド時間やテスト時間を短縮することができます。

他にもダイナミックコンフィグとの組み合わせなど、さまざまな用途が考えられます。「この自動化を手動でトリガーするとイケてる」話をぜひ共有いただければと思います。

## [セキュリティ] IPアドレスの範囲
CircleCIジョブで使用されるIPアドレスを、別途定義された範囲に限定する機能が提供されています。

- [IP アドレスの範囲](https://circleci.com/docs/ja/2.0/ip-ranges/)

マシンリーダブルなIPアドレスの範囲定義も提供されています。

- [ジョブ用IPアドレス範囲](https://dnsjson.com/jobs.knownips.circleci.com/A.json)
- [コアサービス用IPアドレス範囲](https://dnsjson.com/core.knownips.circleci.com/A.json)
- [全IPアドレス範囲](https://dnsjson.com/all.knownips.circleci.com/A.json)

IPアドレスを意識しないというのが「(名前の書かれていない)普通のお金を使う」ことに対応するとすれば、IPアドレスの範囲を適用することは、「振出人の名前が書かれた手形や小切手を使う」ことに対応すると言えるでしょう。

このあとご紹介するWebhookを使って、CircleCIがジョブやワークフローを終了したあと、その結果を通知して処理を行うような場合に、本当にその通知がCircleCIから来たものなのかを判断する際にもご利用いただけるかと思います。

# 2021年9月
## [拡張] ジョブおよびワークフローのWebhook
せっかくビルドやテスト、リリースやビルドをCircleCIで自動化しても、自分の開発したコードをプッシュし、CircleCIがパイプラインを実行している画面を見つめているのでは、開発生産性を上げることはできません(異常発生時にラインが確実に止まるからこそ、後工程に良品のみが送られるし、工員は問題を見逃すことなく並行作業ができる、というのはトヨタ生産方式でいう にんべんのついた自働化 でした)。

従来も各ジョブの終了後にSlackでメッセージを送る、といった「人に優しい」仕組みをパイプラインに組み込むことが可能でしたが、ウェブサービスで一般的に利用されているWebhookを使って、CircleCIの機能を拡張したり、データを活用するような独自のサービスの実装が可能になりました。

- [Webhook](https://circleci.com/docs/ja/2.0/webhooks/#)
- CircleCIブログ: [CircleCI Webhook でカスタマイズ可能なエクスペリエンスを作成する方法](https://circleci.com/ja/blog/create-customizable-experiences-with-circleci-webhooks/)
- CircleCIブログ: [CircleCI Webhook を使用してインテグレーション、ダッシュボード、通知などを作成する方法](https://circleci.com/ja/blog/using-circleci-webhooks/)

このWebhookをご利用いただいた機能拡張の例として、Datadog社のCI VisibilityやSumo Logic社のContinuous Intelligence Platformなどがあります。
- [Monitor your CI pipelines and tests with Datadog CI Visibility](https://www.datadoghq.com/ja/blog/datadog-ci-visibility/)
- [Continuous Intelligence Platform](https://www.sumologic.jp/continuous-intelligence-platform/)

# 承前(次回は最終回)
10月以降の新機能に関しては、その3で改めてご紹介させていただければと思います！