中級者向け

Go

【Go】flagパッケージでコマンドライン引数を扱う基本

こんにちは、かつコーチです。今回は実用寄りに、CLIツール作りに欠かせないflagパッケージの基本を解説します。go run main.go -name=Taroのような引数を受け取りたいとき、最初に使う標準ライブラリです。flagパッケー...
Go

【Go】エラーハンドリングの基本:if err != nilの流儀

こんにちは、かつコーチです。Go言語を書き始めた人が最初にとまどうのが、エラー処理の書き方だと思います。「なんでtry-catchがないんだろう」「if err != nilばっかりでコードが縦に伸びる」。そう感じたことがある人は多いはずで...
JavaScript

【Next.js】「Module not found: next/router」の解決法(Pages Router完全削除後の落とし穴)

こんにちは、かつコーチです。前回はlayout.tsxの再評価にまつわるつまずきを紹介しましたが、今回は少し毛色の違うエラーを扱います。App Routerだけを使っているはずなのに、突然Module not found: Can't re...
JavaScript

【React】環境ごとの環境変数管理(.env)

こんにちは、かつコーチです。前回はVercelを使ったReactアプリのデプロイ手順を解説しました。デプロイができるようになると次にぶつかるのが、「開発中と本番で、APIの向き先やキーを切り替えたい」という悩みです。今回は、Reactアプリ...
JavaScript

【React】コンポーネントのユニットテストを書く

こんにちは、かつコーチです。前回は、React Testing Library(RTL)の基本的な使い方として、コンポーネントの描画結果を検証する方法を解説しました。今回はいよいよ、クリックや入力といったユーザー操作を伴うコンポーネントのユ...
JavaScript

【React】React Testing Library入門

こんにちは、かつコーチです。前回は、テストフレームワークJestの基本文法と環境構築を解説しました。sumのような単純な関数のテストはできるようになりましたが、Reactのコンポーネントは「画面に何が表示されるか」「ボタンを押したらどう変化...
JavaScript

【React】Jestの基本:Reactでテストを書く準備

こんにちは、かつコーチです。前回までは認証・セキュリティ編として、Protected RouteやXSS対策を扱ってきました。安全なアプリが作れるようになったら、次に意識したいのが「そのコードが本当に正しく動いているか」を保証する仕組みです...
JavaScript

【React】ReactアプリのXSS対策

こんにちは、かつコーチです。前回は、ログイン必須ページを守るProtected Routeの実装方法を解説しました。「誰がアクセスできるか」を制御できるようになったところで、今回は少し違う角度のセキュリティ対策を扱います。それがXSS(クロ...
JavaScript

【React】React Hook Formでフォームバリデーションを実装する方法

こんにちは、かつコーチです。前回はReact Query(TanStack Query)を使ったデータ取得の効率化について解説しました。データを「取得して表示する」側の話が一段落したので、今回は反対に「ユーザーからデータを受け取る」側、フォ...
JavaScript

【React】fetchでAPIからデータを取得して表示する方法

こんにちは、かつコーチです。前回はRedux・Zustand・Context APIの使い分けについて解説しました。状態管理の仕組みが分かってきたところで、今回は「外部のAPIからデータを取得して画面に表示する」という、実務では必ず通る道を...
JavaScript

【React】Zustand入門:シンプルな状態管理ライブラリ

こんにちは、かつコーチです。前回は、状態管理ライブラリの定番であるRedux Toolkitの入門編を解説しました。Redux Toolkitは強力な反面、slice の作成・store の設定・Provider の配置など、覚えることがそ...
JavaScript

【React】Context APIで実践的なグローバル状態を作る

こんにちは、かつコーチです。前回は useReducer で複雑な状態管理を整理する方法を解説しました。今回は、その useReducer とセットでよく使われる「Context API」を使って、複数のコンポーネントから参照できるグローバ...
Django

【Django】Django TestCaseでモデル・ビューのテストを書く

こんにちは、かつコーチです。「動くには動いているけど、テストは書いたことがない」というDjango学習者は少なくありません。筆者自身も最初の頃は、機能を作っては手動でブラウザを操作して確認する、という進め方をしていました。しかしアプリが大き...
Django

【Django】CSRF対策とDjangoのセキュリティミドルウェアを理解する

こんにちは、かつコーチです。「フォームを送信したら403 Forbiddenが出た」「CSRFトークンって何のために必要なの?」という質問は、Djangoでフォームを扱い始めた頃に必ずと言っていいほど出てくる悩みです。この記事では、Djan...
Django

【Django】Django標準の認証システム(Userモデル)でログイン機能を作る

こんにちは、かつコーチです。前回はN+1問題とselect_related・prefetch_relatedによるパフォーマンス改善を解説しました。今回からは認証・セキュリティ分野に入り、Djangoに標準搭載されている認証システムを使った...
Django

【Django】フォーム(forms.Form/ModelForm)でバリデーションを実装する

こんにちは、かつコーチです。前回はQuerySetの基本とフィルタの書き方を解説しました。今回は、ユーザーからの入力を受け取って検証する「フォーム」の実装方法を扱います。Djangoにはforms.Formとforms.ModelFormと...
Django

【Django】ForeignKey・ManyToManyでリレーションを組む【Django】

こんにちは、かつコーチです。前回はモデルの基本フィールドとCRUD操作を解説しました。今回は、テーブル同士を関連づける「リレーション」の書き方を扱います。ブログアプリなら「記事とカテゴリ」「記事とタグ」のように、モデル同士がつながる場面は必...
Laravel

【Laravel】ファイルアップロードの実装パターン集

こんにちは、かつコーチです。前回はLaravelでよく出るエラーと解決法をまとめました。今回は、実務でほぼ必ず出てくる「ファイルアップロード」の実装パターンを、基本から一歩踏み込んだところまで解説します。プロフィール画像、PDFの添付、CS...
Laravel

【Laravel】Task Scheduling(スケジューラ)で定期処理を実装する

こんにちは、かつコーチです。前回はQueueを使って、時間のかかる処理を非同期化する方法を解説しました。今回は、その延長線上にある「定期処理」の実装方法です。「毎日深夜に古いデータを削除したい」「毎朝レポートをメールで送りたい」——こういっ...
Laravel

【Laravel】Queueの基本:時間のかかる処理を非同期化する

こんにちは、かつコーチです。前回は、config・route・viewの3種類のキャッシュで応答速度を改善する方法を解説しました。キャッシュは「無駄な処理を減らして速くする」アプローチでしたが、今回紹介するQueue(キュー)は、「時間のか...