💬 スタート:やりたいことをChatGPTに伝えてみた
私:
「ChatGPTと一緒に、オフラインで使えるスコア計算アプリを作ってみたいんです。
数値を入力したらスコアを計算して記録できるツールって、自分にも作れますか?」
ChatGPT:
「もちろん可能です!PythonとSQLite、Tkinterを使えば、オフラインで動くシンプルなアプリが作れますよ。まずはデータベースから設計していきましょう。」
🗂 データの構成を一緒に考える
「ユーザーの基本情報」と「記録ごとの数値やスコア」を分けて保存したいと伝えると、ChatGPTはテーブルを2つに分ける構成を提案してくれました。
user_info
:ユーザーの名前や生年月日などexam_data
:そのユーザーの記録(数値やスコアなど)
「同じ人が何回も記録を残せるようにしたい」と相談したところ、外部キーでつなげる仕組みを組み込んでくれました。
🧮 指示のコツ:ChatGPTとの対話もコツがいる
ChatGPTにうまく要望を伝えるには「目的」+「制約条件」をセットにするとスムーズです。
たとえば今回使った指示:
- 「画面上では一般的な用語を使いたい」
- 「スコアや数値は計算した上で記録できるようにしたい」
- 「初心者にも読めるコードにしてほしい」
こう伝えることで、用途に合わせた提案や修正をしてくれるようになりました。
🧾 作成したデータベース構造(テーブル2つ)
🔹 user_info
テーブル(ユーザー基本情報)
カラム名 | 説明 |
---|---|
user_id | ユーザーID(主キー) |
name | 名前 |
kana | フリガナ |
birth_date | 生年月日 |
sex | 性別(男・女など) |
🔹 exam_data
テーブル(記録データ)
カラム名 | 説明 |
---|---|
exam_id | 実施記録ID(自動採番) |
user_id | 対応するユーザーID(外部キー) |
exam_date | 記録した日付 |
age_at_exam | 記録時の年齢(生年月日から計算) |
inout | 区分(例:外/内などモード) |
area | 場所(例:測定場所など) |
method | 方法(例:測定方法) |
yyy | 数値Y(ユーザーが入力する数値) |
height | 身長 |
yyy_result | スコア(自動計算された結果) |
💻 実際に作成したPythonコード
実際のコード
import sqlite3
def init_db():
conn = sqlite3.connect('user_data.db')
c = conn.cursor()
# ユーザー情報テーブル(基本情報)
c.execute('''
CREATE TABLE IF NOT EXISTS user_info (
user_id TEXT PRIMARY KEY,
name TEXT,
kana TEXT,
birth_date TEXT,
sex TEXT
)
''')
# 実施記録テーブル(記録ごとのデータ)
c.execute('''
CREATE TABLE IF NOT EXISTS exam_data (
exam_id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id TEXT,
exam_date TEXT,
age_at_exam INTEGER,
inout INTEGER,
area TEXT,
method TEXT,
yyy REAL,
height REAL,
yyy_result REAL,
FOREIGN KEY (user_id) REFERENCES user_info (user_id)
)
''')
conn.commit()
conn.close()
print("✅ user_info & exam_data テーブルを作成しました")
init_db()
🔍 プログラムのポイント解説
✅ sqlite3.connect('user_data.db')
データベースファイル(user_data.db
)に接続します。初めて実行するときは、自動で作成されます。
✅ CREATE TABLE IF NOT EXISTS
「もしテーブルがまだなければ作ってね」という命令です。何度実行しても上書きされません。
✅ PRIMARY KEY
と FOREIGN KEY
PRIMARY KEY
(主キー):重複できないユニークなIDFOREIGN KEY
(外部キー):別のテーブルとつなぐためのキー(ここではユーザーID)
😲 学びポイント:「テーブルが2つあっても、DBファイルは1つでいいんだ!」
私が最初に驚いたのはここでした。
「テーブルが2つあるなら、.dbファイルも2つ必要?」
と思い込んでいましたが、SQLiteでは1つのデータベースファイルの中に複数のテーブルを持つことができるんです。
そのため、ファイルは user_data.db
ひとつだけでOK。管理もシンプルになって安心でした。
✅ まとめと次のステップ
- ChatGPTと一緒にアプリを設計することで、初心者でも迷わず構成を決められる
- 用途に合わせてテーブルを分けて設計することの大切さを学べた
- データベースは無事に完成!ここからは「入力画面」や「スコア計算」に進んでいきます
✍️ 最後に(感想)
ChatGPTがいれば、「コードが書けない自分でもアプリが作れるかも?」という想像が確信に変わる体験になります。
自分で作ったデータベースがしっかり保存されるのを見るだけでも、小さな達成感がありました。
次回は「入力画面を作る」「スコアを自動で計算する」といった工程に進んでいきます!
一歩ずつ、でも着実に、アプリが形になっていく感覚がとても楽しいです。
※私自身、プログラミングは勉強中の身です。この記事の内容は一例であり、動作や効果を保証するものではありません。ご了承ください。