Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GitLab Duo with Amazon Q の機能実装を試してみた

k1nakayama
December 17, 2024

GitLab Duo with Amazon Q の機能実装を試してみた

k1nakayama

December 17, 2024
Tweet

More Decks by k1nakayama

Other Decks in Technology

Transcript

  1. © 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.
  2. © 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 エージェント」の力を組み合わせて実現させます
  3. © 2024, CHARA-WEB Co.,Ltd. All rights reserved. 3 GitLab Duo

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

    with Amazon Q でできること ➢ コードレビュー MRでコードレビューを実施し、実装されたコード中の脆弱性や、 ベストプラクティスに則っていないコードなどの指摘を行い、コー ド品質の向上を支援します。また、指摘されたコードに対して、 自動的な修正提案を受けることも可能です ➢ レガシーコードのアップグレード Java 8または11のコードを、Java 17のコードに変換し、MRを 作成します
  5. © 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チームの一部のメンバーのみ使用可能とのこと
  6. © 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アクションを使用し、イシュー内容に 従った実装をするように指示
  7. © 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
  8. © 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が日本語を話せないため
  9. © 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に従い正 しく返却
  10. © 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 • イシューの内容と同様の要件と各ファイルの説明等が英語で定 義
  11. © 2024, CHARA-WEB Co.,Ltd. All rights reserved. 11 詳細はブログで公開予定 後日、本LTのために検証した内容を詳細にブログに掲載予定

    https://blog.cloud-partner.jp/ 既にAmazon Qエージェントを使用したコードレビューの検証結果など もブログ記事で公開中