1月11日にOmotesando.rb #93に参加しました!
【オフライン開催】Omotesando.rb #93 - connpass
前回が初めてで今回は2回目の参加でした!
参加しての感想&自分で調べたことを記録しています。
間違い等ありましたらコメントいただけたら幸いです。
会場提供:wantedly様 Oshiumiさん
選考前と入社後のプロダクトを作っている。
システムの多くはRuby、サービスによってGo、Pythonも。
元々がRailsができている。
Wantedly Engineering Handbook - Wantedly Engineering Handbook
エンジニアを積極採用中とのことでした!
リサさん
「N+1問題が起こる原因について調べてみた」
自分もよくN+1問題対策を忘れて引っかかっていた部分でした。
最近Railsから離れていてちょっと忘れかけている部分だったので、また調べて思い出さないとなと思いました。
Active StorageのN+1問題を解決する - 時々とおまわり
Active StorageのN+1問題を解決する #Ruby - Qiita
each文がN+1を引き起こす原因なのではなく、each文の中で、articleに紐づいている、userのデータを毎回取得しにいっていることが原因
自分の予想、過程、結果ととてもわかりやすいLTで、堂々と発表されていてかっこよかったです!
自分もわからないを放置しないようにして、自問自答しながら理解していきたいなと思いました。
神速さん
「LTの敷居を下げる」
先ほどの資料をアップロードしました。 / LTの敷居を下げる https://t.co/CsEHkSpWvz #omotesandorb
— 神速 (@sinsoku_listy) 2024年1月11日
「話すネタがない」のところの、
Ruby関連で新しく覚えた何かを話すくらいの気持ちで良い
というのが印象的でした!
「Omotesando.rbに初めて参加した人、Rubyを使い始めて3年未満の人は手をあげて〜」と声がかかると、
自分含めたけっこうな人数の人が手をあげていて、
「Omotesando.rbに初めて参加する人も多いし、RubyやRailsの経験が浅い人も多いから、LTもそんな難しく考えなくて良い」とおっしゃっていました。
「みなさん全員Rubyをずっとやってきているベテランの方々ばかりなんだ」と勝手にイメージしていたので、ちょっとだけLTが身近に感じられるようになりました!
そして最後に教えてくださったメソッドは、私はmap
しか知らなかったので、勉強になりました!
flat_map
:Enumerable#collect_concat (Ruby 3.3 リファレンスマニュアル)
filter_map
:Enumerable#filter_map (Ruby 3.3 リファレンスマニュアル)
まいむさん
「Rubyメソッドの勉強 紆余曲折」
今年初LT発表しました!
— まいむ (@maimux2x) 2024年1月11日
自分に合った勉強法を模索した話です〜!https://t.co/dzyVA5oX6I
#omotesandorb
勉強してもすぐに忘れる…
めちゃくちゃ共感しました!
こないだ見たはずなのに「なんだっけ…?」みたいなのが頻発しているので、まいむさんのLTはとても参考になりました!
私はどれもやったことがないのですが、
みなさんこうやって試行錯誤して努力されてスキルアップしているんだなと思ったので、
自分もなにか工夫してやってみようと思います!
Hamaさん
「ActiveModel::APIで使用されるゲッター・セッターメソッドについて」
先ほどの資料をアップロードしました/ActiveModel::APIで使用されるゲッター・セッターメソッドについて#omotesandorbhttps://t.co/1MYEiSOkVA
— Hama (@akmhmgc) 2024年1月11日
現地では全然ついていけませんでした。
セッターメソッドの方が簡単だったとおっしゃっていたので、自分はセッターメソッドをHamaさんのLTを参考に追ってみることにしました。
------以下自分の勉強過程------
class User include ActiveModel::API attr_writer :name, :age end User.new(name: '太郎', age: 20) #=> <User:~ @name='太郎', @age=20>
上記ではnew
したときに引数にメソッド名を:
で渡すと値が該当するインスタンス変数に入る。
これがなぜ起きているのかを見に行く。
ActiveModel::API
initialize
メソッドはActiveModel::API
の中にある。
rails/activemodel/lib/active_model/api.rb at 36c1591bcb5e0ee3084759c7f42a706fe5bb7ca7 · rails/rails
そのなかにassign_attributes
メソッドがあるのでその中へ。
rails/activemodel/lib/active_model/attribute_assignment.rb at main · rails/rails
最終的には以下にたどりつく。
rails/activemodel/lib/active_model/attribute_assignment.rb at main · rails/rails
def _assign_attribute(k, v) setter = :"#{k}=" public_send(setter, v) 略 end
このk
にname
、v
に'太郎'
が入る。
setter = :"name="
となりこれがpublic_send
メソッドに送られる。
Object#public_send (Ruby 3.3 リファレンスマニュアル)
オブジェクトの public メソッド name を args を引数にして呼び出し、メソッドの実行結果を返します。
name:文字列かSymbol で指定するメソッド名です。
第一引数にシンボルを入れるとそのメソッド名を呼び出して第二引数をそのメソッドに渡すのでname=
メソッドが実行され'太郎'
が渡された。
結果new
したときに@name='太郎'
となった。
------ここまで------
今回メソッドの中にどんどん潜って見にいくことをしたのは初めてだったので、コードを追っていく過程はとても勉強になりました!
ありがとうございました!
自分にはセッターメソッドの方ですらなかなか難しかったのでゲッターメソッドはいずれ追ってみたいと思います。
kishimaさん
「Now is the time to create your own (m)Ruby computer」
今日は #omotesandorb でLTを。ネタはRubyKaigi Takeout2020のものです。一部の方には刺さったようで嬉しいです。当時のスライドを日本語に訳したので、アップしておきました。https://t.co/TwYi1ujtpK https://t.co/azuE1lo9Mr
— kishima (@kishima) 2024年1月11日
コンピュータを作る実際の手順を説明してくださっていて、とても難しかったですが興味深かったです!
今回はmrubyでアプリケーションを書いたとのことでしたが、mrubyがあまりわかっていなかったので調べました。
チェリー本に以下のようにありました。
Rubyには複数の処理系(複数のRuby実装)があります。公式かつ最もポピュラーな処理系は、C言語で実装されたMRIです。
ほかにも、Javaで実装されたJRubyや、GraalVM上で動作する高速なTruffleRuby、Restで実装されたArtichoke、RubyスクリプトをJavaScriptにコンパイルできるOpal、組み込みシステム向けのmrubyなど、さまざまな処理系があります。
mrubyの特徴としては、以下があるようです。
CPUやOSに依存せず、省リソース且つ省メモリでの環境で実行ができる
C言語との高い互換性
アプリへの組み込みが容易
拡張しやすい
「mrbgems」を使って自由に拡張できる
mruby 最新情報 | OSSサポートのOpenStandia™【NRI】
Rubyの処理系のことはあまり知らなかったので、今後勉強してみたいなと思いました!
自分オリジナルのコンピュータ、かっこいい…✨
SoraIchigoさん
「テストカバレッジを100%にするということ」
先ほど #omotesandorb で話した資料です!
— igsr5 / Sora Ichigo (@igsr5_) 2024年1月11日
LT後にいろんな方と自動テストについて話せてよかったです。https://t.co/RRwlKtsqQV
テストカバレッジを使いこなして信頼できるテストを作ろうというLTでした!
自分はまだ学習途中で、テストカバレッジ云々はあまり実感していないところではありますが、
前回のOmotesando.rbでもテストカバレッジのLTがあって、
実務においてテストカバレッジは注目すべき点なんだなと思いました。
そして、テストカバレッジを増やすことを目的にしてはダメで、信頼できるテストを増やすことが大事ということもわかりました。
以下の言葉が印象的でした。
最初にテストを書いておけばテストを書く場所を作れるので自ずと後続の人もテストを書いてくれる
実装と同じくらいテストコードも負債化する
せっかく書いたテストが将来のテスト追加を阻まないように注意
チーム開発のプラクティスに入ったら、テストもたくさん書くらしいので、良い勉強になるな〜と楽しみにしておこうと思います。
まとめ
今回はFBC生(現役・卒業生)が多くて嬉しかったです!
今後も参加していきたいと思います!
ありがとうございました!