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
420
Road to RubyKaigi 2025 #rubykaigi2026_saisoku
sue445
0
80
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.3k
Fix SQL N+1 queries with RuboCop #rubykaigi
sue445
2
6.3k
sue445とOSSと社内ツール #subcul_dev
sue445
0
870
Sentry GKEに リプレイス 1年間の 知見見せます / Migrated to GKE Sentry #pixivdevmeetup
sue445
0
760
sue445謹製社内ツール十一選 / su445 in-house tools #pixivdevmeetup
sue445
1
530
Other Decks in Technology
See All in Technology
ソフトウェアエンジニアの生成AI活用と、これから
lycorptech_jp
PRO
0
900
dbtとAIエージェントを組み合わせて見えたデータ調査の新しい形
10xinc
0
190
CREが作る自己解決サイクルSlackワークフローに組み込んだAIによる社内ヘルプデスク改革 #cre_meetup
bengo4com
0
340
OTEPsで知るOpenTelemetryの未来 / Observability Conference Tokyo 2025
arthur1
0
250
Azureコストと向き合った、4年半のリアル / Four and a half years of dealing with Azure costs
aeonpeople
1
300
もう外には出ない。より快適なフルリモート環境を目指して
mottyzzz
13
10k
クラウドとリアルの融合により、製造業はどう変わるのか?〜クラスメソッドの製造業への取組と共に〜
hamadakoji
0
430
現場データから見える、開発生産性の変化コード生成AI導入・運用のリアル〜 / Changes in Development Productivity and Operational Challenges Following the Introduction of Code Generation AI
nttcom
1
480
serverless team topology
_kensh
3
230
Behind Postgres 18: The People, the Code, & the Invisible Work | Claire Giordano | PGConfEU 2025
clairegiordano
0
130
HonoとJSXを使って管理画面をサクッと型安全に作ろう
diggymo
0
180
NLPコロキウム20251022_超効率化への挑戦: LLM 1bit量子化のロードマップ
yumaichikawa
3
470
Featured
See All Featured
What's in a price? How to price your products and services
michaelherold
246
12k
Bash Introduction
62gerente
615
210k
Practical Orchestrator
shlominoach
190
11k
A Tale of Four Properties
chriscoyier
161
23k
Balancing Empowerment & Direction
lara
5
700
For a Future-Friendly Web
brad_frost
180
10k
Agile that works and the tools we love
rasmusluckow
331
21k
The Cult of Friendly URLs
andyhume
79
6.6k
YesSQL, Process and Tooling at Scale
rocio
173
15k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
BBQ
matthewcrist
89
9.9k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.2k
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 まとめ