CodeIgniter3のチュートリアルをリファクタリング(1)

こんにちわ! NEKOGETです。
この記事はCodeIgniterアドベントカレンダーのために書きました! 14日目です!
https://qiita.com/advent-calendar/2017/code_igniter

13日目の記事は、 CodeIgniter3のチュートリアルをちょっと見てみようかの巻(3)でした。

CodeIgniter3のチュートリアルをちょっと見てみようかの巻(3) までのチュートリアルの回を見ていただいたみなさまにはわかると思いますが、チュートリアルすごく雑です。
もう少しだけしっかり作ってみようと思います。

要件定義

要望を想像してみる

このチュートリアルの機能はNews機能です。

  • Newsの記事を読んでもらう
  • Newsの記事を登録更新する

この2つの機能が主な機能です。

  • お店のニュースを表示する機能が欲しいですよねー
  • Newsの記事は誰にでも更新できてはいけません。編集者だけが登録編集削除できるようにしたいです。
  • 記事のURLを見るだけでタイトルがわかるようにしたいです。
  • 記事を書いた日表示できます?
  • 一覧は新しい順に表示させたいです
  • トップページには、新着5件が表示されると嬉しいですね
  • カテゴリー別の一覧が見えると嬉しいです。
  • 画像のUPLOADもできると嬉しいです。自動でリサイズも
  • 書いた人の名前を自動で出したいですねー

要望はどんどん増えていきますが、予算と時間の関係で、これぐらいの要望が叶うといいですね☆

登場人物は2名

  • (1)記事を見る人
  • (2)記事を書く人

なるほど2つの視点で機能が必要ですねぇ。
次は動線を確認します

動線の確認

登場人物別にIFDAM図を作ってみましょうか。
(1)記事を見る人

シンプルだねw

(2)記事を書く人

ちょっと大きくなっちゃったんでクリックで大きい画像が見えるようにして見ました。

いわゆる管理機能だねー

仕様の検討

そうだねぇ。
ログインしてなければできることが絞られてる状態になるだけだものね。
新規登録ボタンの表示と新規登録機能はログインできていないと使えないことにしよう。
(2)記事を書く人のIFDAMを元に作ろう

ワイヤーの作成

普段なら、アプリを使って作るんだけど、今日はチュートリアルだしね
手書きで描いちゃおうかな

ログインしたら、新規登録フォームが見えるでいいんじゃないの?
一覧じゃなくて???
修正機能ないのに、一覧をログインして見る必要あるかな?

….なるほど、無いね。
ではそうしてみよう。
IFDAM図を直してみるから一緒に確認してね。

記事を書く人スタートからはこうなるね。

一覧をみる人だとこうなるかな?

ログインする人を切り分けたよ

データの設計

MySQLで行くなら MySQL Workbench で、作っちゃえばいいかな?

こんな感じでcreate文をコピーできるの便利だねー
実際に使う予定のサーバに接続して流し込むこともできるし、MySQL Workbench便利だね。
PostgresならPgAdmin4ってアプリがあるよ!

次は必要な環境を用意しよう。

(2)へ続きます。