AI Chat GPT Stable Diffusion イベントレポ インディーゲーム キースイッチ デスク周り 推し活 水族館
Category:
読書メモをMac標準の表計算アプリ「Numbers」で管理しています。
本タイトル・著者・出版社・ジャンル・個人的な評価項目にメモなど、一覧性が高く簡易的な情報整理ボードとしては悪くなかったのですが、3年近く使用し、冊数が増えるに従って不便なところが目立ってきました。
特に拡大の一途を辿るメモ欄はデータベース構造としては最悪です。
「概要・よかった点・悪かった点・発見やアイデア・引用」とフリーテキスト項目が5カラムに渡って展開し、セル内は Alt+Enter を多用したセル内改行まみれ。正規化も何もありません。
今後も本のデータが増え続けることを考え、もう少しマシなデータベースを作りたい。そう考えて、読書メモを「Notion」へ移行することにしました。
ですが、見切り発車で意向を進めると、データベースが「なんでも箱」化してグチャグチャになることは目に見えています。まずはどのような構造にすべきかを整理すべきでしょう。
私はデータベース構造については素人に毛が生えた程度の知識しかありませんが、ChatGPTを使いながら要件を詰め、ER図を作成してみました。
本記事で紹介する内容は「浅い知識しかない非エンジニアが、ChatGPTに頼りつつデータベースの枠組みを整理し、ER図に落とし込む」です。
私の知識レベルは以下のような感じです。
とりあえず破綻なく運用できそうなデータベースを作るのが目標なので、データベース知識が豊富な人には冗長な割に不十分な可能性があります。
「詳しくはないが、ある程度構造化したデータベースを作りたい」「ChatGPTの活用法を探している」といった方の参考になれば幸いです。
データベース構造のブレスト
ER図描画用のMarmaid出力
ER図の描画
Notion コードブロックは記述したコート下に画像が出力されるのに対し、Mermaid Live Editorはエディタと描画画面が左右分割されているので記述しながらの修正・追加がしやすかったです。
・Notionアンバサダー円谷さんのYouTube動画
・ゆるコンピュータ科学ラジオのデータベース回(Notion回)全4回
・データベースの正規化についてのテキスト
今回の試みにあたり、上記のような内容を確認しました。
はじめて自分でデータベースを作る方には参考になるかと思います。
いくつかの関連動画やサイトを見た結果、「ある程度正規化されたデータベースを作るとき、事前にER図というのを作成するといいらしい」ということを理解しました。
ER図とは、データベースに格納するもの(Entity)の関係性(Relationship)を整理した図。データ構造を俯瞰的に設計するためのビジュアルです。
ER図について参考にした記事
・ER図の書き方ガイド! 記号のサンプル付きでわかりやすく解説
・【Notion】MermaidでER図を書いてみる(作成手順も記載)
ただ、ER図の記法について調べても、実際に自分で書き始めると、エンティティの親子構造やら関係性やらがよくわかりませんでした。人の実例を参考にしようにも、教科書的なテンプレ例しか公開されていなかったり、ガチすぎて参考にできなかったり。
「教科書的なお作法にのっとりつつ、私のケースに近い例が欲しい」という思いから、Chat GPTを使ってみることにしました。
現在の「読書メモ」カラム構成
タイトル|著者|出版社|ジャンル|登録日|評価|形態|別紙メモの有無|書評記事の有無|概要|よかった点|悪かった点|アイデア|引用|関連情報
まず、上記のゴッチャゴチャの表を次のように整理したいと考えました。
User:「Notion」で読書記録データベースを作成します。
本の情報、著者情報、読了日、読書メモなどを管理する予定です。
正規化されたデータベースを作るため、まずはER図を作成しようと考えています。協力してください。
GPT: 以下は、読書記録に必要なデータを正規化して整理するための基本的なER図の提案です。
エンティティ
1.Book(本)
・BookID(本ID):主キー
・Title(タイトル)
・Author(著者)
・Publisher(出版社)
・Genre(ジャンル)
・PublishedDate(出版日)
2.ReadingRecord(読書記録)
・RecordID(記録ID):主キー
・BookID(本ID):外部キー
・StartDate(読書開始日)
・EndDate(読書終了日)
・Notes(読書メモ)
3.User(ユーザー)
・UserID(ユーザーID):主キー
・UserName(ユーザー名)
リレーション
User-ReadingRecord**: 1対多| 一人のユーザーが複数の読書記録を持つ。
*Book-ReadingRecord*: 1対多| 一冊の本に対して複数の読書記録が存在する可能性がある。
(以下、エンティティについての詳細な説明)
まず驚いたのが、「本」「読書記録」の2つのデータベース登場したこと。確かに、元のカラムを整理すると2つの表に分割できます(第二正規形?)。
思ったよりしっかりした叩き台ができているようです。
プレーンテキストで作図もしてくれるので、各要素の関係性がわかりやすいですね。
いくつか不要な内容や、追加したい内容をやりとりして精緻化していきます。
GPTとのやり取りで形になったデータベース構造のアイデアを、画像として出力します。使用するのは「Marmaid」という記法。フローチャートやシーケンス図、クラス図など、エンジニアがよく使う図を生成するのマークダウン構文です。
参考記事|グラフを生成可能なマークダウン構文「Mermaid」がNotionで利用出来るようになりました #notion | DevelopersIO
Mermaidでの記述もGPTを使って生成してみます。
User: 今回出来上がったER図を、Mermaid形式で出力できますか?
GPT:もちろんです。以下は、Mermaid形式でER図を記述したものです。
erDiagram
AUTHOR {
int AuthorID PK
string AuthorName
}
BOOK {
int BookID PK
string Title
int AuthorID FK
string Publisher
string Genres
date PublishedDate
string Status
int YearMonthID FK
}
READING_RECORD {
int RecordID PK
int BookID FK
date StartDate
date EndDate
string Notes
string Format
string Features
int ImpactRating
int ReadingCost
int YearMonthID FK
}
YEAR_MONTH {
int YearMonthID PK
int Year
int Month
}
AUTHOR ||--o{ BOOK: "writes"
BOOK ||--o{ READING_RECORD: "is read in"
YEAR_MONTH ||--o{ BOOK: "published in"
YEAR_MONTH ||--o{ READING_RECORD: "recorded in"
NotionのMermaidコードブロックを使って描画すると、以下のような図が表示されました。
いくつか不十分なところがありそうなので修正していきます。
Notionの機能にあわせる
自分の運用方法に最適化
最終的に出来上がったER図がこちら。
erDiagram
AUTHOR {
title AuthorName PK
text Notes
relation BOOK FK
}
BOOK {
title BookTitle PK
relation AUTHOR-AuthorName FK
text Publisher
date PublishedDate
created CreationDate
multiselect Genres
multiselect Keywords
text Description
status ReadingStatus
relation READING_RECORD FK
}
READING_RECORD {
title RecordTitle PK
relation BOOK-BookTitle FK
created ReadDate
relation BOOK-Genres FK
relation BOOK-Keywords FK
select ImpactRating
select CostRasting
multiselect Format
text Notes
}
YEAR_MONTH {
title YYYY_MM PK
number(int) Year
number(int) Month
relation READING_RECORD FK
rollup MonthlyReading
}
BLOG_POSTS {
xxx xxx
}
AUTHOR }|--|{ BOOK: "writes"
BOOK ||--o{ READING_RECORD: "is read in"
YEAR_MONTH ||--o{ READING_RECORD: "recorded in"
YEAR_MONTH ||--o{ BLOG_POSTS: "FUTURE PLAN"
BLOG_POSTS }o--o{ READING_RECORD: "FUTURE PLAN"
最終的に出来上がったのは「タグ」「年・月」「本」「読書メモ」の4つのデータベースからなる構造。
そのうちブログ記事を管理するデータベースなども作って連携していく予定ですが、ひとまず読書メモを管理するデータベースはざっくりと作成できそうです。
Notionデータベースは修正しやすいらしいので、まずはこれで初めてみることにします。
ChatGPTを使ってNotionデータベースの構造を考えてみました。
初心者が技術的な課題を解決したいとき、とりあえずの相談役としてChatGPTは非常に便利ですね。
わからない単語は気軽に解説してもらえるし、その分野で使用される用語・略語も理解できるので、自分で検索する時のワードチョイスにも活かせました。
「実際に使用する最終形を作らせる」には不十分ですが、「ひとまず動かしてみるための叩き台を作る」目的なら安定したクオリティで出力できている印象です。
GPT3が出始めたくらいの頃は「それっぽい体裁だけどマトモに動かないコード」「構造が破綻した表」なども平気で出力されていたことを思うと、桁違いに有能になっていて目を見張ります。
今回作成したER図を参考に、Notionデータベースへの移行を進めようと思います。
コメント