はじめに
RubyKaigi2022にオンラインで参加してきました。
私自身のRubyを業務で使った経験は1年半ちょっとです。
そのうち半年は一人で開発をしていたのでほとんど独学で、今の職場で色んなRubistに出会って改めて学び直してる途中です。
なのでRubyとはまだそこまで仲良くない上に、初めて参加したRubyKaigiでしたが多くの学びが得られた良い体験でした。
発表
全体スケジュールは以下です。
https://rubykaigi.org/2022/schedule/#day1
Ruby meets WebAssembly
簡単に言えば、JavaScriptのようにRubyをブラウザ上で実行が出来る仕組みです。
恥ずかしながらWebAssemblyも盛り上がってることは知っていたのですが、これがどれくらいすごい事なのかはちゃんと実感出来ていないです。
自分はRubyだけではなくプログラム自体仕事の手段としてしか考えたことがなく、Keynote SpeakerのYuta Saitoさんの取り組みには想像以上の刺激をもらいました。
エンジニアとしての成長は、どれだけお客さんや誰かの要望を技術で実現できたか、それだけその成果を最大化していけるかだと思っていました。
Yutaさんからはそもそも技術自体を成長させる事で、その技術を持って実現できる世界の可能性が広げられるという事を教わった気がします。
そしてその可能性をどれだけ広げられるかを探求していく事の面白さや凄さ、具体的な取り組み方を未熟ながらも教えてもらえたセッションだったと思います。
↓ここで体験できます。
https://irb-wasm.vercel.app/
TRICK 2022 (Returns)
Trickとは「Transacendental Ruby Imbroglio Contest for RubyKaigi」
簡単にいうと「超絶技巧 Ruby 意味不明コンテスト in RubyKaigi」です。
↓ここに実際入賞した作品が上がっているのでぜひ見てもらいたいのですが、終始「訳分からんw」という状態です。
真面目な感想で言うと、Ruby自体がとても自由な言語であるからこそ、Rubistの発想もとても自由で、こう言う取り組みでワイワイ出来ているのだと感じました。
Matz Keynote
言わずと知れた、Ruby言語の生みの親「まつもとゆきひろ」さんの講演でした。
映像トラブルなどがあり、途中までしか聞けなかったのですが、一言で言えば「Rubyへの愛が溢れるKeynote」でしたね。
言語を開発することがまだ想像が私には出来ないのですが、Matzさん自身が本当にRubyをとても愛している事が伝わり、それがコミュニティや利用者に伝わっているから長く愛されている言語となっているのだなと思いました。
Why is building the Ruby environment hard?
このセッションではとても大事なパワーワードが生まれました。
ソフトウェアは何もしないと壊れる
見ての通りKさんにとても刺さったみたいでして、私もこのワードはメンテの大事さを一言で表していて素晴らしいワードだなと思いました。
[The Better RuboCop World to enjoy Ruby] (https://rubykaigi.org/2022/presentations/nay3.html#day3)
全セッションの中で、個人的に一番面白かったのはこのセッションでした。
RuboCopのような静的解析はとても素晴らしいツールであると同時に色々と良くない影響も与えちゃってる現状があるよねというお話です。
大場さんのスライドにあった以下のワードが印象的でした
スキルのある人はRuboCopを使っていてもRubyを自由に楽しめるが、スキルのない人はRuboCopに強く制約される。
今まで様々な現場で静的解析を使っているのを見てきましたが、当たり前のように従うものだったのでカスタマイズする認識が全くありませんでした。
また私はRubyに本格的に触れたのも今の職場からなので、どうRubyを書くべきかの指針としても頼っている存在でして、現在のRuboCop設定に対して意見が生まれる以前の問題です。
つまり私が今の職場でRuboCop設定に対して何も疑問が湧かないのは、まだまだRubyのスキルが足りてないからだという事です。
これは決して悲観する事ではなく、自分にまだまだ伸び代があったという事です。
また大場さんが提案されていた話で、参考レベルと、強制レベルのRuboCop制約を用意するという事も参考になりました。
単純な話ですが、 .rubocop.yml
をそれぞれのレベルでファイル単位で分けて管理してしまおうって話ですね。
言われてみれば簡単な話ですが、「じゃあどれを強制でどれを参考レベルにする?」って議論はとても難しい話ですぐに出来ることではないですね。
おまけ
Slack上での盛り上がり
社内の同じ部署で数名RubyKaigiに参加しており、オンラインとオフラインで参加方法はそれぞれでしたが、RubyKaigi用のSlackのチャンネルで画像のように3日間ずっとワイワイ実況しながら参加できました。
※Yさんはオフライン参加、Kさんと私はオンライン参加でした。
飯テロ
オフライン組がランチのお弁当や夜のお店で食べた料理の写真をいっぱい投稿してくれたのですが、とにかく美味しそうでしてただただ羨ましかったです。
特にランチの松阪牛!!!
次回は私もご飯のためにオフライン参加します。
まとめ・感想
まずRuby界隈、とても盛り上がっている事を肌で感じました。
最近は 「今の時代Goだ!TypeScriptだ!」 とか思っていたんですが、あの盛り上がりと登壇してる方の熱量を感じて、全くの勘違いだったなと。
Rubyとても自由な言語であるという事、コミュニティメンバーの熱量がハンパない(語彙力)、言語開発者のMatzさんがRubyを愛していること(これが一番大事)、これらをRubyKaigiを通してひしひしと感じまして、こりゃ長く広く愛される訳だし、これからも愛され続ける事は間違いないなと実感しました(何目線だよって感じですいません)。
そしてもう一つ強く感じたことは、自分自身がまだまだRubyと仲良くないこと。
仲良くなれたとは思っていなかったのですが、思った以上に片思い、なんならあちらは私を認識さえしていないぐらいの他人感です。
それぐらい今回のRubyKaigiではちゃんと理解できた事が多くなくて、「なるほど、そういう事もあるんだなー」という感想がほとんどでした。
そのセッションで話した事がどれくらい素晴らしいことなのか、あんまり良くないことなのかをちゃんと判断できた事は多くなかったです。
それぐらい差を感じて、自分の勉強不足を痛感し、積読していたメタプログラミングRubyを早く読めという天命を受けた気分です。
大場さんのRuboCopの話でも感じたのですが、何か意見を持つためにはその事に対してもっと知らなきゃいけないですね。
幸いにも今の職場にはRubyのOSSコミッターもいますし、経験豊富な先輩がたくさんいるので毎日たくさん勉強させてもらっています。
「喧嘩できるほど仲がいい」とは良く言ったもんで、もっとRubyさんとたくさん会話して、たくさん 殴り合って 喧嘩して、もっとRubyさんと仲良くなって次回参加(リベンジ)したいです。