はじめに
こんにちは、サーバーワークスで生成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コンソールでの設定
- AWS Management Consoleにログインし、Amazon Q Developerを開きます
- 左側のナビゲーションでセッティングを選択
- Amazon Q Developer の使用アクティビティセクションを確認します
手順2: 利用状況データの保存設定
- Amazon Q Developer の使用アクティビティセクションで編集をクリック
- ユーザーごとの詳細なメトリクスを収集を有効化
- S3 の場所を指定
- 例:
s3://q-developer-activity-logs-1234567890/metrics/
- 例:
- 保存をクリック
参考: 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は以下の処理を実施しました。
- S3からUser Activity Reportファイルをダウンロードして構造を解析
- AWS CLIを使用してChat_MessagesSent利用状況を分析するbashスクリプトを作成し実行
- 修正を繰り返しながらユーザー別利用状況を出力
出力されたメッセージ
しかし、出力された情報にはUserIdが表示されていてユーザーの判別が出来ません。
IAM Identity Centerの情報との連携
ログのUserIdにはIAM Identity CenterのUserIDが保存されています。実際のユーザー名やメールアドレスと紐付けるには、IAM Identity Centerと連携し、ユーザー名やメールアドレスなどを取得して連携するとわかりやすくなります。
IAM Identity Centerにアクセス可能な状況で(適切なIAMロールまたは権限が設定されている環境で)、Amazon Q Developer CLIから以下のプロンプトを入力します。
出力したデータの"UserId"にはIAM Identity CenterのUserIDが表示されているので、 IAM Identity Centerからユーザー情報を取得してユーザー名を表示するようにしてください。
するとAmazon Q Developerは以下の処理を実施しました。
- IAM Identity Centerのインスタンス一覧を取得しIdentity Store IDを特定
- IAM Identity Centerからユーザー情報を取得してChat利用状況にユーザー名を追加するスクリプトを作成し実行
出力されたメッセージ
ユーザー名が表示され、誰が積極的に利用しているか把握することが出来ました。
まとめ
本記事では、Amazon Q Developer Proの利用状況を、Amazon Q Developer自身を活用して簡単に分析する方法を紹介しました。 従来、組織でのAmazon Q Developerの利用状況を詳細に把握するには、S3に保存されたユーザーアクティビティレポートをAmazon Athenaなどのツールで分析する必要がありました。しかし、分析にAmazon Q Developer自身を使用することで、複雑な設定やクエリを書くことなく、自然言語でプロンプトを入力するだけで必要な分析が実行できます。
今回の方法のポイント
- 簡単なセットアップ: ユーザーアクティビティレポートの有効化とS3バケットの設定のみ
- 専門知識不要: SQLやスクリプトの知識がなくても、自然言語で分析依頼が可能
- 柔軟な分析: チャット利用状況だけでなく、コード生成、テスト生成など様々なメトリクスを分析可能
- ユーザー情報の紐付け: IAM Identity Centerと連携して、UserIDを実際のユーザー名に変換
この手法により、管理者は組織内でのAmazon Q Developerの利用状況を簡単に把握でき、より効果的な生成AI活用の推進などに活用することができます。
針生 泰有(執筆記事の一覧)
サーバーワークスで生成AIの活用推進を担当