はじめに こんにちは。リアーキテクティングチームの髙橋と申します。 この記事では、アンドパッドの施工管理サービスで利用している Ruby をバージョンアップしたときに発生したメモリ使用量の問題の発生から解決までをお話しします。 Ruby のバージョンアップ(3.0 -> 3.2) アンドパッドでは昨年 2023 に、施工管理サービスで利用している Ruby を 3.0 から 3.2 にバージョンアップしました。 バージョンアップ自体は過去に確立済みの手法(詳しくは過去記事をご参照ください)により、粛々と進められリリースされました。 ところがこのリリースから数日後、とある問題が発覚しました。 メモリ増大問題 アプリケーションのリソース使用状況を監視している SRE チームのメンバーから、以下のような連絡がありました。 Ruby バージョンアップのリリース以降、アプリケーションの利用するメモリ
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: A no-go fantasy: writing Go in Ruby with Ruby Next — Martian Chronicles, Evil Martians’ team blog 原文公開日: 2021/11/09 原著者: Svyatoslav Kryukov、Travis Turner サイト: Evil Martians -- ニューヨークなどに拠点を構えるRuby on Rails開発会社です。良質のブログ記事を多数公開し、多くのgemのスポンサーでもあります。 日本語タイトルは内容に即したものにしました。 no-go: うまくいかない、立入禁止 Rubyは素晴らしい言語です。私たちはRubyの読みやすさ、柔軟性の高さ、そして開発者中心主義を愛しています。しかしここ火星ではGo言語も愛されています。Goにも
「笹田さんや遠藤さん(のような突出した能力を持つプログラマー)を雇用できる機会はほとんどない。人類史上数回しかないレベル。これを逃す手はない」。店舗向けデジタルサービスなどを提供するSTORESは、プログラミング言語「Ruby」の処理系を開発している笹田耕一氏と遠藤侑介氏を採用し、両氏は2023年9月1日、同社に入社した。冒頭に挙げたのは、STORESのエンジニア採用の責任者である藤村大介CTO(最高技術責任者)の言葉だ。 両氏は、前の職場であるクックパッドでRuby処理系の開発に専念する「フルタイムコミッター」として働いていた。STORESでも同様にRubyのフルタイムコミッターとして勤務する。 サービスの約6割がRubyを採用 採用の発端になったのは、笹田氏が2023年6月6日に投稿したTwitter(現X)の書き込み。同氏と遠藤氏が勤務先のクックパッドから退職勧奨を受け、転職先を探し
RubyKaigi 2023でRuby JIT Hacking Guideというタイトルで発表してきた。 speakerdeck.com JITコンパイラを書くチュートリアル 今回の発表ではJITコンパイラが書ける人間を増やすことをゴールにしていたが、 30分という短い発表枠内では雰囲気を知ってもらうことにフォーカスし、 実際に手を動かしたい人たちにはそれ用のチュートリアルを触ってもらう形を取った。 github.com JITコンパイラは実は初心者向き 独学でコンパイラの作り方を学ぶ人は、Cコンパイラなどを実装することが多いように思う。 C言語は実装対象として一見シンプルそうに見えて実は結構機能が多いので、C11をゴールに始めてもC89の範囲すら実装しきらないままエターなる人も多いのではないか。 そんな僕みたいな堕落した人間にお勧めなのがJITコンパイラ。 インタプリタと併走する特性上、
Leaner 開発チームの黒曜(@kokuyouwind)です。 RubyKaigi 2023が終わってしまいましたね。終わってみればあっという間でした。 Leaner Technologies では初日一発目に CEO の大平からスポンサートークをさせていただき、 LT では筆者の黒曜が登壇させていただきました。また 2 日目には主催のドリンクアップも開催させていただきました。 スポンサートークや LT を聞いていただいた皆様、ドリンクアップにご参加いただいた皆様、交流させていただいた皆様、なにより運営の方々とすべての参加者の皆様、本当にありがとうございました。 メンバーに RubyKaigi 2023 の感想を聞いてみよう Leaner Technologies からは総勢 9 名が現地参加させていただきました[1]。この中には初めての RubyKaigi というメンバーも、何度も参加
GitHubは200万行規模のRailsアプリケーションであり、毎週RailsとRubyを最新版にアップデートし続けている 4月10日でサービス開始からちょうど15周年を迎えたGitHubは、当初からRuby on Railsを用いたモノリシックなアプリケーションとして作られてきました。現在では200万行近い規模のコードになっているそうです。 今年1月にはGtHubを利用しているデベロッパーが1億人に到達したことも発表しました。GitHubはまさに世界最大級のRailsアプリケーションだと言っていいでしょう。 そのGitHubは5年前の2018年、Railsのバージョンを3.2から5.2に上げる作業に1年半を費やし。そして二度とこのようなことにならないよう、より頻繁にアップデートを行うべき、などの教訓を得たとしていました。 そして現在、GitHubは毎週月曜日にRailsのアップデート作業
こんにちは、ujihisa といいます。現在スタディサプリのProduct Platform Team で Product Platform Engineerとして仕事を行っています。 Ruby 3.2 3ヶ月ちょっと前の2022-12-25 (JST) に、Ruby 3.2.0がリリース されました。2023-03-05現在の最新安定版はRuby 3.2.1です。 スタディサプリではRailsなどのwebアプリケーションが26個あり、それ以外も含めると全部で29個のRubyのプロジェクトがあります。記事執筆現在、これらの中で最も古いRubyバージョンは3.0.4です。 一般に、プロジェクトでは常に最新のバージョンのRubyが使えるべきで、当たり前ですが最新バージョンの新機能をうまく使っていって仕事を進めることができるのはとても気持ちいいですよね。逆に、最新バージョンが使えないならば、今後
Kernel/VM探検隊は、カーネルやVM、およびその他なんでもIT技術の話題ジャンルについて誰でも何でも発表してワイワイ盛り上がろうという会です。monochrome氏は、Ruby処理系「monoruby」について発表しました。 高速な実行が可能なRuby処理系「monoruby」 monochrome氏(以下、monochrome):monochromeといいます。今日は「機械語で書くRuby処理系のその後」ということで、前回の発表のその後を報告いたします。 自己紹介です。monochromeといいます。(スライドを示して)Twitterはこれです。最近、Twitterは治安が悪いので、Mastodonにアカウントを作りました。RustでRubyの処理系を作っています。プログラミング処理系、言語処理系が好きな人の集まりのSlackとか、最近はこの「Zulip」というアプリに移動して、こ
前回のあらすじ Ruby Parser開発日誌 (4) - かねこにっき Error Recoveryに関する理解も深まり、Rubyのparserへ実装するために3つの実装方法を検討しましたが、どれもあまり簡単な方法ではありませんでした。この問題を解決するためにLALR parser generatorを実装したので今回はその紹介をしたいとおもいます。 Lrama LALR (1) parser generator github.com 前回検討したとおりBisonを使ってError RecoveryをRubyに実装していくのは困難を伴います。これを解決するために自前でparser generatorを実装し、generatorおよびtemplateの両方を自分で管理するという方法を思いついたので実装しました。 名前の由来 Lramaでリャマと読みます。LALR parser genera
Ruby30周年イベント(前編):Rubyを作る前のまつもと氏が作りかけた、Rubyの原点となるプログラミング言語「Tish」 まつもとゆきひろ氏によって開発が始まったRuby言語の30周年を祝うイベント「プログラミング言語Ruby30周年記念イベント」が2月25日にオンラインで開催されました。 イベントでは関係者やRuby愛好家らによる過去30年の振り返りやRubyにまつわるライトニングトークなどが行われ、最後にまつもとゆきひろ氏による基調講演「D is for Dream, V for Vaporware」が行われました。 基調講演では、Rubyを開発する前にまつもと氏が手がけた、Rubyの原点となるソフトウェア「CXライブラリ」や、今回初めて名前が明かされた「Tish」という作りかけのプログラミング言語や、これまであまり語られることのなかった、さらにその前の学生時代に妄想していたプロ
こんにちは、CTOの @harukasan です。2023/02/24をもってプログラミング言語Rubyが30周年を迎えたとのこと、大変おめでとうございます。 Rubyに支えられている企業の一社として感謝を示したいと思い、この記事を書くことにしました。 ピクシブとRuby ピクシブでは多くのサービスでRuby on Railsを利用しています。2012年にリリースされた国際版pixiv β(現在は提供終了)を皮切りに、pixivコミック、BOOTH、pixiv FACTORY、pixiv Sketch、Palcy、VRoid Hub、pixiv Adsと数々のプロダクトでRuby on Railsが採用されてきました。 2012年6月にリリースされたpixivコミックはRails 3.2でリリースされ10年以上にわたり同じコードベースで開発が続けられています。余談ですが、pixivコミック
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: New in Ruby 3.2 - Data.define - DEV Community 👩💻👨💻 原文公開日: 2022/10/06 原著者: Brandon Weaver 参考: class Data (Ruby 3.2 リファレンスマニュアル) Victor ShepelevことZverokが、RubyにData.defineという実に便利な機能をもたらしました。以下はマージ済みのプルリクです。 PR Add Data class implementation: Simple immutable value object by zverok · Pull Request #6353 · ruby/ruby Rubyでの議論は以下です。 issue: Feature #16122: Data: simple im
RubyのYJITコンパイラをShopifyが本番に投入、Railsアプリを高速化。Rubyも本格的にJITの時代へ ECサイト構築サービスを提供するShopifyは、Ruby 3.2に搭載されているYJITコンパイラを同社の本番環境に投入し、Railsベースで構築された同社サービスの性能改善を実現したと明らかにしました。 YJITコンパイラはShopifyが開発を進めてきたRubyのJITコンパイラで、大規模なRailsアプリケーションにおいてより高い性能向上を目指して開発されたものです。 一昨年末のRuby 3.1でメインラインにマージされ、昨年末に登場したRuby 3.2ではさらに改善が進められて本番環境にも耐えるようになったと説明されており、今回Shopify自身がそれを実証した形になりました。 If you’re a keen Rubyist, you may have hear
技術部の笹田です。Ruby 3.2 無事にリリースされて良かったよかった。 Rubyインタプリタは複雑なプログラムなので、当然のごとくバグが入ってきます。Rubyインタプリタ開発者は、これに対していろんな対策をしています。たとえば、テストを書いて、CI環境でチェックするとか、今となっては当然のことを、当然のごとくやっています(RubyCIやchkbuild、ruby/spec: The Ruby Spec Suite aka ruby/specなどの整備や、実行環境の日々のメンテナンスの成果です)。 これに追加して、個人的にテストをとにかくたくさん繰り返し行うマシン群を用意しています。テストの実行頻度をなるべくあげて、「時々しか発生しない」というバグを炙り出して、Rubyインタプリタの品質向上を目指すためです。本稿ではそんな、ちょっとだけ変わったテスト環境についての話をご紹介します。 この
これはRubyアドベントカレンダー2022の22日目の記事です。 binding.irb のすすめ 8年前に 今更聞けないpryの使い方と便利プラグイン集 という記事を書き、そこから長い間 binding.pry を愛用していた。binding.irb も binding.pry も使ったことがないよ、という人はご一読をお勧めしたい。 当時PryにあったIRBに対する優位性のうち、時間が経っても常に使い続けた機能といえば binding.pryの存在、$ (show-source)、@ (whereami)、ls とその -G (grep) オプション、デバッグ機能 (要pry-byebugプラグイン) という感じで、他はまあたまに使うかもねくらいの感じになったのだが、なんとこれらはRuby 3.2ではIRBで全て使えるようになった。その上、Gemfileに何も書かなくてもデフォルトで使え
クラウド型建設プロジェクト管理サービス「ANDPAD」を運営する株式会社アンドパッド(本社:東京都千代田区、代表取締役:稲田武夫、以下アンドパッド)は、Ruby コミッターである柴田 博志氏がフェローに就任しましたことをお知らせいたします。 今後は、さらなるRubyの発展に寄与することを目的にし、柴田氏にはアンドパッドに所属しながらRubyの改善・開発に注力いただけるようフェロー・OSS開発者職として参画いただきます。 ■ 就任の背景 プログラミング言語Rubyは、約30年前に日本で生まれた開発言語であり、現在も国内外の様々なサービスの開発言語として採用されています。当社は、「幸せを築く人を、幸せに」をミッションに、開発当初よりRuby on Railsを基盤に、建設業界向けのクラウド型建設プロジェクト管理サービス「ANDPAD」を開発してまいりました。 柴田氏は、開発言語としてのRuby
CPUの世界では、内部の機構をフロントエンド(命令フェッチとデコード)とバックエンド(命令実行とメモリ)で分けることができます。つまりrailsbenchの実行においては、フロントエンドの処理がバックエンドの処理に対して間に合っておらず、全体としてCPUの性能を使い切れていないことになります。 また、RubyのプログラムとYJITが生成したコードの行き来(ジャンプ)が頻繁に行われていました。このジャンプが多いということは、それだけ実行のために参照するアドレスが多く、結果としてコードの実行パスが増えてしまいます。その結果、予測が失敗したパス(汚染されたパス)が大量に増えて、投機的実行の予測精度に影響を与えていました。 加えて初期のYJITでは、この汚染されたパスもコード生成に利用していたため、さらに問題を悪化させていました。 これらが原因となり、初期のYJITではrailsbenchのパフォ
RubyKaigi 2022 キーノートレポート Yuta Saitoさん「RubyはWebAssemblyと出会った」 〜RubyKaigi 2022 1日目キーノート 9月8日から9月10日までの3日間RubyKaigi 2022が三重県津市で開催されました。今年はRubyKaigi 2019以来、3年ぶりの現地開催で非常に盛り上がったカンファレンスとなりました。 初日のキーノートではRubyコミッターのYuta Saitoさんが「Ruby meets WebAssembly」というタイトルで発表しました。 Saitoさんはインターネット上では主に@kateinoigakukunという名前で活動しており、Swiftコミッターとしてもよく知られたエンジニアです。CRubyのWebAssembly移植を進め、2022年1月にRubyコミッターとなっています。今回のキーノートはCRubyのW
2006年からほぼ毎年、日本で開催されているオブジェクト指向スクリプト言語Rubyに関するイベント「RubyKaigi」。 世界中のRubyistにとって“祭り”と言えるような一大イベントですが、この「RubyKaigi」が発足した経緯や、過去から現在までの歴史をみなさんはご存知でしょうか。 今回は「RubyKaigi」の創始メンバーのひとりである荻野淳也さんと、第1回の「RubyKaigi 2006」から運営に携わっている角谷信太郎さん、「RubyKaigi 2015」からチーフオーガナイザーを務めている松田明さんにインタビュー。イベントの歴史を語っていただきました。 「RubyKaigi」が産声をあげるまで ――そもそもの発端として「RubyKaigi」を立ち上げた経緯を教えてください。 荻野:過去から歴史をたどると、最初、「RubyConf」が2001年にアメリカで開催されたんですよ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く