20201225_アウトプット(PHP・ウィザード形式の実装)

アプトプット画像

今日行ったこと 3時間10分

  • PHPの学習(プロゲート)40分

  • ウィザード形式の実装 2時間半 👉引き続き、詰まっている。前提の確認。メンターさんに質問もした。



新しい発見

PHPについて

  • Rubyputのような感覚でecho(エコー)で表示させる。

  • 文章の終わりにセミコロン;がいる。

  • 文字列・数値の表示、演算子系や条件分岐について、Rubyとほぼ同じ(elsifも使える👉12/30訂正!elseifだった💦)

  • 変数には$をつける。

  • 式展開も$をそのまま使う形となり、Rubyなら#{〇〇}PHPだと{$〇〇}になる。(変数展開という)

  • 文字列の結合にはドット.を用いる。

  • ++の記入する位置によって、足し算(--の場合は引き算)されるタイミングが異なると理解。

$x = 3;
$y = 3;

echo ++$x; 
//結果は4。`echo`の前にプラス1されるため。

echo $x++; 
//結果は3。`echo`の後にプラス1されるため。



form_withに変更したいが上手くいっていない状況について(未解決、前提を整理)

そもそもform_forform_tagの違いは何か?(復習)

保存するテーブルが存在するときにはform_for
そうでない場合(検索などの入力フォームだけ作りたい)はform_tagと理解。

form_withは何か?(復習)

【Rails】form_withの使い方を徹底解説! | Pikawaka - ピカ1わかりやすいプログラミング用語サイト

form_forform_tagの機能をあわせ持つもの。(rails5.1から新しく出来た)

# データベースに保存しない時の書き方
<%= form_with url: プレフィックス do |form| %>
  フォーム内容
<% end %>
# データベースに保存しない時の書き方
<%= form_with model: モデルクラスのインスタンス do |form| %>
  フォーム内容
<% end %>
resourceって何?
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
  <%= render "devise/shared/error_messages", resource: @user %>
  • ここで出てくるresourceは、どのようなModelのインスタンスが来ても大丈夫なように定義できるもの。as:オプションにより、params[resource_name]で参照できるようになることを理解。

Ruby on Rails - deviseのform_forに関して|teratail

よくわからなかったコントローラーについてすっきり

今回のコントローラーで一番意味わからなかったところ(抜粋)

 (省略)

def create
    @user = User.new(sign_up_params)
    render :new and return unless @user.valid?

    session['devise.regist_data'] = { user: @user.attributes }
    session['devise.regist_data'][:user]['password'] = params[:user][:password]
    @address = @user.build_address
    render :new_address
  end

 (省略)

session['devise.regist_data'][:user]['password'] = params[:user][:password] の意味がわからなかった😭何で配列横に並んでるのー😩(メンターさんに聞いた)

間違えていたところ

session[:user]session['password']も空だし、何の意味があるんだろう?と思っていた↓ セッションの見方(誤り)

正しくはこうだった

params[:user]params[:user][:password]と調べるとちゃんと値でる。↓ セッションの見方(正しい)

上記のことから、session['devise.regist_data'][:user]['password'] = params[:user][:password]の意味が、 session['devise.regist_data']に、params[:user][:password]を付け加える意味なのかとわかってすっきりした。

感想

  • 細かいところで詰まってしまっているけれど、こういう時こそ、成長の糧になると思って頑張る。

  • そんな時(本当はもっと早く進みたい、追加実装の一つ目でなぜこんなに詰まっているのかと考えている時)に、ご飯中にyoutubeでたまたま見ていたイチロー選手のインタビューで「人より頑張ることは出来ない。はかりは自分の中にある。自分なりにそのはかりを使いながら自分の限界を見ながらちょっと超えていく。それを繰り返していく。そうするといつの日かこんな自分になっているんだっていう状態になる。なので小さい積み重ねでしか自分を超えていけない。一気に高みに行こうとすると、今の自分とギャップがありすぎて続けられない。ある時期は後退しかないこともあるが、自分がやると決めたことを信じてやっていく。ただそれが正解とは限らない。遠回りすることでしか本物の自分に出会えない。」という記者会見をみて、すごい励みになった😫♡

覚書

ミニアプリ(目的:知識の引き出しを増やす)
  • コメント機能の実装

  • ウィザード形式の実装 👉12/23 70%

  • SNS認証によるログイン機能の実装

  • 複雑な検索機能の実装

  • タグ付機能の実装

  • パンくず機能の実装

  • クレジットカード決済機能(ユーザーに紐付け)

  • エラーメッセージの日本語化(チャットアプリに追加実装)

  • プレビュー機能の実装・複数枚の画像投稿の実装



優先順位

(1)ミニアプリの作成(実装方法の理解)・個人アプリのためのインタビュー・DB設計等
👉12月29日(火)締め切り

(2)個人アプリの作成。
👉1月11日(月)締め切り(基本実装)

(3)(1)で学んだことを「フリマアプリ」あるいは「個人アプリ」に反映。
👉1月17日(日)締め切り

追加:(1)(2)(3)と同時並行で、PHPについても学ぶ。



身に付ける力(直近)


身に付ける力(ゆくゆく・覚書)

  • 環境構築

  • 環境変数などのOS知識

  • バージョン対応力

  • データベースをインポートする力・エクスポートする

  • GitHubActions×OpenAPIGenerator(APICilent)