GRANVALLEY

ブログBlog

ChatGPTの業務活用(アプリ開発-DB開発編)

今年に入って世間を賑わしている「ChatGPT」ですが、皆さまはどのように活用されているでしょうか?
さまざまなところで ChatGPTの活用方法について議論されていますが、今回は業務での具体的な活用方法についてグランバレイが検討した際の一例をご紹介します。
今回、ChatGPTを使ったアプリ開発をテーマに2回に分けて記事にいたしました。

前回は、ChatGPTを使い「機能洗い出し」「機能設計」までお届けしました。
まだお読み出ない読者の方は、是非とも以下の記事をご覧ください。

▶︎ ChatGPTの業務活用(アプリ開発-機能設計編)

今回は、その設計をもとに「テーブル設計」「SQL作成」をしていきます。

ChatGPTと一緒にアプリ開発してみる

テーブル設計

それでは書籍管理アプリ用データを保管するためのテーブル設計を始めていきます。ここではオーソドックスにリレーショナルデータベースを用いたいと思いますのでChatGPTには以下の質問を送ります。

書籍管理アプリのデータを保管するためにリレーショナルデータベースを利用しようと思います。以下の項目を管理するためのテーブル定義を行いたいと思いますので、「必要なテーブル数」「テーブル名」「項目名」「データ型」「主キーかどうか」「Nullを許可するかどうか」について箇条書きでアドバイスをください。

質問内容をご覧になって「おや」と思われた方もいらっしゃると思います。質問を入力する時点では、ChatGPTとのやり取りを通じて取り決めた書籍登録フォームの項目や貸出状況を管理するための項目を質問に含めるつもりでいたのですが、うっかり省略した状態で質問してしまいました。その結果、返ってきた答えがこちらです。

ChatGPT
書籍管理アプリに必要なテーブル定義は以下のようになります。

書籍情報テーブル
テーブル名: books
項目名:

  • book_id (int): 主キー、自動採番
  • title (varchar): 書籍タイトル
  • author (varchar): 著者名
  • publisher (varchar): 出版社名
  • published_date (date): 出版年月日
  • isbn_code (varchar): ISBNコード
  • category (varchar): カテゴリー(ジャンル)
  • price (int): 価格
  • pages (int): ページ数
  • target_readers (varchar): 対象読者層
  • image_url (varchar): 書籍の画像URL
  • 主キー: book_id
    Nullを許可しない

    貸出情報テーブル
    テーブル名: lending_info
    項目名:

  • lending_id (int): 主キー、自動採番
  • book_id (int): 書籍ID
  • user_id (int): 貸出先ユーザーID
  • lending_date (date): 貸出日
  • return_due_date (date): 返却予定日
  • return_date (date): 返却日
  • book_condition (varchar): 書籍の状態
  • remarks (varchar): 備考欄
  • 主キー: lending_id
    Nullを許可しない

    ユーザー情報テーブル
    テーブル名: users
    項目名:

  • user_id (int): 主キー、自動採番
  • name (varchar): ユーザー名
  • email (varchar): メールアドレス
  • phone_number (varchar): 電話番号
  • 主キー: user_id
  • Nullを許可しない

    必要なテーブル数は3つで、それぞれ「books」「lending_info」「users」というテーブル名を付けます。各テーブルに必要な項目名、データ型、主キーかどうか、Nullを許可するかどうかは上記の通りです。

    ChatGPTがこれまでの流れを汲み取って意図した通りの回答を返してくれました。また、各テーブルに必要な項目には、書籍登録フォームや貸出状況を管理するための項目として決めたもの以外にデータベースを用いて管理する上で必要な主キーに当たる項目が追加されています。さらに質問の中でリレーショナルデータベースを利用することを明示したことにより、3つのテーブル間の関連を意識した設計になっています。

    やるな、ChatGPT!!

    SQL文の作成

    ではテーブル設計ができましたので一気にSQLを作成していましょう。
    まずは書籍情報テーブルのSQL作成をChatGPTにお願いしてみます。

    上記で挙げてもらった「書籍情報テーブル」を作成するためのSQLを教えてください。データベースにはPostgreSQLを使用します。テーブルを再作成できるように先頭に存在チェックを含めてください。

    ChatGPTの回答はこちら。

    ChatGPT
    以下が「書籍情報テーブル」を作成するためのSQLになります。なお、テーブル名やカラム名などは前回の回答を参考にしています。

    DROP TABLE IF EXISTS books;
    CREATE TABLE books (
    id SERIAL PRIMARY KEY,
    title TEXT NOT NULL,
    author TEXT NOT NULL,
    publisher TEXT NOT NULL,
    publication_date DATE NOT NULL,
    isbn TEXT UNIQUE NOT NULL,
    cover_image_url TEXT,
    summary TEXT,
    created_at TIMESTAMP NOT NULL DEFAULT NOW(),
    updated_at TIMESTAMP NOT NULL DEFAULT NOW()
    );

    ChatGPT
    上記SQLでは、DROP TABLE文によってテーブルがすでに存在している場合は削除され、CREATE TABLE文によって新しいテーブルが作成されます。また、idカラムはSERIAL型を使用しているため、自動採番される整数型となっています。

    なるほど。それでは次に貸出情報テーブルのSQLです。

    上記で挙げてもらった「貸出情報テーブル」を作成するためのSQLを教えてください。データベースにはPostgreSQLを使用します。テーブルを再作成できるように先頭に存在チェックを含めてください。

    ChatGPTからは以下の内容が返ってきました。

    ChatGPT
    以下が「貸出情報テーブル」を作成するためのSQLになります。なお、テーブル名やカラム名などは前回の回答を参考にしています。

    DROP TABLE IF EXISTS loans;
    CREATE TABLE loans (
    id SERIAL PRIMARY KEY,
    book_id INTEGER NOT NULL,
    user_name TEXT NOT NULL,
    lending_date DATE NOT NULL,
    returning_date DATE,
    created_at TIMESTAMP NOT NULL DEFAULT NOW(),
    updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
    FOREIGN KEY (book_id) REFERENCES books (id)
    );

    ChatGPT
    上記SQLでは、DROP TABLE文によってテーブルがすでに存在している場合は削除され、CREATE TABLE文によって新しいテーブルが作成されます。また、book_idカラムには外部キー制約を設定し、booksテーブルのidカラムと紐づけています。

    最後はユーザー情報テーブルのSQL作成です。

    上記で挙げてもらった「ユーザー情報テーブル」を作成するためのSQLを教えてください。データベースにはPostgreSQLを使用します。テーブルを再作成できるように先頭に存在チェックを含めてください。

    ChatGPTから返ってきたSQLはこちら。

    ChatGPT
    以下が「ユーザー情報テーブル」を作成するためのSQLです。テーブル名は「users」とし、主キーはidとして自動採番しています。また、存在チェックのためにDROP TABLE文を追加しています。

    DROP TABLE IF EXISTS users;
    CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name TEXT NOT NULL,
    email TEXT NOT NULL,
    password TEXT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    );

    多少見直しは必要ですが、SQLまで作成することができました。

    ChatGPTと二人三脚で進める活用方法が効果的

    本記事ではChatGPTの業務活用と題して、アプリ開発を例に具体的な流れを2回に渡りお届けしました。グランバレイが調査した中では、日常業務でのさまざまな企画・検討から具体化に至る過程を自問自答しながら進める代わりに、ChatGPTと二人三脚で進めるような活用方法が最も効果的ではないかと感じました。

    最後に

    今回、記事はアプリの機能洗い出しからSQL作成まで行いました。次回は実際にアプリが稼働するところまでの流れをお伝えできるように現在まとめております。乞うご期待を!