概要
気温が40度近くになり、外を出歩くと命の危険をジリジリと感じる季節になってきましたね。 ぼくはすっかり部屋に引きこもるようになってしまいましたが皆さんは如何お過ごしでしょうか? 祇園祭も終わり、厄除けちまきをランチ帰りに買って帰りました。 意外とランチを食べて1時間ほどで京都オフィスまで戻れることがわかりました。 今度近隣のIT会社の知り合い(はてなのonkさんやHelpfeelのpastakさんたち)を誘って社外エンジニアランチしてみようかなーと画策しています。
(写真はカマルというカレー屋さんと祇園祭の様子です。はてな社の提灯が羨ましすぎて思わず撮ってしまいました。)
研鑽Rubyプログラミングをご存知か?
話は変わりますが、皆さんは研鑽Rubyプログラミング ― 実践的なコードのための原則とトレードオフ(以降、この記事内では研鑽本と表現します。)という書籍をご存知でしょうか?
研鑽Rubyプログラミング ― 実践的なコードのための原則とトレードオフwww.lambdanote.com
研鑽本はRubyコミッターのJeremy Evans さんが執筆し、RubyKaigiでもおなじみ角谷信太郎さんが訳された技術書です。 この書籍ですがなんと今年のRubyKaigi直前である4月14日に出版された新しいRubyの技術書になっています。 もしかしたら、RubyKaigi 2023でプレゼントされた人やサインをもらったよ!という方もいるかもしれません。
研鑽本の対象読者は以下の方が想定されています。1
- 中級から上級のRubyプログラマー
- 自分自身のプログラミングを改善するために原則とトレードオフを学ぶことに関心のある方
そして、ぼくがオーガナイザをしている Kyoto.rb ではここ最近、研鑽本の読書会を開催しています。 今日はその読書会の紹介とこのイベントによって得られた有形無形のさまざまなものについてお話しようと思います。
なぜ読書会を開催したのか?
まずどうして我々Kyoto.rbのメンバーが研鑽Rubyプログラミングの読書会を行おうと考えたのかをお伝えしようと思います。 読書会を開催しようと話す前のKyoto.rbには以下の課題がありました。
- コロナ禍前に参加していたメンバーが数年の間に転職などで引っ越している
- イベントを開催してもコアグループ(主催者luccafort + onkさん)+αだけになってしまう
- アクティブグループをうまく形成できていない
引用: コミュニティ・オブ・プラクティス ナレッジ社会の新たな知識形態の実践
主催者であるぼくとコアグループのonkさんに共通した思いとして「もっといろんなエンジニアと交流することで技術を楽しみ、京都のエンジニア界隈を盛り上げたい」がありました。 そこで「もっと多くの、いろんな人に参加してもらうにはどうするといいだろうか?」と話しあい、当時行っていたイベントのスタイルを変えて、より参加しやすい形にチャレンジしようと話しました。
まずは、従来の「参加者が気になってる・困っているトピックを持ち寄って議論する」スタイルから現在の読書会スタイルに変えてみました。 また、読書会のスタイルも「誰かの発表を聞くだけ」や「黙々と本を読むだけ」では交流が生まれにくいと考え、パートを2つに分けようという話になりました。 前半では発表者が事前に読んだ章についてサマリーを話してもらい、後半では発表された中でわからなかったこと・気になったこと、自分も読んだが腹落ちしなかったことなどを相談する形式にしました。
このイベント設計の狙いは次の3つです。
- (参加者にとって)発表者以外は事前に読み込む必要がないため参加のハードルが低い
- (発表者にとって)発表者に回ることでわからないことや気になったことを質問、相談する主導権を得る
- (コミュニティ運営者にとって)後半の対話を通してコミュニティ間の交流が促される
参加者、発表者、コミュニティ運営者の三者にとって得るものがある状態を意識しました。 ずっとこの読書会形式にするつもりはいまのところないのですが、参加のハードルをなるべく低くしようということでこの試みを開始しています。
本当は4月から読書会をやろうかと計画していたのですが、RubyKaigi 2023の開催前だったことで「RubyKaigiの前夜祭をしたいね〜」という意見が出て急遽変更をしました。 6月から再始動しようかと思ったのですが、ぼくがリフレッシュ休暇で2週間ほど城崎温泉に引きこもることになっていたのでタイミングをずらして、7月から仕切り直そうということになりました。
(城崎温泉、とてもリフレッシュできて満足してるので気になってる方はぜひ足を運んでみてください!)
そして、7月1日に第1回となる【オフライン】Kyoto.rb Meetup 研鑽Rubyプログラミング 勉強会 を開催し、先日第2回となる 【オフライン】Kyoto.rb Meetup 研鑽Rubyプログラミング 勉強会 #2 を開催しました。
kyotorb.connpass.com kyotorb.connpass.com
読書会ということで内心「うまく盛り上がってくれるだろうか…?」と不安でした。 ところがこの心配は杞憂に終わりました。 参加したメンバーが積極的に発言してくれたり、個人としても知らないことを学ぶよいイベントになりました。
なにを持ってよいとするか?ですが主催者として以下の点が成功したと考えています。
- いままでKyoto.rbに参加したことがない人が参加してくれた
- 第1回参加者の honeniq さんが第2回で発表者にチャレンジしてくれた
- 第1回、第2回と連続で参加してくれる人がいた
- 懇親会でエンジニア同士で盛り上がれた
主催者として一番うれしいのは懇親会が盛り上がったことかなと思います。 もちろん継続的にイベントに参加してもらえたことも嬉しいのですが、エンジニア同士の交流が生まれ、楽しいコミュニティになることがコミュニティが活性化する一番の原動力だと考えています。 そういう意味ではうまくイベント設計で工夫した施策がハマってくれたのかなと感じています。
読書会を開催してみて……
第1回では自分が発表者だったので第一章 組み込みクラスを最大限に活用する に気になったことやわからなかったこと、理解はできるが腹落ちしていないことなどをざっくばらんに参加者の人へ投げかけることで「これはこういうことではないか?」や「実際に動かしてみるとこうなっているのでこれは正しいのではないか」などの議論がうまく活性化してくれた気がします。
特にメモ化に関する内容は読んでいて苦い思い出を思い出させてくれました。
「||= 」演算子を使った単純なメモ化に nilやfalseを返す式は使えない
実はぼくは過去にここで紹介されたサンプルコードのようなミスを実装した過去があります。 その後しばらくしたあとで「この実装はうまくキャッシュされていない」とバグ報告され、修正してもらったことがありました。 ですが、当時修正されたことはテストや実行結果から理解していましたが「なぜそうなっているのか?」の根本の理由を理解していなかったことがわかりました。 そういう意味ではなんとなくでわかったつもりになっていたことが後日、研鑽本を読むことで答え合わせができたことになります。 これは個人的に大きな出来事でした、反省……。
第2回はonkさんとhoneniqさんが発表者として立候補してくれたので参加者として純粋な立場で参加することが出来ました。 onkさんは第2章を担当し、honeniqさんは第11章のサマリーを担当してくれました。 発表する章に関しては「必ずしも章の順番通りにする必要はない(人によってはつまみぐいして章を読む可能性がある)のでどこの章担当してもいいよ〜」とお話していたのですが、思ったよりも早く実現しました。
honeniqさんのサマリーは第十一章 きちんとコードが動くことをテストするにかかれているので良ければどうぞ。 onkさんは資料を作成せず、即興でサマリーを話していて「この人の脳内メモリーはいったいどういう働きをしているんだ?」と思わずにいられませんでした。
ともあれ、発表を通して「あれ?これ聞いたことないぞ?」や「これは同意ですね」などの会話が生まれ、ゆるい読書会 + 対話としてうまく機能していると感じました。 一応、人見知りの方向けに気づいたことなどを付箋に書いてもらい、あとで議論するネタにしようと考えていたのですがほとんど発表を聞きながら、話していました。 これはこれでいいかなと思っています。
会話の中で「DIはなぜ必要か?」という疑問があるという話が出ました。 実際に研鑽本でも「DI(依存オブジェクト注入)自体は有用だが、Rubyにおいて他言語ほど重要でない」といった旨の内容が書かれており、ではなぜ必要なのか?という話などで盛り上がりました。 最終的にその場では答えが出せないながらもDIP(依存性逆転の原則)を守っていない話のブログを紹介してもらったりEnterpriseQualityCoding/FizzBuzzEnterpriseEditionを教えてもらうなど「知らないことを知る」機会に恵まれました。
その後、マネーフォワード京都拠点の近くにある居酒屋に場所を移し、懇親会を開始します。 マネーフォワード京都拠点の近くは繁華街なのでたくさんの居酒屋やバーなどが軒を連ねています。 以前からonkさんに「このあたり中々飲みに来ないので開拓したいんだよね〜」と言われていたので行ったことがないお店を中心にチョイスをしていました。 次回、懇親会会場のリクエストがある方はぜひ ruby-jp Slackの #kyoto チャンネルまでご連絡ください。
今回利用させてもらったお店はこちらです。
懇親会では以下のような話題で盛り上がりました。
- カンファレンスを盛り上げるためにどういう事前準備をしているのか?
- 仮に4万人の会社をマネジメントするとなったらどのような難しさや楽しさがあるか?
- M&Aをするとなぜ各社の文化を混ぜようとするのか?
- ぼくやonkさんが参加した当時のKyoto.rbについて
- 当時のKyoto.rbではあまり業務でRubyを書いている人がいなくて驚いたね〜という話をしていました。
などなど他愛ない話から業務に関係するようで関係しない話をざっくばらんにしました。
コミュニティを運営するまではこの懇親会で知らない人と会話するのがとても苦手だったのですが、必然的に自分が登壇者や運営者として率先して会話をしていくようになると逆にこの懇親会でのさまざまな話題を楽しいと感じるようになりました。 懇親会の会話が苦手だなと感じている方は運営に回ってみるといいのかもしれません。
ともあれ、2時間ほど飲み食いしながら会話を楽しみ、次回開催日を決めて解散となりました。
個人的なハイライトとしては、参加者全員で3/4名が9月9日に開催される大阪Ruby会議03の関係者だったことです。 運営者の方が1名、登壇者が2名というプレパーティーのような状態になっていて、面白かったです。
あ。せっかくなので宣伝なのですが「Reboot of one of the Ruby Community」というタイトルで大阪Ruby会議03に登壇することになりました。 当日はコミュニティマネジメントの難しさやご当地コミュニティが持つ魅力にフォーカスしてお話しようと考えているので少しでも興味があれば参加してもらえると嬉しいです。
大阪Ruby会議03に参加される方は以下のDoorkeeperからご応募ください。
そんなこんなで、いままでRuby関西やRuby舞鶴に参加できていないので参加してみたいなーと言う気持ちが強まりました。 遠征していろんなRubyistのお話を聞いていかないとなー。
rubykansai.doorkeeper.jp ruby-maizuru.connpass.com
まとめ
今回はマネーフォワード京都開発拠点を使ってご当地コミュニティの活動を支援しているぞ!というPRとKyoto.rbというコミュニティ活動をしてるのでもっと認知されて、いろんな方に参加してほしい!と思い記事を書きました。
Kyoto.rbでは対話が大事だと考えているので以下の画像のように臆することなく積極的に質問したり、感想を伝えたりしてほしいと考え、実践できる場を用意しています。
質問するやつはとにかく偉い #beyondmath pic.twitter.com/smW2K4i5tR
— 鯵坂もっちょ🐟『つれづれなる数学日記』好評発売中! (@motcho_tw) June 2, 2017
(引用元の発言をされたのはe2d3の五十嵐康伸氏( @b_t_budo )さんだそうです。画像は知っていたのですが今回始めて発言者の方のお名前を知りました。)
読書をするだけでは得られない栄養素をコミュニティに参加して感じてもらえると嬉しいです。
気になる技術書があればコミュニティのみんなで読めばいいし、登壇駆動読書をすると確実に理解が深まります。(※ 個人の感想です) 気になったことやわからなかったことをその場で相談してください! 普段RubyやRailsを使った開発をされていない方もウェルカムです、技術の話が好きなメンバーが集ってるので興味があればどうぞ!
京都にいるエンジニアともっと交流して、お互いに切磋琢磨したいのでこれからも月イチ開催していくぞ! 次回開催は8月25日です。9月9日の大阪Ruby会議も登壇するので遊びにきてね!
余談
先日Findyさんが主催されたイベントAaronさんとk0kubunさんに聞く!YJITを用いたShopify開発環境と海外アーキテクチャに参加し、アンケートに回答したところ、今回の研鑽本をいただくことができました。
おぉ…。この前のイベントアンケート回答したら研鑽Rubyプログラミングの物理本が当たった。
— luccafort (@luccafort) July 29, 2023
β版だけど電子書籍で読んでるのでこれは会社に寄贈しておこう。
ありがたい。#Ruby_findy pic.twitter.com/29Q0U5JhsJ
研鑽本を持ってないから参加しにくいな〜という方がいらっしゃったら限定一名さま限りでお貸しできるので気兼ねなくご参加ください。 最悪持っていなくても楽しめるイベントになっていると思うのでちょっとでも興味を持たれた方はKyoto.rbやマネーフォワード京都オフィスに遊びに来てください。