【React】ContextのProviderは正しく囲まないとコンテキストが分岐する

Contextを使用する際のProviderの指定を間違うと共有したはずのコンテキストが子コンポーネント毎に分岐してしまうので注意が必要です。 サンプルコード 以下のようなContextを使って子コンポーネントにログイン情報を共有するコードを例にします。 //Contex…

JavaScriptでlocalStorageを使う

JavaScriptでlocalStorageを使う方法を調べました。 localStorageとは Window.localStorage - Web API | MDN ブラウザにデータを保存させる機能。 保存期間に制限が無い セッションに似ている セッションはブラウザを閉じたらデータは消去される 保存領域はU…

Railsアプリケーションの規模感の掴み方

既存のRailsアプリケーションの規模感を掴むためのメモです。 各ファイル毎に見ていくと規模感が掴むきっかけになりそうです。 rails routes エンドポイント、URLの雰囲気を掴む。 テキストに落とすと見やすい 量と種別 エンドポイント RailsのViewの数 API…

Reduxの日本語ドキュメントの自分用メモ

Reactに引き続きReduxのキャッチアップが必要になりました... 日本語のドキュメントを読んで必要そうなとこだけまとめた自分用メモです。 間違い、分かりにくい部分がたくさんあるはずです。 Redux自体少し古い技術っぽいので参考にならない部分が大いにある…

React公式ドキュメントの自分用メモ

Reactのキャッチアップが必要になったので公式 を一通り読んだことをまとめました。 自分用のメモなので間違い、分かりにくいところがたくさんあると思います。 Hello World Reactを触る上での最低限のポイント。 let、const で変数を定義する(var と等価) …

ソースコードを読むためのポイント

仕事で全然ソースコードが読めず、大変なのでソースコードの読み方を自分なりにまとめてみた。 ソースコードを読むとは 良く分かっていないが多分次のようなことだと思う。 プログラムの意味をイメージできること プログラムを書いた人の意図をイメージでき…

【Rails】Git管理せずにRails newしたい

Git管理せずにrails new したかったので方法を調べました。 結論 rails new 時にG (--skip-git)オプションを付与する。 $ rails new アプリ名 -G $ rails new アプリ名 --skip-git # -Gと同じ rails new 時はデフォルトでGit管理が自動で行われる仕様になっ…

コマンドラインでよく使うコマンドまとめ

コマンドライン(ターミナル、コンソール)でよく使うコマンドを整理しました。 表の中の「覚えるヒント」については自分なりに覚えやすいように無理やりひねり出したもので、公式な情報ではありませんので参考程度にしてください。 移動系 動作 コマンド 覚え…

【Rails】migrationファイルを削除してしまってロールバックできない時の対処法

ロールバック前にマイグレーションファイルを削除してしまいロールバックできなくなってしまったので対処法を残しておきます。 そもそもちゃんとコミットを残しておけばgit checkout するだけでokなので、こまめなコミットを積んでおくの大事です(自戒)。 結…

【Mac】FinderでiCloudが同期しなくなった時の対処

突然Finder内のiCloudが同期しなくなり、解決までちょっと時間が掛かってしまったので対処方を記録しておきます。 原因はよく分かっていませんが割と良くあること(?)のようなので色々試して解決しない場合は試してみてください。 結論 「セーフモード」でMac…

【Rails】DHH流のコントローラ分割について

コードレビューでコントローラ分割のアドバイスを頂いたのでDHH流のRailsのコントローラの分割について調べました。 DHH流のコントローラ分割とは? コントローラが元々持っているRESTアクションやデフォルトの5つの機能にはないメソッドを付け加えたいと思…

【GitHub】コードレビュー時のコメントの追加と返信の流れ

GitHubを使ったコードレビュー時のコメントの追加と返信のやり方が曖昧だったのでまとめました。 セルフレビュー時にコメントで補足情報を追加する レビュワーに良いアドバイスをもらうためにセルフレビュー時に補足情報をコメントすることでレビュワーに意…

RubyとRailsの?系メソッドのまとめ

メソッド名の末尾に?が付くメソッド(勝手に?系メソッドと呼びます)がたくさんありすぎてよく分からなくなったのでまとめました。 Ruby Rubyのメソッド。true/falseを返します。 nil?: オブジェクトがnilか? empty?: インスタンス(配列、ハッシュ、文字列等)…

M1 macでRubyインストール時のBUILD FAILEDエラーの解決法

RubyをM1 macにインストールする際にBUILD FAILED が表示されインストールできなかったので解決法を調べました。 結論 下記コマンドでインストールできる。 $ RUBY_CFLAGS="-w" rbenv install x.x.x 原因とエラー詳細は後述します。 環境 今回インストールし…

【Rails】フォロー機能の設計と実装

フォロー機能の設計から実装までの情報を整理しました。 実現したいこと 次の2つの機能を実装したい。 自分以外のユーザーをフォローできる フォローしているユーザー 、フォローされているユーザー を取得できる フォロー機能のテーブル設計 上記のフォロー…

【Ruby】ぼっち演算子とは?

ぼっち演算子の使い方をすっかり忘れていたのでまとめておきます。 結論 ぼっち演算子&. とはレシーバーがnil だった場合にNoMethodError ではなくnil を返すRubyのメソッド呼び出しの演算子です。 メソッド呼び出しで .の代わりに &.を使うことができます。…

rails g controllerでディレクトリを指定してファイルを作成する

rails g controller でディレクトリを指定してファイルを作成したかったのでやり方を調べました。 結論 指定するディレクトリを/ か:: で区切って指定する。 $ rails g controller ディレクトリ名/コントローラ名 アクション名 $ rails g controller ディレ…

【Rails】orderメソッドの使い方

order メソッドで並び替えする必要が出たので使い方を調べました。 orderメソッドとは? 取得したレコードを特定のキーで並び変えるメソッド。 Active Record クエリインターフェイス - Railsガイド orderメソッドの使い方 次の書き方で取得したレコードを並…

【Rails】関連付けたモデルの外部キーへのpresense: trueは必要ない

コードレビューでpresense: true の使い方を指摘されたので調べてみました。 結論 関連付けたモデルの外部キーへのpresense: true は必要ない。 アソシエーションによって紐付けられた外部キーの存在しない値やnil の場合へのpresenceバリデーションは自動的…

【Rails】request.refererとは?

コントローラーでリダイレクトさせる際にrequest.referer という見慣れない記述を見かけたので調べてみました。 結論 request.referer で遷移元のURLを取得できる。 requestとは? 現在実行中のリクエストサイクルの中でリクエスト情報が保存されているreque…

【Rails】redirect_toでのnoticeの2つの書き方

redirect_to を使った際のnotice オプションの書き方を忘れていたので調べました。 noticeオプションとは? redirect_to にnotice を使うで遷移後にフラッシュメッセージを表示できる。 フラッシュを表示するためのオプション(キー)はnotice 以外にもalert …

【Rails】外部キー制約とは?

作成したアプリのコードレビューで外部キー制約を追加するように指摘されたので調べて見ました。 結論 外部キーを保存するカラムに対して関連付けしているテーブルの主キーのみを保存するように制限し、データ不整合を防止すること。 具体的には次の制約が追…

【Rails】ビューファイルのパーシャルにはローカル変数で値を渡すべき

パーシャルを使ってビューファイルを共通化する際にlocals オプションを使うべきなのか分からなかったので調べてみました。 結論 パーシャルにはlocals オプションを使ってローカル変数で値を渡した方が良い。 partialは呼び出し元のテンプレートとだけ紐づ…

ブログをはじめて良かったという話

これは「フィヨルドブートキャンプ Part 2 Advent Calendar 2022」の20日目の記事です。 昨日はGennyBoyさんの「家庭・仕事とフィヨルドブートキャンプでの学びを両立させるために4時起き生活にしてみた話」でした。 朝活仲間として学習や輪読会を楽しく続け…

Railsのform_withの使い方

Railsのform_with メソッドへの理解が曖昧だったので簡単にまとめました。 form_with の特徴 Rails5.1以降はform_tag とform_for が非推奨になり、替わりにform_with が推奨になる form_for 的な使い方、form_tag 的な使い方の2つの使い方ができる オプショ…

gitでpush済みのコミットを取り消す方法

誤ってpushしたコミットを取り消す必要が出たのでやり方を調べました。 結論 push済みのコミットを取り消すにはgit reset かgit revert を使う。 git reset: コミットを取り消す、強制pushする git revert: 打ち消しコミットを作成する、追加pushする コミッ…

フィヨルドブートキャンプに入会して1年経ちました

2022年11月5日でフィヨルドブートキャンプ(以下「FBC」)に入会して1年が経ちました。 今年も残り1ヶ月になったのでちょっと早いですが今年の振り返りをしておきます。 学習時間について 私の1年間の学習時間です。 合計時間: 約950時間 月平均: 約80時間 週…

Railsでロールバックしてマイグレーションを修正する

FBCでRailsを使ったユーザーフォローのプラクティスを進めています。 間違ったマイグレーションをロールバックして修正する必要性が出たのでやり方を調べました。 結論 下記手順でDBをロールバックできる。 マイグレーションのバージョン確認 rollback する …

git stashの使い方

gitで管理している作業を並行して進める事が多くなってきたのでgit stash の使い方をまとめておきます。 git stashとは? stashを使用すると、コミットしていない変更を退避することができます。 stashで現在の変更を退避して、今すぐやりたい作業をして、退…

VSCodeにsolargraphを導入する

曖昧だったVSCodeへのsolargraphの導入について整理したのでまとめておきます。 結論 VSCodeでsolargraphを使うにあたって以下の2つが必要。 VSCode拡張機能Ruby Solargraph solargraph gem 下記手順で導入、設定する。 VSCode拡張機能Ruby Solargraph の導…