Pythonもインストールした、VS Codeも開いた、AIのチャット画面も準備できた。それなのに、いざ入力欄を前にすると指が止まる——そんな方は少なくないと思います。バイブコーディングの始め方で環境を整えた方の多くが、次にぶつかる壁がここです。
この記事では、「頼む→動かす→直す」というバイブコーディングの基本サイクルを、請求書CSVを月ごとに振り分けるツールを題材に、実際のやり取りごと追体験できるようにまとめました。読み終える頃には、自分の業務に置き換えて指示文を組み立てられるようになっているはずです。
バイブコーディングの基本サイクル——「頼む→動かす→直す」を繰り返す
一度の指示で完璧に動くコードが出てくることは、正直あまり多くありません。AIが返してくるのは「たたき台」だと捉えておくくらいがちょうどいい距離感。
バイブコーディングの流れは、次の4ステップの繰り返しでできています。
- やりたいことをAIに指示する
- コードが生成される
- 実際に実行してみる
- 出た結果やエラーをそのままAIに伝える
うまく動けば完成、動かなければ4に戻ってまた3を繰り返す。やることはこれだけです。私がこれまで見てきた限り、2〜3往復するのが普通で、1回でぴったり決まるケースの方がむしろ珍しいくらい。「一発で完璧を求めない」という前提を持っておくと、途中で心が折れずに済みます。

実例でやってみる——「請求書CSVを月ごとに振り分けるツール」
ここからは、実際に手を動かしながら流れを追ってみます。題材は、多くの会社で発生する「請求書CSVを月ごとのファイルに分ける」という作業です。
Step1:最初の指示を出す
まずは、やりたいことをそのまま言葉にしてAIに伝えます。今回は、次のような指示文を使いました。
A列に日付、B列に取引先名、C列に金額が入ったCSVファイルを読み込んで、
月ごとに別ファイルへ分けてください。
ファイル名は「2026-07.csv」のような形式にしてください。
これに対して、AIは次のようなコードを返してきます。Python標準ライブラリだけで書かれた、追加のインストールが不要な例です。
import csv
from collections import defaultdict
input_file = "invoices.csv"
# 月ごとにまとめるための入れ物
rows_by_month = defaultdict(list)
with open(input_file, encoding="utf-8", newline="") as f:
reader = csv.reader(f)
header = next(reader) # 1行目はヘッダー。あとで各月のファイルの先頭にコピーする
for row in reader:
date_str = row[0] # 例:2026-07-01
month = date_str[:7] # "2026-07" を取り出す
rows_by_month[month].append(row)
for month, rows in rows_by_month.items():
output_file = f"{month}.csv"
with open(output_file, "w", encoding="utf-8", newline="") as f:
writer = csv.writer(f)
writer.writerow(header)
writer.writerows(rows)
print("振り分けが完了しました。")
日付の先頭7文字(「2026-07」の部分)を取り出して月ごとのグループに振り分け、それぞれ別のCSVファイルとして書き出す内容です。難しいことはしていません。
Step2:VS Codeに貼り付けて実行する
このコードをinvoice_split.pyのような名前で保存し、VS Codeのターミナルから実行します。
python invoice_split.py
Step3:エラーが出たら、そのままAIに伝える
さて、ここで多くの方がつまずきます。Excelで作った請求書データをCSVとして保存し、このコードで読み込もうとすると、次のようなエラーが出ることがあります。
UnicodeDecodeError: 'utf-8' codec can't decode byte ...: invalid start byte
バイト値や位置は元データによって変わりますが、要は「utf-8として読めない文字が混ざっている」ということですね。見慣れない英語で、ここで手が止まる方も少なくありません。それでも対処はシンプル。このエラーメッセージをそのままコピーして、AIに渡すだけでいいのです。
実行したら次のエラーが出ました。直してください。
このCSVはExcelで作成したものです。
UnicodeDecodeError: 'utf-8' codec can't decode byte ...: invalid start byte
すると、AIは原因と修正版のコードを返してきます。
import csv
from collections import defaultdict
input_file = "invoices.csv"
rows_by_month = defaultdict(list)
# Windows版Excelで保存したCSVは「cp932」という文字コードになっていることが多い
with open(input_file, encoding="cp932", newline="") as f:
reader = csv.reader(f)
header = next(reader)
for row in reader:
date_str = row[0]
month = date_str[:7]
rows_by_month[month].append(row)
for month, rows in rows_by_month.items():
output_file = f"{month}.csv"
with open(output_file, "w", encoding="cp932", newline="") as f:
writer = csv.writer(f)
writer.writerow(header)
writer.writerows(rows)
print("振り分けが完了しました。")
原因は文字コードの違いでした。Windows版Excelで保存したCSVは、多くの場合「cp932」というシフトJIS系の文字コードになっており、最初のコードが前提にしていた「utf-8」とは異なっていたわけです。なお、書き込み側もcp932にしているのは、そのままExcelで開き直したときに文字化けしないようにするためです。この手の事情は非エンジニアには馴染みが薄いですよね。それでも、エラー文をそのまま渡すだけでAIが直してくれる。これが「頼む→動かす→直す」の1往復です。
今回のようにエラー文をそのままコピーして渡せば直るケースは多いのですが、中にはAIとのやり取りだけでは解決しにくい、少し手強いエラーもあります。そのあたりの対処法は、次回のエラー対応編で詳しく扱う予定です。
Step4:完成後は、まず小さいデータで試す
エラーが解消して動いたら、それで終わりにしないでほしいことがひとつあります。いきなり本番の請求書データを流し込む前に、5〜10行程度のテスト用CSVで一度動かしてみることです。
- 想定していた月ごとのファイルが、正しい件数で作られているか
- 金額や取引先名が崩れずに移っているか
- 元のCSVに欠けているデータ(空欄など)があったとき、おかしな挙動をしないか
このひと手間を惜しんで本番データでいきなり試すと、後から気づいて困る場合があります。件数が多いデータほど、間違いに気づいたときの手戻りも大きくなりますよね。テストは面倒でも先にやっておくのが、結局は近道になります。
もう一つ、動くようになったタイミングで確認してほしいことがあります。AIが提案してきたpip installをそのまま実行していないか、コードの中に外部と通信する処理が紛れていないか、という点です。この点はバイブコーディングで気をつけたい安全対策で詳しく扱っていますので、動くツールができた後にぜひ目を通してください。
良い指示・悪い指示——プロンプトのコツ
先ほどの例では、最初の指示文がわりと具体的だったことにお気づきでしょうか。ここが、バイブコーディングの成否を分ける一番のポイントです。
たとえば、次のような指示だとどうなるでしょう。
請求書のCSVをいい感じに自動化して。
一見自然な日本語ですが、AIからすると「何のファイルを」「どう処理して」「何を出力してほしいのか」がまったく分かりません。結果、的外れなコードが出てくるか、AIが逆に質問を返してくるかのどちらか。
一方、先ほど使った指示文には、次のような情報が含まれていました。
- 入力:CSVファイルで、A列に日付・B列に取引先名・C列に金額が入っている
- 処理:月ごとに分ける
- 出力:「2026-07.csv」のようなファイル名で保存する
入力(何のファイル・どんな形式)と出力(どんな結果がほしいか)を言葉にするだけで、精度は大きく変わります。私の感覚では、この2つを押さえるだけで、最初の1往復で使えるコードが出てくる確率がぐっと上がる印象。
まとめると、プロンプトのコツは次の3つに集約できます。
- 入力と出力を具体的に言う(何のファイルを読み込んで、何を出すか)
- ファイル名や列名など、固有の情報を伝える(「A列」「invoices.csv」のように)
- 一度に頼みすぎず、小さく分けて頼む(「振り分けと集計を同時に」より「まず振り分けだけ」)
3つ目は特に見落とされがちです。一度にあれもこれも詰め込むと、AIも人間も混乱しやすくなります。

できたコードをどう保存・再利用するか
作ったコードは、使い捨てにせず残しておくことをおすすめします。
保存場所に厳密なルールはありませんが、私は「業務名がわかるフォルダ+わかりやすいファイル名」で十分だと考えています。たとえばツール\請求書振り分け\invoice_split.pyのような形。次に同じ作業が発生したときは、同じファイルをVS Codeで開き、対象のCSVを用意して実行するだけで済みます。
毎月同じ作業を繰り返すなら、ダブルクリックで動くように少し工夫する方法もあります。実行用のショートカットを作る、バッチファイルを用意するといった方法です。この発展的な内容は今回は深入りしませんが、「一度作ったコードは資産になる」ということだけは覚えておいてください。
まとめ
バイブコーディングの実践は、次の3点を押さえれば誰でも再現できます。
- 「頼む→動かす→直す」のサイクルを1〜2回繰り返す前提で進める
- 最初の指示文で、入力と出力を具体的に言葉にする
- 完成後は、いきなり本番データを使わず小さいデータで試す
今回のようにエラーメッセージをAIに渡せばたいてい解決しますが、中にはAIとのやり取りだけでは解決しにくいエラーも出てきます。よくあるエラーの種類と対処のコツは、次の記事バイブコーディングでエラーが出たらでまとめる予定です。
今回の請求書CSVの例のように、AIに具体的な指示を出せば思ったよりあっさり動くツールができあがります。自分の業務の中に置き換えられそうな作業が浮かんだら、それがバイブコーディングの出番です。「これはAIに頼めそうか判断がつかない」という場合は、TechnoBridgeの個別相談で一緒に洗い出すこともできます。神奈川・東京・山梨を中心に、商工会議所での勉強会や個別相談にも対応していますので、気軽にお声がけください。



コメント