【長女に教えるPart2】AIを使ってプログラミングを学ぶ
この記事の内容
- ChatGPT(O3 mini)を使って、初心者でも作りたいもののアイデアを引き出す方法を紹介しています
- VS Code の拡張機能「Cline」を使うと、ファイル作成からコマンド実行まで AI が自動で行ってくれます
- Python で簡単なレコメンデーションシステムを実際に構築し、エラー対処の流れも体験しています
- GitHub Copilot を使ってコードの意味を VS Code 上で直接確認できます
- VS Code のデバッガーで1行ずつ実行しながらコードの動作を理解する方法を紹介しています
はじめに
この動画は「長女に教えるシリーズ」の第2回です。前回は基礎的な内容を中心に説明しましたが、今回は方針を大きく変え、最先端のAIを使いながら実際に何かを作ってみるところを見ていきます。超基礎的なアプローチと最先端のアプローチの両方から、プログラミングを学んでいくスタイルです。
ChatGPT で「作るもの」のアイデアを出してもらう
まず使うのは ChatGPT です。今回はモデルとして O3 mini を選択しています。ChatGPT には複数のモデルがあります。
| モデル | 特徴 |
|---|---|
| GPT-4 | 普段使いに適したスタンダードモデル |
| O1 | じっくり考えてから回答するモデル |
| O3 | O1 の次世代。プログラミングが得意とされる |
| O3 mini | O3 の軽量版。無料プランでも利用可能 |
O3 系モデルの特徴は、回答を返す前に内部で複数回「考える」ステップを踏む点です。1回で答えを出すのではなく、自己検証しながら質の高い回答を生成します。
初心者が「何を作ればいいかわからない」という場合は、そのままAIに聞いてしまうのが有効です。今回は以下のようなプロンプトを使いました。
ChatGPT からは以下のような候補が返ってきました。
- AIチャットボット
- 画像認識Webアプリ
- 自動文章生成ツール
- 音声認識応答システム
- レコメンデーションシステムの構築
今回は「レコメンデーションシステム」を選択しました。Python の機械学習ライブラリに興味があったことが理由です。
API とは何か
今回の仕組みを理解するうえで、API(Application Programming Interface) という概念を押さえておく必要があります。
API とは、インターネット上に用意された「受け口」のようなものです。そこにリクエストを投げると、答えが返ってきます。
ChatGPT をブラウザで使う場合は「チャットインターフェース」ですが、プログラムから同じ機能を使いたい場合は「API」を叩きます。やっていることは同じで、インターフェースが違うだけです。
現在、主要な AI サービスはそれぞれ API を提供しています。
| サービス | 提供元 |
|---|---|
| GPT-4 / O3 API | OpenAI |
| Gemini API | |
| Claude API | Anthropic |
VS Code 拡張機能「Cline」を使う
ChatGPT で直接コードを生成してコピー&ペーストするのは、慣れると面倒に感じることもあります。そこで今回紹介するのが VS Code の拡張機能 Cline です。
Cline を使うと、以下のことを自動で行ってくれます。
- ファイルの作成・編集
- ターミナルコマンドの実行
- エラーの検出と修正の繰り返し
VS Code 上の Cline に以下のような指示を入力します。
Cline はこの指示を受け取ると、内部で OpenAI の API を叩き、どのような手順で実装するかを考えます。今回は以下のステップが提示されました。
- データを集める
- データをプリプロセスする(整形する)
- モデルを作る
- モデルを評価する
- レコメンデーションを生成する
ライブラリのインストール
Cline は必要なライブラリをインストールするコマンドを提案し、許可を求めてきます。今回は Python の機械学習ライブラリ scikit-learn と Surprise を使います。
pip install scikit-learn surprise
Cline 上で「Run Command」を許可すると、このコマンドが実際のパソコン上で実行され、ライブラリがインストールされます。コピー&ペーストは一切不要です。
レコメンデーションシステムのコード解説
ライブラリのインストール後、Cline は recommendation_system.py というファイルを自動生成します。このコードの内容を GitHub Copilot(VS Code 内蔵のAIアシスタント)に説明してもらいながら確認していきます。
ライブラリのインポート
import pandas as pd
import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
pandas:データ操作用ライブラリnumpy:数値計算用ライブラリcosine_similarity:ユーザー間の類似度計算に使用
サンプルデータの定義
data = {
'user_id': [1, 1, 2, 2, 3, 3],
'item_id': [1, 2, 1, 3, 2, 3],
'rating': [5, 3, 4, 2, 5, 4]
}
df = pd.DataFrame(data)
このデータは「ユーザーID・アイテムID・評価(1〜5点)」の3つの列を持っています。たとえば「ユーザー1がアイテム1に5点、アイテム2に3点をつけた」という意味になります。
ユーザー×アイテム行列の作成
df_matrix = df.pivot(index='user_id', columns='item_id', values='rating').fillna(0)
pivot を使って、ユーザーを行・アイテムを列とする行列を作成します。評価がないアイテムは 0 で埋めます。この行列を使って、ユーザー同士の類似度を計算します。
コサイン類似度の計算
user_similarity = cosine_similarity(df_matrix)
コサイン類似度は、ベクトル空間上での「近さ」を表す指標です。値が大きいほど評価の傾向が似ているユーザーであることを意味します。
推薦関数の実装
def get_recommendations(user_id, user_similarity, df_matrix, n=5):
user_idx = user_id - 1
similar_users = user_similarity[user_idx]
# 類似ユーザーが評価済みで、対象ユーザーが未評価のアイテムにスコアを付与
# スコアの高い上位 n 件を返す
この関数は、指定したユーザーに対して「まだ評価していないアイテム」のうち、類似ユーザーが高く評価しているものを推薦します。デフォルトでは上位5件を返します。これは Amazon の「おすすめ商品」などに応用できる仕組みです。
エラーへの対処
実行すると、ライブラリのバージョン不整合によるエラーが発生することがあります。
このような場合は、エラーメッセージをそのまま Cline や ChatGPT に貼り付けるだけで対処法を提案してくれます。
pip install "numpy<2"
AI がバージョンのダウングレードを提案し、コマンドを実行してくれます。それでもエラーが続く場合は、別のライブラリへの切り替えも提案してくれます。エラーが出たら自分で解決しようとせず、エラー内容をそのままAIに渡すのが効率的です。
VS Code デバッガーでコードを理解する
コードの動作をより深く理解したい場合は、VS Code のデバッガーが役立ちます。
- コードの行番号の左側をクリックしてブレークポイントを設定する(赤い丸が表示される)
F5キーでデバッグ実行を開始する- ブレークポイントで処理が一時停止する
- 「ステップイン」ボタンで1行ずつ実行する
- 変数の中身をウォッチ式で確認する
この方法を使うと、df_matrix や user_similarity の中身が実行時にどのような値になっているかをリアルタイムで確認でき、コードの理解が深まります。わからない部分が出てきたら、そのコードを GitHub Copilot に貼り付けて「もっと詳しく教えて」と聞くことで、さらに理解を深められます。
まとめ
今回の動画では、AI ツールを組み合わせることで初心者でもレコメンデーションシステムを動かすところまで体験できました。重要なポイントをまとめます。
- ChatGPT(O3 mini) に「何を作ればいいか」から聞いてしまうことで、アイデア出しの壁をなくせます
- Cline を使うと、ファイル作成・コマンド実行・エラー修正をまとめて自動化できます
- エラーが出たらエラーをそのまま AI に渡すのが最も効率的な対処法です
- GitHub Copilot を使えば VS Code 上でコードの意味をすぐに確認できます
- デバッガー で1行ずつ実行することで、コードの動作を可視化しながら学べます
「作りたいものを言葉で伝えて動かしてみる」→「わからないところを AI に聞く」→「デバッガーで中身を確認する」というサイクルが、AI 時代のプログラミング学習の基本的なアプローチになっています。