中級者向け

Java

【Java】Javaのラムダ式の基本を分かりやすく解説

こんにちは、かつコーチです。匿名クラスで1行のロジックを書くためだけに何行もコードを書いて、冗長だと感じたことはありませんか。今回はJavaのラムダ式(無名の関数をその場で定義できる書き方)の基本と、匿名クラスとの違いを解説します。ラムダ式...
Java

【Java】JavaのOptionalでnullを安全に扱う方法

こんにちは、かつコーチです。「メソッドの戻り値がnullかもしれないから、呼び出し側で毎回nullチェックを書く」というのは、地味に手間がかかる作業です。今回はそんなnullチェックの負担を減らしてくれるOptionalの使い方を解説します...
Java

【Java】Javaのジェネリクスの基本を初心者向けに解説

こんにちは、かつコーチです。List<String>のように山括弧を使う書き方は、Listの解説記事で何度も見てきたと思います。今回はこの山括弧の正体であるジェネリクスを、自分でクラスやメソッドを書く側の視点から解説していきます。ジェネリク...
Java

【Java】JavaのCollectionsユーティリティクラスの活用方法

こんにちは、かつコーチです。「Listをソートしたいけど、毎回forループでアルゴリズムを書くのは面倒」と感じたことはありませんか。今回は、そんな定番処理をまとめて解決してくれるCollectionsユーティリティクラスの使い方を紹介します...
Java

【Java】JavaのDeque・Stack・Queueの使い方を比較しながら解説

こんにちは、かつコーチです。「スタックとキューって結局何が違うの?」「Stackクラスは使わない方がいいって聞いたけど本当?」という質問をよくもらいます。今回はJava 21時点でのDeque・Stack・Queueの使い分けを、実際に手を...
JavaScript

【React】React DevToolsでコンポーネントの状態を確認する方法

こんにちは、かつコーチです。前回は「無限re-renderが起きる原因と対処法」を解説しました。console.logを無限ループの中に埋め込んで原因を追う方法もありますが、正直かなり効率が悪いです。今回は、そういったバグ調査を格段に楽にし...
Django

【Django】比較検証 : DjangoとFlask、初心者に向いているのはどちらか

こんにちは、かつコーチです。これでDjango編は30本目、最終回です。「Pythonでウェブアプリを作りたいけど、DjangoとFlaskどちらから始めればいいですか」これは、Django編を通じて最もよく寄せられた質問です。どちらもPy...
Django

【Django】DoesNotExist例外で落ちる画面を防ぐ方法

こんにちは、かつコーチです。「開発中は普通に動いていたのに、本番で存在しないIDにアクセスされたら500エラー画面になった」という経験はありませんか。筆者も実際に、URLの数字を適当に書き換えてアクセスされただけでサーバーエラーになるサイト...
Django

【Django】makemigrationsが競合して困った話と対処法

こんにちは、かつコーチです。チーム開発でDjangoを使っていると、ある日突然マイグレーションが動かなくなることがあります。筆者はチームで開発していたとき、自分のブランチでgit pullした直後にmigrateを実行したら、見たことのない...
Django

【Django】django-environと.envで環境変数・秘密情報を管理する

こんにちは、かつコーチです。Djangoでアプリを作っていると、settings.pyにSECRET_KEYやデータベースのパスワードを直接書いてしまいがちです。ですがこのままGitHubにpushしてしまうと、秘密情報が世界中に公開されて...
Laravel

【Laravel】Form Requestを活用してバリデーションを整理する

こんにちは、かつコーチです。前回はService・Repositoryパターンで、ControllerからDB操作や業務ロジックを追い出す方法を紹介しました。今回は、Controllerに残りがちなもう一つの塊「バリデーション」を整理する、...
Laravel

【Laravel】外部APIとの連携方法(Http::get/postの使い方)

こんにちは、かつコーチです。前回はAPI Resourceで自社のAPIレスポンスを整形する方法を解説しました。今回はその逆で、天気情報や決済サービス、外部の認証基盤など、他社が提供するAPIをLaravelから呼び出す方法を扱います。La...
Laravel

【Laravel】LaravelでAPIを作る基本(API Resource)

こんにちは、かつコーチです。前回はLivewireの基本機能を解説しました。今回は少し話題を変えて、フロントエンドがVueやReact、あるいはスマホアプリになったときに欠かせない「API」の作り方を扱います。Eloquentモデルをそのま...
Laravel

【Laravel】Vue・Inertia・Laravelでの画像アップロード実装

こんにちは、かつコーチです。前回はBladeベースでのファイルアップロードの実装パターンを解説しました。今回はもう一歩進んで、Vue・Inertiaを使ったSPA(Single Page Application)構成での画像アップロードを扱...
JavaScript

【TypeScript】外部ライブラリの型定義(@types)の探し方・使い方

こんにちは、かつコーチです。前回は、「とりあえずany」から卒業するための考え方について解説しました。TypeScriptで開発をしていると、自分のコードではなく外部のライブラリをimportしただけで型エラーが出て困る、という場面によく出...
JavaScript

【TypeScript】「とりあえずany」から卒業するための考え方

こんにちは、かつコーチです。前回は、strictモードとtsconfig.jsonの主要オプションについて解説しました。strictモードを有効にしても、実は簡単に型チェックをすり抜ける方法があります。それが今回のテーマ、any型です。「型...
JavaScript

【TypeScript】strictモードとは?tsconfig.jsonの主要オプション解説

こんにちは、かつコーチです。前回は、よくあるTypeScriptエラーの読み方について解説しました。今回は少し視点を変えて、そもそもTypeScriptが「どこまで厳しくエラーを検知するか」を決めているtsconfig.jsonのstric...
Expressjs

【Express】エラーハンドリングミドルウェアで一元的にエラーを処理する(よくあるエラーの実例つき)

こんにちは、かつコーチです。Expressで開発をしていると、必ずと言っていいほどエラーに遭遇します。私自身も学習中に何度もサーバーをクラッシュさせたり、原因不明のエラーに数時間悩まされたりしてきました。この記事では、そんな実体験も交えなが...
Expressjs

【Express】シンプルなREST APIを作る(CRUD実装)

こんにちは、かつコーチです。ルーティングやミドルウェアを学んだら、次はいよいよ実践です。この記事では、データベースを使わずに、配列(インメモリデータ)を使ったシンプルなREST APIを作りながら、CRUDの基本を身につけます。CRUDとは...
Expressjs

【Express】ルーターを分割して整理する(express.Router()の使い方)

こんにちは、かつコーチです。Expressでアプリを作り始めると、app.js(またはindex.js)にapp.get()やapp.post()をどんどん書き足していきがちです。最初は数個だったルートも、機能が増えるにつれて数十行、数百行...