TokyoWomen.rb #1に参加しました!
3/1(土)に開催されたTokyoWomen.rb #1に参加してきました。
会場は六本木グランドタワー8階のSmartHR Spaceでした。
オープニングで説明があったのですが、元々はTokyoGirls.rbという名前のイベントだったものをTokyoWomen.rbに変更してリブートされたみたいです。
名前にWomenと入っていますが、登壇者が女性限定になっているだけで参加については男性でも大丈夫でした。
印象に残ったセッション#
Ruby でつくる CLI 横スクロールアクションゲーム〜Road to RubyKaigi〜#
すごく楽しみにしていたセッションの1つでした!
「バグを倒して締め切りから逃れてRubyKaigi参加を目指す」というコンセプトが面白かったです。
端末ゲームプログラミングの要素としてアニメーション、入力、ゲームループがあるということを知りました。
入力には2種類あり、改行した時に入力文字を送信する「Cookedモード」と、入力文字列を入力直後に送信する「Rawモード」があるということを知りました。
普段は全然モードのことを意識していなかったのですが、プログラミングでTerminalを使う時はCookedモードを使ってコマンド実行をしていたということに気づきました。
実践編ではレイヤー合成と、物理シミュレーションのお話がありました。
物理シミュレーションの話に一番興味を惹かれ、自分でも実装してみたいなと思いました😃
コードもGitHubに上げられているので、参考にさせていただきたいと思います。
この発表を聞いて、Chromeブラウザでできるchrome://dino/のようなランゲームをCLIで作ってみたくなりましたー!
推しメソッドsource_locationのしくみを探る - はじめてRubyのコードを読んでみた#
Method#source_locationについてのお話でした。
僕は、最近Rails のコードを読むという本を読んでいて、このメソッドについて知りました。
nobu09さんのセッションでは、このメソッドの便利ポイントとして「どこで定義されたか分かりにくい動的に定義されたメソッドやgemのメソッドの定義もすぐ特定できる」と説明されていて、「なるほど!!」と思いました。
動的に定義されたメソッドは文字列検索をかけても結果にひっかからないし、RubyMineの定義元にジャンプする機能も使えないしで、結構困っていました。使いどころまで説明してくださっていて、ありがたいです。
GitHub上のRubyリポジトリをクローンして、ChatGPTやGitHub Copilotを使って質問をしながらC言語で書かれたsource_locationの理解をしていく説明がとても参考になりました。
methodメソッドはKernelモジュールに定義されているのですべてのオブジェクトで利用できるようですが、C言語ではMethodだけではなくProc, UnboundMethod, Bindingクラスにも定義があるというのが面白かったです。
Rubyのコードは一度ISeq(命令シーケンス)に変換されてから、Ruby VMで解釈・実行されるみたいですが、この辺りで自分のキャパを超えて理解できなくなってしまいましたw
nobu09さんのセッションを聞いて、まずはsource_locationを使いこなせるようになったり、Rubyのクラスについて勉強する意欲が出てきました!
たのしいSocketのしくみ / Socket Under a Microscope#
このセッションを聞く前に、先月2/1(土)にフィヨルドブートキャンプ内で開かれたワークショップ『Rackを理解するための技術ハンズオンワークショップ』に参加してRackについて学びました。
そのワークショップ内でRackサーバを実装する際にSocketライブラリを使ったのですが、そのことがきっかけで自分がサーバーやネットワーク技術に興味を持っていることに気づき始めました。
なので今回の塩井さんのお話をめっちゃ楽しみにしていました!
サーバプログラムとクライアントプログラムをどちらもRubyで実装して実行するデモを見て、テンションが上がりました😃
セッションを聞いている際はSocketについての雰囲気を知れたくらいなので、登壇資料を読みながら自分でも手を動かして理解を深めたいと思いました。
Rails 1.0のコードで学ぶfind_by_*とmethod_missingの仕組み#
maimuさんが開催されているしんめ.rbで行った、Rails 1.0のコードリーディングで面白いと感じた部分(find_by_*とmethod_missing)、面白いと感じた理由についての発表でした。
今のRailsのActiveRecordだとfind, find_by, whereが使えますが、Rails 1.0はすべてfindで表現されているというのが面白かったです。
findだけで表すのは大変なので、今でいうfind_byの機能を使いたい場合はfind_by_attr1_and_attr2のように書ける。
これはメソッド定義されていないので、 method_missingで実装されているということでした。
面白いと感じた理由を「今は当たり前にあるメソッドがなかった当時特有の背景」「仕事では使われないmethod_missingを使った実装」「find_by_*は今もあるけど実装方法が違う。Railsの変遷」のようにしっかり、言語化されているのが素敵だなと思いました!
実は自分もちょうどこのRails 1.0コードリーディングの勉強会に参加させていただき、Railsのコードリーディング自体も初めてだったのですが、とても楽しかった記憶があります😃
一人だと絶対読めなかったのですが、maimuさんや他の参加者の方々と一緒に読んで雰囲気だけでも理解できたのがすごく嬉しかったです。
今回のセッションでは、どこが、なぜ面白かったのか分かりやすく言語化されていて、参考にさせていただきました。
基調講演: Rubyと自由とAIと#
Rubyはよく自由度が高い言語と言われていて、この文脈での自由は「技術的な自由」を表わしている。
もう1つの自由として「社会的な自由」があり、こちらは「技術的な自由」に誰でもアクセスできる自由のこと。
とても印象に残ったのが、「Rubyは本質的に「自由」を求める。ゆえにRubyコミュニティは社会的な自由も実装しようとする」という言葉でした。
自分が感じていたRubyコミュニティの居心地の良さが、自分がRubyコミュニティを好きな理由が「Rubyコミュニティは社会的な自由も実装しようとする」という言葉で表され、すっきりしました。
あまり他のコミュニティに参加したこと無いのですが、Rubyコミュニティは比較的女性の割合が多いと聞いていて、そういう意味では「社会的な自由」度も比較的高いと思っていたのですが、 むしろTokyoWomen.rbのように「社会的な自由も実装しようとする」姿勢のおかげで比較的に社会的な自由度が高くなっているんじゃないかなと思いました。
まだ自分の中で言語化し切れていないのですが、「技術的な自由」と「社会的な自由」の関連性のお話はとてもおもしろくて、「社会的な自由」に関しては、自分が気になっている言葉「無名の質」に似た考え方のように感じました。
さいごに#
今回のTokyoWomen.rb #1に参加申込みをする時、まだ男性の参加登録者が少なくて、少し躊躇しました。
他のイベントではあまり男女比やそもそも参加者の性別を意識したことがなかったのですが、それは男性が多いコミュニティに慣れていたからかもしれないということに気づきました。
そういった意味で、TokyoWomen.rbのようなイベントを通じて今まで参加しづらかった女性がRubyコミュニティやカンファレンスに参加しやすくなるのはとても良いことだと思います。
今回のイベントではしくみを知るためのセッションが3つもあり、とても面白かったです!
改めて、コードが動く仕組みを知ることが好きということや、サーバーやネットワーク関連の技術が好きだという気づきがありました。
また、去年の夏頃からいろんなRuby系イベントに参加するようになって、最近はLT登壇もしたいと考え始めているため、皆さんの発表内容をすごく参考にさせていただきました。
懇親会でも色んな人と話したことで多くの気付きが得られたり、久しぶりに話せた人もいてとても楽しかったです。
運営、スポンサー、参加者の皆様ありがとうございましたー🙌