OSS探訪

Rubyクラスに状態・イベント・遷移を定義し、業務状態の変化をステートマシンとして管理する

スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
5,229
主要言語
Ruby
ライセンス
MIT
リポジトリ最終更新
2026/07/05
ページ内ナビ

概要

AASMは、Rubyクラスへ有限ステートマシンを組み込むライブラリです。状態、イベント、遷移に加えてguardやcallbackを定義でき、plain RubyだけでなくActiveRecord、Mongoidなどの永続化層とも連携できます。注文、申請、ジョブなどの状態変化を条件と副作用ごとコードにまとめられます。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

主な特徴

状態・イベント・遷移をRubyのDSLで定義する

initial stateと複数のstateを宣言し、eventごとにfrom/toのtransitionを定義します。現在状態の判定や、特定eventを実行可能かどうかの確認用methodも生成されます。

出典:[1]

guardとcallbackで遷移条件と副作用を整理する

transitionやeventへguardを付け、before/after、state enter/exit、errorなどのcallbackを組み合わせられます。状態変更に伴う通知や監査処理を遷移の流れに配置できます。

出典:[1]

ActiveRecord等の永続化とtransaction・lockingへ接続する

plain Rubyに加えActiveRecord、Mongoid、Dynamoidなどのadapterを持ち、ActiveRecordではbang eventによる保存、transaction、pessimistic lockingなどを利用できます。

出典:[1]

向いている用途

状態遷移のルールをmodel近くへ明示したいRubyアプリに向く

注文status、承認flow、background jobの段階など、許可される遷移と条件を分散したif文ではなく一つのstate machineとして管理したい場合に適しています。

出典:[1]

導入前の確認

6.0ではRuby 3+、ActiveRecord連携ではRails 7+が必要

current sourceはAASM 6.0.0を宣言し、5→6 migration guideではRuby 2とRails 6のsupport終了を明記しています。既存applicationのruntime versionを先に確認します。

出典:[2][4][3]

namespace付きevent methodの名前が5.xから変わる

6.0ではnamespaceを使うstate machineでplainなevent methodを作らず、namespace suffix付きmethodを直接生成します。5.xでplain methodを呼んでいたcodeは移行が必要です。

出典:[4]

bang eventのpersistence失敗が例外になる既定値変更を確認する

6.0ではwhiny_persistenceが既定でtrueになり、保存に失敗したbang eventはsilentにfalseを返すのではなく例外を発生させます。既存error handlingを確認します。

出典:[4]

参考にした公式資料

  1. [1]AASM README(2026-10-03)
  2. [2]AASM version source(2026-10-03)
  3. [3]AASM gemspec(2026-10-03)
  4. [4]AASM v5 to v6 migration guide(2026-10-03)
  5. [5]AASM MIT license(2026-10-03)
編集部からの補足

注文・申請・ジョブなど、状態と許可された遷移をコード上で明示したいRubyアプリで使いやすいライブラリです。6.0ではRuby/Rails要件とnamespaced event、persistence失敗時の挙動が変わるため、5.xからの更新は通常のpatch更新として扱わない方が安全です。

3ステップで試す

  1. 1

    AASMをGemfileへ追加

    AASM 6系はRuby 3+、ActiveRecord連携ではRails 7+が前提です。既存applicationのversionを先に確認します。

    Add gem 'aasm' to Gemfile, then run bundle install
  2. 2

    状態column付きmodelを準備

    READMEのgenerator例に沿ってmodelとstate column用migrationを準備します。既存modelへ適用する場合は生成差分を確認してください。

    rails generate aasm Order state
  3. 3

    stateとeventを定義して遷移を確認

    state、event、transitionを定義し、consoleでcurrent stateとevent実行を確認します。

    Open app/models/order.rb, define the aasm block, then run rails console
公式READMEで確認

成長

成長の推移 · 直近30日

5,229 Stars

推移データを蓄積中です。

開発アクティビティ

直近90日・週次

Commit(直近30日)
0
Open PR
32

開発アクティビティを蓄積中です。

Built with

カテゴリとタグ

GitHubデータ

GitHubのデータGitHubの詳細データを見る

GitHub Topics

  • state-machine
  • ruby
  • aasm
  • transition
  • activerecord
  • mongoid
  • hacktoberfest
  • rails
Stars
5,229
Forks
646
Watchers
59
Open Issues
138
Contributors
179
所有者種別
Organization
主要言語
Ruby
ライセンス
MIT
リポジトリ最終更新
2026/07/05

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?
AASMとは?Ruby・Railsで状態遷移を管理するステートマシンライブラリ | OSS探訪