2025/10/16に開催した RailsTokyo #1 で発表した資料です。 https://railstokyo.connpass.com/event/363339/
概要 CC BY-NC-SA 4.0 International Deedに基づいて翻訳・公開いたします。 英語記事: Fast Allocations in Ruby 3.5 | Rails at Scale 原文公開日: 2025/05/21 原著者: Aaron Patterson CC BY-NC-SA 4.0 Deed | 表示 - 非営利 - 継承 4.0 国際 | Creative Commons 日本語タイトルは内容に即したものにしました。 多くのRubyアプリケーションはさまざまなオブジェクトをメモリにアロケーション(allocation: 割り当て)します。このオブジェクトアロケーションを6倍高速化できるとしたらどうでしょうか?ぜひ続きをお読みください! 🔗 Rubyのアロケーションを高速化する Ruby 3.5ではオブジェクトのアロケーションが従来よりも大幅に高速化
概要 元サイトの許諾を得て翻訳・公開いたします。 英語記事: Binary Solo | A deep dive into Rack for Ruby 原文公開日: 2024/10/30 原著者: Ayush Newatia 日本語タイトルは内容に即したものにしました。 Rackは、現在のあらゆる著名なRuby製Webフレームワークの基盤であり、RubyアプリケーションとWebサーバーの間のインターフェイスを標準化します。 このメカニズムによって、Rack準拠のWebサーバー(Puma、Unicorn、Falconなど)とRack準拠のWebフレームワーク(Rails、Sinatra、Roda、Hanamiなど)を組み合わせ可能になります。 このように関心を分離すると、組み合わせを大幅に柔軟にできるため、非常に強力です。 ただし制約もあります。Rack 2では、あらゆるリクエストに対してレ
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Guardrails Are Not Code Smells | byroot’s blog 原文公開日: 2025/02/09 原著者: byroot -- Railsコアコミッター、Rubyコミッターであり、ShopifyのRuby/Railsインフラチームのシニアスタッフエンジニアです 日本語タイトルは内容に即したものにしました。 私がやりたいのは、Pitchforkに関する記事を書いて、これがどんな理由でできたのか、なぜ現在のような形になったのか、そして今後どうなるのかについて説明することです。しかしその前に解説しておく必要があることがいくつかあります。今回は「レジリエンス(resilience: 回復力)」についてです。 数年前、unicorn-worker-killer gemには重大なコードの臭い(code smel
概要 CC BY-NC-SA 4.0に基づいて翻訳・公開いたします。 英語記事: Next Generation Out of Band Garbage Collection | Rails at Scale 原文公開日: 2024/10/23 原著者: Jean Boussier 日本語タイトルは内容に即したものにしました。 CC BY-NC-SA 4.0| 表示 - 非営利 - 継承 4.0 国際 | Creative Commons 私は2023年に、RubyのガベージコレクタをShopifyのモノリス向けにチューニングしたときの方法について以下の記事を書きました。この記事では、メジャーガベージコレクション1によるレイテンシへの影響を軽減するために帯域外ガベージコレクションを実装する方法についても触れました。 参考: Adventures in Garbage Collection:
週刊Railsウォッチについて 各記事冒頭には🔗でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ 「つっつきボイス」はRailsウォッチ公開前ドラフトを(鍋のように)社内有志でつっついたときの会話の再構成です👄 お気づきの点がありましたら@hachi8833までメンションをいただければ確認・対応いたします🙏 TechRachoではRubyやRailsなどの最新情報記事を平日に公開しています。TechRacho記事をいち早くお読みになりたい方はTwitterにて@techrachoのフォローをお願いします。また、タグやカテゴリごとにRSSフィードを購読することもできます(例:週刊Railsウォッチタグ) 🔗Ruby 🔗 Rubyの可変長アロケーションプロジェクトがフェーズIIに Really excited to reveal the next phase
さて、どこからお話を始めましょうか。ここに到達するまでに長い長い旅路をたどりました。かつて私は開発にVagrantを使っていましたが、当時のVMは私の4GB RAMのノートPCでは少々重すぎました。そして2017年にコンテナへの乗り換えを決意したときに、やっとDockerを使い始めました。 しかしDockerで問題がたちまち解決したという気持ちではありません。自分自身やチーム、そしてすべての人々にとって完璧な設定を追求し続けてきましたが、「これでよし」と言える究極の設定はありません。標準的なアプローチを見出すまでにかなりの時間を要しました(2019年に本記事を最初に公開した時点でも相当の時間を費やしていました)。 本記事を最初に公開して私の秘密を隅々までオープンにして以来、多くのRailsチームや開発者が私の手法を採用し、さらに改良や貢献にもご協力をいただきました。 前置きはこのぐらいにし
概要 原著者Chris Salzbergさんの許諾を得て翻訳・公開いたします。 英語記事: A Packwerk Retrospective | Rails at Scale 原文公開日: 2024/01/26 原著者: Gannon McGibbon、Chris Salzberg 日本語タイトルは内容に即したものにしました。また、一部のパラグラフを分割しています。 CC BY-NC-SA 4.0 Deed | 表示 - 非営利 - 継承 4.0 国際 | Creative Commons Rails: モジュール化強制ツールPackwerkの導入を振り返る(翻訳) 2020年、ShopifyのチームはPackwerkという名前のRuby gemをリリースしました(関連記事)。Packwerkは、Railsアプリケーション内で境界を強制的に定めてモジュール化するツールです。Packwerk
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Performance impact of the memoization idiom on modern Ruby | Rails at Scale 原文公開日: 2024/02/14 原著者: Jean Boussier(byroot) CC BY-NC-SA 4.0 Deed | 表示 - 非営利 - 継承 4.0 国際 | Creative Commons Ruby 3.2における主要な内部変更のひとつに、オブジェクトシェイプ(object shape)の導入があります。 本記事では、オブジェクトシェイプが導入された理由、仕組み、制限事項について解説します。 🔗 オブジェクトのインスタンス変数はどのように保存されるのか Rubyは非常に動的な言語なので、インスタンス変数へのアクセスという単純な操作でも多くの作業を伴います
追記(2024/04/11) その後Docker Hubのdocker-library/rubyで本記事の問題が修正されました↓。これにより、Docker HubのRuby 3.3.0イメージは正常に動くようになりました。 PR: Workaround 3.3.0 crash on aarch64 by osyoyu · Pull Request #439 · docker-library/ruby M1 Macbook Pro 2021, Sonoma 14.2.1 Ruby: 3.3.0 Rails: 7.2.1 Docker: 24.0.6, build ed223bc Docker Desktop for Mac: 4.25.2 (129061) Docker Hub: 3.3.0-slim-bookworm 経緯 Ruby 3.3.0リリースの翌日にDocker Hubでも公式の
概要 原著者の依頼を受けて翻訳・公開いたします。 英語記事: Unveiling the big leap in Ruby 3.3’s IRB | Rails at Scale 原文公開日: 2023/12/25 原著者: Stan Lo -- ruby/irb、ruby/reline、ruby/tracerのメンテナーです CC BY-NC-SA 4.0 Deed | 表示 - 非営利 - 継承 4.0 国際 | Creative Commons 本記事では、Ruby 3.3でIRBに導入された主な機能強化と、現時点で来年に導入が予定されている機能について詳しく解説いたします。 Ruby 3.3のIRB強化の要点: デバッグ機能強化 オートコンプリートの使用感を強化 全体的な使用感を改善 耳より情報: Ruby 2.7以降のプロジェクトであれば、Gemfileにgem "irb"を追加す
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Rewriting the Ruby parser | Rails at Scale 原文公開日: 2023/06/12 原著者: Kevin Newton サイト: Rails at Scale | The Ruby and Rails Infrastructure team at Shopify exists to help ensure that Ruby and Rails are 100-year tools that will continue to merit being our toolchain of choice. CC BY-NC-SA 4.0 Deed | 表示 - 非営利 - 継承 4.0 国際 | Creative Commons 日本語タイトルは内容に即したものにしました。 なお、本記事では「パーサー
概要 元サイトの許諾を得て翻訳・公開いたします。 英語記事: Don't Use Floats and Use the Ruby Money Gem to Represent Currencies - Andy Croll 原文公開日: 2021/11/15 著者: Andy Croll 日本語タイトルは内容に即したものにしました。 アプリケーションで金額を管理しなければならなくなることはざらにあります。何の話かというと、Rubyコミュニティにある素晴らしいオープンソースのソリューションを使えば、自分で開発するよりもずっと良い結果を得られるのです。 以下のようにするのではなく 金額を表現するときにFloatやBigDecimalを使う。 # マイグレーション add_column :products, :price, :decimal class Product < Application
追記(2024/12/26) 以下の#20760によると、macOS 15 SequoiaではRuby 3.0.6をビルドできなくなったそうです。 参考: Bug #20760: Ruby 3.0.6 fails to build on macOS 15.0 24A335 arm64 - Ruby master - Ruby Issue Tracking System このことから、macOS 15 Sequoia以降の環境では、何らかのパッチを自力で当てるなどして対応しない限り、Ruby 3.0.xまでのバージョンは本記事の手順をもってしてもビルドできなくなったと考える方がよいと思います。 また、Docker HubのRubyにも、Ruby 3.1.xより古い公式イメージは置かれていません。 なお、Ruby 3.0.6については、hsbtさんが上のissueで回避方法の例を示しています。
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: HTTP server in Ruby 3 - Fibers & Ractors 原文公開日: 2021/07/25 原著者: Dmitry Ishkov FiberとRactorについては以下もどうぞ。 class Fiber (Ruby 3.0.0 リファレンスマニュアル) Ruby 3.0 の Ractor を自慢したい - クックパッド開発者ブログ 動機 Rubyは歴史的にコンカレンシーを欠いていましたが、現在のRubyには「ネイティブ」スレッドがあります(Ruby 1.9より前は「グリーンスレッド」 のみでした)。ネイティブスレッドは、OS によって制御されるスレッドが複数存在することを意味しますが、一度に実行できるスレッドは 1 つだけで、GIL(Global Interpreter Lock)によって管理されます。た
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Active Record Encryption-- hint.io 原文公開日: 2021/07/06 原著者: Jason Dinsmore サイト: hint.io 日本語タイトルは内容に即したものにしました。 Rails 7のActive Recordに、実にクールな新機能が導入されることになりました。モデル内で使える強力なencrpyts宣言によって呼び出される、アプリケーションレベルの暗号化機能です。この新機能は、アプリケーションコードとデータベースの間に暗号化の層を提供します。要するに、ActiveRecord::Encryptionを用いたデータがActive Recordオブジェクトに読み込まれると平文になり、データベースに置かれると暗号化されます。 本記事では、この新機能の使い方の概要を説明し、いくつかの優秀な
概要 元サイトの許諾を得て翻訳・公開いたします。 英語記事: What's new in Ruby 3.2's IRB? 原文公開日: 2022/12/14 原著者: Stan Lo -- ShopifyのRuby Developer Experience Team所属、ruby/debugのメンテナーの一員であり、先ごろIRBのメンテナーの一員にもなりました🎉 IRB 1.6がリリースされ、Ruby 3.2の組み込みIRBにはこのバージョンが使われる予定です(訳注: IRBの現時点の最新バージョンは1.6.2です)。 今回のリリースも含め、最近のIRBには@k0kubunと私が行った多くの拡張が含まれているので、本記事でそれらをまとめてご紹介したいと思います。 新しいコマンド 最近のリリースでは以下のような多くの新しいコマンドをIRBに追加しました。 show_cmds show_do
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Elapsed time with Ruby, the right way - DNSimple Blog 原文公開日: 2018/03/28 著者: Luca Guidi Rubyで経過時間を算出したいときはどんなふうにやることが多いですか? starting = Time.now # 何か時間のかかることをする ending = Time.now elapsed = ending - starting elapsed # => 10.822178 ⚠ブブー️、これは違います。理由は次のとおりです。 「時間は前に進むとは限らない」 RubyのTime.nowは、低レベルのOS(Operating System)設定に応じてLinuxのtime.hにあるgettimeofday関数やclock_gettime関数を使っています。
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Why Ruby Class Methods Resist Refactoring 原文公開日: 2012/11/14 著者: Bryan Helmkamp サイト: https://codeclimate.com/ 2018/01/30: 初版公開 2023/01/19: 細部を更新 肥大化したActiveRecordモデルをリファクタリングする7つの方法(翻訳) 私の記事『肥大化したActiveRecordモデルをリファクタリングする7つの方法』に対して、「クラスメソッドでできることをなぜわざわざインスタンスでやるんですか?」という質問をよくいただきました。お答えしましょう。要するに以下が理由です。 私がクラスメソッドよりオブジェクトインスタンスを好む理由は、クラスメソッドはリファクタリングに抵抗するからです。 詳しく説明する
概要 元サイトの許諾を得て翻訳・公開いたします。 英語記事: The Ultimate Guide to Gemfile and Gemfile.lock | Saeloun Blog 原文公開日: 2022/08/16 原著者: Keshav Biswa サイト: Saeloun Blog Ruby on Railsの開発者なら、GemfileやGemfile.lockを知らない人はいないでしょう。この2つのファイルはRuby gemをインストールするのに欠かせませんが、仕組みを知らないままでは混乱する可能性もあります。本記事では、Gemfileとは何か、その中に何があるのか、および使い方について解説します。 最初に、デフォルトのRails 7アプリケーションを作成し、それからGemfileの各行を調べて意味を理解していきましょう。 新規作成したアプリのディレクトリには、Gemfileと
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く