0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AIに丸投げ?誤りや手戻りの少ないバイブコーディング

Posted at

eyechatch-TOP136_1200x742.png

こんにちは、皆さん。HITOSHIです。

皆さんは「バイブコーディング」と聞いて、どんなイメージを抱きますか?「AIに全部任せておけば、コードを勝手に書いてくれるんでしょ?」そう思われる方も少なくないかもしれません。しかし、もしあなたが質の高い成果物を目指すなら、残念ながらそれは夢物語です。

「バイブコーディング」 とは、AIアシスタントを活用した新しいプログラミング手法のことです。「Vibe」は英語で「雰囲気」や「ノリ」を意味し、人間とAIが「ノリ良く」協働する様子を表します。単なるコード生成ではなく、人間とAIが対話を繰り返し、共に最適な答えを見つけ出していく協働のスタイルです。このアプローチを身につけることで、誤りや手戻りを最小限に抑え、開発をよりスムーズに進めることができます。

この記事では、AIに「丸投げ」する危険性を指摘しつつ、私が考える「真のバイブコーディング」の実践方法と、その具体的な例を紹介します。ITの専門用語を分かりやすく解説しつつも、皆さんの知的好奇心を刺激する表現を意識してみました。

真のバイブコーディング:対話とフィードバックのサイクル

「バイブコーディング」の本質は、AIを単なる道具として使うのではなく、対話を通じて共に創造するパートナーと見なす点にあります。一般的なAIの利用法が、要件を一度に与えて完璧な成果を期待する「一方向の指示」だとすれば、真のバイブコーディングは、細かなフィードバックを繰り返す「双方向の対話」です。

このプロセスは、以下のステップで構成されます。

  1. アイデアの提示: 漠然としたアイデアや目的を、自然言語でAIに伝えます。
  2. 初期の提案: AIは、そのアイデアに基づいた初期のコードや構成を提案します。
  3. フィードバック: 人間はAIの提案をレビューし、誤りや改善点、追加の要件を具体的に指摘します。
  4. 軌道修正: AIは、フィードバックを受けて提案を修正し、より適切な成果物へと近づけます。

このサイクルを素早く、何度も繰り返すことで、最終的な成果物の品質を高め、手戻りを減らすことができます。

実践例:小さな対話で大きな成果を

この「対話とフィードバックのサイクル」を、具体的な例で見てみましょう。

誤ったアプローチ:丸投げは手戻りの温床

例えば、ECサイトでユーザーが過去に購入した商品を検索できる機能を実装したいとします。

「丸投げ」のプロンプト

「過去の購入履歴から商品を検索するAPIをPythonとDjangoで作って。ユーザーIDでフィルタリングして、商品名、購入日時、価格を返すようにしてね。」

このプロンプトでは、AIは要件を満たすコードを一度に生成しようとします。しかし、実装の細部(データベースのスキーマ、認証、バリデーション、例外処理など)が不明瞭なまま進むと、後から大幅な修正が必要になるケースが多く、ごっそり作り直しになる手戻りが発生しかねません。

正しいアプローチ:対話と協働

「肉じゃがが欲しかったのに、カレーが出来上がってしまった」という失敗を防ぐために、細かく段階を踏んでAIと対話します。

真のバイブコーディング

  1. [アイデアの提示]: 「PythonのFastAPIを使って、購入履歴を検索するAPIを作りたいんだけど、まずデータベースのスキーマを設計してくれない?」
  2. [初期の提案]:
    from sqlalchemy import Column, Integer, String, DateTime, ForeignKey
    from sqlalchemy.orm import relationship, declarative_base
    
    Base = declarative_base()
    
    class User(Base):
        __tablename__ = 'users'
        id = Column(Integer, primary_key=True)
        # ...
    
    class Item(Base):
        __tablename__ = 'items'
        id = Column(Integer, primary_key=True)
        # ...
    
    class Purchase(Base):
        __tablename__ = 'purchases'
        id = Column(Integer, primary_key=True)
        user_id = Column(Integer, ForeignKey('users.id'))
        item_id = Column(Integer, ForeignKey('items.id'))
        purchase_date = Column(DateTime)
    
  3. [フィードバック]: 「ありがとう。テーブル名はusersじゃなくてcustomersにして。item_idだけじゃなく、product_namepriceも購入履歴テーブルに直接持たせてほしいんだ。商品マスタを参照せずに済むようにね。」
  4. [軌道修正]: AIはフィードバックを反映して、より要件に沿ったスキーマを提案します。

このように、一度に全てを任せるのではなく、小さな単位で対話を積み重ねていくことで、お互いの「ノリ」が合い、最終的には高品質なコードが効率的に完成します。また、API設計においては、認証や認可、入力値のバリデーションを適切に行うことがセキュリティ確保の鍵となります。

まとめ

今回は、AIにただコードを生成させるのではなく、人間がAIと対話しながら開発を進める「真のバイブコーディング」について解説しました。これは、AIの能力を最大限に引き出しつつ、人間のクリエイティブな思考や判断力を活かす、新しい開発スタイルです。

完璧なAIなど、現時点では存在しません。しかし、AIを完璧な存在として期待するのではなく、未熟な部分も理解した上で、細かくコミュニケーションを取ることで、開発プロセスは飛躍的に改善します。

AIにコーディングを「丸投げ」する時代は、まだもう少し先かもしれません。しかし、AIと共に「ノリ良く」開発を進める時代は、すでに始まっています。この記事が、皆さんがAIとの新しい関係を築くための一助となれば幸いです。これは、あくまで個人的な感想ですよ。

参考文献

  • FastAPI 公式ドキュメント: https://fastapi.tiangolo.com/
  • SQLAlchemy 公式ドキュメント: https://www.sqlalchemy.org/
  • Django 公式ドキュメント: https://docs.djangoproject.com/

関連サイト

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?