Upgrade to Pro — share decks privately, control downloads, hide ads and more …

そのライブラリ、続投?それとも解雇? 「stay_or_go」で素早く決断!

Avatar for kon_yu kon_yu
October 15, 2025
140

そのライブラリ、続投?それとも解雇? 「stay_or_go」で素早く決断!

- **stay_or_go でライブラリを自動スコアリング** - GitHub リポジトリ情報から gem の健全性を数分で評価可能
- **スコアベースで効率的に運用** - 低スコアの gem に絞って調査することで、点検時間を大幅削減
- **実績: 10 年運用プロジェクトで gem を 10%削減** - 不要な依存を削減し、よりメンテナンスされたライブラリへ置き換え
- **Gemfile の定期検診をしましょう** - 絶対使ってない・古い gem あるから

Avatar for kon_yu

kon_yu

October 15, 2025
Tweet

More Decks by kon_yu

Transcript

  1. Gemfile の肥大化問題 2 その gem 本当に全部必要? その gem を利用しているのは 1

    ファイルだけだったり そもそも使っているコードがなくなっていたり コードはあるけどどこにも呼ばれていない(けどテストはある) 3
  2. Rails/Ruby バージョンアップ時の課題 依存 gem が古くてアップデートできない Ruby2 系 →3.0 移行時に問題発覚しがち 依存している

    gem がメンテナンスされていない PR を送っても放置される... どの gem から調査すればいいの? 一つ一つの gem を今後も使っていくか調査してられない 優先順位をつけたいけど判断基準がない 5
  3. 背景と課題 gem(ライブラリ)管理はどんなサービスでも避けられない セキュリティリスクは Github の Dependabot はセキュリティが教えてくれるけ ど、問題が出ないと教えてくれない メンテされていない gem

    は依存関係により Rails や Ruby のアップグレードの足か せ gem が多いとコードの見通しが悪くなる でも、どの gem から手をつければいいかわからない... 6
  4. 解決策 stay_or_go もともと仕事で同じようなものを Ruby で作ったものを Go 言語で再実装 ライブラリの GitHub リポジトリを使用して自動でスコアリング

    評価基準 フォーク数、スター数、Issue 数、PR 数、最終コミット日、アーカイブされ ているか 結果を Markdown のテーブル、CSV、TSV に出力 Markdown のテーブル から Notion でデータベース化 CSV から pandas.DataFrame に読み込ませて統計処理 7
  5. 出力例: Name RepositoryURL LastCommitDate ... Score activeadmin https://... 2024-11-25T21:00:24Z ...

    1282 active_decorator https://... 2024-11-04T14:51:22Z ... 121 active_decorator-rspec https://... 2017-03-15T12:48:01Z ... -137 activerecord-import https://... 2024-11-16T06:00:21Z ... 466 8
  6. システムの仕組み データ取得からスコアリングまで 1. Rubygems から依存情報(JSON)取得 2. GitHub API でリポジトリ情報を並列取得 Go

    言語の並列処理を活用 3. スコアリングロジック スター数 → 人気度 最新コミット日時 → メンテナンス状況 フォーク数、Issue 数、PR 数なども考慮 これらを総合してスコア算出 10
  7. stay_or_go のリポジトリ GitHub リポジトリ: https://github.com/uzumaki-inc/stay_or_go GitHub Actions Marketplace に登録済み https://github.com/marketplace/actions/stay_or_go-docker-action

    Action として簡単に CI/CD パイプラインに組み込み可能 現在のところ Ruby(Gemfile)と Go 言語(go.mod)に対応 Python 対応、PHP 対応など PR どしどしお待ちしています 11
  8. 実際に見つかった問題あるライブラリ ネイティブ拡張系 gem Ruby3 系からパフォーマンス逆転(純粋 Ruby の方が速い) 環境構築で問題発生しやすい 避けられるものは避けたい DSL

    系 gem devise, activeadmin はメンテされているが... マイナーな DSL 系はメンテナンス停止が多い 特定の目的に特化した DSL を提供する gem は要注意 12
  9. 実際の効果 10 年近く運用している Ruby on Rails のプロジェクトに対して実施 効果 100 以上のライブラリ(gem)を数分でスコアリング

    管理する gem を 10% 削減 よりハイパフォーマンスな gem に置き換え 顧客の声 : スコアをもとに、スコアが N 以下のものをすべて点検するよう指標ができた どの gem を調査するべきか、検討する時間を省略できた 13
  10. stay_or_go 運用の仕方 効率的な運用方法 ハードコアに Github actions の PR のたびに実行 点数が

    N 店以下は CI を落とす せっかく GitHub Actions Marketplace に公開したので使ってほしい スコアベースの運用 ざっくりスコアが N 点以下のものを調査対象とする 半年に一回の定期点検がおすすめ 14
  11. まとめ stay_or_go でライブラリを自動スコアリング - GitHub リポジトリ情報から gem の健全性を数分で評価可能 スコアベースで効率的に運用 -

    低スコアの gem に絞って調査することで、点検時 間を大幅削減 実績: 10 年運用プロジェクトで gem を 10%削減 - 不要な依存を削減し、よりメン テナンスされたライブラリへ置き換え Gemfile の定期検診をしましょう - 絶対使ってない・古い gem あるから 16
  12. UZUMAKI の CM: 2026 年 1 月〜 フリーランス & 副業メン

    バー募集! カジュアル面談 受付中「いちど 話を聞いてみたい」という方も 大歓迎です 17