■第3回関西PHP勉強会に参加しました
第3回関西PHP勉強会「Symfony2マスターが直接手ほどき!アプリケーション開発実況観戦」に行ってきました。
PHPには多くのフレームワークがあります。
定番のフレームワークSymfony、Zend Framework、CakePHP、Codeigniterはバージョンが2になり、Yii FrameworkやFuelPHPなどの新しいフレームワークも人気を高めています。
私の使用目的に最も適しているフレームワークを調べた結果、Symfonyが一番良さそうに思えました。
ちょうどいいタイミングでSymfony2の勉強会がありましたので、参加することにしました。
■感想
はっきり言って予習不足でした。
参加申し込みページに書かれているように、「Symfony2 クイックツアー」「Symfony2ブログチュートリアル」はちゃんと目を通すべきでした。
もったいないことをしたと反省しました。
Symfony2の基礎的な考え方の部分から解説があったのは助かりました。
Symfony2はMVCパターンではない(Symfony2にはMはない)、という話は興味深いです。
(作者のTwitterの発言を探してみます。)
ソフトウェア開発の関心事の中心はドメインモデルであり、開発はここに注力します。
プログラマはドメインモデルに注力し、それ以外の部分はフレームワークが援助します。
今時のフレームワークはMVCパターンであることを宣伝します。
MVCでないと主張するところに、はっきりとした設計思想があるのだと思います。
Symfony2は自由度が高いフレームワークであると感じました。
暗黙のルールに従うことで効率のより開発ができるフレームワークもありますが、Symfonyは明示的に設定するようです。
面倒とも言えますが、業務システムのような複雑なシステムでは有利ではないでしょうか。
あと、参加者のMAC率の高さに驚きました。
(私を除く)ほぼ全員がノートパソコンを持っていて、ほとんどの人がMACを使っているようでした。
ノートの方がメモを取りやすいと思うのだけど。
■久保さん(@iteman)の話に感銘を受けた
Symfony2については予習不足でわからないことが多かったのですが、久保さん(@iteman)の設計についての話は勉強になりました。
クラスの設計について、ドメイン駆動設計の考え方の解説がたびたびありました。
クラスの構成を知っているのはドメインの知識だから生成とオブジェクトを分ける、設問を保存する方法はドメインの知識だから…、などなど。
『エリック・エヴァンスのドメイン駆動設計』読まねば!と思いました。
今回の勉強会で使用したソースがgithubで公開されています。
多くのことを学ぶことができると思います。
「自分の方にフレームワークをあわせる。フレームワークにあわせない」
Symfony2のO/R Mapper「Doctrine」の使い方についての説明の時に、このような趣旨の言葉がありました。
「自分の知識や考え方は古い。新しいフレームワークの方法が正しい」と考えがちで、ついフレームワークにあわせてしまいがちです。
フレームワークを上手に使うことが開発の目的ではないですからね。
(とはいえ、久保さん(@iteman)だからこそ断言できるのだと思います。)
「美しいコードとは、概念モデル(ドメインモデル、とそこに含まれる知識など)をそのまま表現したコートである。技巧を凝らしたコードのことではない。」
といった趣旨の言葉だったと思います。名言だと思いました。
設計について学ぶことが多かったので、個人的に設計方法について教えていただいたDOA・OOA・DDDについての話と合わせて別の記事にを書きたいと思います。
■気になっていること。要調査。TODO
データベース設計をした後に、エンティティクラスを効率的に作成する方法。
Doctrineではエンティティの定義からデータベースのスキーマを作るようです。
しかし、この方法ではデータベースが持つ特有の機能を有効活用できない部分があるようです。
開発環境(IDE)は何が最良か。
EclipseかNetBeansが主流?
資料とソースコードを読んで復習する。
とくにソースコードから、設計方法とフィールド数が不定の時のフォームの作り方を学ぶこと。
『エリック・エヴァンスのドメイン駆動設計』必読!
『エリック・エヴァンスのドメイン駆動設計』の本のことは知っていました。
ですが、今回の勉強会でこの本は必読だと感じました。
関西PHP勉強会のスタッフの皆さん、ありがとうございました。