勉強履歴(と雑記)

プログラミング初心者のメモ書きです

Railsチュートリアル 第4章 メモ書き

Rubyについて

 

カスタムヘルパー:

ビューで使える新たな組み込み関数(メソッド)のこと。

app/helpers/application_helper.rbにヘルパーとして定義。

 

Railsコンソール:

Railsアプリケーションを対話的に操作するためのコマンドラインツール。

irb(IRB:Interactive Euby)を拡張して作られ、Rubyの機能を全て使える。

開発・テスト・本番の3つの環境が定義されている。

 

nil:何もないことを表す特別な値

 

文字列の出力:

puts:出力の末尾に自動的に改行文字(\n)が追加。

print:出力に末尾に改行文字が入らない。

 

文字列:

ダブルクォート→式展開あり(#{})

シングルクォート→式展開なし(#を文字列として使える)

ダブルクォートで式展開しない時は\でエスケープ

 

boolean:

Trueもしくはfalseの論理値のこと

 

メソッドの定義:

def ~() endで〜がメソッド名、()内が引数、中に具体的な命令のコード。

最後に評価された式の値が自動的に返されるが、returnで明示することが可能。

 

push(<<):配列に要素を追加

 

%w:配列の前に置くことで文字列の配列に変換

 

ブロック:(1..5).each { |i| puts 2 * i }

範囲オブジェクトの(1..5)に対してeachメソッドを呼び出し、

{}(ブロック)の中にある|i|内のローカル変数iに代入、その後のputs 2*iを実行する。

長い時はdo endで囲むこともある。

ブロック内で宣言した引数に対してメソッドを呼び出す場合、次の省略記法が一般的。

%w[A B C].map { |char| char.downcase }

→ %w[A B C].map(&:downcase)

 

組み込みの基本クラス:

Rubyでは開発者以外でもクラスのメソッドを変更可能

(正当な理由がなければ混乱を防ぐ意味でしない方がいい)。

配列や範囲、ハッシュなどは組み込みクラス。

 

ハッシュ:

変数に複数の値を代入できる点は配列と同じ。違いはインデックスとして

文字列(キー)を用いることができる点。

値の前にコロンを置いたシンボルがキーとしてよく用いられる。

「”first_name" =>」と「:name => 」と「name:」は同じ。

 

attr_accessor:

アクセサーを作成し、そのデータを取り出すメソッド(ゲッター)と

データに代入するメソッド(セッター)をそれぞれ定義する。

例)attr_accessor :name,:email 

 と書くと、インスタンス変数@nameと@emailにアクセスするための

 メソッドが用意される。

 

Initializeメソッド:

User.newを実行すると自動的に呼び出されるメソッド。

  def initialize(attributes = {})

    @name  = attributes[:name]

    @email = attributes[:email]

  end

Railsチュートリアル 第3章 メモ書き

○静的なHTMLのページ

○自動化テスト

 

テスト:

主に次の3つを目敵として作成する

1)機能停止に陥るような回帰バグを防止

2)コードの安全なリファクタリング(コードの改善)

3)アプリケーションの設計やシステムの他の部分との

  インターフェイスを決める時の参考

 

TDD(テスト駆動開発):

1)失敗するテストを書く

2)出来る限り早くテストを通るような最小限のコードを書く

3)リファクタリング

上の3つを繰り返すことでプログラムを作成する手法。

 

テストのコード例:

test "should get home" do

  get static_pages_home_url

  assert_response :success

end

→1)getリクエストをhomeアクションに対して発効

 2)リクエストに対するレスポンスは成功になるはず(アサーション

→成功すれば以下の表示が出る(GREEN)。

2 tests, 2 assertions, 0 failures, 0 errors, 0 skips

 失敗するとエラーメッセージと共に、上のfailuresの数も増える(RED)。

 

ルーティングの保存先→config/routes.rb

 

ERB(Embedded Ruby:埋め込みRuby):

Railsのビューでは静的HTMLで書かれたコードの中でRuby言語を使ってコードを書くことができる。

<% 〜 %> もしくは<%= 〜 %>で表現し、前者は出力なし、

後者は実行結果はテンプレートに表示される。

 

provide(:変数,引数) → yield(:変数)

引数を変数に渡す      変数を出力

上のコードを用いてレイアウトの共通部分をテンプレート化することで

リファクタリング

Railsチュートリアル 第2章 メモ書き

最初に

自分がメモにまとめていたものを投稿していきます。

見栄えとか全く気にしてません。

後でもっとわかりやすくしたものに変える可能性もありますが、

とりあえず上げていきます。

 

本題

○scaffoldによるコード作成

MVCモデル

○REST

○継承

 

scaffold :大量の機能を自動生成

リソース:データモデル(userモデルとmicropostモデル)+webインターフェイス

Rails g scaffold userでusersリソースを作成

→index(ユーザー一覧),show(個別のユーザーページ),new(新規ユーザー),edit(ユーザー編集)などのビュー、コントローラ、アクションが作成される

※欠点:レイアウトもスタイルもない、ユーザーパスワードがない、画像を置けない、ログイン機構なし、セキュリティなし、フォローワー・フォロー中機能なし、まともなテストなし、中身がブラックボックス(理解が困難)

 

Mvcの挙動:

1)ブラウザ(/users)→railsサーバー

2)ルーターによってusersコントローラのアクションへ

3)アクション実行、usersモデルへ

4)usersモデル、データベースからデータを操作

5)usersモデルからデータをコントローラに

6)usersコントローラはデータをインスタンス変数に保存、ビューへ

7)ビューが開き、erbを実行、HTMLをレンダリング

8)コントローラはビューで生成されたHTML をブラウザに返す

 

HTTPリクエスト(RESTful):

get(ビューの表示:index,show,new,edit),

post(データベースの操作:create),

patch(データ更新:update),

delete(データ消去:destroy)

 

REST:

CRUD(Create/Read/Update/Delete)とリクエストの各メソッドを対応させた、ネットワークやアプリケーションを構築するためのスタイル。

 

バリデーション:

データベースに制限を加える方法。モデルに書く。

 

クラスの継承:

クラスは別のクラスを継承することで、継承したクラス中の定義やアクションをそのまま使用できる。

User(Micropost) > ApplicationRecord > ActiveRecord::Base

コントローラでも同様

初めまして

最初に

どうも初めまして。プログラミング初心者の葉染です。

オンラインのプログラミングスクールに通っており、

そろそろ本格的な学習プログラムが始まります。

 

それに合わせて、何かを勉強するにはアウトプットが大事ということで、

基本的にはスクールの中で、プログラミングについて学んだことの

メモ書きを書いていきたいと思います。

 

現時点での学習進捗は以下の通り。

Progate:HTML、CSSRubyRailsJavaScriptSQL

Railsチュートリアル:2周と解説動画

 

今後の予定

とりあえず、はじめにチュートリアルの章毎のメモ書きを残しておきます。

基本的にはRailsについてになるかと思いますが、他の言語について書く可能性は

十分にあります(Pythonにも興味あり)。

他にも自己分析や仕事について考えたこと・思ったことなどについて

書くかもしれません。

 

あまり人の役に立つようなブログにするつもりはありませんが、

よろしくお願いします。