【令和2年10月9日】 〜テックキャンプ5日目〜

〜クラスとインスタンスを使って実装しよう〜

インスタンスメソッド

 個別の情報を使用して動作するを定義する際に使うメソッド。

 【例】インスタンスメソッドの定義

class クラス名
  def メソッド名
    # 処理
  end
end

 【例】インスタンスメソッドの呼び出し

インスタンス.メソッド名(引数)

 

◯属性と属性値

 属 性:データの性質となる情報

 属性値:属性に当てはまる値

(例:人間 性別(属性)・男(属性値))

 

インスタンス変数

 属性を定義する際に使う変数。定義しておくことで、全てのインスタンスが同じ属性を持つようになる。

 【例】インスタンス変数の定義

class クラス名
  def メソッド名
    @変数名 =   # インスタンス変数
  end
end

 

◯クラスメソッド

 クラスで共通の情報を使った処理をする際に使うメソッド。

 【例】クラスメソッドの定義

class クラス名
  def self.メソッド名
    # 処理
  end
end

 【例】クラスメソッドの呼び出し

クラス名.メソッド名(引数)

  【例】newメソッド

# インスタンスを生成するためにクラスメソッドとして定義されている
user = User.new

 

◯initealize(イニシャライズ)メソッド

 インスタンスが生成された瞬間に、生成されたそのインスタンスが実行する処理を定義するインスタンスメソッド。

 

【例】initializeメソッドの定義と実行

class クラス名
  def initialize
    # インスタンス生成したときに実行される処理(以下は例)
    puts "クラス名のインスタンスが生成されました"
  end
end

インスタンス = クラス名.new  # initializeメソッドが呼ばれ文字が表示される

 

Webアプリケーション基礎

〜Webアプリケーションの概要を学ぼう

 

〜リクエスとレスポンスを学ぼう

◯HTTP通信

 Webアプリケーションは、インターネット上で情報やデータなどを送受信して利用しており、この送受信のことをHTTP通信と言います。

 

◯URL

 インターネットのサービスの場所のこと。このURLにアクセスすることで、当てはまるWebアプリケーションと通信を行うことができる。

 

また、送受信自体にも名前がついている。

◯リクエス

 データや情報を要求すること(送信)

◯レスポンス

 リクエストに対応するデータや情報を返却すること(受信)

 

〜クライアントサイド・サーバーサイドを学ぼう

◯クライアント

 Websアプリケーションなどのサービスを利用する側、つまり様々なWebsアプリケーションを使用している人のこと。

 

◯ クライアントサイド

 クライアントが利用する領域

 

◯サーバー

 画面のないPC。Webアプリケーションはサーバーの中に保存されており、インターネットを介して通信することで、サービスが利用できる。またサーバーは、

・リクエストを処理し、レスポンスを返却する役割『ウェブサーバー』、

・アプリケーションで使用するデータを管理する役割を持つ『データベースサーバー』

・Webサーバーを通して受け取ったりリクエストを処理し、HTMLなどをウェブサーバーへ返却する役割を持つアプリケーションサーバー』の3つに分けることができる。

 

◯サーバーサイド

 Webアプリケーションが存在する領域のこと。

 

〜サーバーを動かしてみよう

Sinatra

 最小の労力でRubyによるWebプリケーションを作成できる仕組み。

 

◯require(リクワイア)

 rubyファイルで、sinatraのような仕組み自体を読み込む際に使用する記述。『require '読み込む対象'』と記述することで使用することができる。

 

◯ルーティング

 リクエストに対応した行き先を定義する仕組み。

 

◯HTTPメソッド

 HTTP通信の中で、行いたい処理の種類をサーバーへ伝える部分のこと。HTTPメソッドは、Webアプリケーションで使用する処理の種類ごとに8つ用意されている。

メソッド 処理
GET 取得する
POST 送信する、作成する
PUT 更新する、作成する
DELETE 削除する

 

◯リクエスト処理方法

require 'sinatra'

get '/' do

end

 

◯ローカルホスト

 自分のPC

 

 Rubyの主要フレームワークを知ろう

フレームワーク

 必要となる作業やリソースを事前に仮定し、用意してある便利なもの。

 

Ruby  on Ralls

 シンプルに扱いやすさを求めることができるフレームワーク

 

Ruby on Rails

〜Webアプリケーションの雛形を作ろう

railsコマンド

 命令は、すべてrailsというコマンドから始まります。

【例】railsコマンド
1
2
# railsに続けて、コマンドを記述する
% rails コマンド名

 

rails newコマンド

 Railsで新規アプリケーションを作成する際に使用するコマンド。使用することで、雛形が自動で生成される。実行方法としては、『rails new アプリケーション名』とコマンドを実行する。

【例】新規Railsアプリケーションの作成
1
2
# Railsアプリケーションを作成
% rails new アプリケーション名

 また、雛形を作成する時は、2つの指定を行う必要がある。

 ①バージョンの設定 ②オプションの設定

【例】バージョン・オプションの追加
1
2
# オプションを付けてアプリケーションを作成
% rails _6.0.0_ new アプリケーション名 -オプション名

 

 ◯dオプション

 rails newコマンドにつけることができるオプション。作成するアプリが利用するベータベースの管理システムの種類を指定できる。

【例】
1
% rails new アプリケーション名 -d データベース管理システム名

 

◯ rails db:create(クリエイト)コマンド

 新しくデータベースを作成する時に使うコマンド。

 

◯ rails db:dropコマンド

 データベースを削除する場合に使うコマンド。

 

◯ Sequel Pro(シークエル・プロ)

 データベースの中身をわかりやすく視覚化して表示するアプリケーション。使うことで、GUIで操作することができる。

 

◯ rails  sコマンド

 アプリケーションを動かすためのサーバーが起動する。※起動されるサーバーは、開発者のPC上だけで動く(ローカルサーバー)。

 

〜リクエストに対応する処理を決めよう

◯トップページへのルーティングを設定しよう。

【例】config/routes.rb
1
2
3
Rails.application.routes.draw do
 [HTTPメソッド] '[URIパターン]', to: '[コントローラー名]#[アクション名]'
end

 

◯ rails routesコマンド

 そのアプリケーションで設定されているルーティングを確認できる。

【例】ターミナル
1
2
3
4
5
6
# 作成したアプリケーションのディレクトリか確認(アプリ名「sample_app」の場合)
% pwd
/Users/ユーザー名/projects/sample_app

# 設定されているルーティングを確認
% rails routes

 

rails gコマンド

 Railsアプリに追加で必要なファイルなどを生成するために使用するコマンド。

【例】Railsに必要なファイルを生成
1
2
# ファイルを生成する
% rails g ファイルの種類 生成するファイル名

 

rails g controllesコマンド

 コントローラーやそれに付随するファイルを一度に作成してくれるコマンド。

【例】
1
2
# コントローラーを作成
% rails g controller コントローラー名

 ※命名規則は、『複数形を使用する』こと。(例:本→books)

 

rails dコマンド

 rails gコマンドで生成したフィイル一式を全て削除するコマンド。

 

◯アクション

 コントローラー内における、処理のカテゴリーのこと。コントローラーにインスタンスメソッドとして定義する。

 

アクション名 index   → 覧表示ページを表示するリクエストに対応して動く

       new   → 新規投稿ページを表示するリクエストに対応して動く

       create  → データの投稿を行うリクエストに対応して動く

       show    → 個別詳細ページを表示するリクエストに対応して動く

       edit    → 投稿編集ページを表示するリクエストに対応して動く

       update    → データの編集を行うリクエストに対応して動く

       destroy      → データの削除を行うリクエストに対応して動く

     

〜レスポンスに使う見た目を作ろう

◯ERB

 テンプレートエンジンと呼ばれる仕組みを持ったものの1つ。

 テンプレートエンジンとは、雛形となるテンプレートと、そのテンプレートにデータとなる記述を埋め込むことで、最終的に別のファイルとして生成できる仕組み。

 Railsにおける ERBファイルは、『〇〇.html,erb』という名前で作成される。

 

Rubyコードの埋め込み

 <%= %>というタグでRubyのコードを囲むことで、そのコードの結果を埋め込むことができる。 また、表示させなくても良いRuby記法(if文、each文など)は=を抜くことで、表示されないようにできる。

 

〜データの保存場所と管理役を作ろう

◯テーブル

 データベース内に作成される、データの種類ごとの保存場所。目的別にテーブルが存在する。また、データベースでは、テーブルの管理はできないため、共通した処理や、データの結びつきを定義する役割を持つ『モデル』というものが必要になる。

 

◯レコードとカラム

 表形式のテーブルにおいて、行はレコード、列はカラムと表現する。

 

◯モデル

 MVCの役割の一つで、Railsの中でデータベースへのアクセスをはじめとする情報のやりとりに関する処理を担当している。

 

rails g modelコマンド

 モデルやそれに付随するファイルを一度に作成してくれるコマンド。

 ※モデルの命名規則は、単数形を使用する。

 【例】

  % rails g model モデル名

 

マイグレーション

 db/migrate(マイグレート)/ディレクトリに入っているファイル。テーブルの設計図・仕様書。どのようなテーブルにするのかをマイグレーションファイル内に記載することで決めれる。一度実行すると再度実行できない仕組みになっている。

 

◯カラムの型

 『t.』の後に続くのが、カラムの型、その右側にシンボルで記載されるものがカラム名

 

 カラムの型の種類

 ⑴integer(インテジャー)

 説明 数値 

 用途 金額、回数など

 ⑵string(ストリング)

 説明 文字(短文)

 用途 ユーザー名、メールアドレスなど

 ⑶text

 説明 文字(長文)

 用途 投稿文、説明文など

 ⑷boolean(ブーリアン

 説明 真か偽か

 用途 はい・いいえの選択、合格・不合格のフラグなど

 ⑸datetime

 説明 日付と時刻

 用途 作成日時、更新日時など

 

rails db:migrate(マイグレート)コマンド

 マイグレーションに記述した内容を、データベースに適用するためのコマンド。

 

rails db:rollbackコマンド

 マイグレーション実行による変更を差し戻すためのコマンド。テーブルを修正したい場合は、ロールバック → 修正 → マイグレート の順で行うことでできる。

 

rails db:migrate:status(ステータス)コマンド

 マイグレーションが実行済みであるかをファイルごとに調べるコマンド。状態を表すステータスとして、『up』と『down』がある。実行済みファイルは『up』と表示されて、適用されていないときは、『down』と表示される。修正や削除が可能。

 

掃除

 

〜データを保存しよう

◯コンソール

 ターミナルからアプリケーションの操作をする仕組み。

 

rails cコマンド

 コンソールを起動するコマンド。このコンソールで、Railsアプリの変数やクラスを使用できる。

 【例】

 % rails c

 

◯saveメソッド

 モデルで使用できるインスタンスメソッド。使用することで、そのモデルが対応するテーブルにレコードを保存することができる。

 【例】

 モデルのインスタンス.save

 

 【例】

 # モデルのインスタンスを生成

 model = Model.new

 

 # インスタンスにデータを追加

 model.text = "追加するデータ"

 

 # テーブルにレコードを保存

 model.save

 

〜保存したデータを取得して表示しよう

ActiveRecordメソッド

 モデルがテーブル操作に関して使用できるメソッドの総称。

 【ActeveRecordメソッドの種類(一例)】

 ⑴ all

 用途 テーブルの全てのデータを取得する。

 【例】

 モデル名.all

 

 ⑵ find

 用途 テーブルのレコード内、ある1つのデータを取得する。

 【例】

 モデル名.find(レコードのid)

 

 ⑶ new

 用途 クラスのインスタンス(レコード)を生成する。

 

 ⑷ save

  用途 クラスのインスタンス(レコード)を保存する。

 

 【例】

 Post.all

 # Postモデル(postsテーブル)の全てのデータを取得する。

 Post.find(2) 

 # Postモデル(postsテーブル)の2番目のデータを取得する。

 

〜フォームを追加しよう

◯ヘルパーメソッド

 主にビューでHTMLタグを出現させたりテキストを加工するために使用するメソッドの総称です。

 【ヘルパーメソッドの種類(一部)】

 

 ⑴ form_with

 使用用途 投稿ページなどにおけるフォームの実装。

 【HTMLのフォーム記述】

 <form action="/posts" method="post">

  <input type="text" name="content">

  <input type="submit" value="投稿する">

 </form>

 

 【ヘルパーメソッドを用いたファーム記述】

 <%= form_with url: "/posts", method: :post, local: true do |form| %>

  <%= form.text_field :content %>

  <%= form,submit '投稿する' %>

 <% end %>

 form_withは、doからendまでの間がファームの記述になる。form_withの引数の『ral:"/posts"』『method: :post』『local: tuun』という記述はオプションと呼ばれ、それぞれフォームがどのような動作を行うかを決める。

 【method: :post】

 送信するHTTPメソッドを指定する。

 【local: true】

 送信の方法が変わることを防ぐために記述しているもの。

 

 ⑵ link_to

 使用用途 リンクの実装。

 【例】

 <%= link_to 'リンクに表示する文字', "リンク先のURL"%>

 

〜フォームから送信されたデータを保存しよう

◯パラメーター

 リクエストに含まれてサーバーの外部から渡されるデータのこと。Ralisのコントローラーにたどり着くパラメーターは、『params』というハッシュのようなものに格納されて、届けられます。

 

◯parms(パラムス)

 送られてきたパラメーターをハッシュのような構造で格納したもの。

 

◯createメソッド

 モデルが使用できるActiveRecordメソッドのひとつ。保存のために、new→情報を記述→saveとしていたところが、createメソッドの因数を記述して実行するだけで保存できる。

 【例】

 モデル.create(カラム名: 値)