設定より規約(CoC)とは
設定より規約(Convention over Configuration、略称:CoC)は、ソフトウェア開発において、開発者が行うべき設定の量を減少させ、単純化を図る設計手法です。この手法の根本的な考え方は、開発者が指定しなければならないのは、アプリケーションが従う慣例から外れる場合だけである、という点にあります。具体的には、モデルに「Sales」というクラスを定義した場合、デフォルトで
データベース内の対応する表は「sales」と名付けられます。もし、このデフォルトから外れて「products_sold」という名称を使用したい際にのみ、その名称を指定するためのコードが必要となるのです。
背景
従来のソフトウェア開発フレームワークには、多数の
設定ファイルと、それぞれに多くの設定項目が存在していました。これによりプロジェクトに固有の情報を設定することが求められ、URLの設定からクラスと
データベーステーブルのマッピングまで、多岐にわたる情報が含まれていました。このような状況は、アプリケーションの設計が複雑になり過ぎていることを示すことが少なくありません。
例えば、
Javaで有名な永続性マッパーである
Hibernateの初期バージョンでは、エンティティのフィールドと
データベーステーブルのマッピングをXMLファイルで記述する必要がありました。しかし、ほとんどの情報は、クラス名と
データベーステーブル名、そしてフィールド名とカラム名を同じにするというシンプルな規約を用いることで、あらかじめ定義する必要はなかったでしょう。実際、
Hibernateの後続バージョンではこのXML
設定ファイルが廃止され、上述したような規約が採用されました。また、規約から外れる必要がある場合には、
Javaの
アノテーションを利用して独自の定義を書くことができるようになっています。
使用例
最近の多くのフレームワークは、この「設定より規約」のアプローチを取り入れています。具体例としては、
Ruby on Rails、Kohana、
Grails、
Grok、Zend Framework、
CakePHP、
Symfonyなどが挙げられます。これらのフレームワークでは、デフォルトの動作や設定が予め決められているため、開発者は必要な機能やロジックに集中することができ、無駄な設定作業を省くことが可能となっています。
このように、設定より規約は、システムの設計を簡素化し、開発者の負担を軽減するための効果的な手法であり、特に新しいプロジェクトやスタートアップにおいて、その有用性が特に高いとされています。開発者は、規約に従うことで、時間をより効率的に使い、迅速にアプリケーションを開発することができます。将来的には、このようなアプローチがさらに進化し、より多くのフレームワークや開発ツールに普及していくことでしょう。