皆さんこんにちは!
前回に続いて、4月18日から20日に福岡で開催されたRubyKaigi 2019に参加した3名が、それぞれどんな学びを得てきたか、社内で何を学んできたのかLT形式で報告会の様子をご紹介します!
RubyKaigiに参加してきた栗原、宮崎、伊藤の3人がそれぞれ資料を作成し、報告会を行いました。
LTでどんなことをみんなに共有したのか簡単にまとめましたので御覧ください!
1.PatternMatchingについて 栗原
はじめまして、スタテクエンジニアの栗原です。
Ruby3.0で導入予定の型定義の話やJITの進捗などRubyKaigiでは様々なセッションがありました。
その中でもRubyKaigi前日にRuby trunkにmergeされたPatternMatchingについてのセッションがあり、RubyKaigi内でも旬なネタとして取り上げられていたので、今回はRuby2.7(trunk)で試験的に導入されたPatternMatchingの紹介をしたいと思います!
パターンマッチングと言えば,
ValuePattern, VariablePattern, AsPattern, AlternativePattern, ArrayPattern, HashPattern
といくつか種類がありますが、今回はArrayPattern, HashPatternを取り上げます!
Rubyのパターンマッチとは?
Rubyにおけるパターンマッチはcase/whenの拡張として提供されていて、case/in構文で表現されます。
case節で指定したオブジェクトはinで指定したパターンで比較され、構造が一致した際に各変数に多重代入(キャプチャ)され、その値を取り出しています。
通常の多重代入やcase/whenとの違いは、構造をチェックするという点です。
構造が違うのでこの場合はマッチするパターンがありません。マッチするパターンがなく且つelse句がない場合はNoMatchingPatternErrorがraiseされます。
簡単なユースケースを見ていきましょう。
パターンマッチングを使った場合…
パターンマッチングを使わない場合…
パターンマッチングを採用する事でここまでシンプルに、わかりやすく書くことができます!
セッションでも紹介されていましたが、やはりHashPatternやArrayPatternが使いどころが多いのではないでしょうか。まだRuby2.7では実験段階なので、実行するとWarningが出ますが、実際に導入されたら活用していきたいですね。
最終的にRuby3.0でどのような仕様で実装されるかが本当に楽しみです!
2.面白かった講演 / LT / ブースの紹介 宮崎
スタテクエンジニアの宮水です!
私はRubyKaigiで面白かった講演やLT、ブースのことや食レポについて社内の人に共有しました!
ちなみに、私はこれらの講演を紹介しました。
・組み込み用のRubyが宇宙へ行ったというLT
・Rubyで機械学習ができる講演
・キュアエンジニアさんのWeb APIのベストプラクティスに関する講演
・40分間Rubyのローカル変数について触れ最後にライブコーディングがあった講演
企業ブースの話では、弊社の伊藤が難易度の高い知恵の輪を9人目として見事解いたのですが、8個までしか景品がなくて残念だったお話や、エディタの人気投票のお話をしました。
スタテクってVimハラスメントが有名なのですが、最近はそのハラスメントも虚しくAtom勢やRubyMine勢が増えてきて社内ではVimmerが絶滅しつつあります。一方で、Rubyist全体で見ると、Vimmerが多いみたいで安心しました。
最後には、RubyKaigiに参加するときの心得も皆さんに紹介しました(下の画像参照)このブログを読んでくださっている方も、RubyKaigiに参加される予定があったら参考にしていただけると嬉しいです!(笑)
今年初めてRubyKaigiに参加しましたが、Rubyという言語でこれだけたくさんの講演ができるくらいRubyはいろんなところで使用され、愛されているんだなぁということが実感とても感慨深かったです。この言語とRailsを専門にしてお仕事できていることを誇りに思い、これからもお仕事頑張ります!
3.RubyKaigiの特に面白かった講演の紹介 伊藤
最後はスタテクエンジニア伊藤の発表を紹介します。
僕はLTでRubyKaigiの特に面白かった講演と、全体を通しての参加した感想について発表しました!
初日のMatzのRuby3に静的型付や型推論を導入する話も衝撃的なお話でしたが、やはり毎年恒例となっている12連LTとRubyCommiter_vs_Worldがとても面白かったです。
RubyCommiter_vs_Worldとは?
12連LTは文字通り12人が1人ずつLTを発表しては交代していくセッションでしたが、今年は平成から令和への改元対応の話がいくつかありました。また、ensureの一文を書き忘れて数ヶ月後にバグで大騒ぎになりバグオブザイヤー認定された話、Rubyの暗黒面を使ったマクロの話など、ユーモアに富んだ話が印象的でした。
RubyCommiter_vs_WorldはRuby内部の開発に携わるCommiterとの質疑応答、公開ディスカッションという内容でしたが、Commiterが一堂に介して担当機能への質問に次々と解答していく光景は圧巻でした。
途中からRubyにどんな機能を追加するかという話から関数型言語の話に広がったのですが、スタテクの社内勉強会で関数型言語の勉強会に参加した甲斐あってか、なんとか話についていくことは良かったですね。
Commiterの方々がどんな考えを持ってRubyを開発しているのかに触れる機会は大変貴重な時間になりました。RubyKaigiは講演のレベルが全体的に高く、内部コードの解説など話についていけない時も多々ありましたが、足りない知識が何かわかったことや、今後も継続して学んでいこうと考える刺激になりました。
また、講演以外にも企業ブースや懇親会などで他企業のエンジニアの方々とお話する機会があり、実装や設計面の悩みに相談に乗って頂いたり、最近話題のgemライブラリやGolangなど他言語についての話など技術についての話も楽しかったです。また、ブースでお話した企業から勉強会へお誘い頂き、早速先週参加してきました。
3日間を通してRubyコミュニティの熱い想いと、一緒にプログラミングを楽しもうという思いが伝わってきて本当に良かったです!いつか自分も貢献できるものを作るべく、開発者として一層成長していきたいと思いました。
いかがでしたでしょうか?
初めてのRubyKaigi 2019、非常にいい経験、素敵な出会いがありました!
全体的にRubyのコアな部分がメインだったので、理解が追いつかない部分も多々ありましたが、それが刺激となって学ぶモチベーションにも繋がっています。実際に、勉強会もこれまで以上に活発で社内で執り行われています。
スタートアップテクノロジーとしても、3日間通してメンバーに参加してもらうのははじめての試みで、業務の調整なども有りましたが参加する価値があったカンファレンスでした。
日頃の業務だけにとらわれず、これからもRubyや技術に触れていく機会を作ってきます!最後までお読みいただきましてありがとうございました。