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
0
1.3k
Kaigi Effect 2025 #rubykaigi2025_after
After RubyKaigi 2025〜ZOZO、ファインディ、ピクシブ〜(
https://pixiv.connpass.com/event/352852/
)の発表資料です
sue445
May 13, 2025
Tweet
Share
More Decks by sue445
See All by sue445
Create Ruby native extension gem with Go
sue445
0
480
Road to RubyKaigi 2025 #rubykaigi2026_saisoku
sue445
0
82
Road to Go Gem #rubykaigi
sue445
0
1.6k
pixiv Cloud Journey #pixivmeetup
sue445
0
1.5k
Road to RubyKaigi Speaker (case sue445) #rubykaigi2023_after
sue445
0
2.4k
Fix SQL N+1 queries with RuboCop #rubykaigi
sue445
2
6.4k
sue445とOSSと社内ツール #subcul_dev
sue445
0
870
Sentry GKEに リプレイス 1年間の 知見見せます / Migrated to GKE Sentry #pixivdevmeetup
sue445
0
770
sue445謹製社内ツール十一選 / su445 in-house tools #pixivdevmeetup
sue445
1
530
Other Decks in Technology
See All in Technology
abema-trace-sampling-observability-cost-optimization
tetsuya28
0
480
新米エンジニアをTech Leadに任命する ー 成長を支える挑戦的な人と組織のマネジメント
naopr
1
360
仕様駆動開発を実現する上流工程におけるAIエージェント活用
sergicalsix
11
5.8k
kotlin-lsp の開発開始に触発されて、Emacs で Kotlin 開発に挑戦した記録 / kotlin‑lsp as a Catalyst: My Journey to Kotlin Development in Emacs
nabeo
2
330
短期間でRAGシステムを実現 お客様と歩んだ生成AI内製化への道のり
taka0709
1
190
MCP サーバーの基礎から実践レベルの知識まで
azukiazusa1
18
8.3k
GTC 2025 : 가속되고 있는 미래
inureyes
PRO
0
150
[re:Inent2025事前勉強会(有志で開催)] re:Inventで見つけた人生をちょっと変えるコツ
sh_fk2
2
1.3k
実践マルチモーダル検索!
shibuiwilliam
3
570
20251029_Cursor Meetup Tokyo #02_MK_「あなたのAI、私のシェル」 - プロンプトインジェクションによるエージェントのハイジャック
mk0721
PRO
6
2.4k
AIエージェントは「使う」だけじゃなくて「作る」時代! 〜最新フレームワークで楽しく開発入門しよう〜
minorun365
PRO
5
840
AIで急増した生産「量」の荒波をCodeRabbitで乗りこなそう
moongift
PRO
0
510
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
658
61k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
Visualization
eitanlees
150
16k
Thoughts on Productivity
jonyablonski
72
4.9k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
192
56k
The Cult of Friendly URLs
andyhume
79
6.7k
Making Projects Easy
brettharned
120
6.4k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
Designing Experiences People Love
moore
142
24k
How to Think Like a Performance Engineer
csswizardry
27
2.2k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
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 まとめ