fuel php活用事例

54
Copyright © 2013 CAADvance, Inc. All Rights Reserved. FuelPHP 活活活活 2013 活 3 活 23 活 活活活活活活活活 活活活活活 活活活活活活

Upload: toshiyuki-maeda

Post on 28-May-2015

4.420 views

Category:

Documents


0 download

DESCRIPTION

FuelPHP 勉強会 東京 vol.3にて弊社のメンバーが発表した資料です。

TRANSCRIPT

Page 1: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

FuelPHP 活用事例

2013 年 3 月 23 日

株式会社シーエー・アドバンス技術統括本部

Page 2: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

シーエー・アドバンスってどんな会社?

2008 年に、サイバーエージェントの子会社として設立。

インターネットメディアや広告の運用に関連する事業を中心に行っている会社です。

従業員数は約 350 人で、東京と沖縄に事業所があります。( 東京約 50 名、沖縄約 300 名 )

エンジニアチームは東京、沖縄合計で 20 名ほどです。

Page 3: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

弊社では、複数のプロジェクトで FuelPHP を

採用しています。

今日は、社内で FuelPHP をどのように利用し

ているか紹介したいと思います。

Page 4: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

時間の関係で深い部分までは紹介できないの

ですが、気になった点は終了後に質問してく

ださい。

Page 5: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

FuelPHP を採用している

社内のプロジェクト

Page 6: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

CS( カスタマーサポート )社内業務ポータル

Page 7: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

画像・投稿監視の管理システム

Page 8: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

CS ( カスタマーサポート )社外向け業務支援システム

Page 9: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

SEM 運用支援システム

Page 10: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

その他、小さいシステムも含めて多

くのプロジェクトで FuelPHP を採用

しています。

Page 11: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

今日ピックアップするプロジェクト

・ CS 業務支援システム

・ SEM 運用支援システム

Page 12: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

採用事例①CS ( カスタマーサポート )社外向け業務支援システム

Page 13: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

ソーシャルアプリに特化して、

 ○ユーザから問い合わせの受付

     ↓

 ○開発者へのエスカレーション

     ↓

 ○ユーザへの返信

までを行う事ができるシステムです。

システム概要

Page 14: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

プロジェクトメンバー

プロジェクト統括鈴木さん

インフラ担当倉原さん

コーディング担当根岸さん

Page 15: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

■ 初期開発

2012 年 7 月〜 2012 年 11 月

■ 現在のフェーズ

クライアントへの導入・機能追加・改

善を続けています。

開発期間

Page 16: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

システム構成

サーバ環境 : AWS

OS : AmazonLinux

Web サーバ : nginx

DB : MySQL5.5

言語 : PHP5.4

FuelPHP : 1.3

その他 : Redis, Fluentd

Page 17: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

NAT

Availability Zone Availability Zone Availability Zone

Proxy

WebApBatchログ監視

NAT

CacheDB

構成はこんな感じです。

Page 18: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

FuelPHP 採用の理由

① スピード感のある開発が求められた。

② CodeIgniter 経験メンバーが居た。

③ ロゴやサイトがイケててテンションが上がる。

Page 19: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

開発にあたって

工夫した点をご紹介します。

Page 20: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

ログクラスの拡張

ログ出力クラスを拡張して、システム監

視やエラー調査を効率化しています。

Page 21: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

ログクラスの拡張

① ログ出力先の変更

変更前: /logs/YYYY/MM/DD/~.php

変更後: /logs/~.php

Page 22: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

ログクラスの拡張

② ログ出力内容の変更

クラス名、ファンクション名、ユーザ名等の情報を追加。ログからの各種調査を行いやすいようにしています。

[YmdHis] [ClassName] [FunctionName] [UserName] [Message]・・・・・・

Page 23: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

validation クラスの拡張

validation クラスを拡張して、独自の

チェック方法を追加しました。

Page 24: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

validation クラスの拡張

機能拡張①

日付チェック

(YYYY-MM-DD 形式 & 存在する日付 )

Page 25: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

validation クラスの拡張

機能拡張②

英数&記号の一括チェック

Page 26: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

validation クラスの拡張

機能拡張③

アップロードされた csv ファイルに対する

チェック。

Page 27: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

pagination のカスタマイズ

標準で実装されている pagenation は GET

で行い、 URL にページ番号がつく。

 ↓

ajax の POST を使用して pagenation が行

えるように機能を追加しています。

Page 28: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

Redis の活用

現在はセッションの管理や単純なデータ

保持に Redis を活用しています。

標準でアクセスクラスが用意されていま

すので、簡単に Redis を利用する事が

できます。

Page 29: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

Jenkins でコーディングチェック

Jenkins を活用して FuelPHP のコーディン

グ規約をチェックできるようにしています。

リリース前にコーディング規約のチェック

& ユニットテストを行い、その後にリリー

スを行うフローをとっています。

Page 30: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

REST-API の開発

外部システムとの連携に、 REST-API

を実装しています。

FuelPHP標準の Controller_Rest クラ

スを継承して、簡単に構築することが

できました。

Page 31: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

CS 業務支援システムにおける工夫は

以上です。

Page 32: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

採用事例②

SEM 運用支援システム

Page 33: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

インターネット広告の運用を効率的に行う

ためのシステムです。

元々社内で開発・運用していた基幹システ

ムを、社外の顧客に提供できるように再構

築を行っています。

システム概要

Page 34: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

プロジェクトメンバー

開発リーダー前田さん

開発メンバー中村さん

Page 35: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

■ 初期開発

2012 年 8 月〜 2012 年 12 月

■ 現在のフェーズ

機能追加や改善をどんどん行って

います。

開発期間

Page 36: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

システム構成

サーバ環境 : IIJ GIO( クラウド )

OS : CentOS6

Web サーバ : Apache2,2

DB : MySQL5.5

言語 : PHP5.3

FuelPHP : 1.2

その他 : Memcached,

Smarty

Page 37: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

構成はこんな感じです。

Load Balancer

Intranet

IIJ GIO (クラウド)

Web / Cache / DB

監視 (zabbix)

Intranet

Web / Cache / DB

VPN

Page 38: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

FuelPHP 採用の理由

フレームワーク未使用の社内システムから

機能を切り出した社外向けシステム。

               ↓

条件① 開発の制約が少なく、自由度が高い。

条件② 既存の部品を再利用して高速開発できる。

この条件を満たしていたのが FuelPHP でした。

Page 39: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

開発にあたって

工夫した点をご紹介します

Page 40: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

機能単位のサブディレクトリ

Model/Controller/View にサブディレ

クトリを作り、サブシステム単位で纏

めて管理しています。

Page 41: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

機能単位のサブディレクトリ

Page 42: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

機能単位のサブディレクトリ

controller/memu/ ディレクトリに login を配置する

場合、 login コントローラーは

class Controller_Menu_Login extends Controller_Template {

このように名前を付ければ OK です。

Page 43: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

Smarty の導入

テンプレートエンジンとして Smarty

を使っています。

経験メンバーが居たので、開発スピー

ドを上げるためです。

Page 44: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

Smarty の導入

FuelPHP では簡単に Smarty を導入す

ることができます。

Page 45: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

Smarty の導入

■ 導入手順

① fuel/app/vendor/

  ここにダウンロードした Smarty を配置。

② fuel/app/config/config.php

  このファイルの

   always_load の packages に parser

を追加。

Page 46: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

Smarty の導入

■ 導入手順

③ コントローラーで View を読み込む際、

  Response::forge(View_Smarty::forge(XXXX',

$data));

 このように記述すれば OK です。

  view のテンプレートとして .smarty が読み込まれ

ます。 

Page 47: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

View にオブジェクトを渡す

View にオブジェクトを渡せるよう

に、 config.php の whitelisted_classes に該

当クラスを追加しました。

view表示の際に適用される htmlentities は、

各クラスに独自で実装する必要があります。

Page 48: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

既存資産の活用

DB/Memcache へのアクセスは、移植元のシス

テムで作ったものをそのまま使用しています。

ログ出力クラスについても、移植元のシステムで

使っていたものを修正して使用しています。

移植の工数を減らし、既存システムの資産を最大

限活かすためです。

Page 49: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

SEM 運用支援システムにおける工夫は

以上です。

Page 50: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

社内で FuelPHP を使用したメンバーに、

感想を聞いてみました。

Page 51: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

採用して良かった点。

・非常にとっつきやすく、使いやすい。

・入門書が発売されているので、学習しやすい。

・ namespace 初めは戸惑ったけど慣れると便

利。

・ Core クラスを理解・拡張しやすい。

・バッチがとても作りやすい。

Page 52: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

苦労した点。

・日本語のドキュメントが一部しか存在しな

い。

・ URL に「 _」が使用できないので戸惑っ

た。

・フレームワークのリリーススパンが短いた

め、どのタイミングでバージョンアップす

るか悩む。

Page 53: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

これからもシーエー・アドバンスは

FuelPHP を積極的に活用していきたい

と思います。

Page 54: Fuel php活用事例

Copyright © 2013 CAADvance, Inc. All Rights Reserved.

ご清聴ありがとうございました。