データベースのスキーマ生成にAIを使うには?
効率的なバックエンド・ソリューションのためのデータベース設計は難しい。必要なクラスやリレーションシップなどをすべて把握するのは、非常に時間がかかります。
さらに、設計段階で誤った決断を下すと、後の生産工程で不利な結果を招きかねない。
この記事では、データベーススキーマ生成におけるAIの利用について説明する。AIを使用する利点とその落とし穴に注目し、いくつかの実践例を紹介する。
その上、AIをさらに活用して、コードを書かずに本格的なバックエンドを生成する方法も学ぶことができる!
データベース設計にAIを活用するメリット
まず、AIを使うことの利点を見てみよう。
自動化と費用対効果
データベース設計にAIを取り入れることの最初の、そしておそらく最も明白な利点は、さまざまなタスクを自動化できることだ。
これには、データベーススキーマの生成、データベースの最適化、インデックスの設定、高度なクエリの記述などが含まれる。
上記のすべてが、大幅な時間とコストの節約につながる。
最適化
AIはデータベース構造の最適化において重要な役割を果たす。高度なアルゴリズムと機械学習によって、AIはデータの使用パターンを分析し、データベーススキーマの強化を推奨することができる。
この最適化により、アプリケーションのパフォーマンスと応答性が向上します。
既存のデータベースとの統合
AIを使うもうひとつの大きなメリットは、既存のデータベースのアップグレードに役立つことだ。
AIエージェントに現在のデータベースを説明するか、データベースのダンプを生成し、必要なアップグレードを説明するだけでよい。
Back4app Agentを使えば、さらに簡単です。データベースのダンプを生成する代わりに、既存のアプリにフックするようにエージェントに指示することができます:
Connect to my "movie-reviews" app and create a new database class named `Watchlist`.
AIエージェントは、必要なすべてのコンテキストを収集し、それに応じてデータベースをアップグレードします。
エラーが少ない
AIをデータベース設計に組み込むことで、人的ミスの可能性を減らすことができる。
従来のデータベース設計と最適化のプロセスでは、手作業が介在することが多く、誤ったスキーマ設計、非効率的なクエリ、最適でないインデックスの選択などのミスのリスクが高まります。
簡単な視覚化
AIを活用することで、データベース構造を簡単に可視化することができます。データベースを可視化するために、AIエージェントに、お気に入りのER図作成ツール用の可視化コードを生成するよう促します。
これはMermaid例だ:
Generate Mermaid ER diagram visualization code for my database.
結果
erDiagram
USER ||--o{ REVIEW : writes
MOVIE ||--o{ REVIEW : has
MOVIE ||--o{ MOVIEGENRE : has
USER {
username String
email String
emailVerified Boolean
displayName String
}
MOVIE {
title String
releaseDate Date
duration Number
director String
cast Array
synopsis String
}
// ...
データベース設計にAIを使うことの落とし穴
幻覚
AIエージェントは時として、もっともらしく聞こえるが正しくない、あるいは無意味な情報を提供することがある。これは幻覚として知られており、ほとんどの大規模言語モデル(LLM)で起こる。
このため、データベースに慣れていない開発者は、データベース・スキーマの生成にAIを使うべきではない。
パフォーマンス
AIが生成したデータベーススキーマは最適である保証はありません。AIエージェントは、あなたが構築しようとしているものを誤って解釈し、最適でない、あるいは欠陥のあるデータベーススキーマを提供するかもしれません。
AIを使ったデータベース設計は反復プロセスである。AIエージェントのミスに気づいたら、それを指摘してください。それを修正したり、スキーマを改善したりできるかもしれない。
エッジケース
あなたのビジネスが非定型のデータベース設計を必要とする場合、AIの使用は最良のアイデアではないかもしれない。ほとんどのAIエージェントは、多数の一般的なアプリケーションで訓練されている。
彼らはあなたの専門的なデータベースについてどうすればいいのか知らない。
もしそうなら、一般的なAIソリューションよりも専門家に頼った方がいい。
AIを使ってデータベース・スキーマを生成するには?
この記事では、AIを使ってデータベース・スキーマを生成する3つの実践例を見ていこう。その例とは、シンプルなブログアプリ、eコマースサイト、映画レビューサイトである。
その後、Back4appのAIエージェントができるその他のことを見ていきます。
以下のステップでは、Back4appのアカウントが必要です。まだお持ちでない場合は、無料で登録してください。
目的
- データベーススキーマの生成
- スキーマを使用してデータベースを作成する
- 自動生成されたRESTful APIとGraphQL APIを分析する
- 自動生成されたドキュメントを確認する
- クラウドコードの機能を活用する
Back4app Agentとは何ですか?
Back4app AgentはAIを搭載したエージェントで、会話の力でクラウド関連のタスクを実行することができます。
これには、アプリの作成、アプリのデプロイ、データベースの設計、Dockerfileやフロントエンド・コードの記述などが含まれる。
Back4app Agentを活用することで、24時間365日、あなただけのDevOpsアシスタントを手に入れることができます。Back4appエージェントの素晴らしいところは、その場で学習し、改善することができることです。
エージェントはBack4appおよびBack4app Containersと密接に統合されています。既にBack4appのサービスを利用しているのであれば、エージェントは必需品です!
AIエージェントは魔法の道具ではないことを覚えておいてほしい。それは大規模で洗練された言語モデル(LLM)であり、間違いを犯すかもしれません。その場合、それを修正するのはあなた次第です。さらに、(私と)同じプロンプトを送信しても、異なる回答が返ってくるかもしれない。
ケース1:ブログ・ウェブサイト
最初の例として、AIエージェントにブログ・データベースのスキーマを設計するように促します。この例では、AIエージェントが不足しているピースを探し出せるかどうかを確認するために、情報をできるだけ少なくします。
Back4appエージェントのページに移動し、新しいエージェントを作成し、以下のようにプロンプトを表示します:
Create a database schema for a simple blog. Each article in the blog should have a `title`, `shortContent`, `content`, `tags`, and other administrative data. The articles should be filterable by `tags`.
生成されたスキーマのエンティティ関係(ER)図:
ご覧のように、エージェントは有効なデータベーススキーマの作成に成功しました。必要なクラスがすべて含まれており、クラス間のリレーションシップも処理されています。さらに、createdAt
、updatedAt
、ACL
などの Parse 管理フィールドも含まれています。
ケース2:Eコマース・ウェブサイト
続いて、もっと複雑なデータベーススキーマを試してみよう。今回はeコマースのウェブサイトだ。
AIエージェントに以下のプロンプトを送信する:
Create a database schema for an e-commerce website. The database should allow sellers
to post listings. After a listing is posted, a user can open an order for it. The
order should be associated with the user's shipping address. Amazon is a good example
of what I'm looking for.
エージェントは以下のデータベース・スキーマを生成した:
この場合も、エージェントは有効なデータベース・スキーマを返した。
私がここで変更する唯一のことは、注文と
住所の
関係を反転させることです。注文は1つの住所に関連付けられ、住所は注文間で再利用可能である方が理にかなっている。
ケース3:ウェブサイトの見直し
最後の例では、映画レビューデータベースのスキーマを生成します。ここでは、AIエージェントが私たちの詳細な指示に一致するスキーマを作成できるかどうかを確認するために、できるだけ多くのコンテキストを提供します。
AIエージェントに次のように促す:
Create a database schema for a movie review website. The database should contain
the following models: `Movie`, `MovieGenre`, `Review`, and `User` (Parse).
Notes:
- A `Movie` can have multiple genres
- The `Review` should contain at least `title`, `content`, `rating`, and `is_critic`
- Each `Review` should be associated with a `User`
Make sure to include all the Parse administrative fields, such as `createdAt`,
`updatedAt`, and `ACL`.
AIエージェントは以下のデータベーススキーマを生成した:
素晴らしいスキーマがまたひとつ増えた。
すべてのクラスが処理され、関係もよく見える。ここでは、AIエージェントは、Movieと
Genre
クラスの間のM:Nの
関係を処理する仲介モデルさえ生成した。
データベース生成
冒頭で述べたように、Back4app Agentは他のBack4appサービスと緊密に統合されています。
データベース・スキーマの生成は、AIエージェントができることのひとつに過ぎない。スキーマができれば、すぐにデータベースを作成できる。
エージェントに次のように促す:
Create a Back4app app called "back4app-reviews" using the generated database schema.
素晴らしい、エージェントはアプリと目的のデータベース構造の作成に成功したようだ。
次に、エージェントにデータベースへのデータ入力を依頼する:
Populate the database with sample users, movie genres, and reviews.
Back4appのダッシュボードに移動し、アプリを選択し、データベースのエントリを確認することで、データベースが作成され、入力されていることを確認してください。
それだけだ!
これで映画批評サイトのデータベースが完全に機能するようになった。
自動的に生成されるAPI
Back4appは、バックエンドとの通信を可能にします:
- 自動生成RESTful API
- 自動生成されるGraphQL API
- Parse SDK
それぞれを検証してみよう。
RESTful API
RESTはHTTPプロトコルに基づいており、リソースを操作するためにGET
、POST
、PUT
、DELETEといった
さまざまなHTTPメソッドを利用する。
これらの操作はCRUD(Create、Retrieve、Update、Delete)と呼ばれることが多い。RESTは複数のデータ形式をサポートするが、好ましい形式はJSONである。
REST APIをテストするには、アプリに移動し、サイドバーで “API > Console > REST “を選択します。
以下の情報をフォームに記入してください:
- リクエストタイプGET
- エンドポイント:クラス/映画
- マスターキー真
次に、”Send Query “をクリックしてクエリーを実行する。
これと同じような返事が返ってくるはずだ:
{
"results": [
{
"objectId": "AD1r4b9Oie",
"title": "The Fast Saga",
"duration": 120,
"director": "Justin Lin",
"cast": [
"Vin Diesel",
"Michelle Rodriguez"
],
"synopsis": "Street racing, heists, and espionage.",
"createdAt": "2024-02-03T21:53:54.724Z",
"updatedAt": "2024-02-03T21:53:54.724Z",
},
{
"objectId": "Sr6FQjnckj",
"title": "The Serious Case",
"duration": 140,
"director": "Christopher Nolan",
"cast": [
"Christian Bale",
"Michael Caine"
],
"synopsis": "An intricate story of human emotions and relationships",
"createdAt": "2024-02-03T21:53:54.724Z",
"updatedAt": "2024-02-03T21:53:54.724Z",
},
// ...
]
}
リスト操作はうまくいった。映画は正常にシリアライズされ、JSONとして返された。RESTful APIがどのように動作するかを知るために、他のオペレーションもテストすることをお勧めする。
RESTful APIの詳細については、「RESTful APIを構築するには?
GraphQL API
GraphQLは、アプリケーション・プログラミング・インターフェース(API)の開発を容易にするクエリー言語とサーバー側ランタイムの両方の役割を果たす。
この技術により、クライアントはAPIから必要なデータを指定できるようになり、定義済みのデータセットをバックエンドに依存する必要がなくなる。
GraphQLクエリをテストするには、サイドバーの「API > Console > GraphQL」に移動する。
次に、以下のGraphQLクエリーを実行する:
{
reviews {
count
edges {
node {
objectId
rating
}
}
}
}
ご覧のように、このクエリはすべてのレビューをフェッチしますが、objectIdと
レーティングだけが
含まれます。
繰り返しますが、さまざまなクエリや操作を自由にテストしてください。
GraphQLについてもっと知りたい方は、How to build GraphQL API?
Parse SDK
Parse SDKは、フロントエンドとバックエンドを接続するための推奨方法です。最も堅牢で、エラーが発生しにくい方法です。
Parse SDKは、JavaScript、TypeScript、Objective-Cなど、複数のプログラミング言語とフレームワークをサポートしています。
CRUD操作や高度なクエリなどを実行することができます。
Parse SDKの利用方法については、フロントエンドとバックエンドのホスティング方法をご覧ください。
自動生成ドキュメント
Back4appのもう一つの素晴らしい点は、全てのデータベースモデルのドキュメントを自動生成してくれることです。
JavaScript、TypeScript、Objective-C、Swiftなど、さまざまなプログラミング言語について、シンプルでわかりやすいテキスト解説と便利なコード・スニペットが得られます。
ドキュメントにアクセスするには、アプリに移動し、サイドバーの「API > API Reference」を選択します:
以下は、ドキュメントがどのように見えるかのスクリーンショットである:
クラウド・コード
Back4appでは、いわゆるCloud Code関数を通してカスタムJavaScriptコードを実行することができます。
これらの関数は、データの集計やエクスポートなど、複雑な操作の実行に役立ちます。
クラウド・コードの関数は、ParseやHTTPリクエストによってトリガーされたり、将来実行されるようにスケジュールされたりします。
クラウドコード機能
映画の平均評価を計算するCloud Code関数が欲しいとします。自分たちで書いてデプロイすることもできるが、AIエージェントに頼む方が簡単だ。
AIエージェントの画面に移動し、次のように促す:
Please write me a Cloud Code function that calculates a movie's average rating. The the function should take in the movie's `objectId` and return a float (average rating).
以下のcURLコマンドを使ってテストしてみよう:
$ curl -X POST \
-H "X-Parse-Application-Id: <your_app_id>" \
-H "X-Parse-REST-API-Key: <your_rest_api_key>" \
-H "Content-Type: application/json" \
-d '{"movieId": "<movie_object_id>"}' \
https://parseapi.back4app.com/functions/calculateAverageRating
プレースホルダ (
<your_app_id>
,<your_rest_api_key>
, および<movie_object_id>
) を実際の値に置き換えてください。アプリケーションID」と「REST APIキー」を取得するには、アプリに移動し、サイドバーの「アプリ設定 > セキュリティとキー」を選択します。
同じような反応が返ってくるはずだ:
{
"result": 4.25
}
バックグラウンドで生成されたコードを見るには、サイドバーの「Cloud Code > Function & Web Hosting」に移動します。次に、クラウド・フォルダ内のmain.jsを選択します。
クラウド・コード・スケジューリング
最後に、AIエージェントに毎週のジョブをスケジュールするよう促す:
Create and deploy a Cloud Code job named `clearRatings()`, which deletes all
the ratings. Schedule it to run every week.
エージェントはジョブを作成し、週単位でスケジュールすることに成功した。
結論
まとめると、AIを活用してデータベース・スキーマを生成することに成功した。
また、Back4appアプリとデータベースの作成方法、サンプルデータの生成方法、カスタムCloud Code関数の実装方法など、すべて会話の力を使って学びました。
AIを使ってデータベーススキーマを作成することは、反復プロセスであることを忘れないでください。より良い実装ができると思ったら、それをエージェントに説明すれば、それに応じてスキーマを修正してくれます。
その他の記事リソースはback4app-ai-agent-schemarepoからアクセスできる。