Stimulusのバリュー(Values)を理解しよう【Rails × Stimulus入門】

Stimulusを使ったRailsアプリケーション開発では、「バリュー(Values)」という仕組みを使って、HTML要素からJavaScriptコントローラーに値を簡単に渡すことができます。
この記事では、Stimulus公式ドキュメントの「Values」の内容を日本語でわかりやすく解説します。

公式ドキュメント(英語)

目次

Stimulusのバリュー(Values)とは?

Stimulusのバリューとは、HTMLのデータ属性を使ってStimulusコントローラーに値を渡す仕組みです。
バリューを使うことで、HTML側で指定した値をJavaScript側で簡単に取得・利用できます。

Stimulusでは、HTMLのdata-[コントローラー名]-[値名]-value属性を使って、値を指定します。

基本的なバリューの使い方

Stimulusのバリューを使うには、以下のようにHTML要素にdata-[コントローラー名]-[値名]-value属性を指定します。

HTMLの例

<div data-controller="hello" data-hello-name-value="Stimulus">
  <button data-action="click->hello#greet">挨拶する</button>
</div>

上記の例では、helloコントローラーにnameという名前のバリューを指定しています。
このバリューの値は「Stimulus」です。

JavaScriptの例

// hello_controller.js
import { Controller } from "@hotwired/stimulus"

export default class extends Controller {
  static values = { name: String }

  greet() {
    alert(`こんにちは、${this.nameValue}さん!`)
  }
}
  • コントローラー内でstatic valuesオブジェクトにバリュー名と型を指定します。
  • JavaScript内では、this.[バリュー名]Valueというプロパティでバリューの値にアクセスできます。

バリューの型(Types)について

Stimulusのバリューには、以下の型を指定できます。

  • String(文字列)
  • Number(数値)
  • Boolean(真偽値)
  • Array(配列)
  • Object(オブジェクト)

型を指定することで、Stimulusが自動的に値を適切な型に変換してくれます。

型指定の例

static values = {
  name: String,
  age: Number,
  active: Boolean,
  tags: Array,
  config: Object
}

HTMLの例(型ごとの指定方法)

<div data-controller="example"
     data-example-name-value="Stimulus"
     data-example-age-value="30"
     data-example-active-value="true"
     data-example-tags-value='["rails", "stimulus", "javascript"]'
     data-example-config-value='{"theme":"dark","layout":"grid"}'>
</div>
  • HTML側では、文字列以外の型も文字列として指定しますが、Stimulusが自動的に指定した型に変換します。

バリューのデフォルト値を指定する方法

Stimulusでは、バリューにデフォルト値を指定することも可能です。
HTML側で値が指定されていない場合に、デフォルト値が使われます。

JavaScriptの例(デフォルト値の指定)

static values = {
  name: { type: String, default: "ゲスト" },
  age: { type: Number, default: 20 },
  active: { type: Boolean, default: false }
}
  • HTML側で値が指定されていない場合、デフォルト値が使われます。

バリューの変更を検知する方法(Value Changedコールバック)

Stimulusでは、バリューの値が変更されたときに自動的に呼び出されるコールバックメソッドを定義できます。
コールバックメソッドの名前は、[バリュー名]ValueChangedという形式で指定します。

JavaScriptの例(変更検知)

import { Controller } from "@hotwired/stimulus"

export default class extends Controller {
  static values = { name: String }

  nameValueChanged(newValue, oldValue) {
    console.log(`名前が「${oldValue}」から「${newValue}」に変更されました。`)
  }
}
  • バリューの値が変更されると、[バリュー名]ValueChangedメソッドが自動的に呼び出されます。
  • 新しい値と古い値を引数として受け取ることができます。

バリューのベストプラクティスと注意点

  • バリューを使うことで、HTML側からJavaScriptコントローラーに簡単に値を渡せます。
  • バリュー名は、役割が明確にわかる名前を付けましょう(例:name, age, activeなど)。
  • 型を適切に指定することで、値の変換をStimulusに任せることができます。
  • バリューの変更を検知したい場合は、[バリュー名]ValueChangedメソッドを活用しましょう。

まとめ

Stimulusのバリューを使うことで、HTML要素からJavaScriptコントローラーに値を簡単に渡すことができます。

  • HTML側でdata-[コントローラー名]-[値名]-value属性を指定
  • JavaScript側でstatic valuesオブジェクトにバリュー名と型を指定
  • 値はthis.[バリュー名]Valueで取得
  • デフォルト値を指定可能
  • 値の変更を検知するコールバックメソッドを定義可能

Stimulusのバリューを理解して、Railsアプリケーションのフロントエンド開発をより効率的に進めましょう。

さらに深く学びたい方へ

この記事で紹介した技術をマスターするには、体系的な学習が重要です。独学で挫折しそうな方は、現役
エンジニアから直接学べるプログラミングスクールも検討してみてください。

現場で通用するスキルを身につけるなら

DMM WEBCAMPのカリキュラムは、実際の開発現場を想定したチーム開発も経験できます。ポートフォリオ制作
支援もあり、転職活動で差をつけられます。

未経験から4ヶ月でエンジニアとして活躍できるレベルまで成長可能です。

実務レベルのWeb開発スキルを習得するなら

RUNTEQは、1000時間の圧倒的学習量で、現場で即戦力となるWebエンジニアを育成します。Ruby on
Railsに特化し、実際のWebサービス開発を通じて実践力を養います。

卒業生の多くが自社開発企業への転職に成功している実績があります。

じっくり理解を深めたい方へ

この記事で紹介した内容を確実に身につけるには、分からない点をすぐに質問できる環境が重要です。CodeCa
mpなら、現役エンジニアとのマンツーマンレッスンで、あなたのペースで着実にスキルアップできます。

朝7時〜夜23時まで、365日受講可能なので、仕事や学業と両立しながら学習を進められます。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次