- Ruby / Rails関連
週刊Railsウォッチ: 第1回Rails Worldが10月に開催、『研鑽Rubyプログラミング』でRuby本体も高速化ほか(20230427後編)
こんにちは、hachi8833です。RubyKaigi 2023がいよいよ来月開催ですね。
RubyKaigi前日に開催される「KeebKaigi2023」では、狭ピッチトークでLTします~!
内容は自作キーボードのお話をしつつ、タイピング練習の話とかします! 😂 会場でお会いする方がいましたら是非ワイワイお話しましょう~! 🙌 ⌨️https://t.co/6Y62XYGsh3
#keebkaigi— Futoshi Endo 🎮 (@Fendo181) April 24, 2023
RubyKaigi 2023 で 「Rubyメソッドかるた」を配布します!#esm_ruby_karuta #rubykaigi
RubyKaigi 2023で「Rubyメソッドかるた」を配布します! - ESM アジャイル事業部 開発者ブログhttps://t.co/DCgx6vSfYB— ESM, Inc. (@rubyagile) April 25, 2023
RubyKaigiスケジュールアプリでたぞワイワイhttps://t.co/2q8VW35IPu #rubykaigi
— とるめん (@qwyngg) April 27, 2023
こちらは明晩、オンラインで、STORESさんがホスト。@a_matsuda 登板でスケジュールを解説(?)してくれますよ〜 2023 を楽しむ予習会 - connpass https://t.co/S2OKEv3ewG
— Kakutani Shintaro (@kakutani) April 27, 2023
なお、以下のScrapboxページでRubyKaigi 2023関連の情報が随時更新されています。
お知らせ: 来週の週刊Railsウォッチは5/2(火)短縮版のみとなります。
🔗Rails
🔗 第1回Rails Worldが10月5〜6日に開催(Rails公式ニュースより)
- 元記事: Ruby on Rails — Rails World is coming
- 元記事: Go Rails World(Ruby Weeklyより)
- 元記事: Ruby on Rails — Attention junior devs: Want to build the Rails World website?
つっつきボイス:「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回: 高橋征義さん
- 元記事前編: Rubyとの出会い、Railsの衝撃、Rubyコミュニティの面白さ【Rubyistめぐりvol.1 takahashimさん】 - STORES Product Blog
- 元記事後編: Railsで成功するには、 コンピュータ書鑑賞、本との出会い方【Rubyistめぐりvol.1 takahashimさん】 - STORES Product Blog
つっつきボイス:「Rubyistめぐりと題した企画の第1回は、日本Rubyの会代表理事の高橋征義さんを囲んでの対談(前後篇)で、想像以上に読みでがありました」「特に後編はRailsやオブジェクト指向などの話題もあって面白そう👍」「"バックエンドが主戦場"、Railsはそうなんですよね」
参考: 日本Rubyの会について | 一般社団法人 日本Rubyの会
「これまで取り上げていなかったんですが、高橋さんがまとめたRuby年表↓も偶然見つけました」「Rubyの歴史に立ち会った人がこうやってまとめてくれるのは本当にありがたい🙏」「貴重な資料ですね」
「後編の後半で新井素子の話が盛り上がってる」「開発者は本を読むのも仕事の一環みたいな面があるので、技術書以外の本もたくさん読む人が多いですよね」「長くやっている人はたいてい読書家ですよね」
参考: 新井素子 - Wikipedia
🔗 スライド『書くときにひと呼吸おいて考えてから書いてほしいRailsコードの書き方』
つっつきボイス:「変数への再代入、可変長引数の扱い、イミュータブル、ふむふむ」「with_indifferent_access
も要注意」「パーシャルで分岐をどこまで増やすかも悩ましい問題なんですよね」「before_action
コールバックやafter_save
コールバックも気をつけないといけないヤツ」「どれも誰もが一度は通る道で、定番の注意点ですね👍」
参考: Rails API ActiveSupport::HashWithIndifferentAccess
🔗 activestorage-validator: Active Storageのバリデーションgem(Ruby Weeklyより)
つっつきボイス:「言われてみれば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
https://t.co/GOjBMyIAE6 が https://t.co/qlIxIp0iHq の変更に合わせて大幅にリニューアルしています。 @maimux2x と @urimaro さんが多くのコンテンツを翻訳してくれました。
— Hiroshi SHIBATA (@hsbt) April 20, 2023
つっつきボイス:「@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本体も速くなった
- 元記事: Rubyを研鑽した話
つっつきボイス:「@ko1さんが例の『研鑽Rubyプログラミング』のレビューをきっかけにRubyを改善した話だそうです」「そうだ研鑽本買わなきゃ」
- PR:
vm_call_single_noarg_inline_builtin
by ko1 · Pull Request #7486 · ruby/ruby - PR: Optimize Struct's accessors by ko1 · Pull Request #5131 · ruby/ruby
「以下の角谷さんのツイートはko1さんによるこの改修を指しているんですね↓」「以前はary.first
がary[0]
より遅かったのが、改修で同じぐらいに高速化されたのか」「研鑽本でRuby本体も研鑽された、まさしく」
第14章も見てもらったあとのフィードバックは「ほとんどない」(訳文の指摘はもらった)と安心していたが、まさか「Array#firstとか速くしたくなりますね」という意味深な感想の結果がこうなるとは…さすがプロ… #研鑽Ruby
— Kakutani Shintaro (@kakutani) April 19, 2023
研鑽Rubyプログラミングを訳すとRuby本体が研鑽されて速くなる(ことわざ)
— Kakutani Shintaro (@kakutani) April 19, 2023
「これ↓はその通りですね: いい書き方は新しいRubyで高速化される可能性があるので、基本的にはRubyらしく書く方を優先すべき」
こうした細かい最適化にあたっては、新しいRubyがリリースされても依然としてその最適化が有効かどうかを点検してください。
同記事の引用より
「なお以下のツイート↓は、Ruby 2.5時代にWatsonさんが行ったHash#merge
の高速化だそうです」「結局どの書き方が速いみたいな話ってすぐ変わるんですよね」
そんなこともやりましたねぇ。#研鑽Rubyhttps://t.co/4ZTipfEsXU pic.twitter.com/3LcVst5xjh
— Watson (@watson1978) April 17, 2023
🔗 『Programming Ruby』の第5版はRuby 3.2に対応
Welcome to #railsconf!
Happy to be here!
I’ve got a coupon code for the #pickaxe book.
RailsConf_Atlanta
Good for 35% off until May 5
Purchase the book at https://t.co/8NQeUyJPMf
Thanks!
— Noel Rappin (@noelrap) April 24, 2023
つっつきボイス:「この記事↓を翻訳していて知りました: 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
- 元記事: Why I Stopped Using Sorbet in All My Ruby Projects | by Ashley Peacock | Apr, 2023 | Better Programming(Ruby Weeklyより)
つっつきボイス:「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
🔗クラウド/コンテナ/インフラ/Serverless
🔗 (Publickeyより)
つっつきボイス:「LocalStackって知りませんでした」「LocalStack 2.0はまだ追いかけていませんが、LocalStackは以前からありますね: S3のAPIなどをスタブ化せずにローカルやCIで動かせる機能はあると便利👍」
🔗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四半期)
- 20230412前編 複合主キーの実装が進む、Rails公式のバグ再現用テンプレートほか
- 20230406後編 Rubyオブジェクトモデルクイズの最難問ほか
- 20230405前編 Arel::Nodes::NodeにAPIドキュメントが追加、rubocop-mdほか
ソースの表記されていない項目は独自ルート(TwitterやはてブやRSSやruby-jp SlackやRedditなど)です。
週刊Railsウォッチについて
TechRachoではRubyやRailsなどの最新情報記事を平日に公開しています。TechRacho記事をいち早くお読みになりたい方はTwitterにて@techrachoのフォローをお願いします。また、タグやカテゴリごとにRSSフィードを購読することもできます(例:週刊Railsウォッチタグ)