GitHub Copilot (+Chat) を使って他の人が実装したソースを解説してもらった。

PMO室の木村です。

GitHub Copilot Chat

がパブリックベータとして使えるようになっていたので、他の人が実装した社内Webツールのプロジェクトソースを解説してもらいました。

GitHub Copilot Chatの詳細はこちら

使用したもの

  • Visual Studio Code
  • GitHub Copilot
  • GitHub Copilot Chat

ChatGPTを使ってソースコードの解説を試す事もできますが、ソースコードを開いているVSCode上で使えるので何度もコピペする必要がなく便利です。

目次

まずはプロジェクトフォルダの内容を解説してもらおう

VSCodeで開いているプロジェクトルートフォルダの相対パスや絶対パスを提供して尋ねても思った回答は出ませんでした。

質問

SAMPLE_PATH/sample-pj のフォルダの中身を解説してください

回答

申し訳ありませんが、私はあなたが要求したフォルダの中身を見ることはできません。私はあなたのプライバシーを尊重し、あなたのコンピューターにアクセスすることはできません。しかし、もし何か特定のファイルやフォルダについて質問があれば、お答えできるかもしれません。

何度かやってみた中で良さそうだったのが コンソール からlsコマンドでプロジェクトフォルダの内容をリストしておき、プロンプトにそのままコピペで使用します。

質問

以下のリストはプロジェクトルートでlsを行った結果です。 全てのファイルとフォルダの用途を説明してください。
'''
app bootstrap composer.lock config package.json public routes storage webpack.mix.js artisan composer.json composer.phar database phpunit.xml resources server.php tests yarn.lock
'''

回答

GitHub Copilot: 以下は、プロジェクトルートで ls コマンドを実行した結果のファイルとフォルダの説明です。


  • app: Laravel アプリケーションのコントローラ、モデル、ビュー、ジョブ、イベントなどのコードを含むディレクトリです。
  • artisan: Laravel アプリケーションのコマンドラインインターフェースです。
  • bootstrap: Laravel アプリケーションの起動に必要なファイルを含むディレクトリです。
  • composer.json: Composer パッケージマネージャーの設定ファイルです。
  • composer.lock: Composer パッケージマネージャーがインストールしたパッケージのバージョン情報を含むファイルです。
  • config: Laravel アプリケーションの設定ファイルを含むディレクトリです。
  • database: Laravel アプリケーションのデータベースマイグレーション、シード、ファクトリなどのコードを含むディレクトリです。
  • package.json: npm パッケージマネージャーの設定ファイルです。
  • phpunit.xml: PHPUnit テストランナーの設定ファイルです。
  • public: Laravel アプリケーションの公開ファイルを含むディレクトリです。
  • resources: Laravel アプリケーションのビュー、JavaScript、CSS、言語ファイルなどのリソースを含むディレクトリです。
  • routes: Laravel アプリケーションのルーティングファイルを含むディレクトリです。
  • server.php: Laravel アプリケーションの開発用 Web サーバーです。
  • storage: Laravel アプリケーションのログ、キャッシュ、セッション、アップロードファイルなどのストレージを含むディレクトリです。
  • tests: Laravel アプリケーションのテストコードを含むディレクトリです。
  • webpack.mix.js: Laravel アプリケーションの JavaScript ビルドツールの設定ファイルです。
  • yarn.lock: Yarn パッケージマネージャーがインストールしたパッケージのバージョン情報を含むファイルです。

composer.pharを説明してくれず、抜けが出ちゃうのでプロンプトの改善余地がありますが、初めて見た人が何から調べたらいいのやら?とならずに、知らない事や見るポイントを調べるきっかけになりそうです。

package.json の一部を説明してもらう

参考にしたプロジェクトでは、composer.jsonを使用していますので、どのようなライブラリが使われているかを説明してもらおうと思います。 composer.json をVSCodeで開き requireブロックの一部を選択して指示してます。

質問

composer.json の内容から選択された範囲のライブラリをそれぞれ説明してください。説明に入れて欲しい内容は以下の通りです。出力はmarkdown形式でお願いします。
'''
・公式URL
・公式GitHub
・マニュアルのURL
・一般的なライブラリの用途
'''

解答

GitHub Copilot: 以下は、選択された範囲のライブラリの説明です。


php


doctrine/dbal


fideloper/proxy


jenssegers/mongodb


laravel/framework

  • 公式URL: https://laravel.com/
  • 公式GitHub: https://github.com/laravel/framework
  • マニュアルのURL: https://laravel.com/docs/

  • 一般的なライブラリの用途: Laravel フレームワークのコアパッケージです。Laravel は、PHP の Web アプリケーションフレームワークで、ルーティング、ミドルウェア、コントローラ、ビュー、データベースマイグレーションなどの機能を提供します。

他にも package.json でも同様の出力が出ました。検索や翻訳をして調べることも多いかと思いますが、一般的な利用用途も合わせて出してくれるのが便利です。

Laravelに関する質問

ソースコードの解説ではない質問もできます。 lsの結果を使って質問した回答にあった、Laravelに関する質問をした例です。

質問

PHPのLaravelプロジェクトでは、ソースコードや設定ファイルを確認するためにどこを見れば良いですか?

回答

GitHub Copilot: Laravel プロジェクトのソースコードや設定ファイルを確認するには、以下のファイルやディレクトリを確認することが推奨されています。

  • app ディレクトリ: Laravel アプリケーションのコードが格納されています。このディレクトリには、コントローラ、モデル、ビューなどのアプリケーションのコンポーネントが含まれています。
  • config ディレクトリ: Laravel アプリケーションの設定ファイルが格納されています。このディレクトリには、データベース接続情報やアプリケーションの環境設定などが含まれています。
  • routes ディレクトリ: Laravel アプリケーションのルートファイルが格納されています。このディレクトリには、アプリケーションのルーティング情報が含まれています。
  • resources/views ディレクトリ: Laravel アプリケーションのビューファイルが格納されています。このディレクトリには、アプリケーションの HTML テンプレートが含まれています。
  • public ディレクトリ: Laravel アプリケーションの公開ファイルが格納されています。このディレクトリには、CSS や JavaScript、画像ファイルなどが含まれています。

これらのファイルやディレクトリを確認することで、Laravel アプリケーションのソースコードや設定ファイルを確認することができます。

他言語の質問

VSCodeで開いたフォルダでは php を使っていますが、Go言語など利用していない技術についても質問できます。

質問

Go言語 でよく使われるフレームワークをいくつか公式URL、GitHub URLも合わせて教えてください

回答

GitHub Copilot: Go プログラムでよく使われるフレームワークとしては、以下のものがあります。

これらのフレームワークは、Web アプリケーションの開発に必要な機能を提供しています。それぞれのフレームワークには、公式ドキュメントやチュートリアルが用意されているため、詳細な情報を確認することができます。

使ってみて

ちょっと不便なところ

VSCodeで開いているファイルやワークスペースのフォルダを把握していない

ソースコードの解説を依頼する際には対象のファイルのパスを教えたり、ソースコードの選択範囲を指示する必要があります。 例えば、VSCode で user.phpを開いた後に「今開いているソースを解説してください」と指示をしても回答をもらえません。ファイルへのパスを付けて PATH/user.phpを解説してくださいと指示することで回答が出力されました。

便利なところ

バグやバグに繋がる懸念の指摘

ソースコードの解説の際に「バグやバグに繋がる懸念があれば指摘してください。」と付け加えて質問することで指摘をもらえます。もちろん、指摘がなければ安全というわけではありませんが参考になります。

何の為にあるかわからないファイルを聞く

このファイルは何の用途にあるのだろう?など先輩には聞きづらい質問や調べにくい疑問をChat形式ですぐ聞けるので簡易な質問はAIに聞くことでチームへの負担も減らせそうです。

回答が分割されない

使っている最中では回答が途中で止まるなど、分割されずに1回で回答を受け取れました。 また、トークン料ではない月額料金のですので問い合わせ回数や文字数を気にせず利用できます。

ドキュメントの自動化

完璧なドキュメントとはいかないですが、エンジニア以外の人や自動化などでプロジェクトを理解する為に役立つドキュメントは作成できそうです。

おわりに

プロジェクト全体の解説をしてみたい

複数のファイルやフォルダの内容を一度にチェックすることはできないため、ファイル数やソース量が大きいものだとGitHubCopilot Chatで解説するには時間がかかり、全てのソースをGitHub Copilot Chat で解説してもらうのはやめました。OpenAI APIを使用してバッチなどで作成する方が速そうです。 しかし、それに手をつけ始めると時間がかかりそうだったので今回はここまで!

ChatGPTにソースを貼って回答をもらっても近い回答をもらうことができますので興味がある方はやってみてください。 くれぐれもAIに提供できないソースや情報を使わないようにお気をつけください。

テコテックの採用活動について

テコテックでは新卒採用、中途採用共に積極的に募集をしています。
採用サイトにて会社の雰囲気や福利厚生、募集内容をご確認いただけます。
ご興味を持っていただけましたら是非ご覧ください。 tecotec.co.jp