さらなる高みへ -higher ground -

プログラミング学習の定着を狙いとしたアウトプット(独り言)をしてみるブログ

モデルについて【Ruby on Rails6】

ここではMVCの最後、モデルについて学習する。
モデルはRailsアプリの中でも中心的な機能になる。しっかり理解していきたい。

  • モデルの役割
  • RDBとは何か
  • データベースの作成方法

モデルとは

モデルはアプリで扱うデータに関する機能を担当する。
Railsの場合、主にデータベースと連携するために使用する。

https://tech-master.s3.amazonaws.com/uploads/curriculums//f139b422508ac9f76fcd2e50d0dad115.png

RDB(リレーショナルデータベース)とは

Railsアプリでデータを保存する場合、主にRDB(リレーショナルデータベース)と呼ばれるデータベースを使用する。
まずRDBとは何か確認する。

RDBの特徴

RDBでは、縦横の行・列からなるテーブルにデータを保存し、テーブル同士を関連づけて使用する。

https://tech-master.s3.amazonaws.com/uploads/curriculums//5a3958c6d9806fce40dc86e0895fca39.png

一般にデータベースといわれるものの大半はRDBなので比較的馴染みのあるものではないだろうか。
上の図では、「顧客情報」と「販売情報」をそれぞれのテーブルに保存し、お互いを「顧客ID」で結びつけて使う、という例になっている。

データベースとテーブル

ここでデータベースとテーブルの関係性を確認しておく。

データベースは、テーブルを入れるための入れ物である。
これからアプリを作っていくが、データベースは1つだけ作成する。

テーブルは、実際にデータを格納する場所である。
必要なデータの種類ごとに1つずつ作成する。幾つでも追加していくことができます

これからつくっていくPicTweetでも、「tweets」「comments」「users」というテーブルを作成する。

https://tech-master.s3.amazonaws.com/uploads/curriculums//00cbc4164262d0b7d3f7238f384aba81.png

また、1つのテーブルに対して1つのモデルが対応する。

RDBでのデータの読み書き

RDBにデータを保存したり読み込んだりする時には、SQL文といわれる言語を使用する。
(今の時点でSQL文の内容に対する理解は不要) 

SQL文の例

-- データの追加
INSERT INTO tweets
VALUES ('1', 'masato', '初ツイート', '2019/05/01' ,'2019/05/01')

-- データの取得
SELECT *
FROM tweets
WHERE name="masato"

RailsアプリとRDBの関係

Railsアプリを開発するために、RubyRails以外にSQL文も覚えなくてはいけないとなると大変である。
そのため、Railsではもっと直感的にRDBを操作することができる。

Rubyのコードを書く感覚で記述を行えば、内部でSQL文に変換されRDBへの読み書きができる。

この仕組みはORM(ORマッパー)と呼ばれ、「モデル」で実装されている。
ORMがあるからこそ、Railsで非常に効率的にデータベースを扱うことができるのである。

データベースの作成

ここから実際にデータベースを作成する。
Railsでは非常に簡単に作ることが出来る。

データベースの作成方法

前の投稿ですでにデータベースは作成しています。もう一度コマンドを確認しておく。

$ rails db:create
Created database 'pictweet_development'
Created database 'pictweet_test' 

phpMyAdminは、データベースの中身を視覚的に確認したり操作するためのツールである。
データベースの操作がしやすくなるため、インストールして使ってみる。

phpMyAdminを使う

以下のコマンドを実行する。

#phpMyAdminのインストール
$ sudo yum -y install phpmyadmin

続いて、phpMyAdminを確認するための設定をする。

phpMyAdminをブラウザから確認できるようにする
  1. 設定ファイルのダウンロード
    phpMyAdminをブラウザから確認するためには、いくつかの設定をする必要がある。
    今回は設定用のファイルをこちらで用意しているため、以下のリンクより、ファイルをダウンロードする。
    https://dl.dropboxusercontent.com/s/2ixifkkhuz6e2do/shell.zip?dl=0
  2. 設定ファイルをCloud9にアップロード
    まずは、ダウンロードしたファイルをダブルクリックして解凍する。
    「shell」というフォルダができたことを確認する。
    続いて、Cloud9を開いているブラウザの一番上のフォルダに、「shell」フォルダ をドラッグ&ドロップする。
    この時誤って「shell.zip」をアップロードしてしまわないよう注意
    https://tech-master.s3.amazonaws.com/uploads/curriculums//b1a4d8614fd91a04253bf8856e00ba9b.gif
  3. apacheを起動する
    #apacheの起動
    $ sudo service httpd start
    #apache自動起動の設定
    $ sudo chkconfig httpd on
  4. shellフォルダに移動し、中にあるmove.shを実行
    #shellフォルダに移動
    $ cd ~/environment/shell
    
    #move.shを実行
    $ sh move.sh
    これで、設定ファイルが更新された。
    カレントディレクトリが「/environment/shell」になっているので、下記のコマンドをうち、pictweetに戻しておく。
    #pictweetフォルダに移動
    $ cd ~/environment/pictweet
  5. phpMyAdminの確認
    ここまでの操作で、phpMyAdminは起動しているはずである。
    そこで、ブラウザからphpMyAdminを確認してみる。
    Cloud9の画面の上部から「preview」→「Preview Running Application」とクリックすると、以下のように右下にwindowが開く。
    https://tech-master.s3.amazonaws.com/uploads/curriculums//bc50e36e793796b8708db026ce45b195.jpeg
    そのwindowのurl欄をクリックすると、以下のようにURLが現れるため、これをコピーする。

    コピーしたURLを、ブラウザに貼り付ける。
    そしてアドレスの末尾の「/」取ってその後に「:8081」を付け足した上で、ブラウザ検索を実行する。

    すると、以下のような画面になる。
    https://tech-master.s3.amazonaws.com/uploads/curriculums//e67b52d37d3af90404b1ff7dcbac6023.jpeg
    続いて、URLの末尾に「/phpmyadmin」を追記し、検索を実行する。
    https://tech-master.s3.amazonaws.com/uploads/curriculums//0a4dfe90409b9808d48b8665e99a2993.jpeg
    すると、以下のようなページが表示される。
    https://tech-master.s3.amazonaws.com/uploads/curriculums//2f6281a4489d2164a6fa31991ad4591b.jpeg

    今度は、URL欄の先頭に、「https://」をつけ、検索を実行し、以下のような画面が出てきたら、成功である。
    PicTweet用のデータベースもつくられていることが確認できる。

https://tech-master.s3.amazonaws.com/uploads/curriculums//b57ffb548095ce3ee02f69dbe18e2e05.png

アドレスはブックマークしておくと便利。
その際は「pictweet DB」などわかりやすい名前にしておく。

 

要点チェック