Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
25
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

Organization

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

はじめに: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に感謝します🙏

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
25
Help us understand the problem. What are the problem?