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
ruby.wasmとPicoRuby.wasmに対応した仮想DOMライブラリを作ってる話 #kaigieffect_kaigi
sue445
0
190
Create Ruby native extension gem with Go
sue445
0
850
Road to RubyKaigi 2025 #rubykaigi2026_saisoku
sue445
0
180
Road to Go Gem #rubykaigi
sue445
0
3.3k
pixiv Cloud Journey #pixivmeetup
sue445
0
1.8k
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
Sentry GKEに リプレイス 1年間の 知見見せます / Migrated to GKE Sentry #pixivdevmeetup
sue445
0
850
Other Decks in Technology
See All in Technology
KanaAI
shreyas1009
0
140
BedrockとLambdaで作る リアルタイム進行型推理ゲーム
kawametho
0
160
検証フェーズはAIの回答を判断するための学習機会
toru_kubota
2
360
Claude Designがめちゃくちゃ便利なので使ってほしい
diggymo
0
230
個別開発で終わらせない。 現場の課題をプロダクトの強さに変える StockmarkのFDE
ktkrhr
0
540
Apache Iceberg が拓く AI 時代のオープンレイクハウス
tomtanaka
0
210
Snowflake Horizon Catalog と Apache Iceberg で作る オープンなデータ基盤
kitagawaz
0
390
AI Native Platform Engineering 〜PlatformとAgileで“作る速さ”を“価値”へ〜
uya116
0
600
AIに攻撃される前に、AIに攻撃させる
tsuchikazu
0
120
ビジネスを止めない技術的負債の返済のための戦略とその手法 - 技術的負債と向き合う / Complexity and Simplicity
soudai
PRO
3
460
Argo CDとAtlantisで実現するインフラ管理のセルフサービス化──小規模SREチームで支えるプラットフォーム
cassius7
0
280
AI感のないAWS構成図をAIエージェントに描かせたい!
sagochiko
2
500
Featured
See All Featured
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
450
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1k
My Coaching Mixtape
mlcsv
0
330
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
310
The Limits of Empathy - UXLibs8
cassininazir
1
700
What's in a price? How to price your products and services
michaelherold
247
13k
Google's AI Overviews - The New Search
badams
0
1.6k
Into the Great Unknown - MozCon
thekraken
41
2.7k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
560
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
450
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 まとめ