RubyKaigi2022楽しんでますかー?私は楽しんでます!
はじめに
※RubyKaigi2022 noteのエンジニアとして参加してますので、一応最初に。
→ ブース出してますので、興味ある方お話しましょう!採用積極的にやっております m(_ _)m
WebAssembly試した記事があります。動くコードが公開されているのでどうぞ。というかindex.htmlの<script type="ruby">であまりに簡単に試せますし、記事とか良いのでWasmを是非お試しください。
Day1, Day2 終わりまして、個人的なホットトピックの発信です。
ホットトピック
Ruby meets WebAssembly @kateinoigakukun
事前にちょっと触ったり、サンプルコード動かしてたときは
<script>
const res = vm.eval(`
%w(C C++ Rust Ruby).sample
`)
</script>
のような書き方をしてましたが、ライブではもはや
<script type="ruby">
でした。もうシンプルにいいですね。
wasmのアプローチはプロダクトのRubyのバージョンが3.2まで上がるのを待つ必要もありませんので、クリスマスからプロダクトで使えると言っても過言ではない。セッションの雰囲気からはもうブラボーでしたが、実装の話にはいった瞬間の「オ、オウ…」感も予定調和でした。
Types teaches success, what will we do? @fugakkbn
この中でRubyの型を使っている方はいますかー?
この中でTypeScriptを使っている方はいますかー?
からはじまったセッション
gem_rbs_collection 非常にいいですね。
私個人はかなりライトなエディタを使用しているため、あまり型の恩恵が受けづらく、あまり積極的に触ってなかったのですが、セッションでは型の普及的にややネガティブな感じでしたが、かなりrbsの対応が進んでる印象受けました。
ActiveRecord, ActiveSupportなどディレクトリ切られていて、いくつかのメソッド対応されていました。
Rubyの型はオプショナルです。なので基本的には書きたい人が書けば良いスタイルですが、これらのgem_rbs_collectionは導入するメリットしかないものになります。Rubyの一つのアプローチとしては「こういうメソッドあるだろう 」からググって「やっぱりあったな」という開発体験が結構あります。簡単便利なメソッドが数多く提供されている反面、書き手に想像力を求めるというか、知らないメソッドは結構多いです。デバッガから puts str.methods のようなことはよくやるのですが、特にRuby初学者に求めるアプローチではないかなと思います。ドキュメントを片っ端から読んだり、ソースコードを読むようなアプローチも大変です。IDEのサポートはかなり大きな力になるのではないでしょうか。
Ruby Committers vs The Worldにて
Ruby Committers vs The World はRubyコミッターがあれやこれや話したり、しばしばフリースタイルのバトルが繰り広げられたりするセッションなんですが、その一幕で
「標準ライブラリRBSの本体リポジトリへの取り込みしたいよね」
「Approval ( Matz )」
ここは結構熱い話で、Arrayなどの標準メソッドはなかなか量のメソッドがあります。
> [].methods
=> [:inspect, :to_s, :to_a, :to_ary, :frozen?, :==, :eql?, :hash, :[], :[]=, :at, :fetch, :first, :last, :concat, :<<, :push, :pop, :shift, :unshift, :insert, :each, :each_index, :reverse_each, :length, :size, :empty?, :find_index, :index, :rindex, :join, :reverse, :reverse!, :rotate, :rotate!, :sort, :sort!, :sort_by!, :collect, :collect!, :map, :map!, :select, :select!, :keep_if, :values_at, :delete, :delete_at, :delete_if, :reject, :reject!, :zip, :transpose, :replace, :clear, :fill, :include?, :<=>, :slice, :slice!, :assoc, :rassoc, :+, :*, :-, :&, :|, :uniq, :uniq!, :compact, :compact!, :flatten, :flatten!, :count, :shuffle!, :shuffle, :sample, :cycle, :permutation, :combination, :repeated_permutation, :repeated_combination, :product, :take, :take_while, :drop, :drop_while, :bsearch, :pack, :entries, :sort_by, :grep, :find, :detect, :find_all, :flat_map, :collect_concat, :inject, :reduce, :partition, :group_by, :all?, :any?, :one?, :none?, :min, :max, :minmax, :min_by, :max_by, :minmax_by, :member?, :each_with_index, :each_entry, :each_slice, :each_cons, :each_with_object, :chunk, :slice_before, :lazy, :nil?, :===, :=~, :!~, :class, :singleton_class, :clone, :dup, :taint, :tainted?, :untaint, :untrust, :untrusted?, :trust, :freeze, :methods, :singleton_methods, :protected_methods, :private_methods, :public_methods, :instance_variables, :instance_variable_get, :instance_variable_set, :instance_variable_defined?, :remove_instance_variable, :instance_of?, :kind_of?, :is_a?, :tap, :send, :public_send, :respond_to?, :extend, :display, :method, :public_method, :define_singleton_method, :object_id, :to_enum, :enum_for, :equal?, :!, :!=, :instance_eval, :instance_exec, :__send__, :__id__]
# たくさん!
今までは、使ってれば覚える。だったのがはじめから使えるようになるわけです。壇上でApprovalでたのはちょっと胸が踊りました。
あと、ナンバードパラメータ、はじめ見たとき_1, _2はいまいちだなぁ、、使わないかもと思ってたけど、すっかり気に入っています。(itはどうしてもrspecが、、)
いちおうフリースタイルの様子を貼っておきますね。
お弁当おいしい
毎晩RubyKaigiが盛り上がってます
三重は魚もお肉も美味しくてほんと良いところです。
コミッターのみなさん
サポーターのみなさん
シャトルバスなど手配してくださったスポンサーの方々
ありがとうございます!楽しんでます!
ひとまずmatzからの宿題を終わります!
明日もよろしくお願いします!