part1 - 仕様の検討
ツールの仕様
ユーザーのCRUDが可能なCLIツールを作成する。
データの保存方法
- ユーザー情報は
./usersフォルダ内に保存される。このフォルダは、存在しなければユーザーを作成した際に自動的に作成される。 - 各ユーザーの情報は
[ID].csvという名前のファイルに保存される。たとえば、IDが1のユーザー情報は./users/1.csvに保存される。
ユーザー情報のフォーマット
ユーザー情報は、CSVファイルに1行で以下のような形式で保存される。
id,name,age,email各項目
id: ユーザーのID(整数)、auto increment、ユーザーの入力は不要。0より大きい数字である。name: ユーザーの名前(文字列)。空文字は許可されない。1文字以上、150文字以下の文字列(名前が長い人には申し訳ないが……)。age: ユーザーの年齢(整数)。0以上150以下の整数。将来的に長寿化したら、そのときにまた考えよう。余談だが、メトセラは登録できないDBだといえる。email: ユーザーのメールアドレス(文字列)。入力は 任意 で、メールアドレスとして正しい形式である必要がある。
IDの採番について
新しいユーザーが追加されるたびに、ツールが自動でユニークなIDを割り当てる。
- IDは
1から順番に割り振られる。 - 一度使われたIDは再利用されない。たとえば、あるユーザーを削除しても、そのユーザーのIDがあとで別のユーザーに割りあてられることはない。
つくるコマンド
-
Create: ユーザーを新規登録する
./usersフォルダが存在しない場合は、自動的に作成する。- ユーザーに名前、年齢、メールアドレス(任意)を入力してもらう。
- ツールが自動でIDを割り当てる。
./users/[ID].csvにユーザー情報を保存する。
-
Read: IDを指定してユーザー情報を表示する
- IDを入力してもらい、そのIDに対応するユーザー情報を表示する。
-
Update: IDを指定してユーザー情報を更新する
- IDを入力してもらい、そのIDに対応するユーザー情報を表示する。
- ユーザーに新しい名前、年齢、メールアドレス(任意)を入力してもらう。
./users/[ID].csvにユーザー情報を更新する。
-
Delete: IDを指定してユーザー情報を削除する
- IDを入力してもらい、そのIDに対忋するユーザー情報を削除する。
./users/[ID].csvを削除する。
-
List: すべてのユーザー情報を表示する
./usersフォルダ内のすべてのユーザー情報を表示する。
エラー処理
- 存在しないIDを指定されたり、間違った形式のメールアドレスを入力した場合、エラーメッセージを表示する。
- エラーが発生した場合でも、プログラムは途中で終了せず、適切に処理をつづける。
ざっとこんなものだろう。なにかツールをつくろうと考えたときには、まず仕様を確認することが重要だ。次からは、この仕様に基づいてツールをつくっていく。