テックアカデミーメンタリング2回目の体験レポート

2018年3月9日

前回のメンタリング(講師とのビデオ面談)日から4日しか経過していませんがもう次のメンタリング日が来てしまいました。

さて、ここではテックアカデミーへの入会をお考えの方に、僕が取り組んでいる事や面談でどんなお話をしているのかお伝えしたいと思います。一緒にプログラミング学習しましょう^^

現在取り組んでるレッスンは結構深い内容でまだレッスンの途中ですが沢山の質問が沸いてきます。それらをメンタリングにて解消したいと思います。

幾つかテックアカデミーの掲示板(slack)にて質問して解消していますが、それだけでカバーしきれない部分も直接質問して理解していきます。

今日は4つの質問と、自作のオリジナルアプリに関しての助言等でした。

ストロングパラメーターの返り値

ストロングパラメータの戻り値は

puts params.require(:モデル名).permit(:カラム名)とすると、

{“カラム名”=>”あいうえお”}

このような返り値となっています。

モデルのインスタンスを生成するときに

モデル名.new(カラム名: ‘値’)

としていたと思いますが、ストロングパラメータの返り値と違う形式ですよね。

インスタンスを生成するときは「カラム名:」ということはシンボルなのに、
ストロングパラメータの返り値は「カラム名」なのにシンボルじゃない。

引数の形式が違うのにそれを受け取って正常に動いているのがおかしく見えるのですが‥

実はこれはどちらでもOKになっていて、この差はRailsが吸収してくれるんです。

マジカ?!

こうするとどちらが採用さてるのがわかりますよ。

irb> Model.new(カラム名: 'test1', 'カラム名' => 'test2')
=> #<Task id: nil, カラム名: "test2", created_at: nil, updated_at: nil, status: nil>

なんてこったいこのハッシュはシンボルが採用されてるのに、値はtest2が採用されてる。(; ・`ω・´)

Rails複雑怪奇すぎんだろ‥違和感しかないわ

Railsが結構自動的に裏でやってくれることがあるので、「こんなもん」てことで先に進んだほうが良い事もあるんですね。

before_actionメソッドが腑に落ちない

共通的に使う処理をプライベートメソッド化して、コントローラーの最初で実行している

before_action :メソッド名, only: [:show, :edit, :update, :destroy]

この書き方は何でしょうか?

before_actionというのがメソッドで、それ以降は引数だと思うのですが。
メソッド名の前に「:」が付いてるので、これはシンボルですよね?

これはbefore_actionメソッドの書き方として覚えたほうが楽かと思います。

:メソッド名としてシンボルにしておかないと、show、edit、update、destroyかの評価をする前のこの時点でメソッドが走っちゃうのでシンボルにする必要があります。これもRailsで決まった書き方になります。

後半の
only: [:show, :edit, :update, :destroy]
は何でしょうか。

これはハッシュですね。only:がキーになっていて、その後ろが値です。

これも難解です^^; この一行で暗記というかメモしていつでもコピペ出来るようにしておこうと思いました。またこうやってブログに残しておく事で理解も深まるし、思い出してコピペにも使えるし。

form_forはeach文と同じに見えるけど?

ユーザーからの入力を受け付けるフォームの書き方なのですが、何故この書き方なのですか?

<%= form_for(aiueo) do |f| %>
  <%= f.label :カラム名, '入力をどうぞ' %>
  <%= f.text_field :カラム名 %>

  <%= f.submit '投稿' %>
<% end %>

each文と似てるようにみえるのですが、違いますか?

fという変数にはフォームビルダーというオブジェクトのインスタンスが入っています。

aiueoインスタンスを使ってないようにみえる。
aiueo.カラム名ではなく、:カラム名のみでインスタンスのカラムを指定してることになりますよね?

そうなんです。Railsはこういうもの‥の1つですね。
より理解しやすいメソッドとしてform_tagというのもあるのでリファレンスを見てみて下さい。
こちらは記述が面倒くさくなるけど、わかりやすいかもしれません。
form_forはより楽に記述できることがわかりますよ。

なるほど。これも備忘録でメモしておこう。。

renderメソッドの引数は何ですか?

renderメソッドがコントローラーや、ビューで使われたりしますけど、引数がわけわかりません。

コントローラーでのrenderでは返却するテンプレートを引数にする

ビューでのrenderを書くとパーシャル(部分テンプレート)が呼び出される

というのがあります。

コントローラーではrender :new などとしてアクション名のシンボルの形式を引数で渡してあげれば良いでしょう。これで new.html.erbファイルを表示します。

ビューでのrenderは
<%= render ‘パーシャルファイル名’ %>
で渡すのですね。

そうですね。

自作オリジナルWEBアプリに関して

テックアカデミーのWEBアプリケーションコースでは最終的に自作のWEBアプリを作成するところまで進みます。

これが目標なので、この目標を達成するために各種のレッスンがあると言ってよいですね。メンターの方とも相談させてもらって行きます。

現時点では
・ココナラのような特定分野のマッチングサイト
・特定ジャンルの食べログのようなレストラン口コミサイト
・クックパッドのような特定の料理レシピサイト

のいずれかで考えています。

この日はアドバイスが1つ。

ココナラのようなマッチングサイトを作るとしたら、ユーザー間のトラブルとかも多そう、問い合わせ対応や、サーバー障害、プログラムの不具合対応を迅速にやらないと顧客の満足度が下がってしまう

仕事終わって片手間でマッチングサイトを運営するのは大変だし、専属の人材を雇わないと辛くなるかも、、とのことでした。

確かにそれは想定していて。最初は自分1人で対応し、軌道にのれば会社化、人を雇う‥ような事も必要になるだろうな‥と思っていました。

先生のアドバイスとしては多くの人にWEBアプリを使ってもらってそこに広告を貼る事による広告収入が人件費がかからなくてオススメですよ、とのことでした。

確かにそうだな‥てことで、これから特定ジャンルの飲食店口コミサイトを目標にしていきます!

てことで、皆さんもプログラミング頑張っていきましょう!

テックアカデミーはこちら↓