今月も地域Ruby勉強会の Kashiwa.rb をやってきました。
Kashiwa.rb #11 LT会 & Extreme Fish Bowl - connpass
前半 LT 会、後半はみんなでコードを書きながらワイワイしたいなってことで Extreme Fish Bowl を企画してみました。
LT 会
発表者は shilo さんと私の2名、私は最近触っている Steep について発表させてもらいました。
この後にやる Extreme Fish Bowl でも Steep 動かせたりしたら面白いんじゃないかな〜という思惑が少しあったのですけど、そういえば結局 Steep はやらなかったなと今文章書いてて思い出しました。
とは言え、ちょっとした書き捨てのスクリプトでも Steep 使いたくなることもあるよな〜(本当か?)という想定でコピペもしやすいように README を書いたリポジトリもあるので共有しておきます。
GitHub - kozy4324/steep-getting-started
Extreme Fish Bowl
後半小一時間ほどは Extreme Fish Bowl でペアプロしながらコードを書きました。
Extreme Fish Bowl については以下ブログを参考に。
Repro様とExtreme Fish Bowl を開催しました - ESM アジャイル事業部 開発者ブログ
何のプログラムを書いたのかというと Project Euler というサイトのプログラミングクイズに取り組みました。
実際に書き上げたコードはリポジトリに push してあります。
以下、やっている最中の感想などをつらつらと。
VSCode LiveShare でコード共有する Extreme Fish Bowl は快適だった
実は Extreme Fish Bowl は人生2回目、1回目は6年ほど前の Shinjuku.rb でやりました。説明しているブログ記事にもこう書いてあるのですが、
その場にいる全員の中でペアを組み、1台のマシンを使ってかわるがわるペアプログラミングをしていきます。
コード共有すれば1台のマシンでやる必要もないよねっていうことですね。
強制5分でペアプロメンバーが次々に入れ替わっていくのですが、常に自分のPC上のエディタでコードを開いているのでコンテキストスイッチの切り替えなくドライバーにスムーズに入っていけたな〜というのが気づきでした。
配列要素の足し込みは #sum で 1発だった
自分、よく #reduce を使いがちなのですが、
a.reduce(0) { |sum, it| sum + it }
#sum で1発なんだよなってのを他の人が書いているのをみて思い出しました。
a.sum
Array#sum (Ruby 3.4 リファレンスマニュアル)
Prime.prime_division 初めて使った
素因数分解 1発で求めるメソッドあったんだ...
Prime#prime_division (Ruby 3.4 リファレンスマニュアル)
こういった気づきがあるので「ペアプロ面白い」って毎回なります。
処理効率は一旦忘れてパッとロジックを考えるの楽しい
例えば「ある文字列が回文 (Palindrome) かどうかを判定するメソッド作ろう」となった時に、「 reverse してイコールなら回文では?」という誰かの発言を受けてできたメソッドがこれ。ほぼワンライナー。
def kaibun?(s) s == s.reverse end
やりたいことが簡潔にRubyらしく書けると気持ちいいポイントですよね。モブプロするとそういった視点が誰かしらから出てきてコーディングが進んでいくのでとても勉強になります。
次回の柏.rbは6月第3週ぐらいを予定しています
なんと次回で勉強会立ち上げてから丸1年経過します。少しでも興味を持ってもらえたならばご新規さんでもふらっと足を運んでもらえると喜びます(僕が)。引き続きよろしくお願いします。