2024年9月6日金曜日

v0 by Vercelを使って個人旅行管理アプリを作成してみた

Oracle APEXに直接関係ありませんが、巷で話題のv0 by Vercelを使ってみました。先日、生成AIを活用してOracle APEXのアプリケーションを作成するという記事を書きました。目的は同じアプリケーションをv0 by Vercelで作成してみます。

Public Betaへの参加方法などは色々な方が書いている記事を参考にしていただくか、公式サイトを参考にしてください。

Getting Startedをクリックして、チャットを始めます。

以下のプロンプトを与えます。
私の個人旅行を管理するアプリケーションを作成します。旅行名、日程、旅行先、宿泊地、移動手段、費用、アクティビティなどが管理できて、ひとつの旅行で複数の宿泊地を移動することもあります。

プロンプトひとつでここまでアプリが出来上がるのには驚きました。


 ボタンなども一応は動作します。

コードを見ると、(特に指示をしないと)データはReactのStateとして保存しているようです。


以下のプロンプトを入力します。

データはMongoDBに保存するようにしてください。

GETとPOSTを受け付けるハンドラーのコードを生成し、POSTでJSONドキュメントを受け付けてMongoDBのコレクションに対してinsertOneを呼び出すコードが生成されています。

Reactアプリケーションの方では、データの保存でPOSTを呼び出すように書き換わっています。


以下のプロンプトを与えます。

MongoDBの代わりにMySQLを使うように変更してください。

schema.sqlとして、CREATE TABLE文を生成しています。作成した表には参照制約まで付けられています。


おそらく、ユーザー・インターフェースの部分についてはチャットによる指示を繰り返すことで、かなり改善できる印象です。

以下の2点が気になります。
  1. AIがコードを書いてくれるけど、やはりデバッグができるだけのスキルは必要だと感じます。
  2. ユーザー・インターフェースに合わせて、データベースが設計されるように見受けられます。ユーザー・インターフェースとは独立してスキーマをモデリングしている場合、スキーマ定義を渡した上で(スキーマ定義とは必ずしも一致しない)ユーザー・インターフェースの作成をプロンプトとして与えても、その違いに合わせたコードを生成してくれるのだろうか。
とはいえ、Oracle Database 23aiであれば、JSONコレクション表JSONリレーショナル・デュアリティの機能があるので、スキーマがどのように定義されているかにかかわらず、JSONでのデータのやり取りができます。AIが生成したユーザー・インターフェースに基づいたデータ定義とバックエンドのデータベースでの定義の違いは、データベース側で吸収できるはずです。

Oracle DatabaseのJSON関連の機能も、より注目されるかもしれません。