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

週刊Railsウォッチ: aws-sdk-rubyの全gemにRBSファイルが追加ほか(20240207後編)

こんにちは、hachi8833です。RubyKaigi 2024開催まであと4か月ですね。

週刊Railsウォッチについて

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

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

🔗Ruby

🔗 技術評論社サイトのRuby 3.3新機能解説記事


つっつきボイス:「Ruby 3.3新機能解説記事が技術評論社サイトで続々公開されていました」「こういう詳細な記事を日本語で読めるのはやっぱりいいですね👍」「以下の記事もKevin NewtonさんによるPrism開発の経緯を解説していますが↓、上のPrism記事はKevin NewtonさんがRuby 3.3向けに新たに書いた総括という感じですね」「Lrama LRパーサジェネレータ記事は構文解析の奥深くを探る内容: RubyKaigiの予習用に読んでおこう」「RBSの最新情報もありがたい🙏」

Rubyパーサーを一新するprism(旧YARP)プロジェクトの全容と将来(翻訳)

🔗 aws-sdk-rubyの全gemにRBSファイルが追加


つっつきボイス:「上のRBS記事で思い出したんですが、aws-sdk-rubyで使われる全gemにRBSファイルが追加されたそうです」「お〜、aws-sdk-rubyで型チェックが使えるようになるのはかなりありがたい🎉」「ruby-jp Slackでも偉業が褒め称えられていました」「"私が実装を担当しました"、強い」「コミットもさすがに大きいですね」

aws/aws-sdk-ruby - GitHub

🔗 文字ときどきRuby


つっつきボイス:「Ruby以外でも重要な文字コードと正規化と絵文字の定番の話ですね👍」

「絵文字といえば、Googleが最近やっているEmoji Kitchenというサービスがちょっと面白い↓」「お〜、絵文字を意味のある形で組み合わせたり改造したりできるんですね」「作った絵文字をWebで自由に使えるのが偉い❤️」

参考: Emoji Kitchen


同サイトより

🔗 nokogiri-diff: HTML/XMLのdiffツール(Ruby Weeklyより)

postmodern/nokogiri-diff - GitHub


つっつきボイス:「nokogiriを使ってHTMLやXMLのdiffを取るんですね」「名前もわかりやすくて便利そう」「知っていたら使うかも👍」

require 'nokogiri/diff'

doc1 = Nokogiri::HTML('<div><p>one</p> two </div>')
doc2 = Nokogiri::HTML('<div><p id="1">one</p> <p>three</p></div>')

doc1.diff(doc2) do |change,node|
  puts "#{change} #{node.to_html}".ljust(30) + node.parent.path
end

#   <div>
# <p>one</p> two </div> /
#   <p>one</p>                  /div
# -  two                        /div
# +                             /div
# + <p>three</p>                /div
# +  id="1"                     /div/p[1]
#   one                         /div/p

🔗 その他Ruby


つっつきボイス:「お、Programming Rubyが早くも3.3に対応🎉」「前のを持っていると差分だけ読みたい気持ちに一瞬なったけど、公式Changelogを読めばいい話だった」「zverokさんがライフワークでやっているRuby Changesも参考になりますね↓」

参考: Ruby 3.3 changes - Ruby Changes

🔗DB

🔗 RailsのPostgreSQLを高パフォーマンスにする(Ruby Weeklyより)


つっつきボイス:「以下の動画のQ&Aを文章化した記事のようです」インデックスへの配慮や生SQLを使うことの検討、パーティショニング、キャッシュの活用、PostgreSQL拡張など、どれも一般的な手法」「データベースチューニング方面は昔からそれほど変わっていませんよね」「Railsもそういう意味では円熟したフレームワークになっていると思いますね」

「RailsでPostgreSQLを使うときの定番パフォーマンスチューニングをさらっと読むのによさそうな記事👍」

🔗 Solid QueueとUPDATE SKIP LOCKEDを理解する


つっつきボイス:「これは近々翻訳を公開するので、ここではドラフト翻訳を読むことにします」「Solid QueueはRails 8でActive Jobのジョブバックエンドとして採用されるんですか(ウォッチ20240117)」「PostgreSQLでは前から使えているUPDATE SKIP LOCKEDがMySQL 8でも使えるようになったのでSolid Queueで使っているという話ですね」「UPDATE SKIP LOCKEDのしくみを知りたかったので書いた記事だそうです」「SQLite3にはUPDATE SKIP LOCKEDはないけど別の仕組みでカバーできるのね」

「DBベースの別のワーカーキューであるGoodjobや昔ながらのdelayed_jobについても言及していて、GoodjobでもPostgreSQLのUPDATE SKIP LOCKEDを採用するかもしれないという流れになっているらしい」「GoodjobはPostgreSQL専用でしたね」

「流れとしては、ワーカーキューだけのためにRedisサーバーを別途セットアップしてメンテナンスするのは手数が増えるので、DBベースのワーカーキューならそれをしなくて済むよね、という話ですね」「Redisなしでできるといろいろ嬉しい」「Solid QueueがRailsのワーカーキューとして標準的に使えるようになると、ワーカーキューをどうするか悩むことが減りそう👍」

redis/redis - GitHub

🔗 設計・セキュリティ

🔗 thoughtbotの"Product Designスプリントキット"


つっつきボイス:「thoughtbotがプロダクト設計の動画を多数YouTubeで公開したそうです」「件数は多いけど、動画1つが数分程度と短いので見やすそうですね」「プロダクト設計に興味のある人はどうぞ」

🔗言語/ツール/OS/CPU

🔗 キャッシュメモリの効果


つっつきボイス:「キャッシュメモリについてはmorimorihogeさんが社内勉強会でも毎年詳しくやっていますね」「動画で引用されているこのサイト↓は有名ですよね」「以前ウォッチでも取り上げましたね(ウォッチ20200602)」

参考: Numbers Every Programmer Should Know By Year

「ちょうどこのあたりに関連しそうな『プログラマーのためのCPU入門 ― CPUは如何にしてソフトウェアを高速に実行するか』という本がちょうど発売されたそうです↓」「おぉ、このあたりは大学で学んだな〜」「メモリ順序付けって知らなかった」

🔗 chmodは何と読む


つっつきボイス:「やっぱり人によるのでは」「上の動画でも人それぞれですね」「自分はchmodはチェンジモード、chownはチェンジオーナーって読んでたかも」


後編は以上です。

バックナンバー(2024年度第1四半期)

週刊Railsウォッチ: Pumaのデフォルトスレッド数変更、Rails 1.0をRuby 3.3で動かすほか(20240206前編)

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

Ruby Weekly


CONTACT

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