Ruby on Rails チュートリアル 第1章 まとめ

##はじめに
Ruby on Railsを最近勉強し始めたので、学んだことを自分なりにまとめておこうと思う。

この記事は基本的に、「[Ruby on Rails チュートリアル（第６版）](https://railstutorial.jp/)」を参考にさせていただき、図や文章などもこのページから引用させていただく。

文中に知らないキーワードがある場合は、その他のサイトから引用する。

##前提知識
このチュートリアルを学ぶにあたって、以下の知識をProgateやUdemyなどで学習した。

- Rubyの基礎
- HTML/CSSの基礎
- JavaScriptの基礎
- Linuxの基礎(コマンドライン)
- Git/GitHubの基礎
- SQLの基礎

この辺の知識があった方が抵抗なく、というか割と理解しながら読めると思う。

このチュートリアルも基本的にGitを用いて、
「機能ごとにブランチを切ってテストしてマージする。そして、章の区切りごとにGitHubにプッシュする。」
みたいな流れで進めていくので、知識があった方が便利。

##Model-View-Controller (MVC)
RailsはMVCというアーキテクチャパターンを採用している。
MVCでは、アプリケーション内のデータ（ユーザー情報など）と、データを表示するコードを分離する。

ブラウザがRailsアプリと通信する際、一般的にWebサーバーにリクエスト（request）を送信し、これはリクエストを処理する役割を担っているRailsのコントローラ（controller）に渡される。
コントローラは、場合によってはすぐにビュー（view）を生成してHTMLをブラウザに送り返す。
動的なサイトでは、一般にコントローラは（ユーザーなどの）サイトの要素を表しており、データベースとの通信を担当しているRubyのオブジェクトであるモデル（model） と対話する。
モデルを呼び出した後、コントローラは、ビューを描画し、完成したWebページをHTMLとしてブラウザに返す。

![MVC model](https://railstutorial.jp/chapters/6.0/images/figures/mvc_schematic.png)

> ルーターはコントローラとブラウザの間に配置され、ブラウザからのリクエストをコントローラに振り分ける（=ルーティング）役割を果たします
> ルートのルーティング（ルート URLにアクセスした場合のルーティング）を変更する

出典 : [第1章 ゼロからデプロイまで](https://railstutorial.jp/chapters/beginning?version=6.0#sec-mvc)

ルーティングの文法は、次のような形式
`root 'controller_name#action_name'`



##デプロイ
###まず、デプロイとは？
>デプロイ（英: deploy）とは、「配置する」「配備する」「展開する」といった意味の英語の動詞です。日本語の中では、ソフトウェア開発の工程のうち、開発した機能やサービスを利用できる状態にする作業を指す語として用いられています。

>デプロイに該当する作業としては、たとえば、ウェブアプリケーションの開発において、作製したプログラムをサーバーにアップロードし、当該のサーバー環境で利用可能にする、という手続きが挙げられます。ただし、必ずしも公開（リリース）作業を指すとは限らず、開発環境からテスト用の環境へアップロードしてテストに使える状態にすることもデプロイといいます。ソフトウェアをインストールする作業もデプロイに該当します。

出典：[デプロイとはとは何？Weblio辞書](https://www.weblio.jp/content/%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4#:~:text=%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%EF%BC%88%E8%8B%B1%3A%20deploy%EF%BC%89%E3%81%A8,%E3%81%A8%E3%81%97%E3%81%A6%E7%94%A8%E3%81%84%E3%82%89%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82&text=%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E4%BD%9C%E6%A5%AD%E3%82%82%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E3%81%AB%E8%A9%B2%E5%BD%93%E3%81%97%E3%81%BE%E3%81%99%E3%80%82)

###Herokuのセットアップとデプロイ
Herokuでは、PostgreSQLを使う。そのために、本番環境(production)に`pg`gemをインストールして、RailsとPostgreSQLが通信できるようにする。
HerokuではSQLiteがサポートされていないため、Gemfileから`sqlite3`の書かれた部分を変更する必要がある。

次に、Herokuのユーザー登録を行う。

次に、`heroku`のCLIをインストールするために下記のコマンドを実行する。

```
$ source <(curl -sL https://cdn.learnenough.com/heroku_install)
```

正しくインストールできていれば、下記のコマンドで`heroku`のバージョンを確認することができる。

```
$ heroku --version
heroku/7.54.1 linux-x64 node-v12.21.0
```


次に、`heroku`コマンドで、ユーザー登録時に使ったメールアドレスとパスワードでログインする。
(`--interactive`オプションを使うと、`heroku`コマンドでブラウザを開かないようにできる)

```
$ heroku login --interactive
```

最後に`heroku create`コマンドを実行して、Herokuサーバー上に今回開発したアプリケーションの実行場所を作成する。

```
$ heroku create
Creating app... done, ⬢ mysterious-shelf-57775
https://mysterious-shelf-57775.herokuapp.com/ | https://git.heroku.com/mysterious-shelf-57775.git
```

###Herokuにデプロイする
Railsアプリケーションを実際にHerokuにデプロイするには、まずGitを使ってHerokuにリポジトリをプッシュする。

```
$ git push heroku master
```

デプロイされたアプリケーションの表示は、heroku create（リスト 1.21）を実行した際に生成されたアドレスをブラウザで開くだけ。
ページの内容は同じだが、インターネット上に本番Webページとして公開されている。


###Herokuコマンド
```
$ heroku rename <New_app_name> (アプリケーションの名前を変更する)
$ heroku help (Herokuコマンドの一覧表示)
$ heroku logs (Herokuアプリのログを表示する。本番環境の不具合を見つけるのに役立つ)
```


##第1章まとめ
- Ruby on Railsとは、Web開発のためのフレームワークであり、Rubyプログラミング言語によって記述されている。
- 事前設定済みのクラウド環境を利用することで、Railsのインストール、アプリケーションの生成、生成されたファイルの編集を簡単に行うことができる。
- Railsには`rails`という名前のコマンドラインコマンドがあり、`rails new`で新しいアプリケーションを生成したり、`rails server`でローカルサーバーを実行したりできる。
- コントローラのアクションを追加したり、ルートルーティングを変更したりするだけで「hello, world」アプリケーションを作成できる。
- データの喪失を防止し、他の開発者との共同作業を行えるようにするため、Gitによるバージョン管理を導入してGitHubの非公開リポジトリにプッシュする。
- 作成したアプリケーションをHerokuの本番環境にデプロイした。


##おわりに
知らないことだらけで、ほぼほぼ文献のコピペみたいな内容になってしまったが、簡単なデプロイまでの流れを知ることができたと思う。

次回からは、後で見返した時にもっとわかりやすいようにまとめたい。