fuel php活用事例
DESCRIPTION
FuelPHP 勉強会 東京 vol.3にて弊社のメンバーが発表した資料です。TRANSCRIPT
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
FuelPHP 活用事例
2013 年 3 月 23 日
株式会社シーエー・アドバンス技術統括本部
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
シーエー・アドバンスってどんな会社?
2008 年に、サイバーエージェントの子会社として設立。
インターネットメディアや広告の運用に関連する事業を中心に行っている会社です。
従業員数は約 350 人で、東京と沖縄に事業所があります。( 東京約 50 名、沖縄約 300 名 )
エンジニアチームは東京、沖縄合計で 20 名ほどです。
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
弊社では、複数のプロジェクトで FuelPHP を
採用しています。
今日は、社内で FuelPHP をどのように利用し
ているか紹介したいと思います。
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
時間の関係で深い部分までは紹介できないの
ですが、気になった点は終了後に質問してく
ださい。
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
FuelPHP を採用している
社内のプロジェクト
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
CS( カスタマーサポート )社内業務ポータル
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
画像・投稿監視の管理システム
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
CS ( カスタマーサポート )社外向け業務支援システム
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
SEM 運用支援システム
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
その他、小さいシステムも含めて多
くのプロジェクトで FuelPHP を採用
しています。
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
今日ピックアップするプロジェクト
・ CS 業務支援システム
・ SEM 運用支援システム
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
採用事例①CS ( カスタマーサポート )社外向け業務支援システム
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
ソーシャルアプリに特化して、
○ユーザから問い合わせの受付
↓
○開発者へのエスカレーション
↓
○ユーザへの返信
までを行う事ができるシステムです。
システム概要
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
プロジェクトメンバー
プロジェクト統括鈴木さん
インフラ担当倉原さん
コーディング担当根岸さん
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
■ 初期開発
2012 年 7 月〜 2012 年 11 月
■ 現在のフェーズ
クライアントへの導入・機能追加・改
善を続けています。
開発期間
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
システム構成
サーバ環境 : AWS
OS : AmazonLinux
Web サーバ : nginx
DB : MySQL5.5
言語 : PHP5.4
FuelPHP : 1.3
その他 : Redis, Fluentd
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
NAT
Availability Zone Availability Zone Availability Zone
Proxy
WebApBatchログ監視
NAT
CacheDB
構成はこんな感じです。
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
FuelPHP 採用の理由
① スピード感のある開発が求められた。
② CodeIgniter 経験メンバーが居た。
③ ロゴやサイトがイケててテンションが上がる。
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
開発にあたって
工夫した点をご紹介します。
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
ログクラスの拡張
ログ出力クラスを拡張して、システム監
視やエラー調査を効率化しています。
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
ログクラスの拡張
① ログ出力先の変更
変更前: /logs/YYYY/MM/DD/~.php
変更後: /logs/~.php
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
ログクラスの拡張
② ログ出力内容の変更
クラス名、ファンクション名、ユーザ名等の情報を追加。ログからの各種調査を行いやすいようにしています。
[YmdHis] [ClassName] [FunctionName] [UserName] [Message]・・・・・・
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
validation クラスの拡張
validation クラスを拡張して、独自の
チェック方法を追加しました。
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
validation クラスの拡張
機能拡張①
日付チェック
(YYYY-MM-DD 形式 & 存在する日付 )
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
validation クラスの拡張
機能拡張②
英数&記号の一括チェック
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
validation クラスの拡張
機能拡張③
アップロードされた csv ファイルに対する
チェック。
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
pagination のカスタマイズ
標準で実装されている pagenation は GET
で行い、 URL にページ番号がつく。
↓
ajax の POST を使用して pagenation が行
えるように機能を追加しています。
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
Redis の活用
現在はセッションの管理や単純なデータ
保持に Redis を活用しています。
標準でアクセスクラスが用意されていま
すので、簡単に Redis を利用する事が
できます。
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
Jenkins でコーディングチェック
Jenkins を活用して FuelPHP のコーディン
グ規約をチェックできるようにしています。
リリース前にコーディング規約のチェック
& ユニットテストを行い、その後にリリー
スを行うフローをとっています。
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
REST-API の開発
外部システムとの連携に、 REST-API
を実装しています。
FuelPHP標準の Controller_Rest クラ
スを継承して、簡単に構築することが
できました。
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
CS 業務支援システムにおける工夫は
以上です。
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
採用事例②
SEM 運用支援システム
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
インターネット広告の運用を効率的に行う
ためのシステムです。
元々社内で開発・運用していた基幹システ
ムを、社外の顧客に提供できるように再構
築を行っています。
システム概要
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
プロジェクトメンバー
開発リーダー前田さん
開発メンバー中村さん
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
■ 初期開発
2012 年 8 月〜 2012 年 12 月
■ 現在のフェーズ
機能追加や改善をどんどん行って
います。
開発期間
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
システム構成
サーバ環境 : IIJ GIO( クラウド )
OS : CentOS6
Web サーバ : Apache2,2
DB : MySQL5.5
言語 : PHP5.3
FuelPHP : 1.2
その他 : Memcached,
Smarty
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
構成はこんな感じです。
Load Balancer
Intranet
IIJ GIO (クラウド)
Web / Cache / DB
監視 (zabbix)
Intranet
Web / Cache / DB
VPN
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
FuelPHP 採用の理由
フレームワーク未使用の社内システムから
機能を切り出した社外向けシステム。
↓
条件① 開発の制約が少なく、自由度が高い。
条件② 既存の部品を再利用して高速開発できる。
この条件を満たしていたのが FuelPHP でした。
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
開発にあたって
工夫した点をご紹介します
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
機能単位のサブディレクトリ
Model/Controller/View にサブディレ
クトリを作り、サブシステム単位で纏
めて管理しています。
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
機能単位のサブディレクトリ
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
機能単位のサブディレクトリ
controller/memu/ ディレクトリに login を配置する
場合、 login コントローラーは
class Controller_Menu_Login extends Controller_Template {
このように名前を付ければ OK です。
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
Smarty の導入
テンプレートエンジンとして Smarty
を使っています。
経験メンバーが居たので、開発スピー
ドを上げるためです。
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
Smarty の導入
FuelPHP では簡単に Smarty を導入す
ることができます。
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
Smarty の導入
■ 導入手順
① fuel/app/vendor/
ここにダウンロードした Smarty を配置。
② fuel/app/config/config.php
このファイルの
always_load の packages に parser
を追加。
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
Smarty の導入
■ 導入手順
③ コントローラーで View を読み込む際、
Response::forge(View_Smarty::forge(XXXX',
$data));
このように記述すれば OK です。
view のテンプレートとして .smarty が読み込まれ
ます。
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
View にオブジェクトを渡す
View にオブジェクトを渡せるよう
に、 config.php の whitelisted_classes に該
当クラスを追加しました。
view表示の際に適用される htmlentities は、
各クラスに独自で実装する必要があります。
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
既存資産の活用
DB/Memcache へのアクセスは、移植元のシス
テムで作ったものをそのまま使用しています。
ログ出力クラスについても、移植元のシステムで
使っていたものを修正して使用しています。
移植の工数を減らし、既存システムの資産を最大
限活かすためです。
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
SEM 運用支援システムにおける工夫は
以上です。
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
社内で FuelPHP を使用したメンバーに、
感想を聞いてみました。
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
採用して良かった点。
・非常にとっつきやすく、使いやすい。
・入門書が発売されているので、学習しやすい。
・ namespace 初めは戸惑ったけど慣れると便
利。
・ Core クラスを理解・拡張しやすい。
・バッチがとても作りやすい。
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
苦労した点。
・日本語のドキュメントが一部しか存在しな
い。
・ URL に「 _」が使用できないので戸惑っ
た。
・フレームワークのリリーススパンが短いた
め、どのタイミングでバージョンアップす
るか悩む。
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
これからもシーエー・アドバンスは
FuelPHP を積極的に活用していきたい
と思います。
Copyright © 2013 CAADvance, Inc. All Rights Reserved.
ご清聴ありがとうございました。