TamaRuby会議01参加レポート

はじめに

百川といいます。フィヨルドブートキャンプに在籍している大学生です。 今年3月頃からTama.rbにも参加しています。 Ruby歴は8ヶ月くらいです。

まとめ

さて、7月6日に開催されたTamaRuby会議01に参加しました。

テーマは「Rubyistとしての成長」ということで、 「どんなときに成長を感じたのか」であるとか 「壁にぶつかったけど、このように乗り越えた」といった体験談を きくことができました。

特に後者は、自分を励ましてくれました。

どんな人でも壁にぶつかるけれど、 経験年数が豊富な人ほど、問題を切り分ける力があるように感じました。

また、問題を切り分ける力というのは、 「インプットを活用」したり「全くわからないから人に聞いたり」したりして、「あたり」をつけてから、 問題箇所を細かく見ていく力だと考えました。

問題を切り分ける力をつけていくために、書籍やリファレンス等からインプットしたり、質問力をつけたりしていこうと思います。


以下は発表の振り返りです。掲載は発表順です。

なぜテストを書くの?(または書かないの?) 〜テストコードの7つの役割〜 by 伊藤淳一さん

テストが書けない要因を分析しよう

テストが書けない要因には、大きく分けて2通りあります。

  • テストの記述方法がわからない
  • どんなテストを書けばいいかわからない

前者は記述方法を調べれば解決できます。 問題は後者です。「どんなテストを書けばいいかわからない」はさらに噛み砕いて、

  • テストを書くこと自体が目的になっていないか
  • テストを書く方針は定まっているか

などを確認する必要があります。 これらは記述方法を習得するだけでは解決できません。

「テストが書けない」を脱却するために、 前提知識としての「テストコードの7つの役割」を解説していただきました。

テストにつまづいたとき、それを乗り越えるための、本質的なお話をきくことができました。

プロになるためのレビューのススメ by konchanさん

reviewer / reviewee 双方の経験を振り返って、レビューがどのように成長の糧になったかをお話されていました。

私はrevieweeの立場として、先輩からRubyらしいコードの作法を学び、成長に繋げていこうと思います。

OSS初心者がつまづきながらOSSマナーを学んでいく話 by fuqdaさん

Tama.rbオーガナイザーfuqdaさんによる、OSSコントリビュート体験談です。 「(OSS活動を)一人でやるのは不安...そんな方は!コミュニティにおいでよ!」というメッセージに胸が熱くなりました。

実は私も、Tama.rbのメンバーとしてOSSコードリーディング部に参加させてもらっています。ついていくのが精一杯の状態ではありますが、継続してOSSのコードを読んでいこうと思います。

brainf*ck処理系で理解するパターンマッチングをつかった疎結合な実装 by expaさん

brainf*ck処理系にパターンマッチングの適用を試みて壁にぶつかった一方、 パターンマッチングがどんな場面で有効に働くのかを明らかにしたというお話です。

入力値がわからない状況では、出力側でパターンマッチングを用いると疎結合な実装にできるとのことでした。

こわくないDSL by kenさん

DSLを読みたいけれど、魔術盛り沢山で読むのがこわい...... そこで別のアプローチとして、DSLを読むためにDSLを書いてみたお話でした。 「読むために書く」の本質に気付かされたセッションでした。

ぼくらのリファクタリングは裏切らない💪by ほたてさん

リファクタリングはいいぞ!というお話です。 リファクタリングの手法をモブプロ形式で学ぶ「整地部」の活動を初めて知りました。

すこし話が脱線します。

イベント後日、整地部についてフィヨルドのslackチャンネルでつぶやいてみました。

Slack_-_FJORD__LLC.png (97.3 kB)

これを契機に話が発展して、フィヨルドでも「モブプロ会」の開催が決まりました。

(詳細については、メンターの駒形さんが記事をあげてくださるそうです。記事が出たらここにもリンクを貼ります)

ほたてさん、きっかけをくださりありがとうございます。

たのしいOSSコードリーディング: Let's read "cookies"🍪by しおいさん

クッキーの内部処理を追ったお話です。 しおいさんのすごさは、「論理的に読解する」「わからない箇所は知見のある人にきく」「理解した内容を噛み砕いて発表する」のサイクルができているところだと思いました。

コードを「見る!書く!見てもらう!」で爆速ステップアップ!(仮) by s_naga03さん

konchanさんに続き、コードレビューはいいぞというお話です。 私もrevieweeとして、「直すべき理由を理解して修正する」の繰り返しをやっていこうと思いました。

Dartに浮気したらRubyは最高だと再認識した話 by まきさん

Dartで日付操作がやりづらく業務で困ったので、日付計算のライブラリを作成したというお話でした。

pub.dev

ライブラリのおかげで、Dartでも「1ヶ月後の日付がほしい」と問うだけで1ヶ月後の日付が返ってくるようになりました。 「期待する値を、直感的に取得できるところ」にRubyのたのしさがあるのだと感じました。

WebAssemblyをRubyコンパイルする黒魔術コード完全解説 by ありたそさん

wagyuの黒魔術を解説するお話でした。 (wagyuは、WebAssemblyをRubyコンパイルするgemです。) 条件分岐への深い理解が求められる、非常にテクニカルな内容でした。

RubyistのためのElixir入門(以前) by tsukaさん

(スライドが公開され次第、掲載します)

違う言語を使ってみることで、Rubyの特長を知ることができます。そして、次の言語としてElixirがおすすめだよ!というお話でした。 ご紹介にあった『プログラミングElixir』は、RubyKaigi2019の「Ruby Committers vs the World」でも話題に上がってた本ですね。

成長を期待しない目的志向実践のススメ by かつまたさん

成長を感じるには、「なりたい姿(目的)」を絞って取り組むことが重要というお話でした。 取り組みそのものよりもむしろ、目的を絞ることこそが一番の難関だなあと感じました。

東京地域Rubyコミュニティ大全 by 大倉さん

様々なコミュニティに顔をだしている大倉さんによる、地域コミュニティ解説です。 まだコミュニティに参加したことがない人にも、すでに何らかのコミュニティに参加している人にも、 「こんなコミュニティがあるんだな、参加してみよう!」と思わせてくれるような内容でした。

私はTama.rbに参加するようになってから、知り合いが増えたことで、他のコミュニティにも参加しやすくなりました。

白魔術師への道 by igaigaさん

本セッションにおいて、白魔術とは「デバッグにつかう魔術」を指します。キャッチーなネーミングですね! 勇者igaigaさんによる、3本立ての白魔術講座でした。

オブジェクトと会話する編

オブジェクトに対して、「どんなメソッドを持っているの?」「どこからきたの?」と問いかけたいときに、具体的にどんなメソッドで聞けばよいのかを学びました。

盗まれたインスタンス

TracePointをしかけて、指定インスタンス変数に対する代入を検知します。

手順は大まかに分けると3段階です。 1. ソース、ASTを取得して、「インスタンス変数への代入」を検知する 2. インスタンス変数を調べて、「指定インスタンス変数に対する代入」を検知する 3. コントローラーだけでなく、ビューからも検知できるようにする

なにがうれしいの?

インスタンス変数への不正な代入が、どこでおこなわれたのかを可視化できます。

データが入っているはずなのになぜか値が空になっているとか、 期待する値となぜか違う値が入っているとかいう場面で、原因探求に役に立ちます。

白魔術概論

その他の白魔術として、pメソッドの通知版g gemでのデバッグなどをご紹介いただきました。

白魔術師への道のりは長い

内容自体は非常に難しく、TracePointを使いたくなったときはじめて理解が進みそうという感触でした。

だだ一方で、単純に白魔術師カッコいい!と感じました。入門からやります。

おわりに

登壇者のみなさん、Tama.rbのみなさん、お疲れ様でした。 私にとっても初の地域Ruby会議でした。たくさん発表をきき懇親会にも参加し、充実した1日を過ごすことができました。