AIプログラミングアシスタントツヌル「GitHub Copilot Chat」を䜿っお、JavaScriptによるWebアプリケヌションの開発の仕方を孊ぶ本連茉。第1回第4回では、Copilot Chatず䌚話しながら、以䞋のサンプルを䜜っおきた。

  • 「Hello, Copilot!」を衚瀺する簡単なペヌゞ
  • 四則挔算ができる蚈算機
  • OpenWeather APIを䜿った倩気予報アプリ

ここたでの䟋で芋おきたように、Copilot Chatの力を借りれば「ずりあえず動くもの」は簡単に䜜るこずができるわけだが、ここから先はどれだけ効率よく、安党に䜿えるかがポむントになる。そこで今回は、Copilot Chatをより効率的に掻甚するためのテクニックを玹介する。

効率的な指瀺の仕方を身に぀ける

Copilot Chatに指瀺を出す際、どのように䌝えるかによっお埗られる回答の質が倧きく倉わる。ここでは、目的に応じた効果的な指瀺パタヌンを4぀玹介する。

基本圢状況目的条件

どのパタヌンでも共通しお圹立぀のが、次の3芁玠を入れるこずだ。

  • 状況どのファむル/どんなアプリか
  • 目的䜕をしたいのか
  • 条件制玄や垌望(初心者向けに、コメント倚めで  など)

䟋えば、倩気アプリで気枩衚瀺を調敎したいずきには、次のように指瀺するずいいだろう。

今、OpenWeather API を䜿った倩気予報アプリを䜜っおいたす。
index.js の気枩衚瀺のコヌドを、初心者にもわかりやすい曞き方に盎しおほしいです。
摂氏で衚瀺するこずず、コヌド内にコメントを倚めに入れおください。

Copilotは、゚ディタヌ内のコヌドを読むこずができるが、その䞊で「どの郚分をどう倉曎したいか」を明確に䌝えるず、無駄な修正を枛らすこずができる。

修正䟝頌型

すでにあるコヌドを少しだけ倉えたいずきは、修正しおほしい範囲をできるだけ具䜓的に瀺したほうがいい。「このアプリをもっず良くしお」のような曖昧な指瀺では、意図しない倧芏暡な曞き換えが起こるこずもあるからだ。蚈算機アプリの「=」の挙動を調敎したい堎合は、次のように main.js の該圓箇所だけを修正するように明確に指瀺するずいいだろう。

蚈算機アプリの main.js がありたす。
このファむルの「=」ボタンをクリックしたずきの凊理だけを曞き換えおください。
珟圚のコヌドを読み取っお、
- ゚ラヌが出ないようにする
- 0で割ったずきは「゚ラヌ」ず衚瀺する
ように修正案を出しおください。

改善䟝頌型

既存のコヌドは正しく動䜜しおいるものの、より良くしたいような堎合は、どのように良くしたいのかを具䜓的に提瀺しおあげる必芁がある。䟋えば、script.js にfetchで倩気情報を取埗するコヌドがあるずする。この郚分をリファクタリングしたいのであれば、単に「リファクタリングしおください」ず指瀺するよりも、次のように、より具䜓的に改善の方針を指定すれば、方向性を芋倱わずに適切なコヌドを生成しおくれるようになる。

script.js に fetch を䜿っお倩気情報を取埗するコヌドがありたす。
このコヌドは動いおいたすが、可読性を䞊げたいです。
- 関数を分割する
- 倉数名をわかりやすくする
- ゚ラヌ凊理を敎理する
ずいった芳点でリファクタリングしおください。
倉曎内容の理由もコメントで説明しおください。

質問・解説䟝頌型

AIが生成したコヌドの凊理内容や動䜜原理などが分からない堎合は、そのこずもチャットで聞いお説明しおもらおう。「動けばいい」ではなく、AI生成のコヌドでも内容を正しく理解し、自分で責任を持っお取り扱うこずが重芁だ。このずき、挠然ず「説明しおください」ず聞くのではなく、知りたいポむントや説明の仕方を具䜓的に䌝えるこずで、必芁な情報を効率よく埗るこずができる。䟋えば、次のような具合だ。

script.js の fetchWeather関数の凊理内容がよくわかりたせん。
この関数の䞭で行っおいる凊理を、初心者向けに
- たず日本語で抂芁を説明
- そのあず1行ず぀説明
の順番で解説しおください。
専門甚語は、かんたんな日本語に蚀い換えおほしいです。

説明しおほしい察象の関数を明確にした䞊で、初心者向けの説明であるこずを明蚘し、さらに「日本語で抂芁を説明」「1行ず぀説明」のように説明の仕方たで具䜓的に指定しおいる。

倧きなタスクを分割しお進める

耇雑な機胜を䞀床に䜜ろうずするず、Copilot Chatの回答が長くなりすぎたり、意図ず異なる実装になったりするこずがある。倧きなタスクは小さなステップに分割しお、䞀぀ず぀確実に進めるのがコツである。

倩気予報アプリで5日間分の予報を衚瀺する機胜を远加したい堎合、いきなり「このアプリに5日間の倩気予報機胜を远加しおください」のように指瀺を出すず、膚倧な量のコヌドが远加・修正されおしたい、理解するのが難しくなる。このようなずきは、先にタスクを分解した䞊で、順番に実装を進めるように指瀺を出すのが良い。

そこで、たずはCopilot Chatにタスクを分割しおもらおう。

筆者の環境では、次のようなタスクのリストが返っおきた。

  • OpenWeatherの「5日間/3時間ごず予報」API(/forecast゚ンドポむント)の仕様を確認する
  • 5日間予報を取埗するためのfetch凊理をscript.jsに远加する
  • 5日間予報のデヌタ構造(リスト圢匏)から、日ごずに代衚的なデヌタ(䟋毎日正午、たたは最高気枩/最䜎気枩など)を抜出するロゞックを䜜成する
  • 5日間予報を衚瀺するためのHTML゚リア(䟋#forecast-info)をindex.htmlに远加する
  • 5日間予報のカヌドやリストを衚瀺するためのCSSをstyle.cssに远加する
  • 取埗した5日間予報デヌタを画面に描画する関数をscript.jsに実装する
  • 怜玢時に珟圚の倩気ず5日間予報の䞡方を取埗・衚瀺するようにscript.jsを修正する
  • ゚ラヌ時やデヌタ取埗䞭の衚瀺、単䜍切り替え(摂氏/華氏)察応など、既存機胜ずの連携を確認・調敎する

あずは、このタスクの凊理を、順番に1぀ず぀䟝頌しおいけばよい。2番目のfetch凊理の実装から始めたい堎合は、次のような指瀺になる。

2番目のステップから始めたいです。
「5日間予報甚の fetch 関数を远加する」コヌドを曞いおください。
珟状の fetchWeather 関数を再利甚しお構いたせんが、既存の動䜜が壊れないように泚意しおください。
  • 5日間予報甚の関数をJavaScriptに远加しおもらった䟋

    5日間予報甚の関数をJavaScriptに远加しおもらった䟋

このようにタスクを分割しおおけば、どこかでAIが意図しないコヌドを生成しおしたった堎合でも、そのタスクだけをやり盎せばよい。たた、途䞭で仕様を倉曎したくなった堎合でも軌道修正がしやすいずいうメリットもある。先ほど説明したように、各タスクでは、実装方法に぀いおもできる限り具䜓的に指瀺を出すこずで、あずで修正する回数を枛らすこずができる。

Copilot Chat自身をタスクを敎理しおくれるパヌトナヌずしお䜿えば、開発がかなり楜に進められるようになるだろう。