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

週刊Railsウォッチ: 書籍『Rebuilding Rails』、OpenSSL 1.1.1が今年9月でEOLほか(20230330後編)

こんにちは、hachi8833です。特に変更がなければ、Ruby 2.7が明日20132023/03/31いっぱいでEOLを迎えますね。

参考: Ruby Maintenance Branches

RubyKaigi 2023のチケットに学生向けディスカウント枠ができました。

週刊Railsウォッチについて

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

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

🔗Rails

🔗 書籍『Rebuilding Rails』(Noah Gibbs著)

書影のあるツイートを探しましたが、見当たらないので同書と著者のNoah Gibbsさんに言及しているRubyConf Thailandのツイートを貼ります↓。


つっつきボイス:「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本として期待できそう👍」

【勉強会報告】Crafting Rails 4 Applications読み会をはじめました+第一回資料

🔗 WIP: Ruby rdocでcattr_*mattr_*thread_cattr_*thread_mattr_*ドキュメント生成に対応(Ruby on Rails Discussionsより)


つっつきボイス:「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の質問も盛り込まれている: このぐらいは答えられるようにしましょうという記事ですね」

Rails開発者が採用面接で聞かれる想定Q&A 53問(翻訳)

🔗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で静的サイトジェネレータ的なものを作るのは誰しも一度はやりますね」

vmg/redcarpet - GitHub

gettalong/kramdown - GitHub

後で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 Maintenance Branches

「Ruby 3.0を2024年3月まで使おうと思っている人たちは要注意ですね」「結局はRubyを3.1以上にアップグレードするのが正しい方法ですね」


ruby-jp SlackでOpenSSLサイト↓に一応古いバージョンも置かれていると教えていただきました。いつまでダウンロードできるかわかりませんが。

参考: Old Releases -- 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より)

pedrozath/coltrane - GitHub


つっつきボイス:「こちらはお楽しみ系のgemです」「コマンドラインで音楽のコード進行を入力するとギターやピアノの指のポジションとかをカラフルに表示したりできるのね」「ギターのタブ譜みたいなのも表示できる」「これは面白い」


同リポジトリより

参考: ポピュラー和声 - Wikipedia

🔗 その他Ruby(Ruby Weeklyより)


つっつきボイス:「Ruby YJITの主要開発者であるMaxime ChevalierさんのツイートがRubyWeeklyに貼られていたので拾ってみました」「平均で17%高速になったというStorefront Renderer (SFR)は、Shopifyのサーバーサイドレンダラーなんですね↓」

参考: Server-side rendering -- The Shopify platform

YJIT: CRuby向けの新しいJITコンパイラを構築する(翻訳)

🔗 設計

🔗 Martin FowlerのBliki (ja)


つっつきボイス:「Bliki?」「私も今回初めて知りましたが、Martin Fowler先生のBlikiブログを有志が翻訳していて、そのプロジェクトにkoicさんも参加したそうです」「お、これですね↓」

参考: Martin Fowler's Bliki (ja)
参考: martinfowler.com -- オリジナル記事のある公式サイト

「古い記事から新しい記事までものすごい量ですね」「これはすごい」「トップページの上部にある"ぶりきじゃ"画像はMartin Fowlerの直筆なのか😆」「このリポジトリで翻訳しているんですね↓」

bliki-ja/bliki-ja.github.io - GitHub

参考: マーティン・ファウラー - Wikipedia

つっつき後に、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より)


つっつきボイス:「Fly.ioの記事です」「タイトルはMRSK vs Fly.ioとあるけど、内容的にはMRSKとDHHのツイートを紹介しつつ、DHHのMRSK動画でやっていることを解説する記事という感じかな」「対決というよりお互いに認め合っている感じの論調っぽいですね」

MRSKとfly.ioには多くの違いがありますが、出発点と目指す点はかなり似ています。
同記事より

なお、TechRachoではMRSKのREADME翻訳を明日公開する予定です。

mrsked/mrsk - GitHub

🔗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に的確な指示を出して使いこなせるので」「最近よく言われているプロンプトエンジニアリングですね」

プロンプトエンジニアリング - Wikipedia


後編は以上です。

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

週刊Railsウォッチ: Active SupportにObject#withが追加、カスタム名前空間のサポートほか(20230328前編)

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

Ruby on Rails Discussions

Ruby Weekly

RubyFlow

160928_1638_XvIP4h

Hacklines

Hacklines


CONTACT

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