中級者向け

JavaScript

【TypeScript】any型・unknown型・never型の違い

こんにちは、かつコーチです。前回は関数の型について解説し、最後に「any型に逃げると型チェックの恩恵を受けられなくなる」という話をしました。今回はその続きとして、TypeScript特有の3つの型、any・unknown・never の違い...
JavaScript

【JavaScript】ブラウザ互換性対応の考え方

こんにちは、かつコーチです。前回は非同期処理でハマりやすい罠を解説しました。今回のテーマは「ブラウザ互換性」です。自分のパソコンでは完璧に動いていたはずのコードが、別のブラウザや古い環境ではエラーになる、あるいは見た目が崩れる。こうした経験...
JavaScript

【JavaScript】非同期処理でハマりやすい罠と対処法

こんにちは、かつコーチです。前回はundefinedとnullの違いを解説しました。今回のテーマは、多くの学習者が一度は必ずつまずく「非同期処理」です。async/awaitやPromiseの書き方自体は覚えても、いざ実務で使うと「あれ、な...
JavaScript

【JavaScript】JavaScriptの正規表現入門

こんにちは、かつコーチです。前回はDateオブジェクトで日付・時刻を扱う方法を解説しました。今回は、文字列のパターンマッチングに使う「正規表現」の基本を扱います。正規表現は最初は記号だらけで難しく見えますが、フォームのバリデーション(入力チ...
JavaScript

【JavaScript】JavaScriptでCookieを操作する方法

こんにちは、かつコーチです。前回はLocalStorage・SessionStorageの使い方を解説しました。今回はもう一つのブラウザ保存手段である「Cookie」を扱います。Cookieは古くからある仕組みですが、LocalStorag...
JavaScript

【JavaScript】ローディング表示を実装する(非同期処理中のUI)

こんにちは、かつコーチです。前回は「非同期処理のエラーハンドリング(try-catch)」で、通信が失敗したときの対処方法を解説しました。今回はAPI通信シリーズの締めくくりとして、「通信が終わるまでの間、ユーザーに何を見せるか」というテー...
JavaScript

【JavaScript】非同期処理のエラーハンドリング(try-catch)

こんにちは、かつコーチです。前回は「JSONの扱い方」で、APIとやり取りするデータの形式について解説しました。ここまでの記事では、通信が「成功する」前提でコードを書いてきました。でも実際の開発では、通信エラーやサーバー側の不具合など、うま...
JavaScript

【JavaScript】外部APIからデータを取得して表示する

こんにちは、かつコーチです。前回は「fetch APIの基本:外部データを取得する方法」で、fetchとasync/awaitを使ってデータを取得する基本の流れを解説しました。今回はその一歩先として、実際の外部APIから複数のデータを取得し...
Redis

【Redis】RedisとMemcached、どちらを選ぶべきか比較検証

こんにちは、かつコーチです。これまで5回にわたって、Redisの基本・データ構造・キャッシュ戦略・セッション管理とPub/Subを解説してきました。Redisシリーズの最終回となる今回は、キャッシュ用途でよく比較されるMemcachedとの...
Redis

【Redis】Redisをキャッシュとして使う:TTL戦略の基本

こんにちは、かつコーチです。「とりあえずRedisを導入したものの、TTL(有効期限)を何秒にすればいいか分からない」そんな相談を受けたことが何度かあります。Redisをキャッシュとして使う上で、TTL戦略(キーの有効期限をどう設計するか)...
Redis

【Redis】Redisのデータ構造(List・Hash・Set・Sorted Set)の使い分け

こんにちは、かつコーチです。前回までの記事で、Redisの基本コマンドSET・GET・EXPIREを扱いました。これらは1つのキーに1つの値(文字列)を対応させる、最もシンプルな使い方でした。ですがRedisの本当の強みは、実はここから先に...
Oracle Database

【Oracle Database】Oracleと他RDBMS、企業システムでどちらを選ぶべきか比較検証

こんにちは、かつコーチです。これでOracle Database編は6本目、最終回です。「新規案件のDB、OracleとMySQL・PostgreSQLどっちにしよう」エンタープライズ寄りの案件に関わるようになると、この選定に頭を悩ませる場...
Oracle Database

【Oracle Database】シーケンスとROWNUM・ROWID、MySQL/PostgreSQLとの違い

こんにちは、かつコーチです。Oracle Database編の4本目です。MySQLやPostgreSQLに慣れている方が最初に戸惑いやすいのが、連番の採番方法と、ROWNUM・ROWIDという独自の概念です。この記事では、他のRDBMSと...
Oracle Database

【Oracle Database】PL/SQLの基本:手続き型でロジックを書く

こんにちは、かつコーチです。Oracle Database編の3本目です。今回は、Oracle Database最大の特徴といっても過言ではないPL/SQL(Procedural Language extensions to SQL)を解説...
MongoDB

【MongoDB】MongoDBとPostgreSQL(JSONB)、どちらを選ぶべきか比較検証

こんにちは、かつコーチです。これでMongoDB編は10本目、最終回です。「MongoDBを採用しようと思っていたけど、PostgreSQLのJSONB型でも同じことができるのでは」。PostgreSQL編の最終回(20本目)でも同じテーマ...
MongoDB

【MongoDB】MongoDBのインデックスの基本とパフォーマンス改善の考え方

こんにちは、かつコーチです。「検索は動くけど、データが増えたら急に遅くなった」という相談を、MongoDBを使い始めた方からよく受けます。原因のほとんどはインデックス(検索を高速化するためのデータ構造。SQLのB-Treeインデックスと似た...
MongoDB

【MongoDB】クエリ演算子(gt・in・$regex等)の使い方

こんにちは、かつコーチです。前回はCRUD操作の基本を解説し、find({ status: "active" })のような単純な一致条件での検索まで扱いました。今回は一歩進んで、SQLの>やIN、LIKEに相当するクエリ演算子の使い方を解説...
JavaScript

【Next.js】next/imageで画像を最適化する

こんにちは、かつコーチです。前回はVercelへのデプロイ方法を解説し、アプリを実際に公開できるようになりました。公開したアプリが実際にユーザーに使われ始めると、次に気になってくるのが表示速度です。特に画像は、対策をしないままだとページ全体...
JavaScript

【Next.js】Next.jsのテスト入門:Vitest + Playwrightで最低限を押さえる

こんにちは、かつコーチです。前回はmiddleware.tsを使って、ログイン必須ページをまとめて保護する実装をしました。認証まわりのロジックは特に、後から誰かが変更を加えたときに気づかず壊してしまいやすい部分です。今回はそうした事故を防ぐ...
JavaScript

【Next.js】環境変数の扱い方:NEXTPUBLICの付け忘れでハマった話

こんにちは、かつコーチです。前回は、revalidatePathを呼んでも画面が更新されなかった原因と、router.refresh()やrevalidateTagによる対処法を解説しました。N11〜N14でServer/Client Co...