Skip to content

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を指定されたり、間違った形式のメールアドレスを入力した場合、エラーメッセージを表示する。
  • エラーが発生した場合でも、プログラムは途中で終了せず、適切に処理をつづける。

ざっとこんなものだろう。なにかツールをつくろうと考えたときには、まず仕様を確認することが重要だ。次からは、この仕様に基づいてツールをつくっていく。