カテゴリ: Rails 更新日: 2026/03/11

Stimulus入門:コントローラ・ターゲット・アクション設計をやさしく理解する完全ガイド

Stimulus入門:コントローラ/ターゲット/アクション設計とベストプラクティス
Stimulus入門:コントローラ/ターゲット/アクション設計とベストプラクティス

先生と生徒の会話形式で理解しよう

生徒

「Railsの画面をちょっとだけ動かしたいんですが、JavaScriptは難しそうで不安です…」

先生

「RailsではStimulusという仕組みを使うと、少ないJavaScriptで画面を動かせます。」

生徒

「HTMLに書くだけで動くって本当ですか?」

先生

「本当です。コントローラ・ターゲット・アクションを順番に見ていきましょう。」

1. Stimulusとは?Railsと相性が良い理由

1. Stimulusとは?Railsと相性が良い理由
1. Stimulusとは?Railsと相性が良い理由

Stimulusは、RailsのHotwireを構成するJavaScriptフレームワークの一つです。 最大の特徴は「HTMLを主役にする」点です。 難しい設定ファイルや大量のコードを書かなくても、HTMLに属性を書くだけで動きを追加できます。 プログラミング未経験の方にとっては、スイッチを押したら電気がつくような感覚で理解できます。 Railsの考え方である決まりごとを守れば迷わない設計とも相性が良く、画面のちょっとした動きを安全に実装できます。

2. Stimulusの基本構造:コントローラとは何か

2. Stimulusの基本構造:コントローラとは何か
2. Stimulusの基本構造:コントローラとは何か

Stimulusで最初に登場するのがコントローラです。 コントローラは「このHTMLの動きをまとめて管理する箱」のような存在です。 例えば、リモコンがテレビ専用であるように、Stimulusのコントローラも担当するHTMLが決まっています。 Railsではapp/javascript/controllersにファイルを作成します。


import { Controller } from "@hotwired/stimulus"

export default class extends Controller {
  connect() {
    console.log("接続されました")
  }
}

このconnectは、HTMLとコントローラがつながった瞬間に呼ばれる処理です。 「画面に現れたら動く準備をする」と覚えると理解しやすくなります。

3. ターゲット:操作したい場所を名前で指定する

3. ターゲット:操作したい場所を名前で指定する
3. ターゲット:操作したい場所を名前で指定する

ターゲットは「操作したい場所に名前を付ける仕組み」です。 付箋にメモを書いて貼るイメージをすると分かりやすいです。 HTML側でdata-○○-targetを使って指定します。


<div data-controller="counter">
  <span data-counter-target="number">0</span>
</div>

JavaScript側では、その名前を使って簡単にアクセスできます。 難しいDOM操作を覚える必要がありません。


export default class extends Controller {
  static targets = ["number"]
}

4. アクション:クリックなどの動作を結びつける

4. アクション:クリックなどの動作を結びつける
4. アクション:クリックなどの動作を結びつける

アクションは「何かしたら何をするか」を決める仕組みです。 ボタンを押したらベルが鳴る、という因果関係をそのまま書けます。 HTMLではdata-actionを使います。


<button data-action="click->counter#increment">
  増やす
</button>

increment() {
  this.numberTarget.textContent++
}

「clickしたらcounterコントローラのincrementを実行する」 と、日本語の文章のように読めるのがStimulusの強みです。

5. コントローラ設計の基本ルール

5. コントローラ設計の基本ルール
5. コントローラ設計の基本ルール

Stimulusでは、一つのコントローラに多くの役割を持たせすぎないことが重要です。 リモコン一つでテレビとエアコンを操作しないのと同じです。 画面の部品ごとにコントローラを分けると、読みやすく壊れにくくなります。 また、HTMLの構造をそのまま活かす設計を意識すると、Railsらしいコードになります。

6. よくある失敗とベストプラクティス

6. よくある失敗とベストプラクティス
6. よくある失敗とベストプラクティス

初心者がつまずきやすいのは、名前の付け方です。 コントローラ名・ターゲット名・アクション名は、役割が分かる名前にしましょう。 また、CSSのクラスと混同しないように注意が必要です。 Stimulusは見た目ではなく「動き」を担当します。 役割を分けて考えることで、コードが整理されます。

7. ViewComponentとStimulusを組み合わせる考え方

7. ViewComponentとStimulusを組み合わせる考え方
7. ViewComponentとStimulusを組み合わせる考え方

ViewComponentは「見た目の部品」を管理する仕組みです。 Stimulusは「動き」を担当します。 この二つを組み合わせると、HTML・見た目・動きが整理され、 後から読み返しても理解しやすいコードになります。 部品ごとに責任を分ける考え方は、長く使えるRailsアプリを作る土台になります。

カテゴリの一覧へ
新着記事
New1
Ruby
Rubyの文法超入門:式と文・endの役割をやさしく解説
New2
Rails
Nodeは本当に不要?Railsのimportmap最小構成とjsbundling構成の違いと選び方
New3
Rails
Rails開発で使うデータベースの選び方とSQLite・MySQL・PostgreSQLの初期設定
New4
Ruby
Ruby環境構築の最終チェック!セットアップ失敗あるあると確認リスト
人気記事
No.1
Java&Spring記事人気No1
Rails
Railsメール確認(confirmable)の実装手順を完全ガイド!初心者でもわかる有効化リンクと期限設定
No.2
Java&Spring記事人気No2
Ruby
OpenSSL関連エラーの直し方を完全解説!証明書・ビルドオプション・brew対策まとめ
No.3
Java&Spring記事人気No3
Ruby
WindowsでRubyをインストールする方法!RubyInstallerとMSYS2を使った完全ガイド
No.4
Java&Spring記事人気No4
Ruby
RubyのEnumerable完全解説!cycle・zipで繰り返しの達人になろう
No.5
Java&Spring記事人気No5
Ruby
プロキシ環境でも安心!社内ネットワーク下でのRuby gemインストール完全ガイド【SSL対応も解説】
No.6
Java&Spring記事人気No6
Ruby
PATHと環境変数の正しい設定!Windows・Mac・Linux別チェックリスト付き
No.7
Java&Spring記事人気No7
Rails
asdfで複数言語を一元管理:Ruby/Node/psql をまとめてセットアップ
No.8
Java&Spring記事人気No8
Ruby
Rubyのany? all? none? one? を完全攻略!条件判定を劇的に短く書く方法