20151205フルスクラッチcms作成のノウハウ with laravel
TRANSCRIPT
フルスクラッチCMS作成ノウハウWith Laravel
株式会社オールアバウト
吉田 拓実
(@y_takky2014)
1
自己紹介
吉田拓実(Yoshida Takumi)
@y_takky2014
https://twitter.com/y_takky2014
http://qiita.com/takky
趣味
Copyright 2015 All About,inc. 2
最近のお仕事
All About Japanの新規開発
Copyright 2015 All About,inc. 3
今回伝えたいこと
フルスクラッチでCMSを開発する際のメリット・デメリット
LaravelでCMSを開発する良さ
開発のノウハウ
Copyright 2015 All About,inc. 4
CMS何使ってます?
Copyright 2015 All About,inc. 5
汎用CMSを案件で使うメリット
権限管理・画像アップロード・プレビュー機能など基本的なものは揃っている
実装の必要がほぼない
Copyright 2015 All About,inc. 6
UPLOAD
PREVIEW
汎用CMSのデメリット
拡張しづらい
データの持ち方がCMS依存
要件が複雑だとコアに手を入れないと実現不可なことも・・・
CMS自体のアップデートやプラグインのアップデートができない
Copyright 2015 All About,inc. 7
汎用CMSの限界と今回の要件
CMSも多言語化する
外部ライターも執筆する。IDとして自社のログインサービスを使用する
Copyright 2015 All About,inc. 8
管理する要素記事
執筆者
テーマ(トップページのデザイン設定)
タグ
記事タイプが3種類まとめっぽいもの
1ページもの
旅行の日程みたいに日毎にページングするもの
Copyright 2015 All About,inc. 9
汎用CMSの限界と今回の要件
フルスクラッチを決断した理由
要件を満たせる汎用CMSがなかった
要件満たすように改修しても同じくらいの工数がかかりそうだった
幸いにもリソースに余裕があった
今後の拡張やメンテのことを考えて
汎用CMSでメディアの長期運営は難しい
一時期WordPressで実装していたことも・・
Copyright 2015 All About,inc. 10
CMSをフルスクラッチで作るメリット社内の細かい要望を叶えられる
Copyright 2015 All About,inc. 11
この機能では画像アップロードの時にトリミングをこっちではトリミング機能いらない
CMSをフルスクラッチで作るメリット社内の細かい要望を叶えられる
Copyright 2015 All About,inc. 12
この機能では画像アップロードの時にトリミングをこっちではトリミング機能いらない
編集中にミスってブラウザバックして編集内容なくなるからアラート出すようにして
記事データの活用が容易
Copyright 2015 All About,inc. 13
CMSをフルスクラッチで作るメリット
CMS
DB
Front
RSS
API
リリース後のメンテナンス機能拡張が容易
Copyright 2015 All About,inc. 14
CMSをフルスクラッチで作るメリット
新しく記事をまとめ直したページを作りたい
フルスクラッチのデメリット
各機能の実装が必要
コード量・開発工数は多い
Copyright 2015 All About,inc. 15
UPLOAD TRIMMING
PREVIEWROLE
ここまでのまとめ
Copyright 2015 All About,inc. 16
フルスクラッチ 汎用CMS
自分で機能の実装が必要 機能が用意されている
工数がかかる 少ない工数で実装可能
拡張の実装がしやすい 拡張の実装がしにくい
データの有効活用可能 CMSのデータ構造に影響される
要件を最大限に満たすことができる
CMSの機能内だとスムーズに実現できる
フルスクラッチ・汎用CMSのメリット・デメリットを考えて適切な選択を!
All About Japanのシステム構成(サーバサイド)
Copyright 2015 All About,inc. 17
Front
CMS
5.5
5.6
5Laravel
Laravelとは
シンプルで可読性の高いコードが書ける
モダンフレームワーク
最新バージョンは5.1.11
LTS(12/5現在)
Laravelリファレンス2016/1/8発売!出版社インプレス
Copyright 2015 All About,inc. 18
Laravel
多言語対応
Copyright 2015 All About,inc. 19
Laravelを用いるメリット
viewでの実装
言語ファイル
ファイルシステム
Copyright 2015 All About,inc. 20
Laravelを用いるメリット
ローカル ローカルストレージ
本番S3
リソースフルコントローラコマンドラインでひな形を自動生成
メソッド + パスで処理を切り分けることができる
Copyright 2015 All About,inc. 21
Laravelを用いるメリット
メソッド パス アクション
GET /article index
GET /article/create create
POST /article store
GET /article/{id} show
GET /article/{id}/edit edit
PUT/PATCH /article/{id} update
DELETE /article/{id} destriy
Validator
Copyright 2015 All About,inc. 22
Laravelを用いるメリット
integer 整数であること
email メールアドレスであること
image 画像ファイル(jpg,png,bmp・・・)であること
required 入力が存在するかバリデート
alpha_dash アルファベットと-,_であること
Eloquent ORM
LaravelのORM
便利メソッド・機能が複数用意されている
クエリスコープ
よく使う検索条件をメソッド化
Copyright 2015 All About,inc. 23
Laravelを用いるメリット
Composerでライブラリ管理
PHPの依存管理システム
ライブラリの導入が用意に
Packagist
Copyright 2015 All About,inc. 24
Laravelを用いるメリット
Ace Responsive Admin Template
Bootstrapをwrapしたテンプレート
デザインを知らなくてもかっこいいUIが作れる
Copyright 2015 All About,inc. 25
汎用CMSにあるこんな機能がバインドされている
画像ギャラリー
カラーピッカー
DateTimepicker
ドラック&ドロップでファイルアップロード
Copyright 2015 All About,inc. 26
Ace Responsive Admin Template
Ace Admin + Laravelでの開発ノウハウ
Select2
Select boxを使いやすくするjQueryライブラリ
検索機能がつくselect boxを作成可能
1行で実装可能
Copyright 2015 All About,inc. 27
画像処理
intervention/imageというライブラリを使う
Laravelに対応している画像処理のライブラリ
LaravelのRequestを元に画像ファイルの生成ができる
Copyright 2015 All About,inc. 28
Ace Admin + Laravelでの開発ノウハウ
crop($width,$height,$x,$y) 幅・高さ・座標でトリミング
resize($width,$height) 幅・高さにリサイズ
encode($format) 指定した形式に変更
filesize() 画像のファイルサイズを取得
text($text, $x, $y) 座標の位置にテキストを付与する
エンジニア視点から見たCMS
作成のメリット
いろいろな技術に触れられる
サーバーサイド、フロントエンド
フレームワークの使い方
HTML
Javascript/jQuery
ライブラリ
DBの読み書き・トランザクション
新卒・若手エンジニアの育成とかにもおすすめ
Copyright 2015 All About,inc. 29
まとめ
フルスクラッチで作るメリット
長期間のメディア運営のためにメンテナンス性・拡張性
細かい仕様に応えることが可能
データの有効活用
案件に応じた使い分けが必要
短期間で実装したい
CMSの機能で十分
というときは、汎用CMSを使うことも視野に
Copyright 2015 All About,inc. 30
オールアバウトでのCMS開発ノウハウまとめ
Laravel + Ace Responsive Admin Templateを使用
Laravelでデフォルトである機能がCMS構築の際に便利に使える
リソースフルコントローラ
Validation
ファイルシステム
Ace Responsive Admin Templateを使うことで
エンジニアでもかっこいいUIのCMS
Copyright 2015 All About,inc. 31
募集しています!!!
企画・編集の人と一緒に各種サービスや社内システム開発をしたいWEBエンジニア
オールアバウトのインフラを支えるインフラエンジニア
Copyright 2015 All About,inc. 32
アドベントカレンダーやってます
Copyright 2015 All About,inc. 33
ご清聴ありがとうございました
Copyright 2015 All About,inc. 34