Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Kaigi Effect 2025 #rubykaigi2025_after
Search
sue445
May 13, 2025
Technology
1.6k
0
Share
Kaigi Effect 2025 #rubykaigi2025_after
After RubyKaigi 2025〜ZOZO、ファインディ、ピクシブ〜(
https://pixiv.connpass.com/event/352852/
)の発表資料です
sue445
May 13, 2025
More Decks by sue445
See All by sue445
Create Ruby native extension gem with Go
sue445
0
800
Road to RubyKaigi 2025 #rubykaigi2026_saisoku
sue445
0
150
Road to Go Gem #rubykaigi
sue445
0
3.1k
pixiv Cloud Journey #pixivmeetup
sue445
0
1.7k
Road to RubyKaigi Speaker (case sue445) #rubykaigi2023_after
sue445
0
3k
Fix SQL N+1 queries with RuboCop #rubykaigi
sue445
2
7.3k
sue445とOSSと社内ツール #subcul_dev
sue445
0
920
Sentry GKEに リプレイス 1年間の 知見見せます / Migrated to GKE Sentry #pixivdevmeetup
sue445
0
810
sue445謹製社内ツール十一選 / su445 in-house tools #pixivdevmeetup
sue445
1
570
Other Decks in Technology
See All in Technology
Java正規表現エンジン(NFA)の仕組みと パフォーマンスを維持するための最適化手法
takeuchi_132917
0
160
Javaで学ぶSOLID原則
negima
1
240
サプライチェーンセキュリティの空白地帯 - 信頼できる”依存性”の未来を考える
rung
PRO
2
530
Javaコミュニティをもっと楽しむための9箇条
takasyou
0
780
大規模災害時でも高い信頼性を維持するアプリケーション基盤の実現/nikkei-tech-talk46
nikkei_engineer_recruiting
0
120
Diagnosing performance problems without the guesswork
elenatanasoiu
0
130
Dynamic Workersについて
yusukebe
2
520
Generative UI × A2UI で AI エージェントを作った話 AI-DLC も使ってみた!
kmiya84377
1
290
TypeScript Compiler APIとPHP-Parserを活用し、TypeScriptとPHPで型を共有する
shuta13
0
270
管理アカウント単一運用からAWS Organizationsに移行するの大変で滅
hiramax
0
340
『家族アルバム みてね』における インシデント対応との向き合い方 / Approach incident response in Family Album
kohbis
2
280
開発を止めない CI/CD ~CI Visibilityによる継続的最適化~
pensuke628
0
220
Featured
See All Featured
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.3k
Practical Orchestrator
shlominoach
191
11k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.1k
Paper Plane
katiecoart
PRO
1
50k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
580
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
1.1k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
230
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
180
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
70
39k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
340
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
Transcript
Kaigi Effect 2025 After RubyKaigi 2025〜ZOZO、ファインディ、ピクシブ〜 https://pixiv.connpass.com/event/352852/ pixiv Inc. sue445
2025.5.13
2 Hello!
3 My name is Go The Go gopher was designed
by Renee French. (http://reneefrench.blogspot.com/) The design is licensed under the Creative Commons 4.0 Attributions license. Read this article for more details: https://blog.golang.org/gopher
4 About sue445 • Go Sueyoshi (a.k.a. sue445, sue-san) •
Gopher since 1982 • pixiv Inc (2018-) • https://x.com/sue445 • https://github.com/sue445 • Shibuya.rb • Tokyu.rb sue445
• 2019 (福岡): Best practices in web API client development
◦ https://rubykaigi.org/2019/presentations/sue445.html#apr20 • 2020 (松本) : Ruby on CI ◦ Proposalは採択されたがコロナでオンサイト開催自体が中止になった • 2023 (松本) : Fix SQL N+1 queries with RuboCop ◦ https://rubykaigi.org/2023/presentations/sue445.html#day2 5 Past my RubyKaigi Talks
6 RubyKaigi 2025 https://rubykaigi.org/2025/presentations/sue445.html#day3
7 CM1: 登壇報告 https://inside.pixiv.blog/2025/04/23/160000
8 CM2: 登壇予定 https://smartbank.connpass.com/event/351000/
9 CM2: 登壇予定 https://smartbank.connpass.com/event/351000/
• RubyKaigi 2025の前後に書いたコード(Kaigi Effect)について 10 今日話すこと
• 雑な説明 ◦ RubyKaigiなどに参加した時の「やっていき」全般 • 詳しいこと ◦ https://scrapbox.io/kakutani/kaigieffect ◦ https://scrapbox.io/iki-iki/%23kaigieffect
11 About Kaigi Effect
• #kaigieffect LT大会( https://timeedev.connpass.com/event/318445/ )で喋っ た • https://esa-pages.io/p/sharing/8985/posts/842/dcff19f54d5e015a48b5-sl ides.html#/ •
新しいgemを作ったり既存のgemのメンテをしてた 12 Kaigi Effect 2024
• 登壇の1ヶ月前には既に発表資料は完成していた • 資料の細かい微調整と体調管理くらいしかやることがなくて暇だった • 発表資料作成中にgo-gem-wrapper(今回のトークのテーマ)のバグを見つけてい くつかなおしたけど、トークとは全く関係ないコードも結構書いてた 13 Kaigi Effect
2025
14 RubyKaigi 1週間前の様子 https://x.com/sue445/status/1908727762007023616
15 https://github.com/sue445 Activity RubyKaigi 2025
16 https://github.com/sue445?from=2025-03-1 3&to=2025-05-13
17 RubyKaigiの前に書いたコードの紹介
• koicさんのRubyKaigi 2025のトークがRuboCop Pluginがテーマだった ◦ https://rubykaigi.org/2025/presentations/koic.html • koicさんのトークの予習がてら、自分がメンテしてるRuboCop系のgemもPlugin移 行した ◦
c.f. 自分がメンテしてるRuboCop gemをPluginに移行した - くりにっき ◦ https://sue445.hatenablog.com/entry/2025/03/23/234307 18 1. 自作RuboCop gemをPlugin移行
• 自分のOSSに直接関わってるところだったので予習も捗った • 当日のkoicさんのトークもよく理解できてよかった 19 1. 自作RuboCop gemをPlugin移行
• https://github.com/sue445/connpass_api_v2-ruby • RubyKaigiの直前にconnpass API v2が公開されたので世界最速でAPIクライアント を作った • c.f. connpass
API v2に対応したAPIクライアントgemを作った - くりにっき ◦ https://sue445.hatenablog.com/entry/2025/04/05/174637 20 2. connpass_api_v2
21 3. 地域.rbカレンダーをconnpass API v2に移 行
22 地域.rbカレンダー https://sue445.github.io/regional-rb-calendar/
• 地域.rbカレンダーではconnpassからのイベントの取得にconnpass APIを使ってい るのでv1からv2に移行した 23 3. 地域.rbカレンダーをconnpass API v2に移 行
24 connpass API v2への移行でGoogle Cloudの費用が ほぼ無料になった v1 v2
• connpass API v1では固定IPが必要だったのだが、そのための仕組みが月21ドルく らいかかってた • v2では固定IPが不要になったのでランニングコストが実質無料になった • c.f. 地域.rbカレンダーをconnpass
API v2に移行した - くりにっき ◦ https://sue445.hatenablog.com/entry/2025/04/08/115309 25 なぜv2移行だけで安くなったのか?
26 RubyKaigiの後に書いたコードの紹介
• https://github.com/tomykaira/rspec-parameterized/blob/master/CHANGEL OG.md#v200-2025-05-02 27 1. rspec-parameterized v2.0.0
• https://github.com/rspec-parameterized/rspec-parameterized-core/issues/16 • Ruby 3.4だとParser gemでwarningが出るからなんとかしてくれというissue • Parserで出してるwarningなのでrspec-parameterizedは関係ないやろと思って最初 クローズしたんだけど、よく話を聞くとRuby 3.4以降だとParser
gemが積極的にメン テされなくなったのでPrismに移行した方がいいとのこと 28 きっかけ
• sue「あー、これ進研ゼミRubyKaigiで見たやつだ!!!」 • rubocop-astを参考にParser gemとPrism gemを両方使えるようにした • c.f. rspec-parameterized v2.0.0をリリースした
- くりにっき ◦ https://sue445.hatenablog.com/entry/2025/05/02/181743 • RubyKaigiで聞いたことがすぐに役に立ってよかった。(いいはなし) 29 世はまさに大Parser時代!!!
• https://github.com/sue445/x_post_sanitizer • Xのポストに含まれる短縮URL(t.co)を展開したりその他色々やるgem • https://github.com/sue445/tweet_sanitizer を https://github.com/sferik/twitter-ruby に依存しない形で作り直した •
c.f. x_post_sanitizerというgemを作った - くりにっき ◦ https://sue445.hatenablog.com/entry/2025/05/05/134548 30 2. x_post_sanitizer
• https://gitlab.com/gitlab-org/api/client-go はGitLab APIのGoクライアント • RubyKaigi 2025の前からパッチを送って、先週ようやくマージされた • https://gitlab.com/gitlab-org/api/client-go/-/merge_requests/2201 31
3. https://gitlab.com/gitlab-org/api/client-go
32 3. https://gitlab.com/gitlab-org/api/client-go https://gitlab.com/gitlab-org/api/client-go/-/merge_requests/2201
• client-goには特定のステータス(429エラー、500系エラー)の時には自動リトライ する機能があるのだが、特定のAPI呼び出しの時だけ他のステータスコードでもリ トライさせたかった ◦ 例. MergeRequest(GitHubでいうところのPullRequest)作成直後にAuto mergeを設定しようとすると402エラーや422エラーになることがあるためリ トライが必要になる •
そのため任意のAPI呼び出しで任意のステータスコードでリトライ可能にできるよ うにする機能を追加した • マージはされてるけどリリースはされていない 33 モチベーション
• TerraformというのはIaC(Infrastructure as Code)のツール • Google Cloud + GitHubの組み合わせで最速でTerraformリポジトリを作るための テンプレートリポジトリ
• c.f. Keyless Terraformに特化したTerraformテンプレートリポジトリを作った (AWS, GCP対応) - くりにっき ◦ https://sue445.hatenablog.com/entry/2021/12/30/205629 34 4. https://github.com/sue445/terraform-gcp-template
35 余談:趣味で10個以上Terraform運用して る
1. Google Cloud関係のOSSを作った時のインテグレーションテストの実行環境 2. OSSとしてDockerイメージを配布していて、そのDockerイメージのホスティング 先としてArtifact Registryを使ってる ◦ 基本的にはGitHub Container
Registry(ghcr)でいいんだけど、Cloud Runで 動かす時にはArtifact RegistryかDocker Hubじゃないとダメ ◦ Docker HubはRateLimitとの兼ね合いがあるのであまり使いたくない... ◦ そのためGitHub Container RegistryとArtifact Registryの両方にホスティ ングしてる 36 Why?
• 僕はOSS 1つにつきGoogle Cloudのプロジェクトも1つ作ってる ◦ プロジェクトを分けた方がかかってる費用の内訳が分かりやすいため • Google Cloudのプロジェクトも1つにつきTerraformリポジトリも1つ必要 •
気づいたら16個になってた 37 Why?
• templateリポジトリを元にリポジトリを作成 • Terraform実行のためにGCSのバケットやサービスアカウントなどが必要なので、 Deployment Managerで初期セットアップしてる ◦ Deployment ManagerはAWSのCloudFormationみたいなやつ •
余談1:https://github.com/sue445/terraform-aws-template だと CloudFormationで初期セットアップしてる • 余談2:terraform-gcp-templateとterraform-aws-templateのGitLab版があっ て、社内だとそっちを使って最速でセットアップできるようにしてる 38 terraform-gcp-templateの仕組み
• 39 Deployment Manager deprecation… https://cloud.google.com/deployment-manager/docs/deprecations
• Deployment Managerの移行先としてInfrastructure Managerが提示されている ◦ https://cloud.google.com/infrastructure-manager/docs • しかしInfrastructure ManagerはTerraformベース •
Terraformのセットアップのために別のTerraformを使いたくないw • そのため、Deployment Managerでやってることをシェルで実装しなおした ◦ https://github.com/sue445/terraform-gcp-template/pull/304 40 Deployment Manager deprecation…
• 41 先週末に書いた https://github.com/sue445/terraform-gcp-template/pull/304
• RubyKaigiは日々のコードの積み重ねなので、少なくともProposalを出そうと思っ てる人は毎日コードを書くべき 42 まとめ