railsガイドを勝手にまとめてみた

#経緯
最近，ruby on railsで簡単なwebサービスを作りました．作ったのはいいのですが，rubyやrailsのことをしっかり理解して作れたと言われると正直不安です．なので，railsガイドを読んでしっかり理解しようかなぁ…と

今回は，ruby on railsでWebサーバーを起動するところまでガイドに沿って読んでいこうと思います．自分なりにまとめただけなのでガイド見た方が早いかもしれないです．

始めて半年も経っていないので至らない点があると思います．その時はコメントでご指摘して頂ければ幸いです．

(注:文章作成が下手なので読み難いときはアドバイスをくださると助かります．)

#引用元
>Railsガイド
https://railsguides.jp/getting_started.html
>ruby on railsのwiki
https://ja.wikipedia.org/wiki/Ruby_on_Rails

# 1.本ガイドの前提条件
ガイドの内容を読んだ感想としては，凄いわかりやすいと思いました．初心者用にサイトを出してくれているのはとても助かります．
rubyは精選されたオンラインリソース一覧が多くあるそうです．正直rubyの知識もからっきしなので読んでみたいのですが，今はrailsを読み進めたいと思います．

# 2.railsとは何か
>Railsとは、Rubyプログラミング言語で書かれたWebアプリケーションフレームワークです．

https://railsguides.jp/getting_started.html

最初，僕は「フレームワークってなんぞや？」って思いました．
作っていた際は調べても納得のいく答えが出なくて放置していたので，これを機にちゃんと調べることにします．色々調べてわかったのは，フレームワークは<b>「ソフトウェアの基盤(枠組み)を作ってくれるものであり，それによって開発が楽になる」</b>ということです．実際にrails無しでwebアプリケーション作ることを考えると構造とか色々苦労しそうだと思ったので，この解釈で僕は落ち着きました．

railsは，何かをするときに最善の開発方法を一つに定めているそうです．なので，それ以外でやろうとすると開発しにくくなるっぽい。

次にRailsの哲学についてです．
1つ目は<b>同じことを繰り返すな(Don't Repeat Yourself: DRY)</b>です．同じ知識でコードを書くことを極力避けるのがDRYという原則だそうです．確かに，同じことを何度も書くのは時間が無駄ですね．何よりバグを減らせるのはとても良き

2つ目は<b>設定より規約が優先される (Convention Over Configuration)</b>です．こちらは，前述した最善な開発方法を一つにしていることを言っています．
元々webアプリケーションの各種設定を自分で設定しなきゃいけなかったところを先人達の経験などからデフォルトの値にしたのもこれが理由だそうです．僕は，設定とか後回しで書いてしまうのでデフォルトで値が決まっていてありがたいですw．

# 3.Railsプロジェクトを新規作成する
ようやく本格的な開発の手順などの説明になりました．正直ここまでで頭がパンクしております…w
こちらのガイドでは手順通りに進めていけば簡単なblogを作れるそうです．
RailsガイドではUnix系OSのプロンプトを使用しているそうなので最初に$記号が使われています．環境次第では違うので注意しましょう．

### 3.1 Railsインストール
僕はmacOSを使っているのでターミナルで入れました．環境による詳しいインストール仕方は，こちらで確認できるそうです．(https://www.ruby-lang.org/en/documentation/installation/)
因みに，このサイトは全文英語なので注意してください．

railsでは<b>Rubyバージョン2.5.0</b>以降が必須になるそうです．初めて知りました(汗)

```terminal
$ruby -v 
```

すでに入れている方は，こちらでバージョンを確認しましょう．
また，<b>SQLite3データベース</b>のインストールも必要です．こちらも

```terminal
$sqlite3 --version 
```

すでに入れている方は，こちらでバージョン確認しましょう．

次にrailsのインストールです．Railsは，`gem install`によってインストールできます．このコマンドは，RubyGemsと言います．これはパッケージ管理システムであり，Rubyのプログラムであるgemを簡単に管理してくれるものらしいです．

###3.2 ブログアプリケーションを作成する
Railsには，ジェネレータという多数のスクリプトが付いています．それによって，開発者は作りたいものがあるときには必要なものを自動的に作ってくれます．

それでは，早速新規のアプリケーション作成用のジェネレータを使ってみます．
ジェネレータを実行するには，ターミナル(cmd)を開いて，Railsファイルを作成したいディレクトリに移動して以下を入力します．

```terminal
$rails new アプリケーションの名前
```
このアプリケーションの名前がRailsアプリケーションとしてディレクトリ内に作成されます．

```terminal
$cd ディレクトリ名
```

このディレクトリの下には多数のファイルやフォルダが生成されます．詳しい説明は後に回して，簡単に一つずつ列挙していきます．

|ファイル/フォルダ|目的|
|------------|----|
|app/|ここにはアプリケーションのassets，channels，controllers，helpers，jobs，mailers，models，viewsが置かれます．これらの説明に関しては後で説明していきます．|
|bin/|ここにはアプリケーションを起動，アップデート，デプロイするためのRailsスクリプトなどのスクリプトファイルが置かれます．|
|config/|アプリケーションの設定ファイルが置かれます．|
|config.ru|アプリケーションの起動に必要となる，Rackベースのサーバー用のRack設定ファイルです．|
|db/|データベース関係のファイルが置かれます．|
|Gemfile Gemfile.lock|Railsアプリケーションに必要なgemの依存関係を記述しているファイル．|
|lib/|アプリケーションで使う拡張モジュールも置かれます．|
|log/|アプリケーションのログファイルが置かれます．|
|package.json|Railsアプリケーションで必要なNode.jsのパッケージを管理するnpmの依存関係をこのファイルを指定できます．|
|public/|このフォルダの下にあるファイルは外部からそのまま参照できます．画像ファイルなどはここに入れましょう．|
|Rakefile|このファイルには，コマンドラインから実行できるタスクを記述します．ここのタスク定義は，Rails全体の構成要素に対して定義します．独自のRakeタスクは，Rakefileに直接書くと権限が強いので，lib/tasksフォルダの下にあるRakefileに追加しましょう．|
|README.md|アプリケーションのマニュアルをここに記入します．これを読めば誰でもこのアプリケーションを作れるようにする必要があります．|
|storage/|Diskサービスで用いるActive Storageファイルが置かれます．|
|test/|アプリケーションのテストをするための関連ファイルがここに置かれます．|
|tmp/|キャッシュなどの一時的なファイルが置かれる．|
|vendor/|第三者が書いたプログラムは全てここに置く．通常のRailsアプリケーションの場合，外部のgemファイルもここにおきます．|
|.gitignore|Gitに登録しないファイルをこのファイルで指定する．|
|.ruby-version|デフォルトのRubyバージョンがこのファイルで指定される．|

#4 Hello, Rails!
それでは，実際に画面に何か表示してみます．
###4.1  Webサーバーを起動する
先程作ったディレクトリに移動して以下のコマンドを実行します．

```terminal
$ rails server
```
注意:この実行にはJaveScriptによるアセットの圧縮にはJavaScriptランタイムが必要になります．これがない場合，execjsエラーが発生します．macOSやWindowsにはJavaScriptランタイムが同梱されているので注意しましょう．

Railsで起動されるWebサーバーは，デフォルトで付属しているPumaというgemです．実際に動作を確認するには，ブラウザを開いて，URLに
http://localhost:3000
と入力します．そうすると，以下のような画像が出ます．
![rails_welcome.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/497792/576bf8d2-c149-a67b-1239-ef2b2682851d.png)
これで，ようやく入り口に入った感じですね．ちなみに，このwebサーバーを停止するにはターミナルでCtrl+Cを押すことが必要です．

##終わりに
あまり長すぎても見にくいと思うので今回はこんな感じです．
続きは書け次第URLを貼っていこうと思います．
最後まで読んでいただきありがとうございました．