AIに丸投げ?誤りや手戻りの少ないバイブコーディング
こんにちは、皆さん。HITOSHIです。
いきなりですが、皆さんはAIにコードを「丸投げ」して、痛い目に遭ったことはありませんか?
私はあります。それも、何度か。
「この機能、AIに全部任せれば楽勝でしょ!」と意気込んで、漠然とした指示を与えてみた結果、出来上がったのは「なんとなく動くけど、仕様を満たしていないし、セキュリティもガバガバ」な代物でした。結局、手戻りのほうがはるかに多く、時間も労力も無駄にしてしまったのです。
この記事は、そんな私が失敗を繰り返して辿り着いた、AIと人間が共に歩む「真のバイブコーディング」という開発スタイルについて、私の極個人的な見解を交えながら語るものです。これからAIを本格的に活用したいと考えるすべての方々、特に「ITエンジニアがオペレータとなりAIと二人三脚する時代」に備えたい方に向けて、その哲学と実践方法を紹介します。
1. AIは単なる道具ではない:対話のパートナー
多くの人がAIを「ただの便利な道具」だと思っているかもしれません。しかし、私が考えるAIはそうではありません。
私にとってAIは、まるで 「ちょっとポンコツだけど、無限の知識を持つ頼もしい後輩」 のような存在です。
なぜなら、AIは完璧ではありません。文法的に正しいコードは書けても、私たちのビジネスの文脈や、暗黙の了解まで理解しているわけではないからです。だからこそ、私たち人間がAIに「対話」を通じて、適切なフィードバックを与え続ける必要があります。
これは、日本の豊かな四季が織りなす情景に寄り添うように、相手の心に響く表現を意識するコミュニケーションに似ています。曖昧な言葉ではなく、具体的な言葉でフィードバックを交わすことで、AIとの間に信頼関係が生まれ、より質の高い成果物へとつながっていくのです。
2. 失敗しないための具体的な手順:フィードバックの力
AIとの協働で失敗しないためには、「小さく、細かく、素早く」 フィードバックを回すことが重要です。
これは「肉じゃがが欲しかったのに、カレーが出来上がってしまった」という失敗を避けるための最善策です。料理のレシピを一度に全て渡すのではなく、材料を切り終えた段階で「これでいいかな?」と確認するように、開発も小さなステップでAIとコミュニケーションを取るのです。
具体的な例として、ECサイトのバックエンドAPIをFastAPIとSQLAlchemyを使って実装するケースを考えてみましょう。
ステップ1:アイデアの提示(ごく漠然と)
「PythonのFastAPIを使って、購入履歴を検索するAPIを作りたいんだけど。」
ステップ2:初期の提案(AIがざっくり返す)
AI:「承知しました。購入履歴のデータベーススキーマから考えますか?」
ステップ3:フィードバック(人間が細かく指示)
「いいね。じゃあ、データベースのスキーマを設計して。テーブル名は
customers
にして。購入履歴テーブルには商品名と価格も持たせてね。SQLAlchemyを使う前提で。」
ステップ4:軌道修正(AIがフィードバックを反映して出力)
AI:「承知しました。以下にSQLAlchemyのスキーマを提案します。
from sqlalchemy import Column, Integer, String, DateTime, ForeignKey, Float
from sqlalchemy.orm import relationship, declarative_base
Base = declarative_base()
class Customer(Base):
__tablename__ = 'customers'
id = Column(Integer, primary_key=True)
# ...
class Purchase(Base):
__tablename__ = 'purchases'
id = Column(Integer, primary_key=True)
customer_id = Column(Integer, ForeignKey('customers.id'))
product_name = Column(String)
price = Column(Float)
purchase_date = Column(DateTime)
※補足:
relationship()
は、テーブル間のリレーションシップを定義するために使用されます。Base.metadata.create_all(engine)
を実行すると、このスキーマに基づいてデータベースにテーブルが自動で作成されます。
このように、一度に全てを任せるのではなく、小さな単位で対話を積み重ねていくことで、お互いの「ノリ」が合い、最終的には高品質なコードが効率的に完成します。また、API設計においては、認証や認可、入力値のバリデーションを適切に行うこと がセキュリティ確保の鍵となります。
3. まとめ:オペレータとしての新しい役割
AIとの協働は、開発者の役割そのものを変える可能性を秘めています。
これまでのエンジニアが 「全てを自分でコーディングする人」 だったとすれば、これからのエンジニアは 「AIを適切に導き、より良い成果物を生み出すオペレータ」 となるでしょう。
完璧なAIなど、まだ存在しません。だからこそ、AIを使いこなす私たちの 「人間力」 が問われる時代になってきたのです。AIを単なる道具ではなく、共に未来を築くパートナーとして捉えることで、私たちはより創造的な問題解決に集中できるでしょう。
これは、あくまで私の個人的な感想です。
次回の予告
次回は、バイブコーディングにおける「AIとの仕様調整術」や「セキュリティ設計」について掘り下げていきたいですが、気分で違うテーマになる可能性も否定できないのが悲しいところです。
0. 関連サイト
Discussion