2020年4月から「TECH CAMP」のプログラミングスークルに通っていますが、本日で「HTML/CSS/Ruby/Rails」の基礎学習が終わりました![]()
今週中に中間試験があるので、まだまだ学習は続きますが、、、、![]()
今回の記事は、その学んだ基礎内容の要点をまとめて書きましたので、もし、TECH CAMPさんやその他のプログラミングスクールに検討されている方は、「あ、こんな感じで進めているんだ」と参考までに見て頂けると嬉しいです!
<学んだ言語>
・HTML
・CSS
・Ruby
・Ruby Rails
<要点>※メモアプリでまとめていた内容をそのまま添付しています
・ディレクトリはルートディレクトリ、カレントディレクトリ、ホームディレクトリが存在する。
ホームディレクトリ:PC上に割り当てられたフォルダ
カレントディレクトリ:現在作業中となるディレクトリ
ルートディレクトリ:階層構造の一番上にあるディレクトリ
・パス(フォルダの所在を示す文字列)には絶対パスと相対パスの2種類ある。
・ターミナルではLinuxコマンドが初めから使用できる。
・Rubyには全ての記述に返り値がある。
・\:バックスラッシュ記号
・式展開を使用する事で文字列を簡略化する事ができる。
・getsメソッドを使うとターミナルから入力を待機させる事ができる。
・getsメソッドは返り値としてターミナルで入力した文字列返す。
⇨ターミナルからの入力が終わるまでプログロラムの処理を終える。
・chompメソッドを使うと文字列の末尾にある改行を取り除く事ができる。
・「キーバリューストア」:キーに対する値を紐つけてデータを管理する方式
・ハッシュを使えば、対応する変数をキーバリューストアでまとめて管理できる。
・「if」「elsif」「else」を使って条件分岐させる
・Rubyの作成手順/レビュー
メソッドを定義⇨メニューの表示⇨getsメソッド(数字として代入するためto_i)
⇨if文を使用
・whileで繰り返し処理をする。(while条件式do),while true doを用いる。
・exitkメソッドを使うとプログラム処理を強制終了させる。
・「.length」を用いる事で文字列の数が数値として表示される。
・スコープ=変数が使える範囲
・配列を使えば対応関係の要らない複数データを順番で管理できる。
・配列の持つデータのことを「要素」と呼ぶ
・lemgthメソッドを使えば配列の要素数を取得できる。
・変数が使える範囲を「スコープ」と呼ぶ
・引数には「実引数」「仮引数」がある。
・return文を使えばメソッドの返り値を決めて、処理を終了できる。
・配列の要素を取得するには添字(インデックス)を指定する
・配列の添字は0から始まる。
・eachメソッドを使えば、配列の全ての要素に対して、1つずつ処理を実行させる事ができる。
・while…do ~ end の構文によって、繰り返し処理がループする。
・可読性を意識して変数を宣言・定義させる。
・「変数」は変更できるが、「定数」にすることで変更ができないなる。
・「定数」=大文字で宣言・定義する。
・Rubyでは全ての記述に返り値がある。コードを書く際に常に意識する。
・ハッシュオブジェクトは、複数のデータを持つことのできるオブジェクト
・ハッシュを取得したい時は、ハッシュ名[…]のコードを記載する。
・Rubyにおける式とは文字列・数値・変数やメソッド呼び出し、演算子式を指す。
・式展開とは式によって得られた値を文字列に加えることができる機能
・式展開の書き方は#{式}として、文字列に記載する際は””(ダブルクォテーション)で囲む必要がある。
・配列へのデータ追加には<<という演算子を用いる。
・メソッド外の変数を使用する際は、引数(仮引数・本引数)をを宣言する。
・Rubyでは全てのデータを「オブジェクト」と呼ぶ
・メソッドは各オブジェクトのまとまり処理が使用できる。
・オブジェクト(データ)⇨メソッド(処理)⇨返り値(変換)
・オブジェクト指向は共通の情報をまとめるため変更に強い
・オブジェクトは設計して作ることができる
・クラスはオブジェクトの元となる設計図のようなものである。
・インスタンスはクラスを元にして作られたオブジェクトである。
・newメソッドを使ってインスタンスを生成する。
・クラスメソッドはクラスに対して使用し、クラスで共通の情報を扱います。
・インスタンスメソッドはに対して使用し、インスタンスごとに異なる個別の情報を扱います。
・クラス変数はクラスを通して1つの値
・インスタンス変数はインスタンスごとに値は異なる。
・initializeメソッドはインスタンス生成時に実行されるインスタンスメソッドである。
・Railsの処理を表すキーワード⇨「ルーティング」「コントローラー」「モデル」「ビュー」
・フレームワークで容易に素早くアプリケーションが作成できる。
・rails new コマンドで新規アプリケーションを作成できる。
・rails db:createコマンドでデータベースを作成できる。
・rails s コマンドでサーバーを起動できる。
・ルーティングでリクエストに対する処理を決めることができる。
・rails routesコマンドでルーティングを一覧する事ができる。
・ビューファイルのフォルダ名は対応するコントローラー名と同じである。
・ビューファイル名は対応するアクション名と同じである。
・コントローラーで定義したインスタンス変数を、対応するビューファイルで使用できる。
・erbタグを用いる事で、Rubyの記法をビューファイルで使用できる。
・rails g modelコマンドでモデルの作成ができる。
・マイグレーションファイルはテーブルの設計図である。
・rails db:migreteコマンドで、マイグレーションファイルの内容をデータベースに適用できる。
・テーブルから情報を取得するために,Active Recordクラスのメソッドを用いる。
・rails c コマンドでコンソールを起動できる。
・HTTPメソッド「GET=ページを表示する」「POST=データを登録する操作」「PUT=データを変更する操作」「DELETE=データを削除する操作」
・Railsアプリケーションはヘルパーメソッドが用意されている。
・フォームから送信されたデータは、paramsとしてコントローラーに送られる。
・ストロングパラメーターを記述したメソッドはプライベートメソットして扱われる。
・「MyFirstAPP」というRailsアプリケーションを作成。メモを保存して表示するアプリ。
・ターミナルでRailsのアプリケーションとデータベースの作成を行う。
~使用コマンド~
rails new,-d,rails db:create, rails s
・<ルーティング>HTTPメソッド、パス、URIパターン
・<コントローラー>rails g controllerコマンド、モデルを利用したデータ操作、ビューへの変数受け渡し、レスポンスとなるビューファイルを決める。
・<モデル>rails g modelコマンド,マイグレーションファイル、rails db:migrateコマンド、テーブル/カラム/レコード、ActiveRecordクラス継承によるActiveRecordメソッドの使用、ActiveRecordのfindメソッド,ActiveRecordのcreateメソッド
・<ビュー>ヘルパーメソッド、form_tagメソッド、link_toメソッド
・<投稿実装手順>パラメーター、params,ストロングパラメーター、private,permitメソッド
・rails db:rollbackコマンドで、マイグレーションファイルを差し戻すことができる。
・rails db:migrate:statusコマンドで、マイグレーションファイルがデータベースに適用されているか調べることができる。
・stylesheet_link_tagメソッドで、適用するCSSのファイルを指定することができる。
・パスはPrefixによって指定する
・Rails 5,1 以降のバージョンでは、form_withメソッドが推奨されている。
・RubyGemsはRubyのライブラリである。
・deviseというgemで、簡単にユーザー管理機能が追加できる。
・deviseを利用するために、Gemのインストールとrails g devise:installコマンドで設定ファイルを生成する
・rails g devise:viewsコマンドでdevise用のビューファイルを生成する。
・アソシエーションとはモデル間を紐つけることができる。どのユーザーがどの記事を投稿したかというようにデータを紐つけて扱える。
・スネークケースは「_」で単語を区切る方法、キャメルケースは単語の頭文字を大文字にすること。
・has_manyメソッドやbelongs_toメソッドでモデル間を紐付ける事により、テーブル間の対応関係を示すことができる。
・テーブルに新しくカラムを追加するには、コマンドを利用してマイグレーションファイルの生成・実行をする
・deviseで追加したいパラメーターがある場合、configure_permitted_parametersメソッドを利用して追加するパラメーターを許可する。
・アソシエーションを利用すると、N +1問題が発生して処理が重くなるので、includesメソッドを利用してN +1問題を解消する。
・Our_Blogのマイページは、userコントローラーのshowアクションにルーティングを設定する
・「ユーザーがログインしている」かつ「ログインしているユーザーと投稿したユーザーが一致している」を実装することで、他ユーザーが記事投稿の編集・削除をできないようにする。
・部分テンプレートを利用すると、同じHTML構造の部分を共通化することができ、無駄なくビューファイルを作成できる。
・部分テンプレートのファイル名は必ずアンダーバー「_」から始まる。
・部分テンプレートはrenderメソッドで呼び出すことができる。
・binding.pryで処理を一時停止して、デバッグ作業ができる。
・ER図を描く事でテーブル間の関係性が視覚的にわかりやすくなる。
・一覧機能は、indexアクションを設定する。
・新規投稿機能は、newアクションとcreateアクションを設定する。
・削除機能はdestroyアクションを設定する
・編集機能は、editアクションとupdateアクションを設定する。
・詳細表示機能は、showアクションを設定する。
・コードは短く、わかりやすく書く為に、繰り返し書かれているコードはリファクタリングする。
・未ログインユーザーが、投稿画面などに直接アクセスしたらトップページにリダイレクトさせる。
・アソシエーションを利用するために、モデル間の関係を定義させる。
1、モデルクラスにhas_manyやbelongs_toなどのメソッドで関係が定義されている。
2,所属する側のテーブルに所属するモデル名_idというカラムがある。
・アソシエーション使用時に、レコードの紐付けが明確でないとエラーが発生する。
・curerent_user.id == @tweet.user_idという条件を含むif文でプルダウンメニューごと囲むことで、未ログイン時や自分の投稿ではない時は非表示するように書き換えることでできる。
・未ログイン時とログイン時でユーザーができる機能を限定する。
・ペーネーションとは長い文章を複数のページに分割して各ページへのリンクを並べアクセスしやすくいなること。
・Gemが反映されるタイミングはサーバーの立ち上げ時
・ペーネーションを実装する際は「kaminari」というGemをインストールする。
・「kaminari」はGem の一種です。ページネーション関連のメソッドが使用できるようになり、簡単にペーネーションを実装することができる。
・kaminariをインストール時に使用するメソッド
1、page メソッド
kaminariを導入すると、モデルクラスにpageメソッドが定義されます。このメソッドは、ページネーションにおけるページ数を指定します。
kaminariによってリクエストの際paramsの中にpageというキーが追加されています。その値がビューで指定したページ番号となるため、pageの引数はparams[:page]となります。
2、per メソッド
kaminariを導入すると、モデルクラスにperメソッドが定義されます。このメソッドは、1ページあたりに表示する件数を指定します。perメソッドに引数として渡した数字が、ページネーションが実装されたビューで1ページあたりに表示するレコードの件数になります。
3、paginate メソッド
kaminariを導入すると、paginateというヘルパーメソッドが使用できます。このメソッドは、ページネーションのリンクを表示したいときに使用するメソッドです。
paginateメソッドの引数は、コントローラーで定義したレコード情報を持つインスタンス変数を指定します。
・orderメソッドはテーブルのカラム名を参照して、昇順から降順に並べ替えができる。
・ルーティングのネスト:ネストとは入れ子構造とも呼ばれ、ある記述の中に入れ子構造で別の記述をする方法です。ルーティングでネストを利用すると、「あるコントローラーのルーティング内に、別のコントローラーのルーティングを記述すること」となります。
・ルーティングをネストさせる一番の理由は、アソシエーション先のレコードのidをparamsに追加してコントローラーを送るため
・ルーティングでネストを用いると、親子関係を作ることができる。
・ネストされた子のルーティングでは、親側のid情報も付与できる。
・whereメソッドとは、ActiveRecordメソッドの1つです。モデル.where(条件)のように引数部分に条件を指定することで、テーブル内の条件に一致したレコードのインスタンスを配列の形で取得できます。
・LIKE句とは、曖昧(あいまい)な文字列の検索をすることができるもので、whereメソッドと一緒に使います。
曖昧な文字列の検索とはどういうことか。
例えば、1文字目に'a'という文字列が入ったデータや最後の文字に'b'が入っているデータ、文字列の途中に'c'が入ったデータなどを検索したい時に、曖昧文字列というものを使って検索することです。
・名前空間:名前の集合を分割すること、または、分割するために付けられる識別名を名前空間と呼びます。名前空間を用いることで、同様のクラス名を名付けたクラスであってもそれらを区別することができます。
・namespaceメソッド:名前空間を利用して生成されたコントローラーへのルーティングを設定する際に使用します。
・ビジネスロジックはメソッドにしてモデルにおく。
・あいまい検索をする時はLIKE句を使う。
・できる限りresourcesの7つのアクションを利用して実装する
ちなみに、各レッスンごとに進捗率を見ながら進めているので、自分の現在地がどの辺にいるのかは一目で分かるようになっています。
↓こんな感じですね!
中間試験が終わった後は応用カリキュラムに移行するので、それまでになんとか基礎はマスターしたいと思っています![]()
明日も基礎を頑張っていきたいと思います!
本日も読んでいただき有難うございました![]()
