- Ruby / Rails関連
週刊Railsウォッチ: 書籍『Rebuilding Rails』、OpenSSL 1.1.1が今年9月でEOLほか(20230330後編)
こんにちは、hachi8833です。特に変更がなければ、Ruby 2.7が明日20132023/03/31いっぱいでEOLを迎えますね。
RubyKaigi 2023のチケットに学生向けディスカウント枠ができました。
Student discount is now available. https://t.co/XlF5XT9Hq4 #rubykaigi
— RubyKaigi (@rubykaigi) March 28, 2023
🔗Rails
🔗 書籍『Rebuilding Rails』(Noah Gibbs著)
書影のあるツイートを探しましたが、見当たらないので同書と著者のNoah Gibbsさんに言及しているRubyConf Thailandのツイートを貼ります↓。
We're psyched to confirm Noah Gibbs @codefolio (pictured, right) as our final keynote speaker for #RubyConfTH 2022! An engineer at Shopify, he wrote the book Rebuilding Rails. Meet Noah this December -> https://t.co/Yb3CRQpcHX #rubyconfth #ruby pic.twitter.com/QQY1EQ7yQ8
— RubyConf Thailand (@rubyconfth) October 6, 2022
つっつきボイス:「ruby-jp Slackで知りました: TechRachoの翻訳記事でもお世話になっているNoah Gibbsさんの近著です」「お、紹介文や目次を見た感じではRailsフレームワークを自分で作ることでRailsを詳しく学ぶ本のようですね」「Gumroadで販売していて、日本に住んでる人は、元々$79.99のFramework Engineer Packageを$62.39で購入できるようです」
本書を買うべき人
- 中級RailsプログラマーでRubyやRailsをもっと深く知りたい人
- Railsにコントリビュートしたいがどこから手を付けたらいいかわからない人
- 仕組みを学ぶのが好きでたまらない人
- 自分のペースで学びたいが、ブログ記事では物足りない人
本書を買わない方がいい人
- コードを実際に入力して動かすつもりのない人 -- 手を動かせばその分上達します
- まったくのRuby初心者
- APIガイドなら欲しいけど構造的な再構築や基礎部分には興味がない人
- サンプルの章をやってみても学びを得られなかった人
Rebuilding Rails - Understand Rails by Building a Ruby Web Frameworkより
なお、フォームに登録することで、同書のサンプル章を無料で読めます。また、最初にRubyやRailsを学んでおきたい人にはRailsチュートリアルが優れているとも書かれています。
「ruby-jp Slackでは、Rebuilding Railsは『Crafting Rails 4 Applications』↓を思わせるという書き込みも見かけました」「なつかしのCrafting Rails本にも通じるところはありそうですが、こちらはさすがに内容が古くなりましたね: Rebuilding Railsは現代のRails本として期待できそう👍」
🔗 WIP: Ruby rdocでcattr_*
、mattr_*
、thread_cattr_*
、thread_mattr_*
ドキュメント生成に対応(Ruby on Rails Discussionsより)
- 元記事:
cattr_*
,mattr_*
,thread_cattr_*
, andthread_mattr_*
- rubyonrails-docs - Ruby on Rails Discussions - PR: wip: support rails mattr_accessor variants by zzak · Pull Request #990 · ruby/rdoc
つっつきボイス:「Ruby on Rails Discussionsでこのスレッドを見かけました」「cattr_*
、mattr_*
、thread_cattr_*
、thread_mattr_*
はActive Supportが追加するアクセサメソッドだけど、APIドキュメントを生成するrdocはRuby側にあるので、rdocでこれらのドキュメントを生成できるように作業しているんですね」
参考: § 3.1.3 モジュール属性 -- Active Support コア拡張機能 - Railsガイド -- cattr_*
とmattr_*
参考: rails/attribute_accessors_per_thread.rb at main · rails/rails · GitHub -- thread_cattr_*
とthread_mattr_*
(Railsガイドにはありませんでした)
「これらのcattr_*
などは属性名に基づいた動的なメソッドですね」「そうそう、こういうのは実際に実行されるまでは生えてこないメソッドなので、これまでのrdocではそういう動的なメソッドのAPIドキュメントを生成していませんでしたね」
「プルリク#990のコードを覗いてみると、rdocのcontext.rbにmattrのコードを追加している: こういう書き方はたしかに可能だけど、やろうと考えたことなかったな〜」
「ユーザーが独自に作った動的メソッドはともかく、Active Supportのmattr_*
などはrdocがAPIドキュメント生成に対応してもよさそう👍」
🔗 面接で聞かれそうなRailsとHotwireの質問(Hacklinesより)
つっつきボイス:「以前出したこの翻訳記事↓と似たような趣旨かも」「質問数は21件とそこまで多くない代わりにHotwireの質問も盛り込まれている: このぐらいは答えられるようにしましょうという記事ですね」
🔗Ruby
🔗 Rubyでmarkdownを扱う(RubyFlowより)
# 同記事より
parser = Redcarpet::Markdown.new(renderer, extensions = {})
markdown_text = <<-'TEXT'
Why is Ruby *awesome*?
- It's fun to use
- Easy to learn
- And so much more...
TEXT
parser.render(markdown_text)
#=> <p>Why is Ruby <em>awesome</em>?</p>
#=> <ul>
#=> <li>It's fun to use</li>
#=> <li>Easy to learn</li>
#=> <li>And so much more...</li>
#=> </ul>
つっつきボイス:「Rubyでmarkdownを扱うといえばredcarpetやkramdownが定番↓」「記事ではRailsではなくSinatraでサンプルアプリケーションを構築しているんですね」「こういうgemで静的サイトジェネレータ的なものを作るのは誰しも一度はやりますね」
後でkramdownを動かしてみました。
require 'kramdown'
markdown_text = <<-'TEXT'
Why is Ruby *awesome*?
- It's fun to use
- Easy to learn
- And so much more...
TEXT
Kramdown::Document.new(markdown_text).to_html
#=> "<p>Why is Ruby <em>awesome</em>?\n- It’s fun to use\n- Easy to learn\n- And so much more…</p>\n"
🔗 OpenSSL 1.1.1が今年9月でサポート終了
つっつきボイス:「古いRubyをビルドしていて気づいたんですが、OpenSSL 1.1.1が今年9月11日でEOL(end of Life: サポート終了)になるそうです↓」「それ以降のOpenSSL 1.1.1は有料の延長サポートになるのか」「今さらですが、OpenSSL 1.1.1はLTS(long term support)なんですね」
- Version 3.1 will be supported until 2025-03-14
- Version 3.0 will be supported until 2026-09-07 (LTS).
- Version 1.1.1 will be supported until 2023-09-11 (LTS). Extended support for 1.1.1 to gain access to security fixes beyond that date for that version is available.
- Version 1.0.2 is no longer supported. Extended support for 1.0.2 to gain access to security fixes for that version is available.
- Versions 1.1.0, 1.0.1, 1.0.0 and 0.9.8 are no longer supported.
Release Strategy -- OpenSSLより(強調は編集部)
参考: OpenSSL - Wikipedia
参考: ロングタームサポート - Wikipedia
「Ruby 3.0以前をビルドするにはOpenSSL 3.xが使えなくてOpenSSL 1.1が必要なことはこの間実際にビルドして確かめました」「Ruby Maintenance BranchesによればRuby 3.0のEOLは2024/03/31(予想)となっているけど、OpenSSL 1.1系の新規セキュリティ修正がリリースされなくなるということは、それ以後にOpenSSL 3.xでしか修正されないセキュリティ問題が発生した場合にRuby 3.0の事実上のEOLがそれより早まる可能性がありそう: OpenSSLなしでRubyをビルドすることは普通考えられないので」「そこが問題ですよね」
「Ruby 3.0を2024年3月まで使おうと思っている人たちは要注意ですね」「結局はRubyを3.1以上にアップグレードするのが正しい方法ですね」
ruby-jp SlackでOpenSSLサイト↓に一応古いバージョンも置かれていると教えていただきました。いつまでダウンロードできるかわかりませんが。
つっつき後に、OpenSSLから改めて1.1.1 EOLのアナウンス記事が出たことをruby-jp Slackで知りました↓
参考: OpenSSL 1.1.1 End of Life - OpenSSL Blog
Node.js 16のサポート期間も影響を受けたそうです↓。
参考: LTSのはずの「Node.js 16」のサポート期間が7カ月短縮 ~2023年9月11日までに - 窓の杜
追記(2023/03/31): Rubyコミッターのhsbtさんが以下の記事を公開しました。こちらもぜひお読みください。
参考: Ruby 3.0 がセキュリティメンテナンスフェーズになったのでいくつか補足 - HsbtDiary(2023-03-31)
🔗 coltrane: Rubyで学ぶ音楽理論(Ruby Weeklyより)
つっつきボイス:「こちらはお楽しみ系のgemです」「コマンドラインで音楽のコード進行を入力するとギターやピアノの指のポジションとかをカラフルに表示したりできるのね」「ギターのタブ譜みたいなのも表示できる」「これは面白い」
同リポジトリより
🔗 その他Ruby(Ruby Weeklyより)
Thanks to the sustained hard work of my teammates on the YJIT team and in Ruby & Rails Infrastructure, we've been able to speed up end-to-end request times on Shopify's StoreFront Renderer (SFR) by as much as 17% on average, and even the p99 request time is faster! @ShopifyEng pic.twitter.com/EcmcE5iYp5
— Maxime Chevalier (@Love2Code) March 14, 2023
つっつきボイス:「Ruby YJITの主要開発者であるMaxime ChevalierさんのツイートがRubyWeeklyに貼られていたので拾ってみました」「平均で17%高速になったというStorefront Renderer (SFR)は、Shopifyのサーバーサイドレンダラーなんですね↓」
参考: Server-side rendering -- The Shopify platform
🔗 設計
🔗 Martin FowlerのBliki (ja)
つっつきボイス:「Bliki?」「私も今回初めて知りましたが、Martin Fowler先生のBlikiブログを有志が翻訳していて、そのプロジェクトにkoicさんも参加したそうです」「お、これですね↓」
参考: Martin Fowler's Bliki (ja)
参考: martinfowler.com -- オリジナル記事のある公式サイト
「古い記事から新しい記事までものすごい量ですね」「これはすごい」「トップページの上部にある"ぶりきじゃ"画像はMartin Fowlerの直筆なのか😆」「このリポジトリで翻訳しているんですね↓」
つっつき後に、Martin Fowler's Bliki (ja)にPatterns of Enterprise Application Architectureのパターンカタログもあることも教わりました↓。
参考: Patterns of Enterprise Application Architecture - Martin Fowler's Bliki (ja)
🔗クラウド/コンテナ/インフラ/Serverless
🔗 MRSKとFly.ioを比較してみた(RubyFlowより)
- 元記事: MRSK vs Fly.io · Fly
つっつきボイス:「Fly.ioの記事です」「タイトルはMRSK vs Fly.ioとあるけど、内容的にはMRSKとDHHのツイートを紹介しつつ、DHHのMRSK動画でやっていることを解説する記事という感じかな」「対決というよりお互いに認め合っている感じの論調っぽいですね」
MRSKとfly.ioには多くの違いがありますが、出発点と目指す点はかなり似ています。
同記事より
I know I've been down on cloud lately, but I really like what https://t.co/7Y63UXazHm is doing. The HTTP verb-based region distribution is brilliant, it's built on stock Dockerfiles that are easy to migrate, and they engage with the ecosystem 👍
— DHH (@dhh) March 4, 2023
なお、TechRachoではMRSKのREADME翻訳を明日公開する予定です。
🔗CSS/HTML/フロントエンド/テスト/デザイン
🔗 Adobeの画像生成AI「Firefly」
つっつきボイス:「Adobeが公式に画像生成AIを出したそうです」「自分たちが持っているAdobe Stockの中から投稿者の許可を得た画像データを使って学習することで権利関係を明確にしているんですね↓: 画像を使う側、特に企業ユーザーとしては権利関係や法的問題がクリアされていることがとても重要」「巷の画像生成サービスだとそのあたりがよくわからないものも多そうですね」「そういうサービスだと画像を使っていいかどうかを検証することが難しかったり不可能だったりしますね」「"この画像使っても大丈夫なの?"と問い合わせられたときに答えられないと困りますよね」
Adobe Stockには、Adobeがそうしたモデルの学習データとして利用することを権利者が許諾したデータがアップロードされている。Adobe生成AI & Sensei担当副社長のアレクサンドル・コスティン氏は「他社が提供している画像生成AIの多くは、著作権で保護されているインターネット上のデータを利用して学習しており、大企業にとってビジネスに活用する上で大きな課題を抱えている。
しかし、FireflyではAdobe Stockに公開されていて、学習に使用してよいと投稿者が許可しているデータを利用して学習を行ない、エンタープライズでも著作権や商標などをきちんと処理されているデータとして利用することできる」と述べる。
同記事より
なお、Adobe StockはTechRacho記事のアイキャッチ画像でもよく使っています。
参考: ストック写真、ロイヤリティフリーの画像、グラフィック、ベクターおよびビデオ | Adobe Stock
「Content Authenticity Initiativeという団体があるんですね↓」「こういうのはAdobeが中心になるでしょうね」
このFireflyで生成されたコンテンツにはAdobeが中心となって推進している「CAI」(Content Authenticity Initiative)に準拠し、その生成されたコンテンツが、生成AIが生成したコンテンツであることを証明する証明書をつけて配布されるのが標準となる。
同記事より
参考: Content Authenticity Initiative
Wikipediaによると、Content Authenticity InitiativeはAdobeとthe New York TimesとTwitterが2019年に設立したそうです↓。
参考: Content Authenticity Initiative - Wikipedia
🔗言語/ツール/OS/CPU
🔗 スライド: エンジニアのためのドキュメントライティング
つっつきボイス:「YassLabの安川さんに教えていただいたスライドです」「スライド著者が出した『エンジニアのためのドキュメントライティング』↓は話題になっていますね」「ライティングのみならず、翻訳でもとても参考になります」
「ChatGPTが出てきた今、ドキュメントライティングのスキルはこれまで以上に必要になってきているんじゃないかな: 文章構造を論理的に正しく書ける人ほどChatGPTに的確な指示を出して使いこなせるので」「最近よく言われているプロンプトエンジニアリングですね」
後編は以上です。
バックナンバー(2023年度第1四半期)
週刊Railsウォッチ: Active SupportにObject#withが追加、カスタム名前空間のサポートほか(20230328前編)
- 20230322 Rubyに新しくRJITがマージされた、Shopifyのタスク管理gem maintenance_tasksほか
- 20230315後編 Wasm Workers Server 1.0、mruby 3.2.0リリース、irbtoolsほか
- 20230314前編 Devise 4.9のHotwire/Turbo統合に対応する、英国政府のViewComponentほか
- 20230308後編 Ruby30周年記念イベント、37signalsのデプロイツールmrskほか
- 20230307前編 Action Mailerプレビューで全メールヘッダーを表示可能に、rubocop-graphqlほか
- 20230222後編 Ruby 3.2のData#initializeの設計、ruby-openai gemほか
- 20230221前編 Ruby30周年記念イベント、ActiveRecord APIクイズほか
- 20230215後編 Bundler 2.4リリース、RubyKaigi 2023参加募集開始ほか
- 20230214前編 AssumeSSLミドルウェア追加、Fly.ioとRails 7.1のDocker対応ほか
- 20230202後編 ShopifyのYJIT記事、RubyGemsのgem execコマンドほか
- 20230201後編 Ruby 3.2のベンチマーク記事、dry-cliで高度なCLIを作るほか
- 20230131前編 Evil Martiansが使っているgem、JavaScriptガイドが更新ほか
- 20230125前編 2022年のRails振り返り記事、RailsにDocker関連ファイルが追加ほか
ソースの表記されていない項目は独自ルート(TwitterやはてブやRSSやruby-jp SlackやRedditなど)です。
週刊Railsウォッチについて
TechRachoではRubyやRailsなどの最新情報記事を平日に公開しています。TechRacho記事をいち早くお読みになりたい方はTwitterにて@techrachoのフォローをお願いします。また、タグやカテゴリごとにRSSフィードを購読することもできます(例:週刊Railsウォッチタグ)