Amazon Q Developerの利用状況を生成AI(Amazon Q Developer)を使って簡単に分析する

記事タイトルとURLをコピーする

はじめに

こんにちは、サーバーワークスで生成AI推進を担当している針生です。

組織でAmazon Q Developer Proをサブスクリプションで利用していると、「誰がどのくらい使っているのか?」「どの機能が活用されているのか?」といった利用状況を把握したいケースが出てきます。

マネージメントコンソールのAmazon Q Developerダッシュボードからも利用状況を確認することはできますが、このダッシュボードに表示されているデータは主にIDEで利用したデータのみが表示されています。

参考: https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/dashboard-metrics-descriptions.html

CLIなどIDE以外の利用も含めたデータを確認したい場合、ユーザーアクティビティレポートを有効にするとS3バケットにCSV形式でファイルが保存されます。

このデータを活用し、利用状況を生成AI(Amazon Q Developer自身)使って簡単に分析する方法を解説します。

ユーザーアクティビティレポートを有効にするには

Amazon Q Developerの利用状況データをS3バケットに保存するには、以下の設定が必要です。

手順1: Amazon Q Developerコンソールでの設定

  1. AWS Management Consoleにログインし、Amazon Q Developerを開きます
  2. 左側のナビゲーションでセッティングを選択
  3. Amazon Q Developer の使用アクティビティセクションを確認します

手順2: 利用状況データの保存設定

  1. Amazon Q Developer の使用アクティビティセクションで編集をクリック
  2. ユーザーごとの詳細なメトリクスを収集を有効化
  3. S3 の場所を指定
    • 例: s3://q-developer-activity-logs-1234567890/metrics/
  4. 保存をクリック

参考: https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/q-admin-user-telemetry.html

ユーザーアクティビティレポートの保存場所

Amazon Q Developerの利用状況は、以下のようなパスにCSV形式で保存されます。

s3://<bucketName>/<prefix>/AWSLogs/<accountId>/QDeveloperLogs/by_user_analytic/<region>/<year>/<month>/<day>/<hour>/<accountId>_by_user_analytic_<timestamp>.csv

参考: https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/q-admin-user-telemetry.html

ユーザーアクティビティレポートの構造

実際のCSVファイルには以下のカラムが含まれています。

カラム名 説明
UserId string ユーザーID
Date string 日付(MM-dd-yyyy形式)
Chat_AICodeLines bigint チャット機能で生成されたAIコード行数
Chat_MessagesInteracted bigint チャットでのメッセージ相互作用数
Chat_MessagesSent bigint 送信されたチャットメッセージ数
CodeFix_AcceptanceEventCount bigint コード修正の受け入れイベント数
CodeFix_AcceptedLines bigint 受け入れられたコード修正行数
CodeFix_GeneratedLines bigint 生成されたコード修正行数
CodeFix_GenerationEventCount bigint コード修正生成イベント数
CodeReview_FailedEventCount bigint 失敗したコードレビューイベント数
CodeReview_FindingsCount bigint コードレビューで発見された問題数
CodeReview_SucceededEventCount bigint 成功したコードレビューイベント数
Dev_AcceptanceEventCount bigint 開発機能の受け入れイベント数
Dev_AcceptedLines bigint 受け入れられた開発コード行数
Dev_GeneratedLines bigint 生成された開発コード行数
Dev_GenerationEventCount bigint 開発コード生成イベント数
DocGeneration_AcceptedFileUpdates bigint 受け入れられたドキュメント更新数
DocGeneration_AcceptedFilesCreations bigint 受け入れられたドキュメント作成数
DocGeneration_AcceptedLineAdditions bigint 受け入れられたドキュメント行追加数
DocGeneration_AcceptedLineUpdates bigint 受け入れられたドキュメント行更新数
DocGeneration_EventCount bigint ドキュメント生成イベント数
DocGeneration_RejectedFileCreations bigint 拒否されたドキュメント作成数
DocGeneration_RejectedFileUpdates bigint 拒否されたドキュメント更新数
DocGeneration_RejectedLineAdditions bigint 拒否されたドキュメント行追加数
DocGeneration_RejectedLineUpdates bigint 拒否されたドキュメント行更新数
InlineChat_AcceptanceEventCount bigint インラインチャット受け入れイベント数
InlineChat_AcceptedLineAdditions bigint インラインチャットで受け入れられた行追加数
InlineChat_AcceptedLineDeletions bigint インラインチャットで受け入れられた行削除数
InlineChat_DismissalEventCount bigint インラインチャット却下イベント数
InlineChat_DismissedLineAdditions bigint インラインチャットで却下された行追加数
InlineChat_DismissedLineDeletions bigint インラインチャットで却下された行削除数
InlineChat_RejectedLineAdditions bigint インラインチャットで拒否された行追加数
InlineChat_RejectedLineDeletions bigint インラインチャットで拒否された行削除数
InlineChat_RejectionEventCount bigint インラインチャット拒否イベント数
InlineChat_TotalEventCount bigint インラインチャット総イベント数
Inline_AICodeLines bigint インライン機能で生成されたAIコード行数
Inline_AcceptanceCount bigint インライン機能の受け入れ数
Inline_SuggestionsCount bigint インライン機能の提案数
TestGeneration_AcceptedLines bigint 受け入れられたテスト生成行数
TestGeneration_AcceptedTests bigint 受け入れられたテスト数
TestGeneration_EventCount bigint テスト生成イベント数
TestGeneration_GeneratedLines bigint 生成されたテスト行数
TestGeneration_GeneratedTests bigint 生成されたテスト数
Transformation_EventCount bigint 変換イベント数
Transformation_LinesGenerated bigint 変換で生成された行数
Transformation_LinesIngested bigint 変換で取り込まれた行数

参考: https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/user-activity-metrics.html

ユーザー別利用状況の分析

このCSVファイルのデータを利用して、ユーザー別の利用状況を確認したいと思います。 従来であれば、Amazon Athenaなどを活用してログを分析するところですが、今回はAmazon Q Developer自身に分析を依頼してみましょう。

S3にアクセス可能な状況で(適切なIAMロールまたは権限が設定されている環境で)Amazon Q Developer CLIから以下のプロンプトを入力します。

"s3://q-developer-activity-logs-1234567890/metrics/AWSLogs/1234567890/QDeveloperLogs/by_user_analytic/"
このS3バケットに保存されているAmazon Q DeveloperのUser Activity Reportから、
今月の"Chat_MessagesSent"ユーザー別利用状況一覧を出力

するとAmazon Q Developerは以下の処理を実施しました。

  1. S3からUser Activity Reportファイルをダウンロードして構造を解析
  2. AWS CLIを使用してChat_MessagesSent利用状況を分析するbashスクリプトを作成し実行
  3. 修正を繰り返しながらユーザー別利用状況を出力

出力されたメッセージ

しかし、出力された情報にはUserIdが表示されていてユーザーの判別が出来ません

IAM Identity Centerの情報との連携

ログのUserIdにはIAM Identity CenterUserIDが保存されています。実際のユーザー名やメールアドレスと紐付けるには、IAM Identity Centerと連携し、ユーザー名やメールアドレスなどを取得して連携するとわかりやすくなります。

IAM Identity Centerにアクセス可能な状況で(適切なIAMロールまたは権限が設定されている環境で)Amazon Q Developer CLIから以下のプロンプトを入力します。

出力したデータの"UserId"にはIAM Identity CenterのUserIDが表示されているので、
IAM Identity Centerからユーザー情報を取得してユーザー名を表示するようにしてください。

するとAmazon Q Developerは以下の処理を実施しました。

  1. IAM Identity Centerのインスタンス一覧を取得しIdentity Store IDを特定
  2. IAM Identity Centerからユーザー情報を取得してChat利用状況にユーザー名を追加するスクリプトを作成し実行

出力されたメッセージ

ユーザー名が表示され、誰が積極的に利用しているか把握することが出来ました。

まとめ

本記事では、Amazon Q Developer Proの利用状況を、Amazon Q Developer自身を活用して簡単に分析する方法を紹介しました。 従来、組織でのAmazon Q Developerの利用状況を詳細に把握するには、S3に保存されたユーザーアクティビティレポートをAmazon Athenaなどのツールで分析する必要がありました。しかし、分析にAmazon Q Developer自身を使用することで、複雑な設定やクエリを書くことなく、自然言語でプロンプトを入力するだけで必要な分析が実行できます。

今回の方法のポイント

  1. 簡単なセットアップ: ユーザーアクティビティレポートの有効化とS3バケットの設定のみ
  2. 専門知識不要: SQLやスクリプトの知識がなくても、自然言語で分析依頼が可能
  3. 柔軟な分析: チャット利用状況だけでなく、コード生成、テスト生成など様々なメトリクスを分析可能
  4. ユーザー情報の紐付け: IAM Identity Centerと連携して、UserIDを実際のユーザー名に変換

この手法により、管理者は組織内でのAmazon Q Developerの利用状況を簡単に把握でき、より効果的な生成AI活用の推進などに活用することができます。

針生 泰有(執筆記事の一覧)

サーバーワークスで生成AIの活用推進を担当