行った気になれるSymfony勉強会#10総集編[PHP][Symfony][Silex]
昨日は日本Symfonyユーザー会主催のSymfony勉強会 #10に参加してきました!
Symfony勉強会 #10 - 日本Symfonyユーザー会 | Doorkeeper
当日の流れとしては
- Silexについてのワークショップ
- LT
- 懇親会
という感じでした。
Silexについてのワークショップ
今回はSymfony勉強会ですが、弟的な存在であるSilexについてのワークショップでした。
Homepage - Silex - The PHP micro-framework based on Symfony2 Components
題材
ワークショップの題材としては
Creating a simple REST application with Silex.
こちらのサイト、Creating A Simple REST Application With Sliex の写経・コード読みがメインでした。
写経やコード読みをするなかで、テスティング関連の話も交わったり、Symfonyのルーティングとの違いや、SilexへSymfonyのルーティングを組み込む方法などのはなしも飛び交い、有意義でした:)
成果
写経+α(写経だけでは実は全然上手く行かないトラップが仕掛けられていたのでw)をしていったワークショップの成果をgithubに一応上げておきました。
gomachan46/symfony10_study · GitHub
LT
LTは以下の皆さんが行って下さいました。(Doorkeeperより抜粋)
- 4年ほどSilexを使ってきた経験の話 (@Tetsujin)
- 1000万ユーザーのソーシャルゲームのバックエンドにSymfonyを使った話(仮) (@modeelf)
- EventListener使いこなし術 (@okapon_pon)
- そろそろComposerについてひとこと言っておくか (@_nishigori)
- Symfony2 を drone.io でCI する (@HideyukiTakei)
- パーフェクトRailsで個人的に良かったところ(仮) (@tdakak)
- Symfonyでの実装パターン、のような話 (@hidenorigoto)
- DBマイグレーション管理どうしてますか?(@brtriver)
4年ほどSilexを使ってきた経験の話 (@Tetsujin)
マイクロフレームワークを使っていくと結局マイクロにはなるわけではなくどんどんど大きくなっていくので、自分たちで自由に拡張していけるのが面白いと感じたり上手く拡張して付き合っていけるようなチームだと合うんだろうなぁと感じました。
でもそれが結局オレオレSymfonyに近いような形になってしまうとパフォーマンスやドキュメント量、疎結合度等どんどんただの劣化版Symfonyになってしまう思うのでここだって言えるような自分たちの尖りをつけるくらいの気持ちで使わないと活かせないのかなぁとか聞いていて感じたりしました。
Silex-Skeltonに乗って開発を行うのはすごく良いなぁ、と感じました!
それ、SymfonySEで良くね?と言われないような規模で使ったり拡張の仕方をしたりして長期的に使うとしたら見ていきたい。
でもそういった巨大化するニオイがするならやっぱり自分ならSilexかSymfonyかと言ったらSymfonyにするかなーというのが今の感触でした。
Silexにはもっとlight weightな所で真価を発揮していただきたいかな、とw
長年付き合ってきてのお話、とてもためになりました。ありがとうございました!
マイクロフレームワークとは何だったのか #symfony_ja
— Hiraku (@Hiraku) 2014, 7月 26
"マイクロフレームワーク、結局マイクロにならない" #symfony_ja
— tadaaki (@tdakak) 2014, 7月 26
Silex-Skeletonってあるのか #symfony_ja
— インフラ修行したいポリドッグ (@polidog) 2014, 7月 26
規模感によるよなぁ...マイクロにならないのは良いとしてオレオレSymfonyまでは行かないように使えれば良いんだろうな #symfony_ja
— なかにしごう (@gomachan46) 2014, 7月 26
https://t.co/FZhHd8H63F #symfony_ja
— tadaaki (@tdakak) 2014, 7月 26
1000万ユーザーのソーシャルゲームのバックエンドにSymfonyを使った話(仮) (@modeelf)
エンジニアただ肉に会場が沸いてました!wぜひ活用させていただきたいです><
無料で焼き肉が食べれるだと…. #symfony_ja
— Masao Maeda (@brtriver) 2014, 7月 26
にく… #symfony_ja
— tadaaki (@tdakak) 2014, 7月 26
http://t.co/6PpPs1U5la #symfony_ja
— Hiraku (@Hiraku) 2014, 7月 26
ただ肉たべたい #symfony_ja
— なかにしごう (@gomachan46) 2014, 7月 26
Symfony1.0系を使いつづけていくという非常にマニアックなお話でしたw
熱いSymfony1.0系愛を感じましたw
バージョンアップする気がないから後方互換とか迷わない!wという振り切った意見、よかったですw
バージョンアップする気がないから迷わない!!w #symfony_ja
— なかにしごう (@gomachan46) 2014, 7月 26
EventListener使いこなし術 (@okapon_pon)
SymfonyのEventListenerを上手く使っていく、非常に有益なお話でした!
再利用しづらかったりテストしづらかったりするので、Controllerにbeforeメソッド等で書くのではなく、その前にEventListenerで仕留めてしまおうよ、というお話でした。
この辺りをEventListenerでさばいてあげるときれいに処理がまとまりそう。
ぜひ試してみたい!!この辺りは良い話を聞けたので要調査したいなぁ。
コントローラに before 的なメソッドを書かない/書かせない #symfony_ja
— tadaaki (@tdakak) 2014, 7月 26
オレオレ作ってもいいじゃない #symfony_ja
— Hiraku (@Hiraku) 2014, 7月 26
http://t.co/jYrcKH7ys7 #symfony_ja
— tadaaki (@tdakak) 2014, 7月 26
コントローラーを拡張して何かやりたいことってだいたい trait でできるよね #symfony_ja
— Masao Maeda (@brtriver) 2014, 7月 26
そろそろComposerについてひとこと言っておくか (@_nishigori)
非常にセンスの良い画像のチョイスでとても楽しいスライドでしたw本当素晴らしいw
Composerはまだまだalpha版なのでバージョン固定して利用する等して気をつけて付き合っていかねば...
Composerは便利だけどまだまだ至らないところもあるし何も考えずに使っていると苦労するから本当気をつけよう...w
composerのアップデートでautoload_psr4.phpがいきなり増えたりして焦ったことがあるので、できればバージョンを固定して使いたい。--versionオプションは朗報 #symfony_ja
— Noriyuki Takano (@euphoryx1) 2014, 7月 26
composerのつらみを感じる #symfony_ja
— Hiraku (@Hiraku) 2014, 7月 26
composer の alpha9 / beta / stable はいつ?系の質問は中の人からスルーされているらしい #symfony_ja
— tadaaki (@tdakak) 2014, 7月 26
composerは気をつけて使うしか無いのか・・・ #symfony_ja
— インフラ修行したいポリドッグ (@polidog) 2014, 7月 26
"composer は気をつけて使いましょう" つらい #symfony_ja
— tadaaki (@tdakak) 2014, 7月 26
composerの闇をみた #symfony_ja
— なかにしごう (@gomachan46) 2014, 7月 26
Can we get an 1.0.0-alpha9 release? :) · Issue #3029 · composer/composer
https://t.co/rM4EMktcHL #symfony_ja
— Hiraku (@Hiraku) 2014, 7月 26
Can we get an 1.0.0-alpha9 release? :) が気になった人はコメントを増やしてこのissueを盛り上げていきましょうw
Symfony2 を drone.io でCI する (@HideyukiTakei)
drone.ioを使ってCIしていくお話でした。
drone.io自体知らなかったので勉強になりました...!
Continuous Integration · drone.io
travisCIと異なりgithub以外のリポジトリに対してもCIできるということで、使える幅は広そうです。
このあたりをdockerと組み合わせて遊ぶと楽しそう。
Drone and Docker, Open Source CI · drone.io
travis-ciっぽいやつ Continuous Integration · drone.io
https://t.co/Obe8cJOYsR #symfony_ja
— Hiraku (@Hiraku) 2014, 7月 26
droneioのcookbookあるのか。これは導入したいかも #symfony_ja
— インフラ修行したいポリドッグ (@polidog) 2014, 7月 26
パーフェクトRailsで個人的に良かったところ(仮) (@tdakak)
割と最近出たパーフェクトRuby on Railsについての感想をベースとして、SymfonyとRailsの対比や若者のRails離れ(?w)のお話でした。
とっても絵が可愛い+わかりやすくて良かったです!ありがとうございました!
パーフェクトRails、買おうかなーと思いつつまだ買えないでいたので、これを機に買おうと思います( ¯•ω•¯ )
「RailsやSymfonyなど大きいFWでは初心者向けチュートリアルの一歩先で躓きがち、パRailsはそこをカバーできる良い本」との事だったので、楽しみです!
確かに大きなフレームワークは強力がゆえにハードルがとても高くなるように感じます。(中のコードを追えば追うほど)
だからそのあたりを上手く付き合えるようにするサポートがあるとかなり一歩目が早く踏み出せそうだなと感じています。
Rubyは最近あまり触れてないので久々にRuby系の記事を書こうと思いました:-)
パーフェクトRails #symfony_ja
— Hiraku (@Hiraku) 2014, 7月 26
パーフェクトRuby on Rails!!! #symfony_ja
— インフラ修行したいポリドッグ (@polidog) 2014, 7月 26
http://t.co/JbXCkJbzyf #symfony_ja
— Hiraku (@Hiraku) 2014, 7月 26
パーフェクトRuby on Rails on Symfony勉強会 #symfony_ja
— なかにしごう (@gomachan46) 2014, 7月 26
まさかの若者ののRails離れ #symfony_ja
— インフラ修行したいポリドッグ (@polidog) 2014, 7月 26
一部発言が不参加の方に誤解されてたっぽいので補足。「RailsやSymfonyなど大きいFWでは初心者向けチュートリアルの一歩先で躓きがち、パRailsはそこをカバーできる良い本」て話で、RailsがダメでSymfonyがよいという話では全然ないです。 #symfony_ja
— tadaaki (@tdakak) 2014, 7月 26
Symfonyでの実装パターン、のような話 (@hidenorigoto)
非常にためになるお話ありがとうございましたmm
EntityとRepositoryの2つだけだとどうしても実装が集中してしまう、そこで
- specification (仕様) パターン
- criteria (検索条件) パターン
という2人の役者をEntityとRepositoryに加え参加させることで分散させようとする実装パターンのお話でした。
- 静的な条件 Entity + specification
- 動的な条件 Repository + Criteria
仕様であるspecificationは全てサービス化させておいてDIしてしまって、必要に応じて扱う。
使ってみているサンプル等があればとても頭に入りやすそうだけれどないかなぁ...
まだまだ勉強勉強です:-(
エンティティとリポジトリしか構造が無いと、どうやってもこの2つに実装が集中する → 構造を追加する(Specificationパターン/Criteriaパターン) #symfony_ja
— tadaaki (@tdakak) 2014, 7月 26
リポジトリはすぐに肥大化する #symfony_ja
— Masao Maeda (@brtriver) 2014, 7月 26
検索条件とかだとLINQ的な構造の方が合成しやすくなるかもね #symfony_ja
— Hiraku (@Hiraku) 2014, 7月 26
自分たちの問題をうまく解決するための構造は自分たちで作っていかなければならない #symfony_ja
— なかにしごう (@gomachan46) 2014, 7月 26
Symfony温泉合宿のお話もありました!めっちゃ行きたい!w
めぐり合わせが良ければぜひ行きたいなと思っておりますのでよろしくお願いしますmm
http://cdn-ak.f.st-hatena.com/images/fotolife/j/ja9/20110727/20110727210727.jpg
途中出てきたこの画像で笑ってしまったw
シンポニーww #symfony_ja
— なかにしごう (@gomachan46) 2014, 7月 26
Symfony温泉合宿 #symfony_ja
— tadaaki (@tdakak) 2014, 7月 26
お、温泉合宿だと!!! 行きたい! #symfony_ja
— インフラ修行したいポリドッグ (@polidog) 2014, 7月 26
温泉行きたい! #symfony_ja
— Yudai Fujita (@fujiyan0121) 2014, 7月 26
"日本シンポニーユーザー会様" #symfony_ja
— tadaaki (@tdakak) 2014, 7月 26
"温泉合宿はガチ翻訳やってたよ。もう最近はやる気がなくて…ね” ww #symfony_ja
— にしごおり (@_nishigori) 2014, 7月 26
シンポニー温泉合宿行きたい #symfony_ja
— なかにしごう (@gomachan46) 2014, 7月 26
“温泉入ろう” #symfony_ja
— にしごおり (@_nishigori) 2014, 7月 26
DBマイグレーション管理どうしてますか?(@brtriver)
トリは我らが@brtriverさんのお話でした!←
端的に言うと、DBマイグレーション、downいりますか?といったお話でした。 本番でdownできるケースなんてまぁない(そこにはすでに生きているデータがある)ので、だったらそもそもdown出来る機能なくていいよね、という感じでした。
いちいちdown時の挙動書くのもめんどくさいしその割にほぼ使うことはないので、確かにdownはなくてもいいんじゃないの、と思いました。
ただ開発時には欲しくなったりはするかもなーとは思います。試行錯誤したくはなったりする時がありそう。(現状わりとある)
まぁdownじゃなくてもリバートコミットのように打ち消すコミットを重ねれば良いとも思うのでdownなしは割と賛成でした!ありがとうございました!
Flywayというのを使っているそうで、シンプルな構成でなかなかよさそうでした。もう少し見てみたい。
Flyway • Database Migrations Made Easy.
Dbup - UPコマンドだけのPHP製シンプルマイグレーションツール : http://t.co/9NUbe0jZK4 #symfony_ja
— なかにしごう (@gomachan46) 2014, 7月 26
Migration困ってるんですよねえ… #symfony_ja
— Hiraku (@Hiraku) 2014, 7月 26
migrate downに潜む事故るニオイ #symfony_ja
— なかにしごう (@gomachan46) 2014, 7月 26
本番環境で migration の down しない/させない #symfony_ja
— tadaaki (@tdakak) 2014, 7月 26
たしかに本番環境でdownは怖過ぎてできない #symfony_ja
— インフラ修行したいポリドッグ (@polidog) 2014, 7月 26
Flyway • Database Migrations Made Easy. : http://t.co/UXgcDxeZoJ #symfony_ja
— なかにしごう (@gomachan46) 2014, 7月 26
"downつかってないけど困ってません" #symfony_ja
— なかにしごう (@gomachan46) 2014, 7月 26
おわりに
懇親会含め、とっても楽しい勉強会でした!ありがとうございました!!
他の勉強会で話はしていなかったけど覚えていてくれたようで、嬉しい経験もしたり:)
やっぱり勉強会中にも思ったけれど、勉強会のいいところは勉強会の題材だけじゃなくて周辺知識に関しても本当にいろんな学びがあるところだなぁと改めて。
やっぱ勉強会とかの良い所って周辺知識が勝手に入ってくることだよなぁ〜 symfony/silexについてっていうよりもろもろの知識についての学びがすごく大きい
— なかにしごう (@gomachan46) 2014, 7月 26
もっともっと参加していきます!いずれは発表させてください:)
(今回、#symfony_jaタグがついていたもの関してのみ、tweetを引用させていただきました。何かあれば対応しますのでご連絡くださいmm)
Symfonyユーザ会の方々、会場を提供してくださった株式会社ヒトメディア様、楽しい時間をありがとうございました!