便利コマンドがいい感じにやってくれてるのを知るべし!
プログラミング初心者のうちに Ruby on Rails に取り組むと、比較的やさしめにプログラミングを習得できます。
しかしその一方で、rails の便利なコマンドがあなたのプログラミング能力の大部分を助けていることに注意が必要です。
rails が裏で何をやっているのか理解していないままだと、残念ながらロクなエンジニアになりません。
でも安心してください、記事をしっかり読んで理解していけばレベルも上がるので、地道にいきましょう。
DBにテーブルを作る
テーブルとモデルは別物
初心者でたまに勘違いしているのが、「テーブル=モデル」と捉えていることです。
テーブルは、DBに作られたDB専用の箱のようなものです。
モデルは rails で扱う定義体、つまりソースコードなので全くの別物ということになります。
確かに、モデルとテーブルには関係性があって、モデルを利用してテーブルのデータを取得するといったことはあります。
この場合でも、モデルはあくまでデータ取得のための「ツール」であって、テーブルはデータを入れている「ただの箱」という感じのイメージです。
テーブル作成手順
次に rails でテーブルを作成する手順を解説していきます。
今回作成するテーブルは次のようなものとします。
テーブル名:phones
カラム:name(string), os_type(integer)
① rails コマンドでファイルを生成
まずは以下のコマンドで、テーブル作成に必要なファイルを自動生成します。
rails g model phone name:string os_type:integer
コマンドを実行すると、以下の画像のような結果となり、いくつかのファイルが生成されます。
“create” となっているファイルのうち、”test/” のフォルダに生成されたファイルは、今回テストは関係ないため無視します。
テスト以外ではマイグレーションと、モデルの2つのファイルが生成されています。
このマイグレーションファイルというのが、テーブル作成に使われるファイルで、以下の形でファイルが生成されています。
もう1つのモデルファイルは、以下の形で、特に中身は何も無いファイルとなっています。
② rails コマンドでマイグレーション実行
次に以下のコマンドで、実際にDBへテーブルを作成します。
rails db:migrate
コマンドを実行すると、マイグレーションが実行され、DBにテーブルが作成されます。
同時に、schema(スキーマ)ファイルが上書きされます。
スキーマファイルの更新された内容が、以下の部分です。
“created_at” や “updated_at” のカラムは特にこちらで意図して定義したものではありませんが、rails が自動的に追加してくれています。
マイグレーションの裏でやっていること
マイグレーションではDBにテーブルを作る命令を出しています。
これは rails 経由で実行されるため、裏の処理はつぎのような図のイメージです。
処理の流れは、マイグレーションファイル(create_table.rb)→スキーマファイル(schema.rb)→DBのテーブル作成です。
これが rails db:migrate の1コマンドで実行されている内容です。
そしてスキーマファイルを元にしてDBにテーブルを作成する際に、実際にはプログラム側で「SQL」という言語で命令文が自動生成され、実行されています。
裏で実行されているSQL
DBの種類によって細かい内容が異なりますが、おおかた以下のようなコードが自動で実行されています。
(以下の例は MySQL です)
mysql> create table phones(
-> id INT(11) auto_increment not null,
-> name VARCHAR(30),
-> os_type int(11),
-> created_at datetime not null,
-> updated_at datetime not null,
-> PRIMARY KEY (id));
rails のマイグレーションではデフォルトで “id”カラムを付与してくれるので、今まで特に意識することはありませんでしたが、SQLで実行される際には “id”カラムも定義が必要なんです。
SQLの知識も、プログラミング初心者のうちに付けておくといいスキルなので、もしよければ以下の記事で基礎を抑えてください。
まとめ
最近のプログラミングは、ライブラリやフレームワークが充実していて、初心者も取っ掛り易い環境になってきています。
しかし、ブラックボックス化(仕組みを理解しなくとも使えること)されることのデメリットもしっかり抑えつつ、知識を付けた方がより良いエンジニアになれるでしょう。
特に「中身の動きを理解しておく」というのは、のちのち応用に効いてくるので、是非とも理解しておけるといいかなと思います!
このブログでは、他にもエンジニアになろうとしている人向けの記事を書いているので、よければ他の記事も読んでみてください。
コメント