コンテンツにスキップ

Rails向けRigor — miseを使ったステップバイステップセットアップ

このウォークスルーでは、Railsプロジェクトをゼロから最初のrigor check実行まで導きます。miseを使ってRuby 4.0と合わせてRigorをインストールし、解析器をプロジェクトのGemfileの外に置きます。

セットアップの進め方は2通りあります。

アプローチ向いているケース
Arigor-project-initスキルほとんどのプロジェクト——スキルがスタックを検出し、プラグインを提案し、設定を書いてくれます。
B手動のステップバイステップ各決定を明示的に制御したい場合。

どちらも同じ結果になります。迷ったらPath Aを選んでください

このガイドの内容 開始前の確認 · ステップ1 · Ruby 4.0 + Rigorのインストール · Path A — project-initスキル · Path B — 導入モード · config作成 · 最初の実行 · 出力を読む · ベースライン · コミット · 次のステップ


以下が必要です。

  • miseのインストール — まだの場合はmiseのはじめかたガイドに従ってください。asdfや素のgem installを好む場合はRigorのインストールを参照してください。
  • miseのシェルへの組み込みeval "$(mise activate zsh)"(またはお使いのシェルに合わせた同等の記述)をシェルのrcファイルに追加し、rigorPATHから到達できるようにします。詳細はRigorのインストール § RigorをPATHに追加するを参照してください。
  • 既存のRailsプロジェクト(パスが分かっている状態)。

ステップ1 — Ruby 4.0とRigorのインストール(両Pathに共通)

Section titled “ステップ1 — Ruby 4.0とRigorのインストール(両Pathに共通)”

AIエージェントを使っている場合は、代わりに機械読み取り可能なインストールガイドを参照してください。

Install Rigor in this project by following the instructions at
https://raw.githubusercontent.com/rigortype/rigor/refs/heads/master/docs/install.md

エージェントが環境(mise / asdf / 素のRuby)を検出し、適切なツールをインストールして、自動的にrigor-project-initに引き渡します。

お使いの言語でセットアップ
[ja] 日本語
次の手順に従って、このプロジェクトに Rigor をインストールしてください:
https://raw.githubusercontent.com/rigortype/rigor/refs/heads/master/docs/install.md
[zh-Hans] 简体中文
请按照以下地址的说明在此项目中安装 Rigor:
https://raw.githubusercontent.com/rigortype/rigor/refs/heads/master/docs/install.md
[zh-Hant] 繁體中文
請依照以下網址的說明在此專案中安裝 Rigor:
https://raw.githubusercontent.com/rigortype/rigor/refs/heads/master/docs/install.md
[ko] 한국어
다음 주소의 안내에 따라 이 프로젝트에 Rigor를 설치해 주세요:
https://raw.githubusercontent.com/rigortype/rigor/refs/heads/master/docs/install.md
[pt-BR] Português (Brasil)
Instale o Rigor neste projeto seguindo as instruções em:
https://raw.githubusercontent.com/rigortype/rigor/refs/heads/master/docs/install.md
[pt] Português
Utilizando o português de Portugal, instala o Rigor neste projeto seguindo as instruções em:
https://raw.githubusercontent.com/rigortype/rigor/refs/heads/master/docs/install.md
[es] Español
Instala Rigor en este proyecto siguiendo las instrucciones en:
https://raw.githubusercontent.com/rigortype/rigor/refs/heads/master/docs/install.md
[vi] Tiếng Việt
Hãy cài đặt Rigor vào dự án này theo hướng dẫn tại:
https://raw.githubusercontent.com/rigortype/rigor/refs/heads/master/docs/install.md
[fr] Français
Installez Rigor dans ce projet en suivant les instructions à l'adresse :
https://raw.githubusercontent.com/rigortype/rigor/refs/heads/master/docs/install.md
[de] Deutsch
Installieren Sie Rigor in diesem Projekt, indem Sie den Anweisungen unter diesem Link folgen:
https://raw.githubusercontent.com/rigortype/rigor/refs/heads/master/docs/install.md
[it] Italiano
Installa Rigor in questo progetto seguendo le istruzioni a questo link:
https://raw.githubusercontent.com/rigortype/rigor/refs/heads/master/docs/install.md
[th] ภาษาไทย
ติดตั้ง Rigor ในโปรเจกต์นี้โดยทำตามคำแนะนำที่:
https://raw.githubusercontent.com/rigortype/rigor/refs/heads/master/docs/install.md
[id] Bahasa Indonesia
Instal Rigor di proyek ini dengan mengikuti instruksi di:
https://raw.githubusercontent.com/rigortype/rigor/refs/heads/master/docs/install.md
[pl] Polski
Zainstaluj Rigor w tym projekcie, postępując zgodnie z instrukcjami pod adresem:
https://raw.githubusercontent.com/rigortype/rigor/refs/heads/master/docs/install.md
[uk] Українська
Встановіть Rigor у цей проєкт, дотримуючись інструкцій за посиланням:
https://raw.githubusercontent.com/rigortype/rigor/refs/heads/master/docs/install.md
[ru] Русский
Установите Rigor в этот проект, следуя инструкциям по ссылке:
https://raw.githubusercontent.com/rigortype/rigor/refs/heads/master/docs/install.md
[ro] Română
Instalați Rigor în acest proiect urmând instrucțiunile de la adresa:
https://raw.githubusercontent.com/rigortype/rigor/refs/heads/master/docs/install.md
[tr] Türkçe
Bu projeye Rigor'u şu adresteki talimatları izleyerek kurun:
https://raw.githubusercontent.com/rigortype/rigor/refs/heads/master/docs/install.md

プロジェクトルートでターミナルを開き、以下を実行します。

Terminal window
mise use ruby@4.0
mise use gem:rigortype

mise useは、現在のディレクトリのmise.tomlに選択したバージョンを記録し、一ステップでインストールします。確認してください。

Terminal window
rigor --version

すべてのプラグインはrigortype gem内にバンドル済みです——追加のgemインストールは不要です。プラグインはデフォルトで無効です。.rigor.dist.ymlの中で必要なものを有効化します。これがプロジェクトごとに異なる唯一の手順です。


Path A — rigor-project-initスキル(推奨)

Section titled “Path A — rigor-project-initスキル(推奨)”

rigor-project-initスキルは残りのセットアップを自動化します。ファイルを読んでシェルコマンドを実行できるAIコーディングエージェントであれば動作します——Claude固有の仕組みは不要です。

8つのフェーズを順に実行します。

  1. 検出Gemfile / Gemfile.lockを読み込んでフレームワークファミリー(Rails、dry-rb、Sinatraなど)と存在するgemを識別します。
  2. 導入モードの選択acknowledge(acknowledgeモード——今日の診断をベースライン(baseline)にスナップショット;以後のリグレッションを検出)かstrict(strictモード——ゼロに抑える)かを提案します。最初の診断数が100件超のコードベースにはacknowledgeを推奨します。
  3. プラグインの選択 — 検出されたスタックに対応するプラグインセットを提案します。確認またはリストの削減ができます。
  4. .rigor.dist.ymlの書き込み — コミット対象の共有設定。選択したモードに合わせたseverity_profile:が含まれます。
  5. Sig引き上げrigor sig-gen --writeを実行し、Rigor自身の推論からベースラインのsig/を生成します。
  6. トリアージrigor triage --format jsonを実行して診断ストリームをクラスタ別に解析します。
  7. ベースライン(acknowledgeモードのみ)— .rigor-baseline.ymlを生成し、設定のbaseline:を接続します。
  8. 実バグの表面化 — 本物のバグである可能性が高いクラスタをハイライトし、アプリ固有のメタプログラミングやRigorの組み込みカバレッジのギャップに対するエスカレーションパスを提案します。

AIコーディングエージェントに次のいずれかを伝えてください。

“Set up Rigor in this project.” “Configure Rigor for this Rails app.” “Add type checking.”

エージェントは次のコマンドを実行して応答するはずです。

Terminal window
rigor skill print rigor-project-init

このコマンドはSKILL定義を標準出力に出力します——SKILLファイルとそのreferences/ディレクトリの絶対パスを含む短いヘッダー、続いてSKILL本文です。エージェントはその手順に従い、ヘッダーが示すディレクトリからreferences/NN-*.mdファイルを順に読み込みます。

エージェントが自動的にコマンドを実行しない場合は、明示的に依頼してください: rigor skill print rigor-project-initを実行して、表示される手順に従ってください。”

このフローは任意のバンドルスキルに対して使用できます。

  • rigor skill list — パス付きで全バンドルスキルをリストアップします。
  • rigor skill print <name> — SKILLの本文を表示します。
  • rigor skill path <name>SKILL.mdの絶対パスだけを表示します(エージェントがファイルを直接読む場合に便利)。

スキルはインストール済みのrigortype gem内のrigor skill path rigor-project-initが示すパスにあります。正規のソースはskills/rigor-project-init/SKILL.mdです。


Path B — 手動のステップバイステップ

Section titled “Path B — 手動のステップバイステップ”

ステップ2 — 導入モードの選択

Section titled “ステップ2 — 導入モードの選択”
モード適したケース動作
Acknowledge多くの診断を抱えた既存コードベース今日の診断をベースラインに記録し、PRごとに新しいものだけを表示する。
Strict新規または小規模なプロジェクト未解決診断ゼロ;ベースラインなし。

最初のrigor checkで100件超の診断が報告される場合、acknowledgeモードが自然な出発点です。後から厳しくすることもできます。

ステップ3 — .rigor.dist.ymlの作成

Section titled “ステップ3 — .rigor.dist.ymlの作成”

慣習として.rigor.dist.ymlを共有プロジェクト設定としてコミットし、.rigor.ymlは開発者個人のローカルオーバーライド(gitignore)に残します。両ファイルが存在する場合、.rigor.ymlが優先されます。

プロジェクトルートに.rigor.dist.ymlを作成してください。

# .rigor.dist.yml — Rigor設定(コミット対象; 共有)
target_ruby: "3.3" # Railsアプリが対象とするRubyバージョン
paths:
- app
- lib
exclude:
- vendor
- tmp
plugins:
# Rails core
- rigor-activerecord
- rigor-actionpack
- rigor-rails-routes
- rigor-rails-i18n
- rigor-actionmailer
- rigor-activejob
# Rails向けに常に含める — ActiveSupportのcore_extメソッドをカバー
- rigor-activesupport-core-ext
# テスト — プロジェクトで使っているものだけ残す
- rigor-rspec
- rigor-factorybot
severity_profile: lenient # strictモードの場合は "strict"; 省略すると "balanced"
# baseline: .rigor-baseline.yml # ステップ6の後にコメントアウトを外す(acknowledgeモードのみ)

target_ruby:はプロジェクトのRubyバージョン(Gemfileまたは.ruby-versionの値)に合わせ、plugins:リストは実際に使っているものだけに絞ってください。

rigor-activesupport-core-extが重要な理由。これがないと、すべてのActiveSupport拡張メソッド呼び出し(3.days"x".squishTime.currentなど)がcall.undefined-method診断を生成します。実際のRailsアプリでこれが単一最大クラスタになることはほぼ確実です——Mastodonの計測では489件中約365件がまさにこれが原因でした。常に含めてください。

スタックに応じて追加を検討するプラグイン:

プラグイン使うケース
rigor-activestoragehas_one_attached / has_many_attached
rigor-actioncableActionCableチャンネル
rigor-deviseDevise認証
rigor-punditPunditポリシー
rigor-sidekiqSidekiqワーカー
rigor-rspec-railsRSpec HTTPステータスマッチャー
rigor-shoulda-matchersshoulda-matchers
rigor-minitestMinitest / Test::Unit

フルカタログはplugins/README.mdを参照してください。

キャッシュディレクトリを.gitignoreに追加してください。

.rigor/
Terminal window
rigor check

型チェックを一度も行っていないプロジェクトでは最初のカウントが多いのは正常です。

rigor triageは診断ストリームを1件ずつ列挙する代わりにまとめて表示します。

Terminal window
rigor triage

ルールIDでグループ化し、ファイル別のホットスポットを示し、よくあるクラスタには簡潔な「理由」のヒントを表示します——たとえば、call.undefined-methodエラーの大きなブロックがActiveSupportのcore_extバンドルの欠如によるものである可能性や、gemがRBSを同梱しておらずrbs collection installで解決できることなどを指摘します。

トリアージ出力を使って、どこから着手するかを決めましょう: まず本物のバグ、次にベースラインに記録すべき大きなクラスタの順です。

Railsルートの診断rigor-rails-routesはルートヘルパーを静的にチェックします。標準的なRailsパターンのほとんどはサポートされていますが、v0.1.xではいくつかがunknown-helperの誤検知(false positive)を生成します。

  • concern :name do ... endブロック内にのみ定義されたルート。concernの本体は定義時にスキップされます(アリティ(arity)違いの誤検知を避けるため)。concerns: :nameで注入されたヘルパーは未知として表示されます。
  • devise_for :usersやその他のエンジンマクロが生成するルート——パーサはRubyコードを実行しません。

存在するはずのルートでunknown-helperのクラスタが見える場合、acknowledgeモードが正しいアプローチです——それらをベースラインに記録し、残った診断で実際の問題を見つけましょう。

ステップ6 — ベースラインの生成(acknowledgeモード)

Section titled “ステップ6 — ベースラインの生成(acknowledgeモード)”

strictモードを選んだ場合はこのステップをスキップしてください。

Terminal window
rigor baseline generate

これでプロジェクトルートに.rigor-baseline.ymlが書き込まれます。.rigor.dist.ymlbaseline:行のコメントアウトを外して有効化します。

baseline: .rigor-baseline.yml

ベースラインが有効な状態では、rigor checkは現在のコードベースでクリーンに終了し、ベースライン取得後に新たに現れた診断だけを表示します。完全なベースラインワークフローはベースラインを参照してください。

Terminal window
git add mise.toml .rigor.dist.yml .gitignore
git add .rigor-baseline.yml # ステップ6で生成した場合
git commit -m "Add Rigor type checker"

mise.tomlはRuby 4.0とRigorのバージョンをすべての貢献者向けにピン留めします——別のマシンでmise installを実行すれば、プロジェクトのGemfileを変更することなく完全に同じツール群が復元されます。


  • CI — プルリクエストが自動的にゲートされるよう独立したRigorジョブを追加する: CIでのRigor実行
  • エディタ — 入力しながらインラインで診断を表示する: エディタ統合
  • ベースラインの削減rigor-baseline-reduceスキルを使ってルールごとにバックログを解消していく: ベースライン
  • プラグイン — 各プラグインのドキュメントには設定オプションの詳細が記載されています: プラグインの使い方plugins/

© 2026 TypedDuck. Licensed under CC BY-SA 4.0.