生成AIを使ってXMLドキュメントを生成する
2024年3月ごろから 『Visual Studio + GitHub Copilot』で色々やっています。
今回は XML ドキュメントを AI で生成する方法について執筆したいと思います。
動作環境
記事執筆時 2024/03/20 時点での環境です。以下の通りです。
IDE: Visual Studio Community 2022 - Version 17.9.3
言語: C#
インストール済み拡張機能: GitHub Copilot - v1.156.0.0
GitHub の個人リポジトリを弄りながら検証したため、エディションは Community です。
勤め先プロジェクトの環境ではありません。
また時間の経過と共に Copilot が進化し、異なる結果になる可能性があります。
この点について、ご了承ください。 『2024/03/20』時点での結果です。
なおこの記事を GitHub Copilot にレビューしてもらったところ
『GitHub Copilot が動く要件を書くように』とのことでしたので、追記します。
GitHub Copilot には Visual Studio 2022 17.5.5 以降が必要です。
Visual Studio 2022 バージョン 17.4.4 ~ 17.5.4 の場合は、拡張機能バージョン1.84.0.1を使用します。
ドキュメンテーションを生成する手順
手順は 1~4 で、画像を用いて説明します。
画像は私のドメイン駆動設計のエンティティ基底クラス実装時のものです。
実際の作業は10秒かからず終了します。
1. 生成したい範囲を選択し『Copilot に質問する』を実行。
XMLドキュメントを生成したい範囲を選択し『Copilot に質問する』を実行します。
今回は複数のメソッドに対して実行したかったため4つ選択していますが
1つだけの選択でも問題ありませんし、クラス全体を選択しても大丈夫です。
選択対象はメソッドに限らず、プロパティやフィールドも有効です。
よく使うのであれば、ショートカットキー『Alt + /』は、覚えておいて損は無しです。
2. 生成プロンプトを実行する。
※ コピペしやすいように、上記画像のプロンプトをコードブロックに記載します。
選択範囲のXMLドキュメントを生成してください。日本語でお願いします。
プロンプトのキーワードは『選択範囲』『XMLドキュメント』『生成』です。
オプションワードとして『日本語』を入れないと英文で作成されるケースがあるため
確実に日本語で生成したい場合は、プロンプトで指示して下さい。
これは丁寧な指示の例ですが、もっと短くできると思います。
3. プレビューを確認し、生成に問題が無ければ承認する。
Visual Studio にも記載がある通り GitHub Copilot は間違った解釈をする可能性があるため
承認を押す前に、挿入される内容を確認して下さい。
4. 生成結果が反映される。
無事に生成されました。
returns に若干、機械的な印象を受けますが、これは学習の問題でしょう。
他の XML ドキュメントの記述方法を参考に文章を書いているようですので
私の場合は、そのうち『~を返します。』などの記述をしてくれるようになるのではと予測しています。
または、外部から『XML ドキュメントは、このように書く』という指示書を作成するのも、非常に有効な手段です。
※ 外部参照については、また別途、記事を書く予定です。
応用例など
より詳細なXMLドキュメントを生成したい場合は、以下のようなプロンプトも有効です。
選択範囲のXMLドキュメントを日本語で生成してください。
可能であれば remarks と example も記載してください。
少し試してみた感じ remarks は割と解釈しやすく、自動生成をしてくれることが多いです。
しかし example はなかなか書いてくれません。
絶対に書いてくれないわけではありませんが…
本当に有効活用したいのであれば、外部参照で学習させる必要がありそうです。
まとめ
今まで仕事として担当したプロジェクトでは、ほとんどにおいて
XMLドキュメントを記載する時間 >>> コーディングする時間
でしたが、これでだいぶ時間が短縮できそうです。
(いや本当に今まで保守用XML記載してた時間を返してほしいレベル…)
職場がまだ GitHub Copilot を導入していないのであれば
作業時間やコストパフォーマンスの面から導入を提案してみてはいかがでしょうか?
私は『自費で払ってもいいから入れてくれ』と直訴します。
自筆の関連記事
他にも GitHub Copilot を使用した記事をこれから執筆予定です。
自動でテストコードをキレイに生成できたことや、記事内にある『外部参照について』など
後日そのことを記事にして参考リンクにします。
※ これが Qiita の初投稿です。伝わりにくい点などがありましたら、申し訳ございません。