前回はTodoアプリを作成したので、今回は、Todoアプリに必要になるデータを保持するためにSQLiteで使用するデータ構造を生成AIに提案してもらい、かつ、そのデータを操作するためのソースコードを生成してもらう。生成AIに設計からコード提案まで支援してもらえる様子を紹介しよう。
データ構造を提案してもらう
ソフトウェアの設計および実装方法には、いろいろなやり方がある。よく使われている方法の一つに、先にソフトウェアで使用するデータの構造を設計し、それに対してコードの方を考えていく方法がある。データ構造さえ適切にわかりやすく設計できていれば、それを扱うソースコードの方はまずくてもあとからなんとでもできるという考え方だ。データ構造の方がめちゃくちゃだと手が付けられないので、データだけは整備しておく。
今回はTodoアプリのデータをSQLiteで扱うと決めたので、SQLiteデータベースのデータ構造を考える必要がある。そこで、ChatGPT GPT-3.5に次のような指示を出す。
PythonでCUIベースのTodoアプリを開発したいと考えています。データの保持にはSQLiteを使いたいと考えています。Todoアプリに必要になるストレージのデータ構造を提案してください。
すると、ChatGPTは次のような返事をする。
SQLiteを使用してPythonでCUIベースのTodoアプリを開発する場合、データの保持に関するデータ構造を提案します。以下は、Todoアイテムの情報を格納するためのSQLiteデータベースの単純な構造です。
列名 | 型 | 内容 |
---|---|---|
id | INTEGER (主キー) | Todoアイテムの一意識別子 |
title | TEXT | Todoアイテムのタイトル |
description | TEXT | Todoアイテムの詳細な説明 |
due_date | DATE | Todoアイテムの期日 |
priority | INTEGER | Todoアイテムの優先度。1が最も高い優先度で、3が最も低い優先度 |
completed | INTEGER | Todoアイテムが完了したかどうかを示すフラグ。0は未完了、1は完了 |
このデータ構造を使用すると、各Todoアイテムに関する基本的な情報を保存できます。ユーザーはタイトル、詳細、期日、優先度、および完了フラグを追加、編集、削除できます。また、SQLiteの強力な機能を活用して、検索、フィルタリング、ソートなどの高度な操作も実装できます。
提案されたデータ構造はTodoアプリで使用するのに必要十分なものであるように見える。今回はこの提案された構造をそのまま使うが、考えている要件を満たせない場合は、さらにChatGPTに話しかけて別の構造を考えてもらったり、自分で手を入れたりして変更を行う。