第一回OpenPNE3で学ぶsymfony勉強会に参加
OpenPNEで有名な株式会社手嶋屋さんで開催された勉強会に参加させていただきました。
- 株式会社手嶋屋さん
- 会場
- 株式会社手嶋屋 新宿事務所
- アクセス|SNS構築の手嶋屋
- 講師
OpenPNE3で学ぶSymfonyのタスク機能
- 講師
- 手嶋守さん
- 概要
- OpenPNEについて
OpenPNEとsymfonyについて
OpenPNEについて
- もともとMojaviベースの内製フレームワークで構築
- version3からsymfonyを採用
- 各フレームワークを検証した結果、なぜsymfonyを採用したのか
- Zend Frameworkはまだライブラリの域を出ていない感
- CakePHPは計量で良いが、機能要件をみたせていなかった
OpenPNEにsymfonyを採用することの利点
- symfonyの公式ドキュメント、開発Tipsが生かせる
OpenPNE3において、symfonyタスク機能をどのように活用しているか
OpenPNEタスクを使ってみましょう
- opGenerateでプラグイン生成
- ソースはgithubにあります
- 入門編:コンソール画面に文字出力するタスク
- 応用編:フレンドリンク強制的に生成するタスク
- opMinnatomodachiPlugin
- tejima's opMinnatomodachiPlugin at master - GitHub
- 応用編:イベントを自動的に作成するタスク
- opLunchRandomizerPlugin
- tejima's opLunchRandomizerPlugin at master - GitHub
- 手順
- OpenPNE3のプラグイン生成の詳しい情報はこちらにあるみたい
環境・前提
- PHP-5.2をインストール済み
- OpenPNE3をインストール済み
プラグインひな形作成
mochiz% ./symfony opGenerate:plugin opTestTwoPlugin
>> dir+ /Users/mochiz/Sites/OpenPNE3/plugins/opTestTwoPlugin/apps
>> dir+ /Users/mochiz/Sites/OpenPNE3/plugins/opTestTwoPlugin/lib
>> dir+ /Users/mochiz/Sites/OpenPNE3/plugins/opTestTwoPlugin/test
>> dir+ /Users/mochiz/Sites/OpenPNE3/plugins/opTestTwoPlugin/test/bootstrap
>> file+ /Users/mochiz/Sites/OpenPNE3/plugins/opTestTwoPlugin/test/bootstrap/database.php
>> file+ /Users/mochiz/Sites/OpenPNE3/plugins/opTestTwoPlugin/test/bootstrap/functional.php
>> file+ /Users/mochiz/Sites/OpenPNE3/plugins/opTestTwoPlugin/test/bootstrap/unit.php
>> dir+ /Users/mochiz/Sites/OpenPNE3/plugins/opTestTwoPlugin/test/fixtures
>> file+ /Users/mochiz/Sites/OpenPNE3/plugins/opTestTwoPlugin/test/fixtures/test_data.yml
>> dir+ /Users/mochiz/Sites/OpenPNE3/plugins/opTestTwoPlugin/test/functional
>> dir+ /Users/mochiz/Sites/OpenPNE3/plugins/opTestTwoPlugin/test/functional/mobile_frontend
>> file+ /Users/mochiz/Sites/OpenPNE3/plugins/opTestTwoPlugin/test/functional/mobile_frontend/skeletonActionsTest.php
>> dir+ /Users/mochiz/Sites/OpenPNE3/plugins/opTestTwoPlugin/test/functional/pc_frontend
>> file+ /Users/mochiz/Sites/OpenPNE3/plugins/opTestTwoPlugin/test/functional/pc_frontend/skeletonActionsTest.php
>> dir+ /Users/mochiz/Sites/OpenPNE3/plugins/opTestTwoPlugin/test/unit
>> dir+ /Users/mochiz/Sites/OpenPNE3/plugins/opTestTwoPlugin/test/unit/model
>> file+ /Users/mochiz/Sites/OpenPNE3/plugins/opTestTwoPlugin/test/unit/model/SkeletonTest.php
>> chmod 777 /Users/mochiz/Sites/OpenPNE3/cache
>> chmod 777 /Users/mochiz/Sites/OpenPNE3/log
>> chmod 777 /Users/mochiz/Sites/OpenPNE3/symfony
>> chmod 666 /Users/mochiz/Sites/OpenPNE3/log/.gitignore
>> dir+ /Users/mochiz/Sites/OpenPNE3/web/cache
>> chmod 777 /Users/mochiz/Sites/OpenPNE3/web/cache
Permissions on some files could not be fixed.
You may fix this problem for accessing "/pc_backend.php/sns/cache" via your web browser.
If you want to get more information, please execute "./symfony openpne:permission --env=dev".
タスククラス作成
- lib/taskにタスククラスを設置しましょう
- 時間短縮のために、今回は既存ファイルをコピーしてタスククラスを作成します
cd plugins
mkdir opTestTwoPlugin/lib/task
git clone git clone http://github.com/tejima/opMinnatomodachiPlugin.git
cp opMinnatomodachiPlugin/lib/task/opMinnatomodachiTask.class.php opTestTwoPlugin/lib/task/opTestTask.class.php
- クラスメイトファイル名に齟齬がないよう編集します
- namespace、nameを編集し、タスク名を決定しましょう
- namespace=opTest
- name=two
class opTestTask extends sfBaseTask
{
protected function configure()
{
$this->namespace = 'opTest';
$this->name = 'two';
} protected function execute($arguments = array(), $options = array())
{
var_dump('Test');
}
}
タスクを実行する
- 作成したタスクを実行します
./symfony opTest:two
string(4) "Test"
symfony1.4タスクの作り方まとめ
- 拡張するときにはpluginを作成しましょう
- lib/taskへタスクを設置しましょう
手嶋屋謹製タスクプラグインのご紹介
タスクプラグインの紹介:みんな友達プラグイン
- ソースはgithubに
- opMinnatomodachiPlugin
- tejima's opMinnatomodachiPlugin at master - GitHub
- なにやってるのかざっくり紹介
- DB接続
- Doctorineフレンドリンクテーブルを削除
- すべてのフレンドリンクを再作成
- select結果をまとめてインサート。5000人分くらいまではストレス無く実行できるはず
- 以上のような処理が5行くらいでできちゃいます
- 新入社員が入った場合に自動的に結びつけができるので便利
タスクプラグインの紹介:ランチイベントランダム作成プラグイン
- ソースはgithubに
- opLunchRandomizerPlugin
- tejima's opLunchRandomizerPlugin at master - GitHub
- 社内SNSで使っているとのこと
- ランチイベントを自動で作ってくれるプラグイン
質疑応答
- OpenPNEを、OAuthライブラリなど、zendライブラリなど入っている前提で使って良いですか?
- 基本的にはそのままで使っていただけるはず
- zendライブラリも同梱していますが、ライセンス的には問題ない(はず)
- メール受信後の動作などもタスクで実装されていたりするのか?
- 携帯メールをdumpしてサイトへ反映するタスクなどもあります
- openpne
実例で見るsymfonyの我流修正方法
- 講師
- 河合さん
- Crossover21というサイトを構築しています
- 官民一体の政策議論、情報交換、勉強会のネットワークSNS
- OpenPNE3で実装されています
- コミュニティ、アクティビティを主軸に拡張
- レイアウト、文言を見やすく
- 友達機能、日記機能は使わない
- 管理者毎に機能制限をかける
- 使い勝手をよくしたら、好評でした。とのこと
どうやって実装したのかをざっくりと
- 文言修正方法
- 機能修正
質疑応答
- ※あとで書く
感想
- ※あとで書く