さてメンタリング(講師とのビデオ通話)の回数は今日で5回目となりました。
日々レッスンを自力で進めてはいますがどうしても躓いてしまう部分が増えてきました。1行1行読む度に掲示板に質問を投げかけたり、リファレンスで索引をひいたりしています。
文字のやり取りでは解決できなさそうな部分は講師とビデオ通話で解決に励んでいます。
今日もいくつかの質問のやり取りをさせてもらったのと、いま現在主流になっている開発手法について聞いてみました。
バリデーションはどのタイミングで行われるか
バリデーションというのはフォームから送信されたデータの検証を行うメソッドです。RailsやRubyの話ではなく他の言語でもあります。
Railsですと、validates というメソッドで実現しています。

先生、バリデーションはどのタイミングで行われるのでしょうか。
例えば以下のようなクラスの場合です。
class Person < ApplicationRecord validates :name, presence: true, length: { maximum: 255 } validates :age, presence: true, length: { maximum: 255 } end


params[:id]は何が取れるのか

例えばHTMLだと、
<form action="/" method="POST"> <label>名前: <input type="text" name="myname"></label> <input type="submit" value="送信"> </form>
このようなフォームで入力欄に入れた名前(myname)を取得するのに、params[‘myname’]で、取得していました。
今回のparams[:id]は何を取得しているのでしょうか?

これはparams[:id]で、URLにidに相当する値が含まれているハズなんです。
そういうURLのときは:idで取得することができるんですね。
例えば http://hogehoge.com/person/1 の「1」の部分が該当します。
なので①フォームから送信された情報を取る、②URLに書かれているモデルのIDを取る のに使えると思えばよいです。

親クラスのメソッドとインスタンスどこで使える?

例えば以下のようなイメージです。
ApplicationController #親 private def person_count(persons) @aiueo = persons.count end end
class childA < ApplicationController person_count(@persons) end
これだと親クラスのメソッドperson_countは子クラス内で使えるけど、中にある@aiueoという変数は使えないように思うのですが、間違えてますか?

これは親クラスのインスタンスじゃなくて、子クラスのインスタンスになるんですよ。なので子クラス内でも使えるし、VIEW側でも同じ変数を扱うことができます。

いま主流の開発手法

僕が10年前に辞めた会社ではウォーターフォールという開発手法を使ってたんですよ。仕様書→基本設計→詳細設計と書いていく。それに画面イメージ図、画面遷移図、データベース設計書、テスト設計書、なんかを作ってやってたんですけど。
いまの開発ってこういう手法やってたりしますか?

今主流なのはアジャイルを取り入れてるところが多いと思います。
最初に小さく動く単位で開発して、2週間単位で確実に動く単位で進めていくんです。
設計書をガチガチにつくらないのが特徴ですね。
概念的なことを説明するドキュメントは書くけど設計書らしいものは無いかなぁ。
大手とか銀行とか古い資産がある業界は相変わらずウォーターフォール型でしっかり進めていくところもあると聞いてますけど。

てことで、今日も疑問解決できました。まだレッスン12から先に進めておりません。レッスン12で足止めされてる感じ‥なんとか課題を終わらせて次のレッスンに進みたい。
だんだん苦しくなってきたのは事実。Twitterにプログラミング苦しいツイートしてるのは僕です。
では!今日は以上です。
皆さんも一緒にプログラミングがんばりましょう!