プログラミング学習において、ChatGPTなどのチャット型AIは非常に便利なツールです。
しかし、プログラミング初心者がAIを使おうとした場合、以下が課題となり効果的に活用できないこともあるでしょう。
- よい回答を引き出すためにAIへどのように質問すればよいかわからない。
- AIの回答が正しいかわからないため不安になる。
本記事では以下について説明します。
- AIへの効果的な質問方法
- AIの回答を確認する3つのレベル
AIの進化は速く、次々に新しいツールや機能がでてきますね。そして、AIを効果的に使うための方法論(プロンプトエンジニアリングなど)も色々とあります。
今回はAIの最新機能・様々な細かい方法論ではなく、私が思うAIを使うときの本質的な考え方について説明したいと思います。
私自身、日々AIを活用しながらプログラミングの学習を進めています。
そのような経験も踏まえつつ、お話できればと思います。
動画でも説明しています。
チャット型AIを初心者が使う上での課題
プログラミングとチャット型AI
プログラミングで活用できるAIには以下のようなものがあります。
- コーディングを支援するAI:GitHub Copilot、Cursor、Tabnine、Amazon CodeWhispererなど。
- アプリを全て作るAI:bolt.new、GitHub Sparkなど。
- 汎用チャット型AI:ChatGPT、Claude、Perplexityなど。
この中で、プログラミング初心者には「汎用チャット型AI」がおすすめです。理由は以下です。
- 対話形式で学習:不明点を理解できるまで掘り下げて質問できる。
- 説明の難易度を調整:初心者向けにわかりやすい具体例を交えた説明など。
- 汎用性の高さ:アプリ開発のあらゆるタスク(要件定義、設計、コーディング、テスト)やプログラミング学習で活用できる。
チャット型AIは汎用性が高く、わからない点があればさらに質問するなどチャット形式で議論できます。
専門的な知識をもつプログラミングメンターにアドバイスをもらえるといった感じで使えるのです。
プログラミングで活用できるAIとチャット型AIがおすすめの理由について、詳しくは以下の記事にまとめているので、よかったらご覧ください。
初心者が使うときの課題
うまく使えるととても有用なチャット型AIですが、プログラミングで使ってみたら、以下のような課題を感じた人もいるのではないでしょうか。
- 欲しい答えを得られない
- 回答が難しかったり長かったりしてわかりにくい
- 回答が正しいか判断できない
チャット型AIは「人の質問の仕方」によりその回答の質は大きく変わります。
また、特に初心者の場合に「AIの回答の正しさ」をどう判断するかは悩ましい問題ですね。
質問の仕方についてはプロンプトエンジニアリングという巨大な学問分野があるほどです。
AIがもっともらしい嘘の回答をしてしまう問題はハルシネーションと呼ばれ、こちらもAI活用上の大きな技術課題です。
以降、この2つの課題についてプログラミング初心者がどのような考えで取り組んでいけばよいかを解説します。
- AIにどう質問するか?
- AIの回答の正しさをどう確認するか?
AIにどう質問するか?
基本的な考え方
AIから良い回答を引き出す質問の仕方についてです。細かいテクニックは色々とあるのですが、本質的な考え方を端的に1点だけ伝えるとしたら、以下になります。
リモートワークで一緒に仕事をしている人へのメールだと思って質問やお願いをする。
AIを「一緒に仕事をしている同僚・部下・上司、もしくは取引先の人」と考えて会話をします。
ビジネスのコミュニケーションで、しかもリモートワークで状況は見えないため、何か質問する(お願いする)ときは、例えば以下のような点が重要となりますね。
- 文脈の共有
- 不明な点は質問して解消
- どのような情報が必要か確認
AIは質問者の画面や状況が見えていないため、AIへ文脈情報の共有が必要です。作業の目的や経緯、自分の理解度など必要な情報を伝えます。
AIの回答で不明な点があれば、遠慮なく聞くようにしましょう。
また、より良い回答をしてもらうためにどのような情報が必要かを確認し、その情報を伝えることも重要です。
特に「文脈の共有」は重要かと思います。
「相手の目に見えない状況を言葉で正確に伝える」というコミュニケーションの基本は、人間・AIの両方で共通なのです。
具体例
以下のような状況を考えてみましょう。
- C#で作ったTodoリスト管理アプリの挙動を確認したところ、DB(SQLite)接続できなくなってしまった(DB関連エラーが発生)。
- Todoリスト管理アプリは明日デモで使うためのもので、原因調査や修正のための時間はあまりない。
AIに質問をして、原因解決をサポートしてもらいます。今回はChatGPT-4oへ質問をしてみます。
あまりよくない質問例
SqliteExceptionエラーが発生しました。原因はわかりますか?
SqliteException
は、SQLiteデータベースを操作している際に発生するエラーの一種です。このエラーは、SQLiteが予期しない状況や不正な操作を検出した場合に発生します。いくつかの原因が考えられますので、以下の点をチェックしてみてください。
1. SQL文の構文エラー
SQLクエリに誤った構文が含まれている場合、このエラーが発生します。クエリの構文を確認してください。
例えば、以下のようなエラーが発生することがあります:
- SELECT文でのカラム名の誤記
- INSERT文での値の数とカラムの数が一致しない
- SQLの予約語をカラム名やテーブル名として使用している
2. データ型の不一致
SQLiteは比較的柔軟な型システムを持っていますが、それでもデータ型が一致しないとエラーが発生することがあります。
例えば、文字列型のカラムに整数値を挿入しようとするとエラーが発生することがあります。
3. データベースのロック
…(省略)…
6. トランザクションの誤った使い方
SQLiteでトランザクションを使用する際、BEGIN TRANSACTION
と COMMIT
/ ROLLBACK
の使い方が誤っていると、エラーが発生することがあります。
…(省略)…
ChatGPTはいくつか考えられる原因を列挙してくれていますが、与えている情報が乏しいためややおおざっぱな回答になっています。
よい質問例
例えば会社の同僚に対し、エラー原因について質問するときにはどうするでしょうか?きっと、必要な文脈情報としてより詳しい状況を伝えますよね。
以下のようにエラーメッセージの内容も伝えましょう。
以下のエラーが発生しました。原因はわかりますか?
A database operation failed while processing the request.
SqliteException: SQLite Error 1: ‘no such table: AspNetUsers’.
Applying existing migrations may resolve this issue
There are migrations that have not been applied to the following database(s):
ApplicationDbContext
00000000000000_CreateIdentitySchema
…(省略)…
このエラーは、SQLiteデータベースに AspNetUsers
テーブルが存在しないことが原因です。通常、これは必要なマイグレーションがデータベースに適用されていない場合に発生します。AspNetUsers
テーブルは、ASP.NET Core Identityのスキーマで定義されたテーブルで、ユーザー情報を格納するために使用されます。
解決策として、以下の手順でマイグレーションを適用し、テーブルを作成してください。
- マイグレーションの適用
Visual Studioのパッケージマネージャーコンソールを開き、以下のコマンドを実行します。powershellコードをコピーするUpdate-Database
または、コマンドプロンプトからプロジェクトディレクトリに移動し、以下のコマンドを実行します。bashコードをコピーするdotnet ef database update
- マイグレーションが適用されているかの確認
…(省略)…
状況をきちんと伝えたので、AIはだいぶ原因を絞り込んでくれていますね。エラー原因の特定ならば必要に応じて以下の文脈の情報を伝えるとよいでしょう。
- エラーメッセージ/ログ、問題発生時のスクリーンショット
- ソースコード(関連ありそうな部分)
- 自分が既に試してみたこと
さらにどのような追加情報があれば原因を絞り込めるかを聞いてみてもよいでしょう。
人間相手にお願いして、一緒に解決していくときと同じってことだね!
そうですね。ビジネス上のコミュニケーションと考えて、どのような情報を伝えるとよいか考えることが大事です。
また、こちらからどのような情報を伝えればよりよい回答が得られるかを質問してみるのもよいでしょう。
よい質問例(発展版)
もう少し発展的な質問例を考えてみましょう。現在、実は以下の状況でけっこう切羽づまっているのでしたね。
- Todoリスト管理アプリは明日デモで使うためのもので、原因調査や修正のための時間はあまりない。
このような急ぎの状況もAIに伝えるようにしてみましょう。
以下のエラーが発生しました。原因はわかりますか?
このアプリは明日デモ向けに使うためのものです。原因調査や修正のための時間がほぼありません。
デモなので、アプリは最低限見た目上動作しているようにみえればよいです。
A database operation failed while processing the request.
SqliteException: SQLite Error 1: ‘no such table: AspNetUsers’.
…(省略)…
このエラーは、データベースに必要なテーブルが存在しないために発生しています。具体的には、AspNetUsers
テーブルが見つからないため、アプリケーションが動作しない状況です。このエラーは、マイグレーションがデータベースに適用されていないために発生します。
解決方法:最低限の動作を確保するための方法
1. マイグレーションを適用
…(省略)…
2. デモ目的のための一時的な対策 時間がない場合やマイグレーション適用が難しい場合、デモで「見た目上動作しているように見せる」方法としては、以下の方法もあります。
- スタブやモックを使う:特定のページやデータが必要であれば、ダミーデータでテーブルのデータをモックして、エラーを回避する方法もあります。
AspNetUsers
テーブルが存在しないことによるエラーをスキップ:AspNetUsers
テーブルへのアクセスを行うコードや機能を一時的に無効にするか、コメントアウトすることで、デモ用に最低限の動作を確保することができます。
…(省略)…
AIはエラーを修正できなかった場合の代案を出してくれていますね。見た目上動いているようにみえるデモならば、AIが提案するような解決策もありかもしれませんね。
上司に「そういう状況だったらこうすればよかったのに!(ちゃんと状況伝えてくれていれば…)」って言われたことがあったなぁ。
「文脈の共有」として、きちんと目的や状況を伝えるというのは大事ですね。
以下のようなイメージです。(1)の領域の情報だけ与えてAIへ質問をしても、手段2に関する回答はでてきません。(2)まで文脈を共有することで、手段2を提案してもらえます。
人間相手に相談していると、「そもそも目的なんだっけ?」みたいな話になり軌道修正されることもありますが、AIは人に比べてそこが弱いですね。
意識して、「自分が本当にやりたいこと」を伝えることで、AIからよい回答を引き出すことができるでしょう。
まとめ
AIからよい回答を得ようと思ったとき、以下の考え方で質問すると、よりよい回答を得やすくなると思います。
リモートワークで一緒に仕事をしている人へのメールだと思って質問やお願いをする。
頭の中にある「もやもや」っとした内容を、きちんと整理された質問文に書き下すことは、決して簡単なことではありません。
AIへの質問に限らず、「良い質問ができること」は、あらゆる仕事を進めていくうえでもっとも重要なスキルの1つともいえるかもしれません。
いわゆる「コミュニケーション能力」ってやつね…。
「質問内容を整理して書いていたら自分の頭も整理され、問題が勝手に解決した!」なんてこともあるぐらいです。
AIを相手に「質問する力」を鍛えると、仕事でのコミュニケーション能力も向上するかもしれませんね!
AIへの質問に慣れてくると、文脈情報を毎回AIへ共有することはわずらわしく感じるようになるかもしれませんね。
仕事相手の人間ならば、互いの頭に文脈情報が溜まるため、毎回同じことを共有しなくて済むのですが、AIは基本的にそのようになっておらず文脈を忘れてしまうためです。
このような場合、チャット型AIのより高度な使い方を学ぶよい機会です。
文脈をAIを覚えさせておくような仕組み(例:GPTs、Claude Projects)も存在するので、ぜひ次のステップへ学習を進めましょう。
「文脈情報」をいかに効率よくチャット型AIと共有するかについては、私(プロ太)のAI活用事例でも少し触れます。
また、GPTs、Claude Projects等についても別の記事で紹介できればと思います!
AIの回答の正しさをどう確認するか?
基本的な考え方
AIの回答の正しさを確認することは、AIを効果的に活用しつつきちんと理解しながらプログラミング学習を進めるために重要ですね。
AIの回答は推論でしかないため、その回答の正しさを厳密に検証することは本質的に難しいことです。
そこで、AIを活用するときに、AIへの質問や作業をお願いしている内容が「自分の持っている知識に対してどのような領域か?」を考えるとよいかと思います。
大きく以下の3つのレベルに分けて考えます。
- (1)知識がある領域
- (2)知識がある領域の一歩先
- (3)まったく馴染のない領域
以下のイメージです。
例えば、「C#のWinFormsで昔少し開発経験があり、HTMLの基本的な知識」がある人がAIに質問する例を考えましょう。(1),(2),(3)は例えば以下のようになります。
- (1)知識のある領域(例):WinForms(Windowsデスクトップアプリ)のイベントの記述方法を忘れてしまったため、記述方法について質問
- (2)知識のある領域の一歩先(例):ASP.NET Core Blazor(Webアプリ)におけるイベント記述方法を質問
- (3)まったく馴染みのない領域(例):BlazorでSignalR(WebSocket)を使ったリアルタイム通信の方法を質問
過去に自分の経験がある内容に関する質問は「(1)知識のある領域」ですね。
デスクトップアプリ開発でイベント処理記述の経験があり、HTMLの知識もあるならばWebアプリにおけるイベント処理記述は「(2)知識のある領域の一歩先」といえそうです。
一方で、WebSocketを使ったリアルタイム通信は「(3)まったく馴染みのない領域」となるでしょう。
もし、この人が「昔、C言語でTCPソケットでネットワークプログラムを書いた経験がある」とすれば(2)の領域になったかもしれません。
質問者の経験によって(1),(2),(3)の領域は変わってきます。
まず、AIに質問している領域が(1),(2),(3)のどこに相当するかを自分でおおまかに意識しておくことが重要です。
そして、(1),(2),(3)の領域それぞれでAIの活用方法は変わってきます。大きくは以下の方針になります。
- AIへ質問するのは基本的に(1),(2)の領域にする。回答の正しさをある程度自分で判断しやすいため。
- (3)の領域についてはより正確なソース(本、公式サイト等)でまず学習する。ただ、AIを活用したほうがよい場合も一部あり。
(1),(2),(3)それぞれについて具体的にAI活用方法のポイントを説明します。
(それぞれの具体例はChatGPT-4oを使っています)
(1)知識がある領域
考え方
「AIの力を借りずともやろうと思えば自力でできる」領域です。
この領域では、自分でもできるが作業量が多く面倒・Web検索や本などをみて確認するのが大変といった作業を、AI活用で効率化することを狙います。
例えば、以下のような内容があるかと思います。
- プログラミングの文法、ライブラリの使い方など忘れてしまったものを確認
- つづり間違い、コーディング規約などのチェック
- 定型的なコードの生成(例:データベーステーブルへのCRUD操作)
- テストデータ作成
この領域では、AIの回答の正しさを自分で確認することが容易なため、AIの力をおおいに活かせます。
具体例
例としてC#のLINQ(統合クエリ言語)を学習するためのテストデータ作成を考えましょう。
AIに以下のように質問するとよいでしょう。
LINQの勉強をするため、実験用のテストデータを作成してもらえますか?
社員データと部署データがあるとよいです。それぞれ、10件ずつのデータをおねがいします。
以下に、LINQの学習用として使用できる社員データと部署データを作成しました。C#でのコード形式で提供しますので、そのままコピーしてお使いください。
using System;
using System.Collections.Generic;
class Program
{
static void Main(string[] args)
{
// 部署データ
var departments = new List<Department>
{
new Department { DepartmentId = 1, Name = "営業" },
new Department { DepartmentId = 2, Name = "人事" },
new Department { DepartmentId = 3, Name = "総務" },
…省略…
};
// 社員データ
var employees = new List<Employee>
{
new Employee { EmployeeId = 1, Name = "田中 太郎", DepartmentId = 1, Salary = 500000 },
new Employee { EmployeeId = 2, Name = "佐藤 花子", DepartmentId = 2, Salary = 400000 },
new Employee { EmployeeId = 3, Name = "鈴木 一郎", DepartmentId = 3, Salary = 450000 },
…省略…
};
// LINQでの操作例
// 例: 全社員を部署名付きで表示
var query = from e in employees
join d in departments on e.DepartmentId equals d.DepartmentId
select new { e.Name, e.Salary, DepartmentName = d.Name };
foreach (var item in query)
{
Console.WriteLine($"名前: {item.Name}, 給与: {item.Salary}, 部署: {item.DepartmentName}");
}
}
}
class Employee
{
public int EmployeeId { get; set; }
public string Name { get; set; }
public int DepartmentId { get; set; }
public int Salary { get; set; }
}
class Department
{
public int DepartmentId { get; set; }
public string Name { get; set; }
}
データの特徴:
- 部署データ (
departments
)DepartmentId
: 部署の一意の識別子Name
: 部署名
- 社員データ (
employees
)EmployeeId
: 社員の一意の識別子Name
: 社員の名前DepartmentId
: 所属部署のID(departments
のDepartmentId
と対応)Salary
: 給与(例として月給の値)
このコードを用いて、LINQの基本的な操作(例えばフィルタリング、ソート、グループ化、結合など)を試してみてください。
ChatGPTが社員・部署のテストデータを作ってくれていますね!
テストデータは(シンプルな構造であれば)初心者であっても内容が妥当かどうかの判断が容易です。とはいえ、大量のバリエーションをいちから自分で作るのは面倒な作業ですね。
確かに、プログラムコードじゃなくてテストデータだったら、初心者でも正確か判断しやすいかも!
そうですね。実際にDBへ投入するデータを準備するにももちろん使えます。AIを使うと多様なテストデータを素早く生成できます。
(2)知識がある領域の一歩先
考え方
「自分の知識を少し応用すれば理解できる」領域といえるでしょう。
プログラミング学習でAIを活用するために最適な領域です。
例えば、以下のような内容が該当します。
- 類似技術への応用(例:WinForms→Blazor、React→Vue.js)
- バージョンアップへの対応(例:Python2→Python3)
- コードの改善(例:リファクタリング提案)
- 機能拡張(例:既存のデータベースのCRUD処理へ検索機能を追加)
この領域では、自分の既存知識をベースに AIの回答を理解・検証できるため、効果的に学習を進められます。
不明な点については質問をして深堀りすることで理解が深まります。
もちろん、必要に応じてプログラムを実際に動かして検証したり、他の情報ソース(公式サイト・本)と突合も行うとよいでしょう。
具体例
「WinFormsでデスクトップアプリ開発」の経験を持つ人が、「Blazorを用いたWebアプリ開発」で、同様の機能を実装する場合を考えましょう。
例えば、以下のように質問するとよいでしょう。
WinFormsでボタンクリックイベントを実装したことがあります。
Blazorで同様のボタンクリックイベントを実装する方法を教えてください。
できれば、WinFormsとの違いも説明してもらえると嬉しいです。
Blazorでボタンクリックイベントを実装する方法について説明します。BlazorはWinFormsとは異なるモデルで動作しますが、イベント処理の基本的な流れは似ています。以下では、Blazorの実装方法とWinFormsとの違いについて詳しく説明します。
Blazorでのボタンクリックイベントの実装方法
…省略…(コード例も示してくれていますが、省略)
WinFormsとの違い
BlazorとWinFormsのボタンクリックイベント実装には以下の違いがあります。
…省略…
主なポイントのまとめ
- BlazorはWebアプリケーションフレームワーク、WinFormsはWindowsデスクトップアプリケーションフレームワークという違いがあります。
- BlazorはHTMLにC#コードを統合する形でイベントを記述し、UI更新は自動で行われます。
- WinFormsではイベントハンドラーの登録とUI更新を手動で行います。
…省略…
この例では、既存の WinForms の知識を活かしながら、Blazor での実装方法を理解できます。ポイントは以下です。
- 自分の既存知識と比較できるようにする
- 具体的な実装例を示してもらう
このように、既存の知識をベースに新しい技術を学ぶアプローチをとることで、より確実に理解を深められます。
また、具体的な実装例があれば実際に動作させてみて検証することもできますね。
自分の知っている類似技術との共通点・相違点を教えてもらう方法は、私自身、学習でよく使う方法です。
新しい技術を学ぶ際に、おおまかな学習難易度の判断にも使えます。この時点で難しそうと判断すれば、別の技術を選択することもあります。
(3)まったく馴染のない領域
考え方
この領域は「自分の知識だけでは理解や検証が難しい」領域です。
AI の回答の正確性を判断するのが困難なため、最初は信用できるソース(公式サイトや本など)を活用して学習をすることが望ましいでしょう。
AIの活用は以下のような場合に限定することをお勧めします。
- 複数の情報源の一つとしての利用
- 緊急時のトラブルシューティング(ただし、後で必ず理解を深める)
正直、AIの活用があまり向かない領域といえますね。
具体例
例えば、初心者がプログラミング学習をするときに、どうしてもプログラムが動作するところまでたどりつかない…という場合にAIを活用して強行突破するのはありかもしれません。
初心者がプログラミング学習をするうえで最も重要なことは「モチベーションを継続させる」ことかと思います。
作りたいプログラムがまったく動作せず1日中悩んだまま何も進まないというのは、モチベーションを大きく下げる可能性があります。
私も学習を進めているときに、(特に環境構築関連で、)どうしても原因がわからないエラーで心が折れそうになるときもありますね…。
このような場合はAIにサポートしてもらい、(完全に理解はできていないが、)いったん動作するようにして続きの学習を進めるという使い方はありかもしれません。
「なぜその対応で動いたか?」については後から確認、理解するようにするとよいでしょう。
まとめ
自分が以下のどの領域についてAIへ質問しようとしているかを意識するとよいです。3つのレベルがあります。
- (1)知識のある領域
- (2)知識のある領域の一歩先
- (3)まったく馴染みのない領域
このなかで(1),(2)がAI活用に適した領域です。特に(2)はAIにより学習が加速できる領域です。
以下のように、学習を進めることで(1)とその周辺である(2)の領域が広がり、複利的に知識を拡大できます。
知識の土台を持ちAIを使いこなせる人が、すごい勢いで成長していく(他の人との差が大きくなる)ということですね。
AI活用事例:私(プロ太)の場合
これまでお話したチャット型AI活用の考え方も踏まえ、私がAIをどのように使っているかを少しお話します。
どのように使っているか?
私はほぼ毎日、チャット型AIを以下のように活用しています。
- アプリ開発全般(設計、コーディングなど)
- ブログ記事執筆の補助(新ネタの検討、構成のたたき台作成、レビュー)
- プログラミング記事で使う具体例作成の補助
- 新機能がでたらとりあえず触って遊ぶ(音声チャットなど)
- その他、調べ物全般
ChatGPTとClaudeの有料契約版を主に使っています。
なんとなく回答が自分の好みにあっているClaude(日本語がより自然?)を主に使うことが多いです。
別の意見を聞きたい場合、コーディングで難しい箇所をお願いする場合、その日の気分によってChatGPTも使います。
最近だとWeb検索機能でChatGPTを使う機会が増えました。
私にとってチャット型AIは以下のような存在です。
- 部下のようであり(例:たたき台を作ってくれる)
- 上司のようでもあり(例:レビューしてくれる)、
- 同僚のようでもある(例:技術の相談や雑談)
「AIへどう質問するか?」でお話した通り、まさに「リモートワークを一緒にしている仕事仲間」という感じです。
具体例
私は今、C# BlazorによるWebアプリ開発の新しいシリーズを開始するため、題材となるサンプルアプリとして「プログラミング学習サイト」アプリを作ろうとしています。
このアプリを作るにあたり、プロジェクトの構成やアーキテクチャなど全体的なところから、AIと相談しながら作業を進めています。
AIと相談するときには、文脈の共有が重要でしたね。
私の場合、以下のように作るアプリの前提についてはマークダウン形式のメモとしてまとめ、必要に応じてAIへ与えるようにしています。以下は一部を抜粋したものです。
# プロジェクト概要
## 目的
- **C# Blazor 初学者を対象**とした実践的な Blazor アプリサンプルを開発し、ハンズオンとして使用する。
- **ブログや YouTube** でこのアプリの開発シリーズを作成し、段階的に開発過程を記事・動画にする。
## 方針
- **上流工程(要件定義・設計)** は軽量かつ最低限のものに絞る。
- 初心者が対象であり、アジャイル開発を主なターゲットとするため、過度なドキュメントは作成しない。
- とはいえ、自分の考えを整理するためにも最低限の要件定義・設計は行う。
- **技術選定** は簡易なものにし、要件・設計の機能実装に注力する。
- 例:データベースは SQLite、認証は Core Identity を使用。
- このシリーズ後に、より実用的な方向へ発展させる可能性あり(例:データベースを SQL Server や Azure SQL Database、認証を Entra ID や Azure AD B2C に変更)。
…省略…
このような背景知識を与えることで、AIはこのような前提を踏まえた回答をしてくれます。
さらに、最近ではC#のソリューション・プロジェクトのフォルダ階層情報や必要なコードも与えて議論できるよう、以下のような簡単なツールを自作して使っています。
対象プロジェクトのフォルダ階層情報と選択したコードについて、AIへ渡すための入力として、ひとつのテキストにまとめたものを生成します。
このように必要な文脈情報を与えた上で、不明点を聞いたり、よりよいコードにするための助言をもらったりと、AIと議論をしています。
馴染みのない領域については、まずは先に本を読んで体系的に全体像を把握するということもあります。(近くの公立図書館で借りて読みます)
このようにプロジェクトや必要なコードの情報に基づいて、プログラミングを支援してくれるツールとしてGitHub Copilot、Cursorなどもあります。
現状、私としては様々な議論をするにはチャット型AIの方が使いやすいため、上述したような自作ツールも使っています。
よく使う文脈情報はテキストでまとめておいて、AIとチャットをするときにそれを添付するぐらいなら、すぐに実践できそうだね!
まずは今回説明した「質問の方法」、「回答の正しさを確認する3つのレベル」を押さえ、次のステップとして色々工夫してみるとよいです。
私自身、AIの使い方について勉強中であり、新しい方法・より良い方法を日々模索しています。
まとめ
チャット型AIはプログラミング初心者・学習者におすすめですが、「どう質問するか?」、「どう回答の正しさを確認するか?」という課題があります。
質問方法としては、リモートワークをしている仕事仲間へ質問やお願いのメールを送るときにどうするか?という考え方が有効です。
文脈情報を適切に共有する、不明点は遠慮なく質問するといったことが大事です。
AIの回答の正しさを厳密に検証することは難しいです。なので、質問内容が自分の知識に対し3つのレベルのどれにあたるか?を意識することが重要です。
- (1)知識のある領域
- (2)知識のある領域の一歩先
- (3)まったく馴染みのない領域
(1),(2)がAI活用に適した領域であり、(2)は特に学習を加速できる領域です。
チャット型AIを要件定義、設計などアプリ開発の様々なタスクで活かす例について以下の記事も参考にしてください。AIの推論の仕組みやその限界についても簡単に解説しています。
まずはぜひチャット型AIを使ってみてください!
引き続き、プログラミングやAI活用について楽しく学んでいきましょう。