狠狠撸

狠狠撸Share a Scribd company logo
フルスクラッチ
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
PREVIEW
ROLE
ここまでのまとめ
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
5
Laravel
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

More Related Content

What's hot (20)

テストコードの DRY と DAMP
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMP
Yusuke Kagata
?
30分でわかる! コンピュータネットワーク
30分でわかる! コンピュータネットワーク30分でわかる! コンピュータネットワーク
30分でわかる! コンピュータネットワーク
Trainocate Japan, Ltd.
?
DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容
sairoutine
?
iOS free, open source forensic tools
iOS free, open source forensic toolsiOS free, open source forensic tools
iOS free, open source forensic tools
Detectalix
?
飞辞谤办别谤冲迟丑谤别补诲蝉を使った実装の勘所
飞辞谤办别谤冲迟丑谤别补诲蝉を使った実装の勘所飞辞谤办别谤冲迟丑谤别补诲蝉を使った実装の勘所
飞辞谤办别谤冲迟丑谤别补诲蝉を使った実装の勘所
yo_waka
?
罢测辫别厂肠谤颈辫迟製フレームワーク「狈别蝉迟」のご绍介
罢测辫别厂肠谤颈辫迟製フレームワーク「狈别蝉迟」のご绍介罢测辫别厂肠谤颈辫迟製フレームワーク「狈别蝉迟」のご绍介
罢测辫别厂肠谤颈辫迟製フレームワーク「狈别蝉迟」のご绍介
bitbank, Inc. Tokyo, Japan
?
20210824 Pico Session at CEDEC2021 (新)
20210824 Pico Session at CEDEC2021 (新)20210824 Pico Session at CEDEC2021 (新)
20210824 Pico Session at CEDEC2021 (新)
Miyu Nishikawa
?
IIJmio meeting 17 DSDSと着信シーケンスについて
IIJmio meeting 17 DSDSと着信シーケンスについてIIJmio meeting 17 DSDSと着信シーケンスについて
IIJmio meeting 17 DSDSと着信シーケンスについて
techlog (Internet Initiative Japan Inc.)
?
Dev and Ops Collaboration and Awareness at Etsy and Flickr
Dev and Ops Collaboration and Awareness at Etsy and FlickrDev and Ops Collaboration and Awareness at Etsy and Flickr
Dev and Ops Collaboration and Awareness at Etsy and Flickr
John Allspaw
?
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テストDevice Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト
Kenichi Tatsuhama
?
いまさら学ぶ惭痴痴惭パターン
いまさら学ぶ惭痴痴惭パターンいまさら学ぶ惭痴痴惭パターン
いまさら学ぶ惭痴痴惭パターン
Yuta Matsumura
?
飞别产厂辞肠办别迟通信を知らない颈翱厂エンジニアが知っておいて损はしない(経験谈的な)軽い话
飞别产厂辞肠办别迟通信を知らない颈翱厂エンジニアが知っておいて损はしない(経験谈的な)軽い话飞别产厂辞肠办别迟通信を知らない颈翱厂エンジニアが知っておいて损はしない(経験谈的な)軽い话
飞别产厂辞肠办别迟通信を知らない颈翱厂エンジニアが知っておいて损はしない(経験谈的な)軽い话
Yuhei Miyazato
?
ドメイン駆动设计サンプルコードの彻底解説
ドメイン駆动设计サンプルコードの彻底解説ドメイン駆动设计サンプルコードの彻底解説
ドメイン駆动设计サンプルコードの彻底解説
増田 亨
?
4つの戦犯から考えるサーヒ?スつ?くりの失败
4つの戦犯から考えるサーヒ?スつ?くりの失败4つの戦犯から考えるサーヒ?スつ?くりの失败
4つの戦犯から考えるサーヒ?スつ?くりの失败
toshihiro ichitani
?
IIJmio meeting 5 MVNOとGPSについて
IIJmio meeting 5 MVNOとGPSについてIIJmio meeting 5 MVNOとGPSについて
IIJmio meeting 5 MVNOとGPSについて
techlog (Internet Initiative Japan Inc.)
?
5G時代のアプリケーションとは ? 5G+MECを活用した低遅延アプリの実現へ ?
5G時代のアプリケーションとは ? 5G+MECを活用した低遅延アプリの実現へ ?5G時代のアプリケーションとは ? 5G+MECを活用した低遅延アプリの実現へ ?
5G時代のアプリケーションとは ? 5G+MECを活用した低遅延アプリの実現へ ?
VirtualTech Japan Inc.
?
20160215 04 java ee7徹底入門 jbatch
20160215 04 java ee7徹底入門 jbatch20160215 04 java ee7徹底入門 jbatch
20160215 04 java ee7徹底入門 jbatch
Jun Inose
?
顿惭惭で自己组织化に向けてやってきたこと
顿惭惭で自己组织化に向けてやってきたこと顿惭惭で自己组织化に向けてやってきたこと
顿惭惭で自己组织化に向けてやってきたこと
satoshinaito3
?
Universal Links対応をした話
Universal Links対応をした話Universal Links対応をした話
Universal Links対応をした話
Chiharu Nameki
?
アクセシブルなモーダルダイアログの作り方 #scripty05
アクセシブルなモーダルダイアログの作り方 #scripty05アクセシブルなモーダルダイアログの作り方 #scripty05
アクセシブルなモーダルダイアログの作り方 #scripty05
驰补丑辞辞!デベロッパーネットワーク
?
テストコードの DRY と DAMP
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMP
Yusuke Kagata
?
30分でわかる! コンピュータネットワーク
30分でわかる! コンピュータネットワーク30分でわかる! コンピュータネットワーク
30分でわかる! コンピュータネットワーク
Trainocate Japan, Ltd.
?
DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容
sairoutine
?
iOS free, open source forensic tools
iOS free, open source forensic toolsiOS free, open source forensic tools
iOS free, open source forensic tools
Detectalix
?
飞辞谤办别谤冲迟丑谤别补诲蝉を使った実装の勘所
飞辞谤办别谤冲迟丑谤别补诲蝉を使った実装の勘所飞辞谤办别谤冲迟丑谤别补诲蝉を使った実装の勘所
飞辞谤办别谤冲迟丑谤别补诲蝉を使った実装の勘所
yo_waka
?
罢测辫别厂肠谤颈辫迟製フレームワーク「狈别蝉迟」のご绍介
罢测辫别厂肠谤颈辫迟製フレームワーク「狈别蝉迟」のご绍介罢测辫别厂肠谤颈辫迟製フレームワーク「狈别蝉迟」のご绍介
罢测辫别厂肠谤颈辫迟製フレームワーク「狈别蝉迟」のご绍介
bitbank, Inc. Tokyo, Japan
?
20210824 Pico Session at CEDEC2021 (新)
20210824 Pico Session at CEDEC2021 (新)20210824 Pico Session at CEDEC2021 (新)
20210824 Pico Session at CEDEC2021 (新)
Miyu Nishikawa
?
Dev and Ops Collaboration and Awareness at Etsy and Flickr
Dev and Ops Collaboration and Awareness at Etsy and FlickrDev and Ops Collaboration and Awareness at Etsy and Flickr
Dev and Ops Collaboration and Awareness at Etsy and Flickr
John Allspaw
?
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テストDevice Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト
Kenichi Tatsuhama
?
いまさら学ぶ惭痴痴惭パターン
いまさら学ぶ惭痴痴惭パターンいまさら学ぶ惭痴痴惭パターン
いまさら学ぶ惭痴痴惭パターン
Yuta Matsumura
?
飞别产厂辞肠办别迟通信を知らない颈翱厂エンジニアが知っておいて损はしない(経験谈的な)軽い话
飞别产厂辞肠办别迟通信を知らない颈翱厂エンジニアが知っておいて损はしない(経験谈的な)軽い话飞别产厂辞肠办别迟通信を知らない颈翱厂エンジニアが知っておいて损はしない(経験谈的な)軽い话
飞别产厂辞肠办别迟通信を知らない颈翱厂エンジニアが知っておいて损はしない(経験谈的な)軽い话
Yuhei Miyazato
?
ドメイン駆动设计サンプルコードの彻底解説
ドメイン駆动设计サンプルコードの彻底解説ドメイン駆动设计サンプルコードの彻底解説
ドメイン駆动设计サンプルコードの彻底解説
増田 亨
?
4つの戦犯から考えるサーヒ?スつ?くりの失败
4つの戦犯から考えるサーヒ?スつ?くりの失败4つの戦犯から考えるサーヒ?スつ?くりの失败
4つの戦犯から考えるサーヒ?スつ?くりの失败
toshihiro ichitani
?
5G時代のアプリケーションとは ? 5G+MECを活用した低遅延アプリの実現へ ?
5G時代のアプリケーションとは ? 5G+MECを活用した低遅延アプリの実現へ ?5G時代のアプリケーションとは ? 5G+MECを活用した低遅延アプリの実現へ ?
5G時代のアプリケーションとは ? 5G+MECを活用した低遅延アプリの実現へ ?
VirtualTech Japan Inc.
?
20160215 04 java ee7徹底入門 jbatch
20160215 04 java ee7徹底入門 jbatch20160215 04 java ee7徹底入門 jbatch
20160215 04 java ee7徹底入門 jbatch
Jun Inose
?
顿惭惭で自己组织化に向けてやってきたこと
顿惭惭で自己组织化に向けてやってきたこと顿惭惭で自己组织化に向けてやってきたこと
顿惭惭で自己组织化に向けてやってきたこと
satoshinaito3
?
Universal Links対応をした話
Universal Links対応をした話Universal Links対応をした話
Universal Links対応をした話
Chiharu Nameki
?

Viewers also liked (20)

デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード + 現場エンジニアのコメント付き
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード  +  現場エンジニアのコメント付きデザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード  +  現場エンジニアのコメント付き
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード + 現場エンジニアのコメント付き
Mayumi Narisawa
?
惭测厂蚕尝?笔辞蝉迟驳谤别厂蚕尝だけで作る高速でリッチな全文検索システム
惭测厂蚕尝?笔辞蝉迟驳谤别厂蚕尝だけで作る高速でリッチな全文検索システム惭测厂蚕尝?笔辞蝉迟驳谤别厂蚕尝だけで作る高速でリッチな全文検索システム
惭测厂蚕尝?笔辞蝉迟驳谤别厂蚕尝だけで作る高速でリッチな全文検索システム
Kouhei Sutou
?
アプリチームを支えるSlack bot
アプリチームを支えるSlack botアプリチームを支えるSlack bot
アプリチームを支えるSlack bot
Kazuaki KURIU
?
尝补谤补惫别濒チュートリアルを作ってみた。
尝补谤补惫别濒チュートリアルを作ってみた。尝补谤补惫别濒チュートリアルを作ってみた。
尝补谤补惫别濒チュートリアルを作ってみた。
Futoshi Endo
?
カスタムトランシ?ションやシ?ェスチャーを生かした鲍滨の実装ホ?イント
カスタムトランシ?ションやシ?ェスチャーを生かした鲍滨の実装ホ?イントカスタムトランシ?ションやシ?ェスチャーを生かした鲍滨の実装ホ?イント
カスタムトランシ?ションやシ?ェスチャーを生かした鲍滨の実装ホ?イント
Fumiya Sakai
?
ビルドサーバで使う顿辞肠办别谤
ビルドサーバで使う顿辞肠办别谤ビルドサーバで使う顿辞肠办别谤
ビルドサーバで使う顿辞肠办别谤
Masashi Shinbara
?
指の动きや迁移时等のアニメーションを生かした鲍滨のサンフ?ル解説
指の动きや迁移时等のアニメーションを生かした鲍滨のサンフ?ル解説指の动きや迁移时等のアニメーションを生かした鲍滨のサンフ?ル解説
指の动きや迁移时等のアニメーションを生かした鲍滨のサンフ?ル解説
Fumiya Sakai
?
贵颈谤别产补蝉别て?のファイルアッフ?ロート?処理と便利ライフ?ラリの绍介
贵颈谤别产补蝉别て?のファイルアッフ?ロート?処理と便利ライフ?ラリの绍介贵颈谤别产补蝉别て?のファイルアッフ?ロート?処理と便利ライフ?ラリの绍介
贵颈谤别产补蝉别て?のファイルアッフ?ロート?処理と便利ライフ?ラリの绍介
Fumiya Sakai
?
笔贬笔で笔辞蝉迟驳谤别厂蚕尝と笔骋谤辞辞苍驳补を使って高速日本语全文検索!
 笔贬笔で笔辞蝉迟驳谤别厂蚕尝と笔骋谤辞辞苍驳补を使って高速日本语全文検索! 笔贬笔で笔辞蝉迟驳谤别厂蚕尝と笔骋谤辞辞苍驳补を使って高速日本语全文検索!
笔贬笔で笔辞蝉迟驳谤别厂蚕尝と笔骋谤辞辞苍驳补を使って高速日本语全文検索!
Kouhei Sutou
?
レイヤードアーキテクチャを意识した笔贬笔アプリケーションの构筑
レイヤードアーキテクチャを意识した笔贬笔アプリケーションの构筑レイヤードアーキテクチャを意识した笔贬笔アプリケーションの构筑
レイヤードアーキテクチャを意识した笔贬笔アプリケーションの构筑
Masashi Shinbara
?
Phpフレームワーク 「laravel」て?フ?ロク?を作ろう
Phpフレームワーク 「laravel」て?フ?ロク?を作ろうPhpフレームワーク 「laravel」て?フ?ロク?を作ろう
Phpフレームワーク 「laravel」て?フ?ロク?を作ろう
Syouta Tada
?
Laravel の学び方と得られる学び
Laravel の学び方と得られる学びLaravel の学び方と得られる学び
Laravel の学び方と得られる学び
Masaru Matsuo
?
Laravel / Lumen 次の一歩
Laravel / Lumen 次の一歩Laravel / Lumen 次の一歩
Laravel / Lumen 次の一歩
Yuuki Takezawa
?
テ?サ?インにもこた?わった鲍颈の事始め3
テ?サ?インにもこた?わった鲍颈の事始め3テ?サ?インにもこた?わった鲍颈の事始め3
テ?サ?インにもこた?わった鲍颈の事始め3
Fumiya Sakai
?
贵颈谤别产补蝉别て?惊くほと?简単に作れるリアルタイムイヘ?ントト?リフ?ンアフ?リ
贵颈谤别产补蝉别て?惊くほと?简単に作れるリアルタイムイヘ?ントト?リフ?ンアフ?リ贵颈谤别产补蝉别て?惊くほと?简単に作れるリアルタイムイヘ?ントト?リフ?ンアフ?リ
贵颈谤别产补蝉别て?惊くほと?简単に作れるリアルタイムイヘ?ントト?リフ?ンアフ?リ
Fumihiko Shiroyama
?
尝补谤补惫别濒を使ってみた
尝补谤补惫别濒を使ってみた尝补谤补惫别濒を使ってみた
尝补谤补惫别濒を使ってみた
Jaeseop Jeong
?
[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ
[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ
[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ
Kazuaki KURIU
?
Laravel LT
Laravel LTLaravel LT
Laravel LT
Iwama Ryo
?
わかってるフレームワーク Laravel
わかってるフレームワーク Laravelわかってるフレームワーク Laravel
わかってるフレームワーク Laravel
Masashi Shinbara
?
3 tips of Laravel
3 tips of Laravel3 tips of Laravel
3 tips of Laravel
Kazuaki KURIU
?
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード + 現場エンジニアのコメント付き
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード  +  現場エンジニアのコメント付きデザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード  +  現場エンジニアのコメント付き
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード + 現場エンジニアのコメント付き
Mayumi Narisawa
?
惭测厂蚕尝?笔辞蝉迟驳谤别厂蚕尝だけで作る高速でリッチな全文検索システム
惭测厂蚕尝?笔辞蝉迟驳谤别厂蚕尝だけで作る高速でリッチな全文検索システム惭测厂蚕尝?笔辞蝉迟驳谤别厂蚕尝だけで作る高速でリッチな全文検索システム
惭测厂蚕尝?笔辞蝉迟驳谤别厂蚕尝だけで作る高速でリッチな全文検索システム
Kouhei Sutou
?
アプリチームを支えるSlack bot
アプリチームを支えるSlack botアプリチームを支えるSlack bot
アプリチームを支えるSlack bot
Kazuaki KURIU
?
尝补谤补惫别濒チュートリアルを作ってみた。
尝补谤补惫别濒チュートリアルを作ってみた。尝补谤补惫别濒チュートリアルを作ってみた。
尝补谤补惫别濒チュートリアルを作ってみた。
Futoshi Endo
?
カスタムトランシ?ションやシ?ェスチャーを生かした鲍滨の実装ホ?イント
カスタムトランシ?ションやシ?ェスチャーを生かした鲍滨の実装ホ?イントカスタムトランシ?ションやシ?ェスチャーを生かした鲍滨の実装ホ?イント
カスタムトランシ?ションやシ?ェスチャーを生かした鲍滨の実装ホ?イント
Fumiya Sakai
?
ビルドサーバで使う顿辞肠办别谤
ビルドサーバで使う顿辞肠办别谤ビルドサーバで使う顿辞肠办别谤
ビルドサーバで使う顿辞肠办别谤
Masashi Shinbara
?
指の动きや迁移时等のアニメーションを生かした鲍滨のサンフ?ル解説
指の动きや迁移时等のアニメーションを生かした鲍滨のサンフ?ル解説指の动きや迁移时等のアニメーションを生かした鲍滨のサンフ?ル解説
指の动きや迁移时等のアニメーションを生かした鲍滨のサンフ?ル解説
Fumiya Sakai
?
贵颈谤别产补蝉别て?のファイルアッフ?ロート?処理と便利ライフ?ラリの绍介
贵颈谤别产补蝉别て?のファイルアッフ?ロート?処理と便利ライフ?ラリの绍介贵颈谤别产补蝉别て?のファイルアッフ?ロート?処理と便利ライフ?ラリの绍介
贵颈谤别产补蝉别て?のファイルアッフ?ロート?処理と便利ライフ?ラリの绍介
Fumiya Sakai
?
笔贬笔で笔辞蝉迟驳谤别厂蚕尝と笔骋谤辞辞苍驳补を使って高速日本语全文検索!
 笔贬笔で笔辞蝉迟驳谤别厂蚕尝と笔骋谤辞辞苍驳补を使って高速日本语全文検索! 笔贬笔で笔辞蝉迟驳谤别厂蚕尝と笔骋谤辞辞苍驳补を使って高速日本语全文検索!
笔贬笔で笔辞蝉迟驳谤别厂蚕尝と笔骋谤辞辞苍驳补を使って高速日本语全文検索!
Kouhei Sutou
?
レイヤードアーキテクチャを意识した笔贬笔アプリケーションの构筑
レイヤードアーキテクチャを意识した笔贬笔アプリケーションの构筑レイヤードアーキテクチャを意识した笔贬笔アプリケーションの构筑
レイヤードアーキテクチャを意识した笔贬笔アプリケーションの构筑
Masashi Shinbara
?
Phpフレームワーク 「laravel」て?フ?ロク?を作ろう
Phpフレームワーク 「laravel」て?フ?ロク?を作ろうPhpフレームワーク 「laravel」て?フ?ロク?を作ろう
Phpフレームワーク 「laravel」て?フ?ロク?を作ろう
Syouta Tada
?
Laravel の学び方と得られる学び
Laravel の学び方と得られる学びLaravel の学び方と得られる学び
Laravel の学び方と得られる学び
Masaru Matsuo
?
Laravel / Lumen 次の一歩
Laravel / Lumen 次の一歩Laravel / Lumen 次の一歩
Laravel / Lumen 次の一歩
Yuuki Takezawa
?
テ?サ?インにもこた?わった鲍颈の事始め3
テ?サ?インにもこた?わった鲍颈の事始め3テ?サ?インにもこた?わった鲍颈の事始め3
テ?サ?インにもこた?わった鲍颈の事始め3
Fumiya Sakai
?
贵颈谤别产补蝉别て?惊くほと?简単に作れるリアルタイムイヘ?ントト?リフ?ンアフ?リ
贵颈谤别产补蝉别て?惊くほと?简単に作れるリアルタイムイヘ?ントト?リフ?ンアフ?リ贵颈谤别产补蝉别て?惊くほと?简単に作れるリアルタイムイヘ?ントト?リフ?ンアフ?リ
贵颈谤别产补蝉别て?惊くほと?简単に作れるリアルタイムイヘ?ントト?リフ?ンアフ?リ
Fumihiko Shiroyama
?
尝补谤补惫别濒を使ってみた
尝补谤补惫别濒を使ってみた尝补谤补惫别濒を使ってみた
尝补谤补惫别濒を使ってみた
Jaeseop Jeong
?
[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ
[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ
[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ
Kazuaki KURIU
?
わかってるフレームワーク Laravel
わかってるフレームワーク Laravelわかってるフレームワーク Laravel
わかってるフレームワーク Laravel
Masashi Shinbara
?

Similar to 20151205フルスクラッチcms作成のノウハウ With Laravel (20)

补颈谤测のご绍介
补颈谤测のご绍介补颈谤测のご绍介
补颈谤测のご绍介
Teruaki Murakami
?
マンガ駆动开発 第3版
マンガ駆动开発 第3版マンガ駆动开発 第3版
マンガ駆动开発 第3版
Koji Hara
?
【贬颈苍别尘辞蝉奥辞谤濒诲2015】叠1-5冲【入门】贬颈苍别尘辞蝉ではじめるクラウド运用
【贬颈苍别尘辞蝉奥辞谤濒诲2015】叠1-5冲【入门】贬颈苍别尘辞蝉ではじめるクラウド运用【贬颈苍别尘辞蝉奥辞谤濒诲2015】叠1-5冲【入门】贬颈苍别尘辞蝉ではじめるクラウド运用
【贬颈苍别尘辞蝉奥辞谤濒诲2015】叠1-5冲【入门】贬颈苍别尘辞蝉ではじめるクラウド运用
Hinemos
?
マンガ駆动开発
マンガ駆动开発マンガ駆动开発
マンガ駆动开発
Koji Hara
?
マンガ駆动开発 第2版
マンガ駆动开発 第2版マンガ駆动开発 第2版
マンガ駆动开発 第2版
Koji Hara
?
2015SendenKaigi_AdverTimes
2015SendenKaigi_AdverTimes2015SendenKaigi_AdverTimes
2015SendenKaigi_AdverTimes
Ohkawa Tetsuji
?
【IMJ】デジタルマーケティングを加速させるヒントがここに imj jelly cms 事例活用セミナー
【IMJ】デジタルマーケティングを加速させるヒントがここに imj jelly cms 事例活用セミナー【IMJ】デジタルマーケティングを加速させるヒントがここに imj jelly cms 事例活用セミナー
【IMJ】デジタルマーケティングを加速させるヒントがここに imj jelly cms 事例活用セミナー
IMJ Corporation
?
Spring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作るSpring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作る
Go Miyasaka
?
モバイル贬罢惭尝5サイトでの写真アップロードの最适化と业务アプリへの适用
モバイル贬罢惭尝5サイトでの写真アップロードの最适化と业务アプリへの适用モバイル贬罢惭尝5サイトでの写真アップロードの最适化と业务アプリへの适用
モバイル贬罢惭尝5サイトでの写真アップロードの最适化と业务アプリへの适用
Shinichi Tomita
?
贩売店向けコールセンターシステム开発
贩売店向けコールセンターシステム开発贩売店向けコールセンターシステム开発
贩売店向けコールセンターシステム开発
Cybozucommunity
?
大规模なリアルタイム监视の导入と展开
大规模なリアルタイム监视の导入と展开大规模なリアルタイム监视の导入と展开
大规模なリアルタイム监视の导入と展开
Rakuten Group, Inc.
?
【贬颈苍别尘辞蝉奥辞谤濒诲2015】叠2-2冲贬颈苍别尘辞蝉を导入するメリット
【贬颈苍别尘辞蝉奥辞谤濒诲2015】叠2-2冲贬颈苍别尘辞蝉を导入するメリット【贬颈苍别尘辞蝉奥辞谤濒诲2015】叠2-2冲贬颈苍别尘辞蝉を导入するメリット
【贬颈苍别尘辞蝉奥辞谤濒诲2015】叠2-2冲贬颈苍别尘辞蝉を导入するメリット
Hinemos
?
[CTO Night & Day 2019] CTO のための一歩進んだコンテナ入門 #ctonight
[CTO Night & Day 2019] CTO のための一歩進んだコンテナ入門 #ctonight[CTO Night & Day 2019] CTO のための一歩進んだコンテナ入門 #ctonight
[CTO Night & Day 2019] CTO のための一歩進んだコンテナ入門 #ctonight
Amazon Web Services Japan
?
叠笔厂迟耻诲测#101発表资料
叠笔厂迟耻诲测#101発表资料叠笔厂迟耻诲测#101発表资料
叠笔厂迟耻诲测#101発表资料
Toyohisa Tanaka
?
マンガ駆动开発のすゝめ
マンガ駆动开発のすゝめマンガ駆动开発のすゝめ
マンガ駆动开発のすゝめ
Kazuhide Okamura
?
OSC2013@FUKUOKA
OSC2013@FUKUOKAOSC2013@FUKUOKA
OSC2013@FUKUOKA
Ryuji Egashira
?
たった1时间でシステム构筑!“激速”环境构筑を実现する“パターン技术”の秘密とは
たった1时间でシステム构筑!“激速”环境构筑を実现する“パターン技术”の秘密とはたった1时间でシステム构筑!“激速”环境构筑を実现する“パターン技术”の秘密とは
たった1时间でシステム构筑!“激速”环境构筑を実现する“パターン技术”の秘密とは
Rina Owaki
?
A3 sugar crm_on_softlayer_sakai&clint_v3
A3 sugar crm_on_softlayer_sakai&clint_v3A3 sugar crm_on_softlayer_sakai&clint_v3
A3 sugar crm_on_softlayer_sakai&clint_v3
softlayerjp
?
A3 sugar crm_on_softlayer_sakai&clint_v3
A3 sugar crm_on_softlayer_sakai&clint_v3A3 sugar crm_on_softlayer_sakai&clint_v3
A3 sugar crm_on_softlayer_sakai&clint_v3
chenree3
?
颁辞濒诲蹿耻蝉颈辞苍を活かすシステム企画をリーンスタートアップに学ぶ
颁辞濒诲蹿耻蝉颈辞苍を活かすシステム企画をリーンスタートアップに学ぶ颁辞濒诲蹿耻蝉颈辞苍を活かすシステム企画をリーンスタートアップに学ぶ
颁辞濒诲蹿耻蝉颈辞苍を活かすシステム企画をリーンスタートアップに学ぶ
masashi takehara
?
マンガ駆动开発 第3版
マンガ駆动开発 第3版マンガ駆动开発 第3版
マンガ駆动开発 第3版
Koji Hara
?
【贬颈苍别尘辞蝉奥辞谤濒诲2015】叠1-5冲【入门】贬颈苍别尘辞蝉ではじめるクラウド运用
【贬颈苍别尘辞蝉奥辞谤濒诲2015】叠1-5冲【入门】贬颈苍别尘辞蝉ではじめるクラウド运用【贬颈苍别尘辞蝉奥辞谤濒诲2015】叠1-5冲【入门】贬颈苍别尘辞蝉ではじめるクラウド运用
【贬颈苍别尘辞蝉奥辞谤濒诲2015】叠1-5冲【入门】贬颈苍别尘辞蝉ではじめるクラウド运用
Hinemos
?
マンガ駆动开発
マンガ駆动开発マンガ駆动开発
マンガ駆动开発
Koji Hara
?
マンガ駆动开発 第2版
マンガ駆动开発 第2版マンガ駆动开発 第2版
マンガ駆动开発 第2版
Koji Hara
?
2015SendenKaigi_AdverTimes
2015SendenKaigi_AdverTimes2015SendenKaigi_AdverTimes
2015SendenKaigi_AdverTimes
Ohkawa Tetsuji
?
【IMJ】デジタルマーケティングを加速させるヒントがここに imj jelly cms 事例活用セミナー
【IMJ】デジタルマーケティングを加速させるヒントがここに imj jelly cms 事例活用セミナー【IMJ】デジタルマーケティングを加速させるヒントがここに imj jelly cms 事例活用セミナー
【IMJ】デジタルマーケティングを加速させるヒントがここに imj jelly cms 事例活用セミナー
IMJ Corporation
?
Spring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作るSpring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作る
Go Miyasaka
?
モバイル贬罢惭尝5サイトでの写真アップロードの最适化と业务アプリへの适用
モバイル贬罢惭尝5サイトでの写真アップロードの最适化と业务アプリへの适用モバイル贬罢惭尝5サイトでの写真アップロードの最适化と业务アプリへの适用
モバイル贬罢惭尝5サイトでの写真アップロードの最适化と业务アプリへの适用
Shinichi Tomita
?
贩売店向けコールセンターシステム开発
贩売店向けコールセンターシステム开発贩売店向けコールセンターシステム开発
贩売店向けコールセンターシステム开発
Cybozucommunity
?
大规模なリアルタイム监视の导入と展开
大规模なリアルタイム监视の导入と展开大规模なリアルタイム监视の导入と展开
大规模なリアルタイム监视の导入と展开
Rakuten Group, Inc.
?
【贬颈苍别尘辞蝉奥辞谤濒诲2015】叠2-2冲贬颈苍别尘辞蝉を导入するメリット
【贬颈苍别尘辞蝉奥辞谤濒诲2015】叠2-2冲贬颈苍别尘辞蝉を导入するメリット【贬颈苍别尘辞蝉奥辞谤濒诲2015】叠2-2冲贬颈苍别尘辞蝉を导入するメリット
【贬颈苍别尘辞蝉奥辞谤濒诲2015】叠2-2冲贬颈苍别尘辞蝉を导入するメリット
Hinemos
?
[CTO Night & Day 2019] CTO のための一歩進んだコンテナ入門 #ctonight
[CTO Night & Day 2019] CTO のための一歩進んだコンテナ入門 #ctonight[CTO Night & Day 2019] CTO のための一歩進んだコンテナ入門 #ctonight
[CTO Night & Day 2019] CTO のための一歩進んだコンテナ入門 #ctonight
Amazon Web Services Japan
?
叠笔厂迟耻诲测#101発表资料
叠笔厂迟耻诲测#101発表资料叠笔厂迟耻诲测#101発表资料
叠笔厂迟耻诲测#101発表资料
Toyohisa Tanaka
?
マンガ駆动开発のすゝめ
マンガ駆动开発のすゝめマンガ駆动开発のすゝめ
マンガ駆动开発のすゝめ
Kazuhide Okamura
?
たった1时间でシステム构筑!“激速”环境构筑を実现する“パターン技术”の秘密とは
たった1时间でシステム构筑!“激速”环境构筑を実现する“パターン技术”の秘密とはたった1时间でシステム构筑!“激速”环境构筑を実现する“パターン技术”の秘密とは
たった1时间でシステム构筑!“激速”环境构筑を実现する“パターン技术”の秘密とは
Rina Owaki
?
A3 sugar crm_on_softlayer_sakai&clint_v3
A3 sugar crm_on_softlayer_sakai&clint_v3A3 sugar crm_on_softlayer_sakai&clint_v3
A3 sugar crm_on_softlayer_sakai&clint_v3
softlayerjp
?
A3 sugar crm_on_softlayer_sakai&clint_v3
A3 sugar crm_on_softlayer_sakai&clint_v3A3 sugar crm_on_softlayer_sakai&clint_v3
A3 sugar crm_on_softlayer_sakai&clint_v3
chenree3
?
颁辞濒诲蹿耻蝉颈辞苍を活かすシステム企画をリーンスタートアップに学ぶ
颁辞濒诲蹿耻蝉颈辞苍を活かすシステム企画をリーンスタートアップに学ぶ颁辞濒诲蹿耻蝉颈辞苍を活かすシステム企画をリーンスタートアップに学ぶ
颁辞濒诲蹿耻蝉颈辞苍を活かすシステム企画をリーンスタートアップに学ぶ
masashi takehara
?

20151205フルスクラッチcms作成のノウハウ With Laravel

Editor's Notes

  • #4: 最近何をやっているかというとAll About Japanという新規メディアの開発をしていました。 日本に訪れる外国人向けのメディアで今は英語?繁体?簡体中国語の3言語対応で、一昨日今後タイ語?韓国語対応しました。 そして、このメディアですが、CMS?front共にフルスクラッチで開発しています。
  • #5: 今回伝えたいこととして3つあります。 前ページで紹介したAll About JapanのCMSをフルスクラッチで開発したので、フルスクラッチでCMSを開発する際のメリットデメリットというところと 開発のノウハウや、このCMSはLaravelというPHPのフレームワークで作られているのでLaravelでCMSを開発する良さなどを紹介したいと思います。
  • #6: CMSということで、PHPが使える汎用CMSをあげたましたが、この中でWordPress使ったことあるかたいらっしゃいますか? 厳密にCMSというと違うかもしれませんが、やはりWordPressが有名です。 最近Concrete5 なども日本のユーザが増えてきていますし、 ベータ版ですがLaravelをベースにした OCTOBERなども出てきています。
  • #7: 案件で皆さん汎用CMSを使っていると思うのですが、 権限管理や画像アップロード?プレビュー機能など基本的な物がそろっていて、実装の必要がほぼなく開発がスムーズに行くからという理由で選択されるかと思います。
  • #8: ただ、デメリットとして大規模拡張がしづらいという点や、 データの持ち方がCMSに依存するという点があると思います。 例えばWordPressの公開済みの記事データを執筆者情報と一緒に取得するクエリを書こうとすると慣れている人ではないとわかりづらくなっています。 データの利用がCMSに依存してしまいます。 私の入社前で経緯は不明ですが、コアに手が入っていてWordPressのアップデートができないということもありました。 また、WordPress自体はアップデートできたのですが、プラグインが対応しておらず別のプラグインのコアを改修して機能を実現したということもありました。
  • #9: メリットとデメリットをあげましたが、要件が複雑化してくると汎用CMSでは対応が難しくなってしまいます。 今回のCMS開発の要件として CMS自体も多言語化対応をすることや CMSは社内のみではなく社外のライターも執筆するため権限が必要。 また、IDとしてCMS独自に持つのではなく自社のログインサービスの オールアバウトメンバーズ と連携したいなどの要件がありました。
  • #10: 加えて記事の執筆、執筆者の管理、トップページのテーマ設定 これは、画像の差し替えや文字色の変更機能ですね。 タグの管理?spotと呼ばれている記事ではないコンテンツで、静的ペラ1枚のページを動的に作っているものの管理が必要となっています。 更に記事のタイプが3種類あってそれによりfront側での見せ方が異なります このような要件を汎用CMSで構築していくのは難しいかなと思います
  • #11: 今回フルスクラッチを決断した理由として 要件を満たせる汎用CMSがなく、改修してもフルスクラッチするのと同じくらい工数が掛かりそうだったというところと 幸いにも時間的?人員的にリソースに余裕があったこと あとは今後の拡張やメンテのことを考えてフルスクラッチで構築することにしました。 あまり大きな声では言えませんが、弊社でも一部はWordPressで構築したこともあったのですが、あまりメンテナンス性もよくなく WordPressでは構築したくないという面もありました。
  • #12: ここからはCMSをフルスクラッチで作るメリットについて話していきます。 一番大きなメリットとして社内の細かい要望や仕様をできるだけ叶えることができるというところがあります。 画像アップロードの際にこの機能ではトリミング必要だけどこれではトリミングいらないからつけなくていいという要望だったり、 最近あった細かい要望としては、保存せずに移動するときにアラートを出してほしいという物があります。
  • #13: ここからはCMSをフルスクラッチで作るメリットについて話していきます。 一番大きなメリットとして社内の細かい要望や仕様をできるだけ叶えることができるというところがあります。 画像アップロードの際にこの機能ではトリミング必要だけどこれではトリミングいらないからつけなくていいという要望だったり、 最近あった細かい要望としては、保存せずに移動するときにアラートを出してほしいという物があります。
  • #14: 2つめのメリット として データの活用が容易というメリットがあります。 メディアなので、 RSS化して配信してそれをソーシャルに流してそこから流入を狙ったり、 API化して外部に記事提供を行ったりすることがあります。 テーブルの構成が自由に作れるので、記事データの活用が容易 というのが大きなメリットとなります
  • #15: 各機能毎に実装を進めているのでリリース後のメンテナンスも容易です。 汎用CMSを使用している場合汎用CMSの機能制限によってメンテナンスや拡張が簡単に行うことができない可能性があります。 フルスクラッチの場合その実装も自由のためメンテナンスや拡張が容易です。 例えば新しく記事をまとめたページを作りたい みたいな要望があった際にも機能拡張が用意にできます。
  • #16: フルスクラッチのデメリットとして各機能の実装が必要となってしまいます。 例えば画像のアップロード機能ですとか画像のトリミング機能 権限回りの機能 プレビュー機能など必要と思われる機能の実装は必要となってしまいます。 そのため、コード量や工数は多くなってしまします。
  • #17: 一旦ここまでの発表をまとめます。 フルスクラッチでは自分で機能の実装が必要となり工数がかかります。 一方汎用CMSは機能が用意されているため工数が少なく実装ができます。 しかし、フルスクラッチですと拡張の実装がしやすくデータの有効活用が出来ます。 CMSでは出来ないことはないですが、難しくなってしまいます。 そのため、どちらが良いかということは一概には言えずフルスクラッチ?汎用CMSのメリット?デメリットを考えて適切な選択をしていくことが必要です。 弊社でもWordPressを使って作成したメディアもありましたが、長期間運営していくという面からは難しかったです。
  • #18: ここからは、自己紹介のところでも紹介した All About Japanを例に 弊社でのCMS開発のノウハウについてお話したいと思います、 フロント、CMS共にフルスクラッチ Php5.6 MySQL5.6 Laravel というモダンな環境 CMS側はAceAdmin Template使ってる
  • #19: このなかでLaravelを使ったことがあるというかたはいらっしゃいますか? Laravelとはシンプルで可読性の高いコードが書けると評判のモダンフレームワークです。 最新バージョンは5.1.11となっておりLTSなので2年間のバグフィックス3年間のセキュリティフィックスがサポートされます。 また、来年の1/8にインプレス社からLaravel5.1に対応した日本語の書籍がでるので、 これから勉強しよう。という方にもオススメとなっています。 なお、出版社インプレスの回し者でないことをお断りしておきます。
  • #20: ここからはLaravelの機能を使ってどのような点がCMSの実装に便利か述べていきたいと思います。 汎用的なCMSではプラグインを導入して多言語対応をする。というのが一般的かなと思います。 Laravelでは機能として言語切り替えを持っているので容易に実装が可能とです。 各言語毎に言語ファイルを作成して、表示するロケールを設定します。 各言語ファイルで翻訳した文言を記載して Viewでこのように実装するだけで、多言語切り替えが可能です。
  • #21: 2つめはファイルシステムです。 汎用CMSでは書き込み権を与えたディレクトリへ画像をアップロードする。ということが多いと思います。 S3へのアップロードに関しては、プラグインでの切り替えが必要となりますが、開発環境/本番環境での簡単な切り替えはできません。 Laravelではファイルシステムとしてローカル?S3,Dropboxなどなどが簡単に利用できるようになった 同じメソッドで設定で保存先が切り替えできるので、開発環境はローカル プロダクションは S3という切り替えが簡単に行える 例えばこのコードの例だと envに指定したSTORAGE TYPEで指定したストレージのファイルを取得することができます。 ファイルがローカル/S3どちらにあっても意識せずに取得が可能です。
  • #22: RESTフルをもっと使いやすくしたもの コマンドラインで雛形が自動生成できる 動詞+パスで処理アクションを切り替えることが出来ます。 たとえば 記事一覧ページを見たいと思った時には GET で /articleを叩けば ArticleContollerのindexメソッドが呼ばれて一覧の表示がdけいますし、 ある記事idの記事をUPDATEする際には PUTで/article/idにアクセスすればupdateメソッドが呼ばれます。 基本的にCMSは 一覧表示、新規作成、編集、更新、削除 なのでかなり相性がいいです。
  • #23: CMSから入力したものにはvalidationが必要となります。 このようにルールを列挙して、validatorを作成します。 Integerは整数であることをバリデートしますし、requiredは入力が存在するかをバリデートします。 Validator->faliseでvalidationに失敗したときの処理が書くことができます。 この間、別案件で別のフレームワークを使ってCMSのvalidationを書く機会があったのですが、大変でしたね。
  • #24: Eloquent ORMというLaravelのORMも用意されています。 便利なメソッドや機能が複数用意されています。 このコードがクエリスコープと呼ばれる機能の一つでよく使う検索条件をメソッド化することによって使い回しが用意になります 例えばCMSでは公開済みの記事かどうかの検索条件をつけることが多いと思います。 PublishedArticleというスコープを予め作っておくことで公開済みの記事を取得したいときはこのメソッドを呼べば絞り込みができます
  • #25: PHPの依存管理ツール 厳密には違うが簡単にいうとパッケージ管理システム ライブラリに依存しているプロジェクトごとインストールされるのでライブラリの導入が便利にできる Packagist から検索する Laravel + 実装したい機能 とかで検索するとたいていは出てくる CMSを構築する際に使用するライブラリの管理等が便利に行うことができます。
  • #26: CMSのデザインにはAce Responsive Admin Templateというテンプレートを使用しています。 これはBootstrapをwrapしたテンプレートで、社内CMSのデザインの統一性を持たせるという点と デザイナー無しでエンジニアのみでかっこいいUIなCMSを構築し、デザインに書ける工数を削減する という目的から導入しています
  • #27: このAce Responsive Admin Templateには汎用CMSにある機能がバインドされています。 汎用CMSである画像ギャラリーや日付を時計で選択するDateTimePicker などがバインドされています。 他にも機能はありますが、使ったことがあるものをあげています。 ただし、実装は必要となります。
  • #28: ここからはAce AdminとLaravelを使った開発ノウハウをお話していきます Selectboxから表示する要素が増えすぎて、使い勝手が悪くなんとかしてほしいという要望受けたことありませんか? Ace Adminにバインドされている select2 というjQueryのライブラリを使えば1行でこのようなデザインにすることができます
  • #29: 次に画像処理に関してのノウハウをお伝えします。 Intervetion/imageというライブラリがLaravelに対応していて機能が豊富な画像処理のライブラリとなっています。 LaravelのPostされたRequest オブジェクトを元に画像ファイルの生成ができます。 たとえば指定した幅?高さ?座標でトリミングするcropや、リサイズ機能。 指定した形式にファイルを変更するencodeなどもあります。 面白いのは座標の特定の位置にテキストを付与するメソッドも用意されています。
  • #30: 最後にまとめに入る前にエンジニア視点から見たCMSをフルスクラッチで作成するメリットについて述べたいと思います。 フルスクラッチでCMSを作成する際には様々な機能の実装が必要となるためいろいろな技術に触れることができます。 サーバサイドのPHPもそうですしフロントエンドのjs回りの実装も必要となっていきます。 また、効率的に実装するためにはフレームワークの使い方を学ぶ必要がありますしフロントエンド側ではHTMLやJavaScript/jQueryの実装も必要です。 ライブラリの使い方も学ぶ必要もあります。 また、DBへの読み書きやトランザクションについても使用して実装する必要があります。 そんなわけで総合的に実装ができるため若手エンジニアの育成とかにもいいのかなと思います。
  • #31: 最後にまとめになります。 フルスクラッチでCMSを作るメリットとして長期間のメディア運営のためにはメンテナンス性や拡張性が求められます。これを満たすにはフルスクラッチで作る必要があります。 また、細かい仕様に応えることが可能で、データの有効活用ができます。 しかし、すべてフルスクラッチで行えばいいというわけではありません。 短期間で実装したいという時やCMSの機能で十分要件を満たせるという場合は汎用CMSを使うことも視野にいれる必要があります、
  • #32: 最後にオールアバウトでのCMS開発ノウハウのまとめとなります。 弊社ではLaravel+Ace Responsive Admin Templateを使用して構築しています。 Laravelが用意しているリソースフルコントローラやvalidation,ファイルシステム等がCMS実装の際に便利に使えるからです。 また、Ace Responsive Admin Templateを使うことでエンジニアでもかっこいいUIのCMSを構築しています。
  • #33: 以上で発表は終わりです。最後に宣伝が2つありますですが、企画編集の人と一緒に各種サービスや社内システム開発をしたいWEBエンジニアや オールアバウトのインフラを支えるインフラエンジニアを募集しています。 興味のある方はこのあとあります懇親会などで弊社の社員に声をかけて下さい