Tech Racho エンジニアの「?」を「!」に。
  • Ruby / Rails関連

週刊Railsウォッチ: Ruby 3.2のData.define、RubyPrize 2022最終ノミネート、Puma-dev gemほか(20221026後編)

こんにちは、hachi8833です。RubyKaigi 2022の動画がYouTubeチャンネルにアップロードされ始めたようです。

週刊Railsウォッチについて

  • 各記事冒頭には🔗でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ
  • 「つっつきボイス」はRailsウォッチ公開前ドラフトを(鍋のように)社内有志でつっついたときの会話の再構成です👄
  • お気づきの点がありましたら@hachi8833までメンションをいただければ確認・対応いたします🙏

TechRachoではRubyやRailsなどの最新情報記事を平日に公開しています。TechRacho記事をいち早くお読みになりたい方はTwitterにて@techrachoのフォローをお願いします。また、タグやカテゴリごとにRSSフィードを購読することもできます(例:週刊Railsウォッチタグ)

🔗Ruby

🔗 Ruby 3.2で導入されるData.defineRuby Weeklyより)


つっつきボイス:「この記事はData.defineを提案・実装したZverokさんにレビューしてもらったそうです」

参考: Add Data class implementation: Simple immutable value object by zverok · Pull Request #6353 · ruby/ruby

# #6353より
Measure = Data.define(:amount, :unit)
Measure.new(1, 'km') # => OK
Measure.new(amount: 1, unit: 'km') # => OK
Measure.new(1) # ArgumentError
Measure.new(amount: 1) # ArgumentError
Measure.new(1, 'km', 'h') # ArgumentError
Measure.new(amount: 1, unit: 'km', comment: 'slow') #=> ArgumentError

Data型はStructに似ているけどイミュータブルなんですね」「イミュータブルで高速なValue Objectを手軽に作るのによさそうな感じ」「DataStructを継承していない、Ractorにイミュータブルなオブジェクトを渡せるようにしたい、なるほど」

参考: Ruby 3.0 の Ractor を自慢したい - クックパッド開発者ブログ
参考: Value object - Wikipedia

「記事にもあるようにdry-rbでも似たような実装はできるけど、そうすると通常のRubyオブジェクトの範疇にとどまってしまいますね: イミュータブルなData型をプリミティブに実装することでMJITやYJITによる最適化にもつながるかも」「お〜」「Data型が入れば今後はイミュータブルなData型を使うのがだんだん当たり前になってきて、Ractorに渡すデータやgRPCなどのメッセージ通信やProtocol Buffersでも基本的にData型を使おうみたいな機運になってくるかもしれませんね: こういう機能が言語に公式に入るのはとてもいいことだと思います👍」

参考: サービス間通信のための新技術「gRPC」入門 | さくらのナレッジ

🔗 Puma-dev gem(Ruby Weeklyより)


つっつきボイス:「Puma-devというgemをこの記事で知ったんですが、どんなときに嬉しい感じでしょうか?」「記事を見ると、ローカル開発でhttp://localhost:3000のようなホスト名+ポートの代わりにたとえばhttps://web.testhttps://auth.testのような複数のバーチャルホスト名でローカルサーバーにアクセスできるようになるみたい」「あ〜なるほど」

puma/puma-dev - GitHub

「Puma-devにはmkcert的な機能も全部入っていてhttpsで通信できるらしい」「これは便利そう」「mkcertで証明書を作ってローカルサーバーをhttps通信にするのはたしかに面倒ですよね」

FiloSottile/mkcert - GitHub

🔗 RubyPrize 2022最終ノミネート発表(Ruby Weeklyより)


つっつきボイス:「Ruby Prize 2022の最終ノミネート3名が発表されました」「8名のノミネート者の中から選ばれたんですね」「RubyKaigi 2022のキーノートスピーチで強烈な印象を残したkateinoigakukunさんもノミネートされている」「ShopifyのbyrootさんとRubyInstallerのLars Kanisさんも」

参考: RubyKaigiとiOSDCでWasmの話をしてきた -- kateinoigakukunのブログ

「Windows向けのRubyInstallerのメンテナーがノミネートされたのはいいですね: 以前OpenSSLライブラリのメンテナーがRubyPrizeを受賞したときのように、地道なメンテナンスを長年続けてきたコントリビュータに感謝を伝える場を提供するのもRubyPrizeの大事な役割のひとつとして位置づけられているのだろうと自分は思っています👍」

参考: RubyInstaller for Windows
参考: library openssl (Ruby 3.1 リファレンスマニュアル)
参考: 山口一生:1ページ|RubyPrize2016 受賞者インタビュー

🔗DB

🔗 PostgreSQL 15リリース(Publickeyより)


つっつきボイス:「PostgreSQL 15がリリースされた🎉」「年に1回のメジャーリリースだと目まぐるしいですね」

「MERGE文がついにぽすぐれに入ったのが嬉しい👍」「今までMERGEがPostgreSQLになかったとは知りませんでした」「MERGEがなくても同等のことはできるんですが、以前SQL ServerあたりのMERGE文をPostgreSQL用に書き換えたときはつらかった...」

参考: MERGE - オラクル・Oracle SQL 入門
参考: MERGE (Transact-SQL) - SQL Server | Microsoft Learn

🔗クラウド/コンテナ/インフラ/Serverless

🔗 DockerのTeamプランの値上げ

参考: Pricing - Docker


つっつきボイス:「DockerのTeamプランの急な値上げアナウンスでだいぶざわついていますね」「Dockerの詳しい方針はわからないけど、現時点でDocker for Desktopが力を入れているextensionsにあまり魅力を感じられなくて、むしろDocker Hubの方がユーザーにとっての重要性はずっと高いと思うんですよ」「Docker Hubが要らない人はまずいませんよね」「その意味ではDocker Hubのうまいマネタイズを工夫してもらえる方がユーザーとしてはありがたいんですけどね」「たしかに」

参考: Docker Hub Container Image Library | App Containerization

🔗言語/ツール/OS/CPU

🔗 正規表現の脆弱性「ReDoS」徹底解説


つっつきボイス:「正規表現好きとしてこの記事は理論から解説してくれているのが嬉しいです😂: ReDoSは正規表現と対象文字列の両方が関連するために人間の目で発見するのも機械的な判定も難しくて、自分の連載記事↓でもReDoSをどう解説するか試行錯誤中なので」「今見たらパート2記事も出ているので後で読まなきゃ」

はじめての正規表現とベストプラクティス10: 危険な「Catastrophic Backtracking」前編


後編は以上です。

バックナンバー(2022年度第4四半期)

週刊Railsウォッチ: rodauth-rails gem作者の解説記事、turbo-railsの有料チュートリアルほか(20221025前編)

ソースの表記されていない項目は独自ルート(TwitterやはてブやRSSやruby-jp SlackやRedditなど)です。

Ruby Weekly

Publickey

publickey_banner_captured


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。