メインメニューを開く

「コードファースト」を編集中

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。

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

MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMonoBook:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)

このページで使用されているテンプレート:

このページは 1 個の隠しカテゴリに属しています: