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