ありがとう。また会おう。

ゆるいかんじで。かたのちからぬいて。やってます。

12/13 Symfony Meetup #7 & 「Symfony2入門」読了

もうひとつ12月に参加したイベント。Symfony Meetup #7

symfony.doorkeeper.jp

久々にあまり知り合いのいないイベント参加で若干緊張しました。
そういえば久しぶりの六本木ヒルズでした。昔は毎日通ってたってのが信じられないw(通勤距離的な意味で)

発表資料や当日の様子はきっと誰かがもう書いていたり
Twitterハッシュタグ #symfony_meetup をみればわかると思うので省略して。

Symfonyは今業務でバリバリ使っているのですが
体系だてて勉強したわけではなく、必要に迫られて必要なところを調べる、みたいな形で知識をつけてしまったので
今ひとつちゃんと使いこなせてないんですよね。
(しかも、自分が設計したシステムではなく、今のプロジェクトに途中からジョインしたので)

で、ここで聞いた話や、後述しますが、「Symfony2 入門」を読んでいて
ほんとまだまだ全然便利な機能使いこなせていないなぁ、というのを痛感しています。

@hidenorigoto の発表だったか質疑応答のときだったか
ちょっと記憶が曖昧なのですが
フレームワークの選定の話で
それなりに大きなシステムを組もうとすると
きちんと設計できるのはSymfonyかZendくらい、と言っていたのが印象的で。
というのも、自分もそれなりに今までいろんなフレームワーク触ってきたのですが
CakePHPやCodeIgniter、FuelPHP は、そのあたり難しいってのは同意で。
もちろんそれに向いたシステムってのもあるので、どちらが優れているか劣っているかという話ではなく
そのビジネスで解決したい課題に適した道具を使いましょう、ということではあるのですが。

で、SymfonyやZendが大きなシステムに向いているってのは、ひとえにDB関連がActiveRecordではなく
Data Mapper 使っているところだと。
(Doctrineも1の頃はActiveRecordでしたけど、2はData Mapperになったので)
Data MapperはActiveRecordの手軽さはないですが
その代わりビジネスに要求されるような複雑な要件を、適切にモデリングして扱う上では
やはりこちらの方式のほうが素直に組めるんですよね。
ActiveRecordだとどうしても無理しなきゃいけないところが出てきてしまう。

このあたりは、PofEAAの知識があると腹落ちしやすいと思うんですが
ちょっと初学者には敷居が高いってところが、学習コストなのかなとか思っていたりします。

で、ちょっと時間に余裕があればLTできるかなとおもって、現場で仕込んでみたのですが時間切れだったのでスライドだけ上げました。

www.slideshare.net

これ、実際業務に使ってるんですが
最初その問題を解決するのに、Twigのドキュメント見て、この関数使えそうじゃん!って思い
Google先生を引いてみたんですけど、びっくりするほど情報無いんですよね。公式ドキュメント以外。
かといって、使うとヤバイ的な話もないし。
単にあまり光があたってないのかな、と思ったので話題にしてみました。

発表できずに終わるのも悲しいので
なんか別の機会があれば、これともう少し話を肉付けして、どこかでしゃべろうと思います。


で、もうひとつの話題の「Symfony2 入門」

基本からしっかり学ぶ Symfony2入門

基本からしっかり学ぶ Symfony2入門

Symfony2は今まで専門書籍、という意味ではあまりなかったんですよね。
効率的なWebアプリケーションの作り方 ~PHPによるモダン開発入門 には触れてる部分あることはあるんですが
体系的に学べる、という意味では初の書籍かと。

で、端的に言って、今業務でSymfony扱っている人は必携の本ではないかなと思います。
理論の部分と実践の部分がうまく融合されていて、
とてもわかりやすくまとまっています。
特にSymfonyは今まで初学者には敷居が高い、学習コストかかるという印象があったと思うのですが
この本1冊読み進めていけば、きちんと基礎力つくと思います。

自分もこの本を読んでいていろいろ発見があって。


あと、7章のAPI Docの生成とかもいいなぁと。今あるプロジェクトでも隙をみていれたいな、と思ったり。

SymfonyはWebのリソースが豊富なので
今までは事実上それがドキュメントだったわけですが
体系的に学べる本が出版されたというのは本当に大きいと思います。

自分のエンジニア魂に火がつくような、素晴らしいイベント&書籍でした。