中級者向け

JavaScript

【Vue】VeeValidateでフォームバリデーションを実装する

こんにちは、かつコーチです。前回は、VueUseを使ってブラウザAPIまわりの処理を効率化する方法を解説しました。今回は、Vueアプリで避けて通れない「フォームバリデーション」を、専用ライブラリのVeeValidateで実装する方法を扱いま...
Ruby

【Ruby on Rails】比較 : Ruby on RailsとNext.js、どちらを選ぶべきか

こんにちは、かつコーチです。Ruby on Rails編とJavaScriptエコシステム編(Next.js編)、両方の記事を書き終えたので、今回は総まとめとして両者を比較します。「新しく受託案件やSaaSを作るとき、Ruby on Rai...
Ruby

【Ruby on Rails】ActiveRecord::RecordNotFoundで落ちる画面を防ぐ方法

こんにちは、かつコーチです。存在しないIDのURLにアクセスしたら、真っ白なエラー画面が表示されて困った経験はありませんか。本番環境でこの画面をユーザーに見せてしまうと、サービスへの信頼を損ねてしまいます。この記事では、ActiveReco...
Ruby

【Ruby on Rails】マイグレーションが失敗して困った話と対処法

こんにちは、かつコーチです。マイグレーションを実行したら、途中で止まって動かなくなった経験はありませんか。私は開発中に何度もこの状況に陥り、原因が分からず焦った経験があります。この記事では、マイグレーション失敗時の代表的な症状と、実際に私が...
Ruby

【Ruby on Rails】環境変数とcredentials.ymlで秘密情報を管理する

こんにちは、かつコーチです。APIキーやパスワードをどこに書けばいいか、迷ったことはありませんか。うっかりコードに直書きしてGitHubに公開してしまうと、大きな事故につながります。この記事では、Railsのcredentials.ymlと...
Ruby

【Ruby on Rails】RSpecでモデルのテストを書く

こんにちは、かつコーチです。「テストは大事」と分かっていても、何をどこまで書けばいいのか迷った経験はありませんか。この記事では、RSpecの導入からモデルのバリデーション・アソシエーションのテストの書き方までを整理します。FactoryBo...
Ruby

【Ruby on Rails】CSRF対策とStrong Parametersでセキュリティを守る

こんにちは、かつコーチです。「Railsはデフォルトで安全」とよく言われますが、その裏でどんな仕組みが動いているか説明できますか。この記事では、protect_from_forgeryによるCSRF対策と、Strong Parameters...
Ruby

【Ruby on Rails】has_secure_passwordで認証機能を実装する

こんにちは、かつコーチです。「ログイン機能を作りたいけど、Deviseのような大きなgemを入れるほどでもない」そんなときに便利なのが、Rails標準の機能であるhas_secure_passwordです。パスワードのハッシュ化や照合といっ...
Ruby

【Ruby on Rails】スコープとクエリメソッドで検索条件を整理する

こんにちは、かつコーチです。コントローラのアクションが増えてくると、whereやorderを使った検索条件があちこちに散らばりがちです。同じような条件を何度も書いていたり、条件が複雑になって可読性が落ちていたりする経験はありませんか。Rai...
Ruby

【Ruby on Rails】アソシエーション(has_many・belongs_to)の書き方

こんにちは、かつコーチです。Railsでモデルを作っていると、必ず出てくるのが「モデル同士の関連付け」です。たとえば「記事にはたくさんのコメントがつく」「コメントは1つの記事に属する」といった関係を、Railsではアソシエーション(モデル同...
Ruby

【Ruby on Rails】アセットパイプライン(Propshaft/Importmap)を理解する

こんにちは、かつコーチです。CSSやJavaScriptを編集したのに画面に反映されない。昔のRails記事を参考にしたら Sprockets や Webpacker という単語が出てきて、今の構成と違う気がする。Rails 8を使い始めた...
Ruby

【Ruby on Rails】RESTfulなルーティング設計(resources)の考え方

こんにちは、かつコーチです。routes.rb に resources :posts と1行書くだけで、たくさんのルートが自動生成される。初めて見たとき「便利だけど、結局何が作られているのかわからない」と感じませんでしたか。私も最初は ra...
Ruby

【Ruby】MinitestとRSpecの違い・使い分けを解説

こんにちは、かつコーチです。RSpecの基本を覚えると、次に気になるのが「Minitestとは何が違うのか」という疑問です。「RailsはデフォルトでMinitestなのに、現場ではRSpecをよく見る」という状況に、混乱した経験がある方も...
Ruby

【Ruby】RSpecの基本:テストの書き方入門

こんにちは、かつコーチです。「テストを書いたほうがいいのは分かるけど、何から始めればいいか分からない」と感じたことはありませんか。Rubyの世界で最もよく使われるテストツールがRSpecです。この記事では、RSpecのインストールから、de...
Ruby

【Ruby】モジュールとMix-inの使い方を中級者向けに解説

こんにちは、かつコーチです。クラスの基本を理解すると、次に出てくるのが「モジュール」です。「クラスと何が違うのか」「includeすると何が起きるのか」が分からず、なんとなく雰囲気で使ってしまっている方も多いのではないでしょうか。この記事で...
Ruby

【Ruby】ブロックとyieldの使い方を初心者向けに解説

こんにちは、かつコーチです。「eachやmapでdo ... endを書いているけど、これって一体何なんだろう」。なんとなく使えているけれど、仕組みまでは理解していない、という方は多いのではないでしょうか。今回は、Rubyのブロックの正体と...
Ruby

【Ruby】mapとselectで配列を操作する方法(JavaScriptのmap/filterとの対比)

こんにちは、かつコーチです。「JavaScriptのmapやfilterは使ったことがあるけど、Rubyだと何て書くの?」。他言語の経験がある方から、こうした質問をよく受けます。今回は、Rubyで配列を操作する代表的なメソッドmap・sel...
Laravel

【Laravel】LaravelのRoute設計で迷わないための整理術

こんにちは、かつコーチです。前回は Route::get を使った基本のルーティングを解説しました。小さなアプリならそれで十分ですが、機能が増えてくると routes/web.php はあっという間に肥大化します。私自身、個人開発でルートが...
PHP

【PHP】MVCとは何か?素のPHPで感じる限界

こんにちは、かつコーチです。前回は、このシリーズで扱ってきたテーマの中から、よくあるつまずきポイントをQ&A形式で振り返りました。ここからは「設計」というテーマに入っていきます。PHPを学んでいると、必ずと言っていいほど「MVC」という言葉...
PHP

【PHP】PHPのバージョンアップで起きやすい非互換エラーとその対処法

こんにちは、かつコーチです。前回はComposerの基本を解説しました。Composerでパッケージを管理するようになると、避けて通れないのが「PHPのバージョンアップ」への対応です。サーバーのPHPバージョンが上がった途端、昨日まで動いて...