[CircleCI]ベストオブOrbs 


こんにちは！CircleCIカスタマーサクセスチヨです。過ごしやすい日が続いていますね。
本日はCircleCIのOrbsで取り入れてほしい５つのタイプを紹介します。

## はじめに ##
Orbsとはパッケージ化されたコンフィグです。スタンプのように一行足すだけで、何十行ものコンフィグが短くなり、何度も繰り返す作業などを簡略化できます。
そのほかサードパーティツールとの連携などもOrbsを使用することで簡単にできます。
今回は主にSlack Orbsの連携方法を紹介し、他にも効率化に役立つorbsを紹介します。

## Slack Orbs ##
社内でSlackを使っている場合、絶対に使ってほしいSlack Orbsを試してみました。こちらのorbsを使用することで、決まった時間帯にSlack通知を送ったり、テストの失敗や成功に基づいて送ることも可能です。またapproval jobと組み合わせて使用する事で、job完了後slackから許可することが可能です。Slack orbsはnode orbsに続く最も使用されているorbsです。

こちらのNode.jsを使用した[チュートリアル](https://circleci.com/blog/continuous-integration-slack-twilio/)を参考にしました。チュートリアルでは詳しくNest.jpアプリケーションを作成するところから説明がありますが、こちらは割愛しCircleCIとSlackの連携と、通知のテストを行います。
Nest.jpアプリが作成されたら`.circleci`フォルダーをルートフォルダーに作成し、新しく`config.yml`を作成します。
以下のコンフィグをyml内にペーストし、保存します。![Screenshot 2023-04-27 at 0.21.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1277768/e2753e28-fa4d-5809-f49b-7668d39803d0.png)

次に早速Slackを連携していきます。初めて使う方は新たにworkspaceを作成しブラウザから[Slack APIの設定](https://api.slack.com/apps)にアクセスします。create new appをクリックしワークスペースの名前とアプリの名前を入力します。slack orbを使用するにはチャンネルにファイルを投稿する権限が必要です。
![Screenshot 2023-04-24 at 1.55.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1277768/bf216612-3dee-36e6-f3f0-8a47f74acf27.png)
左側のpermissionからscopeを追加します。![Screenshot 2023-04-27 at 1.31.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1277768/4bd181c7-0719-e4f2-84c7-f8490be390bf.png)

OAuth Tokenを作成し、後にCircleCI側に登録するので保存します。![Screenshot 2023-04-27 at 1.34.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1277768/d7794eb9-9f5d-dcdf-8afe-acaab7be93ed.png)
CircleCIのプロジェクトからSlack OAuthからコピーした環境変数を入力します。
![Screenshot 2023-04-27 at 1.48.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1277768/bdbf632a-082a-d4be-6a59-48415a72ec87.png)


再度、yamlファイルを更新します。今回は`slack: circleci/slack@4.12.1`を追加します。
![Screenshot 2023-04-27 at 1.38.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1277768/0a0b7a9b-4cda-07ca-4cd6-b908808ddc65.png)

:hand_splayed:orbは新しいバージョンが作成されている場合もありますので、[developer hub](https://circleci.com/developer/orbs)から確認ください。今回は失敗すると通知が来る設定をsrcファイルにしておりますので、チャンネルに通知が行きます。

## 言語に対応しているOrbs ##
続いて言語に対応しているOrbsです。言語に対応しているorbsを使用することでプロジェクトに必要な環境変数をインストールしておくことができます。Slackの通知プロジェクトでもnode.jsを使っていました。

[Node](https://circleci.com/orbs/registry/orb/circleci/node)
[Ruby](https://circleci.com/orbs/registry/orb/circleci/ruby)
[Go](https://circleci.com/orbs/registry/orb/circleci/go)
[Maven](https://circleci.com/orbs/registry/orb/circleci/maven)
[Python](https://circleci.com/orbs/registry/orb/circleci/python)
上記を使用することで`save_cache`コマンドの手間が省けます。また以下はPhytonとNodeのOrbsを使った実行時間の変化ですが、使用した方が短くなっているのがわかります。([CircleCI Blog](https://circleci.com/blog/multiple-orbs-pipeline-config/)から引用)![Screenshot 2023-04-27 at 3.58.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1277768/db782fb1-bd6f-dddf-5c77-fc0b9f17fc27.png)

## DevOps toolとしてのOrbs ##
DevOpsツールもCircleCIではデモも合わせて紹介しているので確認してみてください。
・[コードカバレッジ](https://circleci.com/developer/orbs/orb/codecov/codecov)を使用し、テストの信用度を高めるorb :video_camera:[デモ](https://www.youtube.com/watch?v=gyNeEOEhME0&ab_channel=CircleCI)
・ウェブアプリの[E2Eテスト](https://circleci.com/developer/orbs/orb/cypress-io/cypress)とコンポーネントテストを時間をかけずに実行できるorb :video_camera:[デモ](https://www.youtube.com/watch?v=fIeZQ0dLfA0&ab_channel=CircleCI)
・モバイルアプリ開発のための[セキュリティテストを自動化](https://circleci.com/developer/orbs/orb/nowsecure/ci-auto-orb)できるorb:video_camera:[デモ](https://www.youtube.com/watch?v=6aa7AbkXWUo&ab_channel=CircleCI)

## 各クラウドサービス向けのOrbs ##
CIサービスを提供しているため、他のクラウドサービスと簡単に連携できるorbsも多種揃っています。
[kubernetes](https://circleci.com/developer/orbs/orb/circleci/kubernetes)
[aws](https://circleci.com/developer/orbs/orb/circleci/aws-cli) cli, S3, ECSなどの各種サービスとの連携
[gcp](https://circleci.com/developer/orbs/orb/circleci/gcp-cli) GKEやGCRのマネージング
[azure](https://circleci.com/developer/orbs/orb/circleci/kubernetes?query=azure)各種サービスとの連携
OIDCも提供が始まっていますので、クラウドサービスと併用してお使いください。

## 終わりに ##
orbsには作成者が承認済み、パートナー、コミュニティつ３つの異なるラベリングがあります。ご利用者のセキュリティに合わせてご使用ください。[公式ドキュメント](https://circleci.com/docs/ja/orb-intro/#orb-designation)
![Screenshot 2023-04-26 at 23.33.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1277768/be9fa62e-f523-3361-ead4-b9db70313acc.png)
またセキュリティーをより考慮される方やパーソナライズされたorbsが必要な場合、プライベートorbsの作成をお勧めいたします。youtubeに[チュートリアル](https://www.youtube.com/watch?![uploading...0]()v=r_lFUlLc3Ag&ab_channel=CircleCI)が載っていますので、ぜひご確認ください。