Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Kaigi Effect 2025 #rubykaigi2025_after
Search
sue445
May 13, 2025
Technology
1.7k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
sue445's proposals 2026
sue445
0
150
ruby.wasmとPicoRuby.wasmに対応した仮想DOMライブラリを作ってる話 #kaigieffect_kaigi
sue445
0
230
Create Ruby native extension gem with Go
sue445
0
870
Road to RubyKaigi 2025 #rubykaigi2026_saisoku
sue445
0
190
Road to Go Gem #rubykaigi
sue445
0
3.3k
pixiv Cloud Journey #pixivmeetup
sue445
0
1.9k
Road to RubyKaigi Speaker (case sue445) #rubykaigi2023_after
sue445
0
3.4k
Fix SQL N+1 queries with RuboCop #rubykaigi
sue445
2
7.5k
sue445とOSSと社内ツール #subcul_dev
sue445
0
950
Other Decks in Technology
See All in Technology
reInvent2026stby LT00 "Change your life!"
shinichirokawano
1
310
Agent × Maestro で始める モバイル E2E 端末準備からテスト実行・結果確認まで
sansantech
PRO
0
210
Autonomous AI Lakehouse - Live AI Hubから始めるセキュアなAIデータ活用 -
oracle4engineer
PRO
2
150
推論基盤と Scale-Up Interconnect の現状と制約から俯瞰する技術動向
markunet
2
300
LLM-as-a-Judgeは本当に信頼できるのか――評価器を評価する話
taka_aki
3
1.1k
AIで選択肢が広がった組織設計の理想と現実
konifar
13
5.7k
ドメインエキスパートは いかにして AI を使って プロダクト開発をするか
tatsuyashiraishi
1
200
CSS2026:OWS研究会・招待講演「世界観を、実装する」
atsush1_sada
2
340
生成AI時代、PMは事業責任者に進化するともっと面白い〜PMだからこそ事業構造を動かせる時代に〜
kakehashi
PRO
0
880
アカウント統制の健康診断
kenichinakamura
1
200
How we choose session proposals
kawaguti
PRO
0
170
AI時代の開発はウォーターフォールに回帰する? / development-with-ai-back-to-wf
okamototakuyasr2
0
120
Featured
See All Featured
Building a Scalable Design System with Sketch
lauravandoore
464
34k
Building AI with AI
inesmontani
PRO
1
1.3k
Product Roadmaps are Hard
iamctodd
55
13k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
43k
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
270
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
530
The Spectacular Lies of Maps
axbom
PRO
1
1.1k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
450
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.8k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
[SF Ruby Conf 2025] Rails X
palkan
3
1.5k
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 まとめ