🤖

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. 関連サイト

https://juicyltd.biz/

https://juicyltd.biz/ai-review-taiketsu/

https://juicyltd.biz/it-engineer-job-class/

Discussion