Slide 1

Slide 1 text

© 2024, CHARA-WEB Co.,Ltd. All rights reserved. GitLab Duo with Amazon Q の 機能実装を試してみた Keiichi Nakayama Vice General Manager Cloud Partner Group CHARA-WEB Co., Ltd.

Slide 2

Slide 2 text

© 2024, CHARA-WEB Co.,Ltd. All rights reserved. 2 GitLab Duo with Amazon Q とは ➢ GitLabとAmazon Q Developerを連携し、コード実装をよりス ムーズに進める事ができるようにした機能 ➢ GitLabを使用してSDLCを回しているチームにとって、GitLabか ら離れることなく、機能実装を進めることがしやすくなります ➢ GitLabが提供する生成AIを使用した開発支援サービスである 「GitLab Duo」だけでは実現できていない部分を、「Amazon Q Developer エージェント」の力を組み合わせて実現させます

Slide 3

Slide 3 text

© 2024, CHARA-WEB Co.,Ltd. All rights reserved. 3 GitLab Duo with Amazon Q でできること ➢ 機能実装 GitLabイシューを読み込み、イシューの内容に従って必要な機 能実装を行ったマージリクエスト(GitHubでいうところのPR)を 作成する。コードレビューで再度修正をさせることも可能 ➢ テストコード提示 MRで実装されたコードをテストするための、ユニットテストコー ドを提示し、コードレビューの精度を高める

Slide 4

Slide 4 text

© 2024, CHARA-WEB Co.,Ltd. All rights reserved. 4 GitLab Duo with Amazon Q でできること ➢ コードレビュー MRでコードレビューを実施し、実装されたコード中の脆弱性や、 ベストプラクティスに則っていないコードなどの指摘を行い、コー ド品質の向上を支援します。また、指摘されたコードに対して、 自動的な修正提案を受けることも可能です ➢ レガシーコードのアップグレード Java 8または11のコードを、Java 17のコードに変換し、MRを 作成します

Slide 5

Slide 5 text

© 2024, CHARA-WEB Co.,Ltd. All rights reserved. 5 実際に使ってみる GitLab Duo with Amazon Qは本日、GitLab.orgプロジェクトのパブリックブランチで利用可能 になりました。 プレビューにアクセスし、ソフトウェア開発プロセスをどのように変革できるか についてもっと知りたい方は、私たちのウェブサイトをご覧ください。 GitLabの開発者環境(コントリビューター向け環境)であるGDK(GitLab Development Kit)を 使用して試すことができる、という案内になっており、実際にはクローズドベータのステータ スでした。。 更に、GDKで試してみようとしたところ、現状はGDKとAmazon Qが通信できる状態にないら しく、現時点はAWSチームとGitLabチームの一部のメンバーのみ使用可能とのこと

Slide 6

Slide 6 text

© 2024, CHARA-WEB Co.,Ltd. All rights reserved. 6 Amazon Qエージェントを使って試す GitLab Duo with Amazon Q がまだ使用できなかったため、下記の ように、VSCode上で似たような状況を作って精度を確認してみた イシューの内容を書いたMarkdownファイルを作成 REST API構築を試すために、OpenAPI Documentを配置 Amazon Qエージェントの/devアクションを使用し、イシュー内容に 従った実装をするように指示

Slide 7

Slide 7 text

© 2024, CHARA-WEB Co.,Ltd. All rights reserved. 7 イシュー内容に従ったAmazon Qエージェントの実装 イシューとして記載した内容は下記の通り (下記の通り日本語で記述) 下記の要件に従った REST API を構築する - API Gateway + Lambda + DynamoDB の構成の REST API を構築する - API Gateway は REST API を使用する(HTTP API ではない) - Lambda は Python を採用する - Lambda は 1 つの Function ですべてのエンドポイントを対応する Lambda-lith 構成とする - Powertools for AWS Lambda(python)を使用して実装する - API の認証は不要 - OpenAPI Document(./openapi.yml)に従った CRUD オペレーションが可能な API を構築する - AWS CDK(v2)でデプロイがされている create_api.md

Slide 8

Slide 8 text

© 2024, CHARA-WEB Co.,Ltd. All rights reserved. 8 イシュー内容に従ったAmazon Qエージェントの実装 Amazon Qエージェントの実行結果 /dev Propose code to build a REST API according to the contents of `create_api.md` ※現状Amazon Qが日本語を話せないため

Slide 9

Slide 9 text

© 2024, CHARA-WEB Co.,Ltd. All rights reserved. 9 イシュー内容に従ったAmazon Qエージェントの実装 提案された内容 lambda_handler.py • OpenAPI Documentに則ったCRUD操作を行う各メソッドが、 Lambda PowertoolsのEvent Handlerを活用して定義 • Lambda Powertoolsを活用してロギングやトレーサー等の実装 • UserIDはOpenAPIの定義に従いULIDで生成 • HTTPステータスコードやレスポンスボディがOpenAPIに従い正 しく返却

Slide 10

Slide 10 text

© 2024, CHARA-WEB Co.,Ltd. All rights reserved. 10 イシュー内容に従ったAmazon Qエージェントの実装 infrastracture/app.py • CDK v2の構文でPythonによる実装 • API Gateway、Lambda、DynamoDBがもれなく定義 • Lambda Powertoolsに合わせてLambdaに対する環境変数の定義 requirements.txt • 必要な依存モジュールがバージョン指定で定義 README.md • イシューの内容と同様の要件と各ファイルの説明等が英語で定 義

Slide 11

Slide 11 text

© 2024, CHARA-WEB Co.,Ltd. All rights reserved. 11 詳細はブログで公開予定 後日、本LTのために検証した内容を詳細にブログに掲載予定 https://blog.cloud-partner.jp/ 既にAmazon Qエージェントを使用したコードレビューの検証結果など もブログ記事で公開中