zukucode
主にWEB関連の情報を技術メモとして発信しています。

  • C# enumで決められた状態を表す

    注文状態を文字列で持つと、shippdのようなタイプミスもコンパイルできます。候補が固定されている値はenumで表せます。数値を明示すると、途中へ値を追加しても既存値がずれません。DBや外部APIへ数...


  • PostgreSQL インデックスで検索を速くする基本

    商品数が少ない間は全行を調べても速く見えますが、データが増えると検索条件に合う行を探す時間が長くなります。インデックスは、特定の列から行を探しやすくする構造です。次の検索で利用される可能性があります。...


  • ASP.NET Coreで画像ファイルを安全にアップロードする

    画像を受け取るAPIでは、拡張子だけを信頼して保存すると、想定外の内容や巨大なファイルを受け入れる可能性があります。ここでは小さな画像を1件受け取る基本と、最低限確認したい境界を扱います。フォームのフ...


  • React useMemoで重い計算結果を再利用する

    一覧の絞り込みや並べ替えを描画のたびに行うと、データ量や計算内容によっては画面操作が遅くなります。useMemoは、依存する値が変わらない間、以前の計算結果を再利用します。productsまたはque...


  • TypeScript Recordでキーと値の対応表を型安全に作る

    ステータスごとの表示名や色を定義するとき、文字列を自由にキーへ使うと、追加漏れやタイプミスに気付きにくくなります。キーの候補が決まっている対応表にはRecordを利用できます。RecordOrderS...


  • C# TryParseで文字列を安全に数値へ変換する

    テキストボックスやCSVから受け取った値は文字列です。数値として使いたい場合、int.Parseは変換できない入力で例外を投げます。入力が誤っていることを通常の分岐として扱うなら、TryParseが向...


  • PostgreSQL 外部キーで存在しない親IDを防ぐ

    注文の明細が、存在しない注文IDを参照するとデータの意味が分からなくなります。アプリケーションで事前確認しても、確認後に別の処理が親を削除する可能性があります。外部キーを設定し、データベースでも関係を...


  • ASP.NET Coreで一覧APIにページングを付ける

    商品が増えたあとも一覧APIが全件を返すと、転送量と画面の表示時間が増えます。最初はpageとpageSizeを受け取るページングが分かりやすい方法です。このActionは[ApiController...


  • React useRefで入力欄にフォーカスを当てる

    入力フォームを開いた直後や、入力エラーが出たときに、特定の入力欄へフォーカスしたいことがあります。DOMの要素自体を参照するにはuseRefを使います。currentは初回描画中などにnullになり得...


  • TypeScript ジェネリクスで引数と戻り値の型をつなぐ

    同じ処理を文字列と数値の両方に使いたいとき、引数をanyにすると戻り値の型も分からなくなります。ジェネリクスを使うと「受け取った型と返す型が同じ」という関係を表せます。Tは関数を呼ぶときに決まる型です...