コードファースト
コードファースト(英語:code first)とは、リレーショナルデータベースのテーブル定義などをプログラミング言語で記述することをいう。
概要
一般的にRDBを使用するプロジェクトでは以下のようなものが乱立する。
- テーブル定義を書いた紙の仕様書
- CREATE TABLEなどを記述したSQL文(いわゆるスキーマ)
- データを受け取るクラス(いわゆるPOCO)
これらのうちひとつでも記載忘れなどが発生すればバグの温床となる。またこれらの記述者が異なることで理解の相似が発生しデスマーチに発展することも多い。
そこで考えられたのが全てを主となるプログラミング言語のソースコードで一本化しようという思想である。ひとつのクラスがひとつのテーブルとして定義される。いわゆるORMで「SELECT」の結果を受け取るのに使用されるクラスを流用して、実行時などに「CREATE TABLE」までやってしまおうという発想であり、通常はORMの機能として提供される。
「仕様書はソースコードの中に」という思想のもと、いきなりソースコードから書き起こすことからコードファーストと呼ばれる。全世界で議論を呼んだ「ソース読め」の発展系であるといえる。
普及
コードファーストはRuby on Railsで大流行した方式であり、その当時は特別な呼称もなかった。後にマイクロソフトがVisual StudioでER図として視覚的に編集できるよう発展させたEntity Frameworkを発表し、その際に「コードファースト」を連呼したことで一部で定着したものである。
コードファーストは「チーフ」と「プログラマー」という二階層の役職が一般的な欧米特有の土壌で生まれた概念である。そのため欧米では、仕様書、スキーマ、ソースコード(POCO)の書き手が階級ごとに異なることは稀である。
一方で日本では、仕様書は上級社員が書き、一般社員がスキーマを書き、末端社員がソースコードを書くという分業が一般的である。このためコードファーストを導入することは末端社員が絶大な権力を持つことを意味し、日本特有の「上流工程」という考えが否定されるため、システムエンジニアと呼ばれる中間層の人々が職を失う恐れがあり、大企業では否定的な意見が多かった。
しかしながら、マイクロソフトが「コードファースト」を連呼したことで、「役員による鶴の一声」が発生し、一部の大企業では政治的な理由によりコードファーストを使われざるを得なくなっている。