こんにちは!かたつむり(@Katatumuri_nyan)です!
主催している勉強会で、各自ポートフォリオとwebアプリを作ることになりました(*’▽’)
そこで、みんなが使えるように、CMS付のポートフォリオサイトを作ってみることに♡
入力できる項目はシンプルですが、はじめて作るCMSにはちょうどいいかなと思います。
Herokuにアップしたら良い感じに使えるように作っていきます♪
Forkしたら誰でも使えるようにする予定なので、お楽しみに!
GitHubでソースコードを管理しています!
最初から見る↓
【1】LaravelでPortfolioサイトをCMS付きで作るときのメモ【下調べ編】
前回を見る↓
【2】LaravelでPortfolioサイトをCMS付きで作るときのメモ【要件定義編】
目次
DBの設計案
まず、必要だと思うテーブルを書き出してみました
どこでどんなテーブルが必要になるかを考えました。
テーブル
– profile
– contacts
– works
– works_attribute
– works_attribute_class
– language
– tool
– db
– infrastructure
– middleware
– environment
worksのテーブルをどうするのかというところで結構悩みました。
最初のリリースの際には、制作物(works)の名前と説明文だけ載せる予定にしています。
要件追加
- worksで言語や技術を登録する時に、プルダウンで選べるようにする
- 無い場合は、works登録画面から新規登録できる
(リリース時期は要検討)
テーマ変更のためのDB
要件に、ポートフォリオサイトのテーマカラー変更を挙げていました。
参考にしているWordPressでは、現在どのテーマを選択しているかは、といった情報は、どこに入れているのか気になりました。
DBに保存してあるとしたら、DBからとってきているソースがあると思ったので、確認してみました。
が、しかし、、、
テーマカラーに関する$_wp_admin_css_colors
というグローバル変数が、どこで定義されているのか分からず、、、
そこで、DB見てみたところ、それらしきものがありました。
とりあえず、DBには保存されているということなので、theme_colorテーブルを追加することにしました。
user_attributeテーブルの追加
profile
という名前のテーブルをadmin
に変更して、属性をadmin_attribute
テーブルで追加できるようにします。
admin_attribute
テーブルにprofileの詳細やテーマカラーなどのユーザーに付随する情報を入れることにしました。
DB設計書の作成
DB案が固まってきたので、DB設計書を作成します。
型や長さの定義から、PRIMARY KEYやFOREIGN KEYなどの定義もしていきます。
今回は、Herokuをつくかう予定なので、PostgreSQLのデータ型で定義します。
また、attribute
周りのテーブルの定義が間違っていたので修正しました。
テーブル名やカラム名など、ところどころ修正かけてます。
設計書はリンク貼っておきます:【PortfolioCMS】DB設計書
気を付けた事
- 無駄なテーブルを作らない
- 無理に1つのテーブルにしない
- 名前を適切につける
悩んだところ
attributeテーブルを作るのが適切なのか悩みました。
attributeテーブルって、柔軟に属性を追加できるので、属性を追加したいテーブル(例えばworks)にカラムを追加しなくても色々な属性を追加できるのが魅力です。
ただ、属性を追加する事がそんなにあるのか…?想定が分からず困りました。
今回は、attributeテーブルで対応しましたが、ベストプラクティスだったかは不明。
まとめ
要件追加されたのでまとめておきます。
### できること - ポートフォリオサイトを作れる - プロフィールをCMSから登録・編集 - 作品一覧をCMSから登録・編集 - contact情報をCMSから登録・編集 - テーマカラーをCSMから変更 ### 環境 - dockerで簡単に環境構築 - Herokuで簡単にデプロイできる ### 追加機能としてやりたいこと - 作品の詳細説明を書けるページ(CMSから登録・編集) - キャリア等のコンテンツブロックを入力・並べ替えて編集 - worksで言語や技術を登録する時に、プルダウンで選べるようにする - 無い場合は、works登録画面から新規登録できる
次回は、モジュール設計を行います。
↓続き
【4】LaravelでPortfolioサイトをCMS付きで作るときのメモ【モジュール設計】