Symfonyもくもく会 #4 を開催しました

Symfonyもくもく会も今回で4回目を迎えることができました。

Symfonyもくもく会 #4 - 日本Symfonyユーザー会 | Doorkeeper

今回は株式会社ヒトメディアさんの the p@rk を会場での開催でした。今まで異常に Symfony にフォーカスした会となりとても内容の濃い会となったと感じます。参加者の方からも「楽しかった」「勉強になった」と好評の声をちらほら聞くことができて嬉しく感じました。

ということで第四回目の記録です。

どんな場所だった?

株式会社ヒトメディアさんの the p@rk を会場での開催でした。とても広々とした空間で音響設備もばっちり。Wi-Fi、電源、プロジェクターももちろん完備。子どもを遊ばせるスペースまでありました。仕事ではいつも音楽を聞いているので「こんな素敵な音響で毎日仕事できたらなぁ〜」と感じまくりましたっ!多くの参加者の方が心地よく感じていたのではないかと思います。

素敵な会場を貸していただき本当にありがとうございました、という気持ちでいっぱいです!

どんな人が参加していた?

(これまでの傾向も同じなのですが、)約半数が Symfony 歴1年未満の方々でした。PHP 歴1年未満の方もちらほら。今回は学生の方や勉強会がはじめてという方もいました。もともと、このもくもく会は「Symfony を通じていろいろな人と交流したい」「Symfony を広めていきたい」という想いのもとはじめたものでした。そういった意味で、初心者の方々がもくもく会に参加してくれることは非常に嬉しく思っています。

どんなことをしていた?

当日のタイムテーブルです。

内容 時間
開場 12:30 ~
開始 13:15 ~
会場案内・自己紹介など ~ 13:45
もくもく ~ 16:00
LT ~ 17:30
終了 ~ 18:10
懇親会 18:30 ~

LT が盛り上がりました

LT は計4本でこれまで以上の盛り上がり。いやー知らないことが多くて非常に勉強になりました。

LT 1. Symfony で CI した話

これは自分で LT した内容です。

CI に関する取り組みは自分が結構力を注いできたことの一つでした。3年前、今の会社に入社したときは CI ナニソレみたいな感じだったのですが、いまでは当たり前のようにビルドプロセスが自動化されていてとても安定した開発ラインを築けています。デプロイ自動化からテストの自動実行、プルリクエストによるレビューフローなど NO プログラミング経験な自分が会社のメンバーの方と協力しながらこんな感じでやってきました〜みたいなことを共有しました。いくつか質問いただいたのでメモ。

Q. どうやってみんなにテスト書こうって提案した?

「(セミナーで知り合ったすごい人が)テスト書かないとやばい!!(って言ってます)」みたいな言い回しでとりあえずバシバシ情報を流布してました(笑)。ぶっちゃけ新卒1年目で十数年もキャリアがある先輩方と持論のみでテスト書くべき!って議論するのはとても難しかったのです。「俺はテスト書かなくても今までうまくいってきた」という意見にはなかなか真っ向から立ち向かえなかったです。なので「◯◯っていうセミナー行ってきたらみんなテスト書いてるっていってて書かないととりあえずやばいんです!」みたいなスタンスでとりあえず問題提起をガンガンしてました(笑)。そこから「いや書く気になれないんだ」「書く時間ないでしょ?」みたいな課題が明らかになっていって進めるには何を解決しなければいけないかという課題意識をしっかり持つことができ結果的に効率的な課題解決ができたように感じてます。もちろん、平行してしっかりテストを書くとどうなるか?を自分なりに勉強して「テストを書く技術」「提案の質」はどんどん上げていきました。

幸運なことに、何人かの先輩にすごく応援をいただいて現在はテスト書くことを会社的にも認めてもらえるようになりました。

Q. テスト書かない人いるよね?どうした?

査定に響くような目標設定をしました(笑)。テストを書かない=給料が上がらないという仕組みです。当時のチームメンバー全員で建設的に話し合って決めたのでそれほど殺伐とはしてなかったです。結局、まずやってみることが大事でやり続けられるモチベーションを確保すればいいんですよね。まずテストを書いてみる!からはじめられるようにして「書いても効果がなかったじゃん!」ってのがわかったらそれはそれで受け止めて。そういった意味では、当時のメンバーの「給料はあげたいよね」という根源的なモチベーションの柱をうまく活用できたので良い施策だったなと思います。

「あとカバレッジ5%あげないと給料あがらん!!」といってみんなで年の瀬にテスト書きまくったのはよい思い出です(笑)。

「給与駆動開発」なる言葉も飛び出して結構盛り上がりました。

LT 2. コントローラのテスト

望月さん(@polidog)の LT。

Symfony でコントローラをするときに WebTestCase を使ったこんなテストを書きますよね。

<?php

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;

class DemoControllerTest extends WebTestCase
{
    public function testIndex()
    {
        $client = static::createClient();

        $crawler = $client->request('GET', '/demo/hello/Fabien');

        $this->assertGreaterThan(0, $crawler->filter('html:contains("Hello Fabien")')->count());
    }
}

でももっと独立性の高いテスト書きたいときどうするか、というお話でした。

モックやスタブを使えばいいのですが、Symfony の Controller は継承しているのでやっかい、

class DemoController extends Controller

と思っていたら、これって継承しなくても動くんですね!全然知らなかったです。

はい、安定のおかぽん先生からの優しいアドバイス。痛み入ります。ドキュメントはこちらです。

あと落合さんが共有してくれたこれも気になる。BDD 的に受け入れテストが書けるみたいで。一回触ってみます。

LT 3. Symfony から学ぶデザインパターン

おかぽん先生の LT。

Symfony の実装からデザインパターンを学ぶというお話。これシリーズ化してほしい!結構デザインパターンの勉強はおろそかにしていたので すが、Symfony から学ぶといういい視点をいただきました。

LT 4. バンドルの見つけ方

落合さんの LT。

もはやバンドルマスターの通名が定着した氏の秘技伝授。

結論→バンドルマスターがフィルタリングした厳選された Bundle 情報をチェックするのが一番よいということにまとまりました。

Symfony Meetup!

前から感じてたんですけど、「全然もくもくしてないっ!(笑)」ということを改めて再認識し、次回からは「Symfony Meetup」と名前を改めてやっていきます!「Symfony を通じて人と人が出会う場」として盛り上げていきたいと思います。

来月も開催する予定なので Symfony に興味ある方、遊びにきてみてください^^