はじめに
こんにちは、エンジニアの 9sako6 です。
昨年の夏に社内で Patterns of Enterprise Application Architecture(以下、PofEAA と呼ぶ)を読む読書会が発足し、かれこれ半年以上継続しています。
本記事では、PofEAA 読書会の沿革や、主催としての学びをつづります。
動機
私はおそらく PofEAA という本を Martin Fowler's Bliki (ja) で知りました。PofEAA の著者 Martin Fowler 氏のブログを日本語化したサイトです。
"Patterns of Enterprise Application Architecture" というタイトルにある、"Enterprise" や "Architecture" という単語に惹かれました。 当時、エンタープライズアプリケーション特有の問題や解決策に興味があったのです。私は学生時代に競技プログラミングをかじっていましたが、エンタープライズアプリケーションでは競プロのプラクティスが通じないことがあったからです(永続化の必要性や、ハードウェア・ミドルウェアの性能などによるボトルネックの違い)。
とはいえ1人で読んで理解できるかわからないのと、途中で挫けそうな懸念があったので、複数人で読み進めたいと思いました。弊社では業務時間内の勉強会開催が認められているので、読書会を立ち上げることにしました。
PofEAA についてもう少し知りたい方は、高橋征義さんのレビューが参考になると思います。
読書会の方針
社内でお声がけして、PofEAA 読書会に興味を持ってくださった数人で集まって進め方を決めました。
読書会を開催するにあたり、私は2つの理念を持っていました。
- 負担が少ない
- 私たちの知識欲と好奇心はとどまることを知らず、学ぶべき事象はいくらでもあります。そんな中で読書会の負担が大きいとなると、他に学びたいことややりたいことができなくなってしまいます。
- 人が集まる利点が活きる
- 1人で読むより有益な体験をしたいと思っていました。わからない点について教えあったり、議論できる場を作りたかったです。
2つのお気持ちを共有した上で全員で議論し、読書会は以下のタイムスケジュールで進めることになりました。開催頻度は週に1回、1時間です。
時間 | やること | 説明 |
---|---|---|
5分 | チェックイン | 雑談による、しゃべりのウォーミングアップ |
15分 | 読書 | 読む。発表に備える |
20分 | 発表と議論と質疑応答 | ランダムで選ばれたどなたかに読んだ範囲について説明してもらう。要はどういう内容だったのかを説明してほしい。議論や質疑応答も適宜やっていく |
5分 | 次回の計画立て | |
(15分) | バッファ | 早く終わるでもよし、どこかに割り振るでもよし、次に進むでもよし |
- その他ルール
- オンラインで集まる(音声通話)
- 英語の勉強をしたいわけではないので、翻訳ツールをガンガン使っていい
- 途中参加、途中退出大歓迎。聞くだけの参加も大歓迎
- 毎回議事録(学びや議論内容を簡単にまとめたもの)を共同編集で作る
- 読書会後はできるだけ議事録にひとことコメントする
- ツール
- 集まる場所:Google Meet
- 議事録:esa
この進め方は、DMM さんの技術書の輪読会を定着させるまでの道のりで学んだこと記事にて紹介されている「その場で読んで、まとめて、発表するスタイル」にインスパイアされたものです。事前に読んだり準備する必要がないため、負担が少なくなっています。
始動から半年経って、ふりかえり
進め方を決めて、半年ほど特に問題なく読み進められました。 複数のメンバーが毎回参加してくれたこと、議論ができたこと、議事録に学びが残されたこと、解説役として koic さんが参加してくださったことが大きかったです。
PofEAA の章立ては以下のようになっており、この時点で "PART 1: The Narratives" の "Chapter 2" まで読み終えていました。
- Preface
- Introduction
- PART 1: The Narratives
- Chapter 1-Chapter 8
- PART 2: The Patterns
- Chapter 9-Chapter 18
いい機会だと思い、Google の Jamboard でふりかえりを行いました。画像はそのときのボードです。
Keep
議論することで理解が促進されたといった意見が出ました。最初の私のお気持ち通り、複数人で集まる利点が活かされたようでした。
- 参加負荷がそこまで高くないので継続しやすい
- 当初の思惑どおり負荷なく参加できている
- koic さんの背景解説助かる
- よくわからない点について、他メンバからの補足やヒント、議論をもらえてソロで読むよりも解像度高く読めていそう
- 一人で読むと難しい内容だけど、みんなでこうじゃないかとか考えたり、解説してもらえることである程度理解できている
- 参加メンバーによる解説・議論が理解のたすけになっている
- マイペースで読んで読み終わったら、気になる部分を読み返したり、気になった周辺の調べ物をできたりするので、良い感じで同期/非同期で進めている感がある。
- 内容が難しいので、各自読んだ後に誰かに要約してもらえる形式が議論が進んでよい感じ
- ポストRailsの世界を生きる私にとって新鮮で面白い
- ディスカッションによる気づき
- みんな英文書読んでいてすごい。
- 現代の翻訳テクノロジーがすばらしい
- 難しい書籍コンテンツである中、きちんと継続されている
- 議事録っぽく書かれていて、感想も書かれており、足跡が残っていてよい
Problem
英語と内容の難しさが挙げられました。
- 英語ワカラナイ
- 実質英語版で読めていない!*1
- 用語だけ先に出てくることが多いので、理解してない部分がわりとある
- パターンの説明?使い所?について読んでいるが、パターン自体の説明(カタログ)は後ろの方に記載されているので、理解しづらい
- そろそろ、Google翻訳力が尽きてしまう。。。
- 難しい箇所を読むと要約に時間が必要になる
- 地の (英) 文によるファウラー節をスキップしてしまって、著者の言葉の選び方のニュアンスを味わえていない
- 最近の現場での設計思想について Active Record の影響が大きいため、理解に戸惑うことがある。
- RailsのActiveRecordと書籍内のActiveRecordを混同して混乱しがち
- 参加メンバーが増えなかった
- (良くも悪くも?) 固定メンバー化している
- 読んだ場所の難易度によっては議論時に沈黙で無の時間がすぎる
- 背景とか脱線した話で、説明が長くなってしまう時がある (自戒を込めて)
Try
3つの Try があがりました。
和じゃなど、人目のある場所でやってみて、入り口を開放する(旧リアル和じゃっぽく)
参加メンバーが増えなかったことに対する Try です。 「和じゃ」はアジャイル事業部メンバーが集まっている Slack の雑談チャンネルです。 「やってる感」を出して興味を惹くため、人目に付くハドルで開催することにしました。
無の時間が思考中なのか本当になにもわからんなのか発言して表明する(例:「これよくわかんないっすね〜」)
オンライン特有の問題に対する Try です。 議論中、たまにみんなが無言の時間がうまれます。音声通話をしているので、無言になるとやりとりされる情報が0になります。
「よくわかんない」などでいいので、適宜お気持ちを flush しようということになりました。
わからない部分がでてきたら、解説部分に派生して時間をとってみんなで読んでみる
内容の難しさに対する Try です。 PofEAA は PART I と PART II にわかれており、PART I にはパターンの概要、PART II にはパターンの詳細が書かれていることがあります。 PART I を読んでいる現在、概要だけでは理解しにくい部分があります。そういう場面で、理解を優先して PART II の詳細な説明をみんなで読みにいくことにしました。
読書会の現在の形
ふりかえりを経て、今はこの進め方で読書会を行なっています。
時間 | やること | 説明 |
---|---|---|
15分 | 読書 | 読む。発表に備える |
35分 | 発表と議論と質疑応答 | ランダムで選ばれたどなたかに読んだ範囲について説明してもらう。要はどういう内容だったのかを説明してほしい。議論や質疑応答も適宜やっていく |
(10分) | バッファ | 早く終わるでもよし、どこかに割り振るでもよし、次に進むでもよし |
- その他ルール
- オンラインで集まる(音声通話)
- 英語の勉強をしたいわけではないので、翻訳ツールをガンガン使っていい
- 途中参加、途中退出大歓迎。聞くだけの参加も大歓迎
- 毎回議事録(学びや議論内容を簡単にまとめたもの)を共同編集で作る
- 読書会後はできるだけ議事録にひとことコメントする
- 無の時間が思考中なのか本当になにもわからんなのか発言して表明する(例:「これよくわかんないっすね〜」) ← New!
- わからない部分がでてきたら、解説部分に派生して時間をとってみんなで読んでみる ← New!
- ツール
- 集まる場所:Slack 「和じゃ」(人が多い)チャンネルのハドル ← New!
- 議事録:esa
主催して得た Tips
PofEAA の知識
いわずもがな、PofEAA を読むことで エンターブライズアプリケーション特有の問題や特徴、Layring、Domain Logic、DB とオブジェクトのマッピング等の知識が増えました。 PofEAA は例に出される内容が古い場合があるのですが、歴史を学んで温故知新という気持ちで読んでいます。
読書会をプロダクト(生産物)として育てる意識
私はツールや Web サービスを作るのが好きなのですが、読書会も同じように自分のプロダクトと見なせます。 読書会自体が価値となるように、また、読書会を通して価値を与えたいという思いで運営するようになりました。
おわりに
参加者がいる限り、これからも読書会を継続していきます。
永和システムマネジメントでは、Ruby とアジャイルソフトウェア開発を通じてコミュニティと成長したいエンジニアを絶賛募集しています。
*1:メンバーによっては、日本語版を購入して英語版とあわせて読んでいます