Amazon CodeCatalyst 触ってみた!

## この記事はなに?

re:Invent2022 にて発表された, Amazon CodeCatalyst は何ができるのか, 試しに少し触ってみた感想をまとめたものです.

https://aws.amazon.com/about-aws/whats-new/2022/12/announcing-amazon-codecatalyst-preview/

## Amazon CodeCatalyst とは?

公式のFAQより
https://codecatalyst.aws/explore/faq

> Amazon CodeCatalyst is an integrated DevOps service for software development teams adopting continuous integration and deployment practices into their software development process. 

(DeepL訳) Amazon CodeCatalyst は、ソフトウェア開発プロセスに継続的インテグレーションとデプロイの手法を採用するソフトウェア開発チーム向けの統合型 DevOps サービスです。

> CodeCatalyst provides one place where you can plan work, collaborate on code, and build, test, and deploy applications with continuous integration and continuous delivery (CI/CD) tools.

(DeepL訳)  CodeCatalystは、作業の計画、コードに関するコラボレーション、継続的インテグレーションと継続的デリバリー（CI/CD）ツールを使ったアプリケーションの構築、テスト、デプロイができる場所を1つ提供します。

...... いろいろできそうなことは分かりますが, いまいち掴めません...

ということで, 百聞は一見に如かずということで, まずはコンソールをドン!

![codecatalyst.aws_spaces_OugarairinDev_projects_ServerlessSample_view.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277804/addcdac4-69b3-4c35-990a-9c9e9dea3872.png)

画面中央を見ると,

- Repositories (リポジトリ: GithHubとかのイメージ)
- Workflow runs (ワークフロー: パイプライン的なもの, GitActionとかイメージすると近そう)
- Open pull requests (プルリクエスト)
- Your Dev Environments (開発環境: Cloud9とか)
- Issues (課題: Jiraとかのイメージ)

があることが分かります.
......... ほんとに色々ある......

では, 一つづつ見ていきます.

## Issues

issue 管理ができます.
カンバン状になっており, タスクをドラッグアンドドロップで状態を変化させることもできます.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277804/dfd9aadc-ded3-965a-f2f5-1751153bdd2b.png)

内容の記述にはマークダウンが使用でき, コードに対してシンタックスハイライトを利かせることもできます.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277804/235548e6-b418-555a-75c0-b8ef5918db20.png)

設定を変更することで, ポイントをフィボナッチ数列にしたり, ステータスをカスタマイズすることもできます.
嬉しいポイントです!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277804/5576c6be-8262-a16b-3a10-e2e1daaa4178.png)

## Code

複数機能があるので一つづつ

### Source repositories

いわゆるリポジトリ機能です.

プロジェクトの中に複数作成ができそうです.

(CodeCatalyst には Space > Project > Repository の包含関係があります)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277804/c50b75ed-f4d2-fca2-241e-bc40b874f107.png)

さて, コードは見やすいのでしょうか? 見てみましょう!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277804/6ce4a5f2-f0d2-61e6-049c-0147ca650e4c.png)

階層構造について, ▼を押すことで展開していくことができ, そこから直接飛ぶことが出来ます! CodeCommit より使いやすい! でも, 自動展開はないですね...

続いては各ソースを表示してみます!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277804/be7b0e9b-9b17-8ac1-961c-cf6701d7d32a.png)

ファイルごとにタブ化するため移動しやすく, また画面左にファイル構造が表示されているのは非常に使いやすいです!
もうCodeCommit の代わりに使うでもよいのでは...?

### Pull requests

プルリクエストを作るところです.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277804/d7bb2b0b-2b36-a3bf-b647-16c9b113de78.png)

作成画面はこのような感じ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277804/1f9b51fe-7404-067e-6e55-c3777e5fe919.png)

マージ画面はこのような感じ
...... 3-way merge がない...? 欲しいな...(願望)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277804/c757d149-5f5d-780c-7612-dcd56e486d88.png)

### Dev Environments

開発環境を構築できます.

Cloud9 やVSCode, IntelliJ, GoLand, PyCharm が使用できます.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277804/a9b62ea4-0305-d5fc-8cbc-3eca27c87193.png)

本当はVSCode でリモートデスクトップ接続を行い開発してみよう! と思ったのですが, 上手くいかなかったのでCloud9 を選択.
これだと間違いなく, 確実に動くので, 自分のような雰囲気で作業している人間にはすごくいいです!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277804/d4afadcc-6c1f-c998-1884-68973863b48e.png)

作成するとこのようにリストに追加されます. 起動までには1分もかかりませんでした.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277804/cc4ddbab-2c7a-d98f-5e55-13eac67cd4b5.png)

(Cloud9 初めてでちょっと楽しい...)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277804/2ac904fb-30af-2b0a-194b-954f54cfa5c8.png)

Cloud9 の止め方が分からなくとも, ここからすぐに止めることが出来るので安心.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277804/70dc4926-9e53-07b7-7f7e-8eae1a54c354.png)

## CI/CD

こちらも複数あるので, ゆっくり見ていきます.

### Workflows

いわゆるパイプライン的なものになります.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277804/f6cb2467-c3a0-66f8-36f6-169df2281595.png)

サンプルのものだとこんな感じでテスト+デプロイをしていました.
ログやらCloudFormation の情報やらをここだけで見られるので, 操作性良好!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277804/a9579139-554c-1e07-d7db-28dc6d99b8f3.png)

Workflow の作成には直感的なUIも用意されていて非常に便利.
また, デプロイ方法にCDK Deploy がデフォルトで用意されており, 非常に嬉しくなりました!!!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277804/594ef107-c61b-63ee-51aa-fcbedda8c159.png)

CDK のほかであれば, EC2 or Lambda を使用する, CloudFormation を使用する選択肢がありました. CodeBuild じゃないのが興味深い...

### Environment

どの環境に対して, どんなアクションをしたか一覧化してくれるところ.
ここはスクリーンショット省略.

### Compute

Code のDev Environments あたりで使用する, コンピュータリソースのハードウェア構成を変更したり, プロビジョニングができたりしそうな場所.
無料枠では触れなかったので省略.

### Secrets

秘密情報を管理する場所.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277804/95527a39-6a4d-788d-f23a-83ecf7c615c7.png)


環境変数のように設定できそう.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277804/628bdbf9-c39a-f5cb-5ca8-042710d0fb62.png)

## Reports

テストの結果を可視化してくれます.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277804/c1d265c0-90a8-a5de-a30d-3cf9c22bcdd8.png)

テスト結果 一目で分かっていいですね!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277804/db40301a-e6bd-92a3-2aff-088721e9228e.png)

カバレッジ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277804/c0cf8523-c733-1fd7-acb6-6450c1cd8efe.png)

ソース1行レベルまで見られます. 便利!!

![codecatalyst.aws_spaces_OugarairinDev_projects_ServerlessSample_test-runs_b8f01a9d-a0db-4b75-996b-bb40c5827a3a_types_CODE_COVERAGE_reports_363fc16f-bbe1-35ef-91f2-84a04ba0e5e8_view.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277804/9215fc7f-448d-abb0-d433-4fdb6416df46.png)

## Project settings

各種設定ができます.
メールアドレスを使用してメンバーを招待したり, イベントごとにSlack へ通知したりすることが出来ます.
写すとよくない情報が多そうなのでスクリーンショットは省略.

## Marketplace

各種拡張機能をDL することができます. 今後増えていくとより便利になりそう...

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277804/a2375ebe-75d4-171b-da94-a14f3fc32e1a.png)

## まとめ

Amazon CodeCatalyst を使用すると

- ソースリポジトリ
- issue管理
- 開発環境
- CI/CD
- テスト結果の可視化
- Slack通知

を簡単にセットアップできる(された)環境を一撃で手に入れることが出来ます.

ただし, (2022/12/6現在)プレビュー版であり, オレゴンリージョンしか使用できないため, お試しされる方は注意が必要です.
.... 一刻も早くGAを望みます.............. はやくお仕事で使いたい...............