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

週刊Railsウォッチ: Rubyガベージコレクション高速化、RubyコードゴルフQ&Aほか(20230831後編)

こんにちは、hachi8833です。

週刊Railsウォッチについて

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

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

🔗Ruby

🔗 "Code Golf Stack Exchange"(Ruby Weeklyより)


つっつきボイス:「Stack ExchangeにコードゴルフのQ&Aがあって、Rubyのコードゴルフも扱われているそうです」「しかもcodegolf.stackexchange.comというドメイン」「結構情報多いですね」「読み込んでいったらRubyの隠れた仕様とかを見つけられそう」

「コードゴルフといえばRubyKaigiで不定期開催されるTRICKを思い出しますね」「TRICK好きな人ならきっと好き」

tric/trick2022 - GitHub

🔗 ShopifyによるRubyガベージコレクション改善


つっつきボイス:「ShopifyのStorefront Renderer(ウォッチ20230330)の高速化に寄与したガベージコレクションの記事です」「Rubyのガベージコレクションで2つ改良を行なって、ガベージコレクションのパフォーマンスが平均46%改善、Storefrontも8%改善したのか」「次のRuby 3.3にも取り入れられる予定なんですね」

参考: ガベージコレクション - Wikipedia
参考: The Shopify platform

Feature #19571は、ガベージコレクタに新しいヒューリスティックを追加しました。このヒューリスティックは、古いオブジェクトの個数の比率に基づいて、「書き込みバリア」で保護されていないオブジェクト数の上限を調整します。この比率はデフォルトで1%となっており、RUBY_GC_HEAP_REMEMBERED_WB_UNPROTECTED_OBJECTS_LIMIT_RATIO 環境変数で調整できます。
同記事より


Feature #19678は、ガベージコレクタのオブジェクト成長アルゴリズムの振る舞いを変更し、古いオブジェクトから参照される若いオブジェクトを即座に昇格させないようにしました。
同記事より

「この記事からリンクされている同じ著者の別記事↓にもガベージコレクションが詳しく解説されていてよさそう👍」「みっちり書かれていて凄そう」「gc.cのリンクを開いてみたらものすごく長い...」

参考: Garbage Collection in Ruby - Peter Zhu

🔗 RubyKaigi 2023の録画を見る会


つっつきボイス:「ruby-jp Slackで最近やっと知ったんですが、RubyKaigi 2023の動画はとっくにYouTubeですべて公開されていて、マネーフォワードさんが7月から毎週木曜に録画を見る会を開催しているんだそうです」「お〜動画見直そうかな」「動画は自分のペースで視聴できるのがいいけど、みんなで視聴すると集中しやすいかも」

🔗 Standard RubyをLanguage Serverで使うと爆速(Ruby Weeklyより)


つっつきボイス:「記事を書いたsearlsさんはStandard Ruby↓のメンテナーだそうですが、Standard RubyをLanguage Server(LSPモード)で動かしたらVSCodeでのlintがめちゃくちゃ速くなって悔しかったみたいなことが書かれてますね」

standardrb/standard - GitHub

「たしかに最近のVSCodeのRuby開発環境はすごく高速になってて、同じことをRubyMineでやるとまだ遅いのが悲しいんですが、ともあれRuby LSPはマジで速くて便利👍」

🔗クラウド/コンテナ/インフラ/Serverless

🔗 ALBでパス毎にIPアドレスを制限する


つっつきボイス:「babaさんがBPS Slackに貼っていた記事です」「AWS WAFを触ってみるとわかるけど、できることが意外に多いので、たとえばアクセス制限ならWAFでもできるんですよね: ターゲットグループごとに設定を分けようとしたりすると面倒になってくる」「なるほど」「AWS WAFは設定が深いので、stagingとproductionで設定が同じになっているかどうかを見比べようとすると手間ですけどね」「Terraformでやりたくなるヤツですね」

参考: Application Load Balancer とは? - Elastic Load Balancing
参考: AWS WAF(ウェブアプリケーションファイアウォール)| AWS
参考: Terraform by HashiCorp

🔗 GitHubのAPIキープッシュ防止

つっつきボイス:「なるほど、GitHubレベルでAPIキーのプッシュを防ぐ機能がパブリックベータ版としてリリースされたんですね」「github.com/settings/security_analysisに設定が追加されていた↓のでオンにしてみました」「これはGitHubレベルにあってもいい機能👍」


github.comより

「今回入ったプッシュ保護は個人単位ですが、GitHub Organization向けには別途設定がありますね↓」「なるほど」「今回入ったもうひとつの"プッシュ保護メトリクス"の方はOrganization向けの機能としてリリースされたんですね」

参考: Push protection for repositories and organizations - GitHub Enterprise Cloud Docs


後編は以上です。

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

週刊Railsウォッチ: Rubyガベージコレクション高速化、RubyコードゴルフQ&Aほか(20230831後編)

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

Rails公式ニュース

Ruby Weekly


CONTACT

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