73
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

RailsのAction XxxやActive Xxxはどんな命名基準で使い分けられるのか

Last updated at Posted at 2018-11-02

はじめに:ActionとActiveの命名基準は何?

Railsフレームワークの内部には以下のようなコンポーネント(クラス群)が用意されています。

  • Action Cable
  • Action Mailer
  • Action Pack
  • Action View
  • Active Job
  • Active Model
  • Active Record
  • Active Storage
  • Active Support

各コンポーネントのPrefix(接頭辞)はよく見ると、ActionとActiveの2種類があります。

ActionとActive、どちらも最初の4文字が同じなので、ぱっと見で違いが分かりづらいですし、どんな基準で名前が使い分けられているのかよくわかりません。

僕もときどき「あれっ、Action Storageだっけ?それともActive Storage??」と迷うことがよくありました。

というわけで、RailsにおけるActionとActiveの命名基準について調べてみました。

回答:ActionはController層またはView層、ActiveはModel層(らしい)

命名基準に関する公式情報は見つけられなかったのですが、Stack Overflowに同じような質問と回答が載っていました。

どちらの回答も次のような内容が載っていました。

  • ActionはController層とView層に関連するコンポーネントで、HTTPリクエストとHTTPレスポンスを処理する
  • ActiveはModel層に関連するコンポーネントで、アプリケーションのドメインモデルやビジネスロジックを処理する

なるほど、たしかに、

「Action Cable、Action Mailer、Action Pack、Action Viewは、Controller層とView層に関連する」

「Active Job、Active Model、Active Record、Active Storage、Active Supportは、Model層に関連する」

と言われてみると、そんな気がしてきます。

公式情報ではないので、絶対正しいとは言い切れませんが、「おそらくそうであろう」と考えておいても問題なさそうです。
ですので、現時点ではこれを回答としておきます。

(公式情報をご存じの方がいたら教えてください!)

余談:Action TextはもともとActive Textだった

Rails 6で導入が予定されているAction Text(リッチテキスト入力機能)は、もともとActive Textという名前だったそうです。

以下のコミットでDHH氏が「この機能はActive Modelというより、Action Viewに近いから」という理由で名前をAction Textに変更しています。

Rename from Active Text to Action Text · rails/actiontext@f1d7487

Action TextのようにViewにもModelにも関連するコンポーネントだと、こんなふうに命名が揺れることもあるんですね。

謝辞

Stack Overflowの回答やDHH氏のコミットを見つけてくれた、SonicGardenの@kei-p@tkawaに感謝します🙏

73
25
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
73
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?