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

週刊Railsウォッチ: 第1回Rails Worldが10月に開催、『研鑽Rubyプログラミング』でRuby本体も高速化ほか(20230427後編)

こんにちは、hachi8833です。RubyKaigi 2023がいよいよ来月開催ですね。

なお、以下のScrapboxページでRubyKaigi 2023関連の情報が随時更新されています。

参考: RubyKaigi 2023 - ruby-jp

週刊Railsウォッチについて

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

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

お知らせ: 来週の週刊Railsウォッチは5/2(火)短縮版のみとなります。

🔗Rails

🔗 第1回Rails Worldが10月5〜6日に開催(Rails公式ニュースより)


つっつきボイス:「1本目は10月5〜6日に開催される第1回Rails Worldのお知らせで、2本目はDHHによる同趣旨のブログ記事です」「お、想像通り主催しているのはThe Rails Foundationですね」「開催場所はオランダのアムステルダム🇳🇱」「early birdチケットは数量限定で199ユーロですが、3本目の記事によると、このカンファレンスのWebサイト構築要員としてフリーランスのジュニア開発者とベテランメンターを1名ずつ有償で募集しているそうです」

参考: Ruby on Rails — The Rails Foundation

🔗 Rubyistめぐり第1回: 高橋征義さん


つっつきボイス:「Rubyistめぐりと題した企画の第1回は、日本Rubyの会代表理事の高橋征義さんを囲んでの対談(前後篇)で、想像以上に読みでがありました」「特に後編はRailsやオブジェクト指向などの話題もあって面白そう👍」「"バックエンドが主戦場"、Railsはそうなんですよね」

参考: 日本Rubyの会について | 一般社団法人 日本Rubyの会

「これまで取り上げていなかったんですが、高橋さんがまとめたRuby年表↓も偶然見つけました」「Rubyの歴史に立ち会った人がこうやってまとめてくれるのは本当にありがたい🙏」「貴重な資料ですね」

takahashim/ruby-history - GitHub

「後編の後半で新井素子の話が盛り上がってる」「開発者は本を読むのも仕事の一環みたいな面があるので、技術書以外の本もたくさん読む人が多いですよね」「長くやっている人はたいてい読書家ですよね」

参考: 新井素子 - Wikipedia

🔗 スライド『書くときにひと呼吸おいて考えてから書いてほしいRailsコードの書き方』


つっつきボイス:「変数への再代入、可変長引数の扱い、イミュータブル、ふむふむ」「with_indifferent_accessも要注意」「パーシャルで分岐をどこまで増やすかも悩ましい問題なんですよね」「before_actionコールバックやafter_saveコールバックも気をつけないといけないヤツ」「どれも誰もが一度は通る道で、定番の注意点ですね👍」

参考: Rails API ActiveSupport::HashWithIndifferentAccess

🔗 activestorage-validator: Active Storageのバリデーションgem(Ruby Weeklyより)

aki77/activestorage-validator - GitHub


つっつきボイス:「言われてみればActive Storage組み込みのバリデーションって見かけませんね」「もちろん自分で書けばいいんですが、gemになっているのは便利そう👍」「Content-Typeやサイズなどでバリデーションできるんですね↓: このgemどこかで使ったことあるかも」

# 同リポジトリより
class User < ApplicationRecord
  has_one_attached :avatar
  has_many_attached :photos

  validates :avatar, presence: true, blob: { content_type: :web_image } # supported options: :web_image, :image, :audio, :video, :text
  validates :photos, presence: true, blob: { content_type: ['image/png', 'image/jpg', 'image/jpeg'], size_range: 1..(5.megabytes) }
  # validates :photos, presence: true, blob: { content_type: %r{^image/}, size_range: 1..(5.megabytes) }
end

参考: Active Storage の概要 - Railsガイド

🔗 その他Rails


つっつきボイス:「@hsbtさんがrailsgirls.jpやrailsgirls.comを更新したそうです」「両方ともメンテしているんですね」「すごい」

「hsbtさんのブログ↓によると、railsgirls.comをGitHub Pages化するためにrailsgirls.orgドメインを取得して切り替える作業中に、どうやらわずかな隙をついて誰かがGitHub Pagesのカスタムドメイン機能を使ってrailsgirls.comをハイジャックしていたんだそうです(現在は正常です)」「ありゃ」「ドメインを狙うスパマー、いるんですよね...」

参考: railsgirls.com を GitHub Pages に移行した - HsbtDiary(2023-04-17)

🔗Ruby

🔗 『研鑽Rubyプログラミング』でRuby本体も速くなった


つっつきボイス:「@ko1さんが例の『研鑽Rubyプログラミング』のレビューをきっかけにRubyを改善した話だそうです」「そうだ研鑽本買わなきゃ」

「以下の角谷さんのツイートはko1さんによるこの改修を指しているんですね↓」「以前はary.firstary[0]より遅かったのが、改修で同じぐらいに高速化されたのか」「研鑽本でRuby本体も研鑽された、まさしく」

「これ↓はその通りですね: いい書き方は新しいRubyで高速化される可能性があるので、基本的にはRubyらしく書く方を優先すべき」

こうした細かい最適化にあたっては、新しいRubyがリリースされても依然としてその最適化が有効かどうかを点検してください。
同記事の引用より

「なお以下のツイート↓は、Ruby 2.5時代にWatsonさんが行ったHash#mergeの高速化だそうです」「結局どの書き方が速いみたいな話ってすぐ変わるんですよね」


『研鑽Rubyプログラミング』は英語版を買った人も買うべき

🔗 『Programming Ruby』の第5版はRuby 3.2に対応


つっつきボイス:「この記事↓を翻訳していて知りました: zverokさんがこの本のアルファレビューを担当したそうです」「お〜『Programming Ruby』のRuby 3.2対応版がついに出たんですか?」「実は今はβ版で、今年9月発売予定だそうです」「前作はRuby1.9だったかな」「1.9からの差分で第5版を読みたい気持ち」

参考: Participating in programming languages evolution during interesting times(翻訳は近日公開予定)

Pragmaticの『Programming Ruby』シリーズは表紙にツルハシの絵があることから、通称"ツルハシ本"(Pickaxe book)と呼ばれているようです。

🔗 その他Ruby


つっつきボイス:「Sorbet(Rubyの静的型チェックツール)を使うのをやめた記事ですか」「sig {returns(Integer)}みたいなのをコード本体に書くと毛羽立って見えるのがつらくなってきたそうです」「Sorbetはその方式だからしょうがないと思いますが、MatzがRubyのコード本体に型を書きたがらない話にも通じるものがありそう」「"StripeやShopifyがSorbetを有効に使っているのはもちろんわかるけど、自分は使わないことにした"という締めくくりですね」

# 同記事より
class Coords
  extend T::Sig

  sig {returns(Integer)}
  attr_accessor :x, :y

  sig {params(x: Integer, y: Integer).void}
  def initialize(x, y)
    @x = x
    @y = y
  end
end

sorbet/sorbet - GitHub

ruby/rbs - GitHub

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

🔗Publickeyより)


つっつきボイス:「LocalStackって知りませんでした」「LocalStack 2.0はまだ追いかけていませんが、LocalStackは以前からありますね: S3のAPIなどをスタブ化せずにローカルやCIで動かせる機能はあると便利👍」

localstack/localstack - GitHub

🔗JavaScript

🔗 JavaScriptのセミコロンクイズ


つっつきボイス:「このサイトは今どきHTTPSではないんですが、ロヨラ・メリーマウント大学のコンピュータサイエンスの資料↓で紹介されていました」「問題は全部で10問か」「途中でもNextをクリックすると次に進めました」(一同でつっつく)

参考: Syntax Design -- cs.lmu.edu

「このJavaScriptのコード↓にセミコロンを10箇所入れられる...?」「間違った場所に入れるとその場で消されるからそんなに難しくないかな」「セミコロンを入れると意味が変わる場所にも入れられるのか!」
「"Semi's to spend: 10"って、セミコロンを10個使えじゃなくて最大10個まで使えるという意味っぽい」「10個使わなくてもよかったんですね...」

// 同サイト第1問より
a
b
function f(c){d}
e+f

後編は以上です。

バックナンバー(2023年度第2四半期)

週刊Railsウォッチ: ShopifyのRubyパーサーyarp、RJITを書いた理由ほか(20230413後編)

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

Rails公式ニュース

Ruby Weekly

Publickey

publickey_banner_captured


CONTACT

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