スポンサーリンク
PHP

PHP Tips | 文字列処理:ランダム・生成 – CSRF トークン生成

まず「CSRF トークン生成」で何を守りたいのかCSRF トークンは、一言でいうと「フォーム送信が“本当にそのユーザーの意思で行われたものか”を確認するための秘密の合言葉」です。例えば、ユーザーがログ...
PHP

PHP Tips | 文字列処理:ランダム・生成 – ハッシュ検証

「ハッシュ検証」で何を確かめたいのかまず、「ハッシュ検証」という言葉のイメージから整理します。ハッシュ検証とは、ざっくり言うと、「今手元にある“生の値”が、保存されている“ハッシュ値”と本当に対応して...
PHP

PHP Tips | 文字列処理:ランダム・生成 – パスワード用ハッシュ生成

まず、「パスワード用ハッシュ生成」で何をしたいのかパスワード用ハッシュ生成の目的は一言でいうと、「パスワードそのものは絶対に保存せず、“検証にだけ使える形”で安全に保存する」ことです。ユーザーが入力し...
PHP

PHP Tips | 文字列処理:ランダム・生成 – salt 付きハッシュ

まず「salt 付きハッシュ」で何を守りたいのかsalt(ソルト)付きハッシュは、一言でいうと、「同じ値でも、ユーザーごと・レコードごとに違うハッシュ値にする仕組み」です。例えば、パスワード "pas...
PHP

PHP Tips | 文字列処理:ランダム・生成 – ハッシュ化(SHA-256)

そもそも「ハッシュ化(SHA-256)」って何をするもの?まず、「ハッシュ化」という言葉のイメージから整理します。ハッシュ化は、ざっくり言うとこういう変換です。入力: "hello"出力: "2cf2...
PHP

PHP Tips | 文字列処理:ランダム・生成 – 短縮 ID 生成

「短縮 ID 生成」で何をしたいのかイメージするまず、どんな場面で「短い ID」が欲しくなるかをイメージしてみましょう。URL 短縮サービスの「短いコード」人に読み上げやすい予約番号や受付番号画面上に...
PHP

PHP Tips | 文字列処理:ランダム・生成 – UUID v4 生成

UUID v4 ってそもそも何者?まずは「UUID v4」が何なのか、イメージから掴みましょう。よく見るこの形の文字列が UUID です。550e8400-e29b-41d4-a716-4466554...
PHP

PHP Tips | 文字列処理:ランダム・生成 – ワンタイムトークン生成

そもそも「ワンタイムトークン」とは何かまず、言葉のイメージをはっきりさせます。ワンタイムトークンは、ざっくり言うとこういうものです。一度きり、または短時間だけ有効な「秘密の合言葉」URL やフォームに...
PHP

PHP Tips | 文字列処理:ランダム・生成 – ランダム文字列生成(記号なし)

何のために「記号なしランダム文字列」を作るのかまず、どんな場面で使うかをイメージしましょう。URL パラメータに載せるトークンだけど、「+ や / などの記号は使いたくない」。ユーザーに口頭で伝えるコ...
PHP

PHP Tips | 文字列処理:ランダム・生成 – ランダム文字列生成(英数字)

何のために「ランダム英数字文字列」を作るのかまず、どんな場面で使うかをイメージしましょう。ユーザーごとの招待コード一時的なトークン(メール認証、パスワードリセット)ファイル名やディレクトリ名の衝突回避...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:クラス設計 – クラスの再利用設計

ゴール:「このクラス、別の場面でもそのまま使えるな」と思える設計感覚を身につけるクラスの再利用設計は、一言でいうと、「今この機能だけ動けばいい」ではなく、「あとで別の場所でも気持ちよく使える形」にして...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:クラス設計 – クラス間の責務分離

ゴール:「このクラスは“何だけ”をやるのか?」と説明できるようになるクラス間の責務分離は、一言でいうと、「1つのクラスに“何でもかんでも”やらせず、“役割ごと”にクラスを分けること」です。ここができて...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:クラス設計 – 多重interface実装

ゴール:「1つのクラスに“複数の役割”を約束させる感覚をつかむ」多重 interface 実装は一言でいうと、「このクラスは A という顔も B という顔も、両方ちゃんと持ちますよ」と約束させる仕組み...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:クラス設計 – implementsの役割

ゴール:「implements は“この約束は必ず守ります”という宣言」だと理解するimplements は一言でいうと、「このクラスは、この interface が決めた“形(契約)”を必ず守ります...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:クラス設計 – interfaceでクラスを縛る

ゴール:「interface は“クラスに守らせる約束”」だと理解するここでのテーマは、「interface を使って、クラスに“こういう形であれ”と約束させる」という感覚をつかむことです。クラスの継...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:クラス設計 – 抽象メソッドの定義

ゴール:「抽象メソッド=“ここは必ず子クラスが実装して”という穴あきメソッド」と理解する抽象メソッドは一言でいうと、「このメソッドは“存在すること”だけ決めておいて、中身は子クラスに必ず書かせる仕組み...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:クラス設計 – 抽象クラスの設計

ゴール:「抽象クラスは“共通の型と骨組みだけを持つ設計図”」だと理解する抽象クラスは一言でいうと、「new できないけれど、“こういうクラスであってほしい”という共通ルールを決めるクラス」です。共通の...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:クラス設計 – メソッドオーバーライド

ゴール:「同じメソッド名でも“クラスごとに振る舞いを変える”感覚をつかむ」メソッドオーバーライドは一言でいうと、「親クラスと同じ名前・同じ型のメソッドを、子クラス側で“書き直す”こと」です。これができ...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:クラス設計 – superの役割

ゴール:「super は“親クラス側の自分”を呼び出すキーワードだ」と腹で理解するsuper は、継承しているときだけ出てくる特別なキーワードです。一言でいうと、「親クラス側の自分を呼び出すためのスイ...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:クラス設計 – 継承の基本(extends)

ゴール:extends で「共通部分をまとめる」感覚をつかむ継承(extends)は、「似たようなクラス同士で、共通部分を親クラスにまとめる」ための仕組みです。ここでは、「書き方」だけでなく「どういう...
JavaScript

JavaScript Tips | 基本・共通ユーティリティ:安全処理 – 安全な数値計算

なぜ「安全な数値計算」が業務で重要になるのか業務コードの数値計算は、単なる足し算・引き算では終わりません。外部 API のレスポンス、フォーム入力、DB の値など、「本当に数値か分からないもの」を相手...
JavaScript

JavaScript Tips | 基本・共通ユーティリティ:安全処理 – null 合体代入

「null 合体代入」とは何をしてくれる構文か「null 合体代入」は、「その変数が null または undefined のときだけ、デフォルト値を代入する」ということを一発で書ける構文です。Jav...
JavaScript

JavaScript Tips | 基本・共通ユーティリティ:安全処理 – undefined 防止代入

「undefined 防止代入」とは何を守りたいのか「undefined 防止代入」は、一言でいうと「よく分からない値を代入したせいで、ちゃんと入っていた値を undefined で上書きしてしまう事...
JavaScript

JavaScript Tips | 基本・共通ユーティリティ:安全処理 – 存在チェック付き実行

「存在チェック付き実行」とは何を守りたいのか存在チェック付き実行は、一言でいうと「その値が“本当に実行していい関数か”を確認してから呼ぶ」ためのパターンです。業務コードでよくあるのが、こういうやつです...
JavaScript

JavaScript Tips | 基本・共通ユーティリティ:安全処理 – オプショナル取得

「オプショナル取得」とは何を楽にしたいのかオプショナル取得は、一言でいうと「あるかもしれないし、ないかもしれない値を“落とさずに”扱うための取り方」です。業務コードだと、こんな状況が日常茶飯事です。u...
JavaScript

JavaScript Tips | 基本・共通ユーティリティ:安全処理 – 安全なプロパティ取得

なぜ「安全なプロパティ取得」が業務で必須になるのか業務コードで一番よく見るエラーの一つがこれです。Cannot read properties of undefined (reading 'xxx')...
JavaScript

JavaScript Tips | 基本・共通ユーティリティ:安全処理 – デフォルト値補完

なぜ「デフォルト値補完」が業務でめちゃくちゃ大事なのか業務コードでは、「外から来る値」がとにかく信用できません。API レスポンス、フォーム入力、設定ファイル、環境変数、ローカルストレージなど、どれも...
JavaScript

JavaScript Tips | 基本・共通ユーティリティ:安全処理 – try-catch ラッパー

なぜ「try-catch ラッパー」が業務で効いてくるのかまず前提として、JavaScript の try-catch は「例外が投げられても、アプリ全体を落とさずに処理を続けるための仕組み」です。t...
JavaScript

JavaScript Tips | 基本・共通ユーティリティ:安全処理 – 安全な JSON stringify

JSON.stringify の基本をまず押さえるJSON.stringify は、「JavaScript の値(オブジェクトや配列など)を JSON 文字列に変換する関数」です。const obj ...
JavaScript

JavaScript Tips | 基本・共通ユーティリティ:安全処理 – 安全な JSON parse

JSON.parse が「危険」になりやすい理由まず前提として、JSON.parse は「JSON 形式の文字列を、JavaScript の値(オブジェクトや配列など)に変換する関数」です。const...
Java

Java | Java 詳細・モダン文法:設計・実務視点 – モダン Java 総復習

モダン Java 総復習のゴールここまで「設計・実務視点」でいろいろ見てきましたが、モダン Java を一言でまとめると、こういう世界観になります。「Java 8 以降の機能(ラムダ、Stream、O...
Java

Java | Java 詳細・モダン文法:設計・実務視点 – 実務でよくある罠

「実務でよくある罠」とは何かここでいう「罠」は、コンパイルは通るし一見正しく動いているように見えるのに、本番や長期運用の中でじわじわ効いてきて、バグ・障害・保守地獄につながるポイントのことです。初心者...
Java

Java | Java 詳細・モダン文法:設計・実務視点 – モダン構文の使い過ぎ問題

「モダン構文の使い過ぎ問題」とは何かJava には、ラムダ式、Stream API、Optional、record、switch 式、パターンマッチングなど、「モダンでカッコいい構文」がたくさんありま...
Java

Java | Java 詳細・モダン文法:設計・実務視点 – 公開 API の互換性

公開 API の互換性とは何か公開 API の互換性とは、「一度公開した API を、後から変更しても利用者のコードが壊れないようにすること」です。ここでいう「利用者」は、あなたのクラスを呼び出す別の...
Java

Java | Java 詳細・モダン文法:設計・実務視点 – API 設計観点

API 設計観点とは何かAPI 設計観点とは、「他の人(他のクラス・他の開発者・他のシステム)が使いやすく、安全で、誤解されないインターフェースをどう作るか」という視点のことです。Java の API...
Java

Java | Java 詳細・モダン文法:設計・実務視点 – ライブラリ選定基準

ライブラリ選定基準とは何かライブラリ選定基準とは、「このプロジェクトでどの外部ライブラリを使うかを判断するためのルール」 のことです。Java の世界には膨大なライブラリがあります。便利なものもあれば...
Java

Java | Java 詳細・モダン文法:設計・実務視点 – チーム内 Java 方針

チーム内 Java 方針とは何かチーム内 Java 方針とは、「このチームでは Java をこう使う」という“共通ルール・共通思想”のことです。コーディング規約が「書き方のルール」だとすれば、チーム内...
Java

Java | Java 詳細・モダン文法:設計・実務視点 – コーディング規約統一

コーディング規約統一とは何かコーディング規約統一とは、「プロジェクト全員が同じ“書き方のルール”でコードを書くようにすること」です。これは単なる“見た目の統一”ではありません。読みやすさ、保守性、レビ...
Java

Java | Java 詳細・モダン文法:設計・実務視点 – LTS バージョン

LTS バージョンを一言でいうとJava の LTS(Long-Term Support)バージョンは、「長期間サポートされる“安定版”の Java」です。実務で言うと、「会社やプロジェクトが“これを...
Java

Java | Java 詳細・モダン文法:設計・実務視点 – バージョンアップ対応

バージョンアップ対応を一言でいうとJava のバージョンアップ対応は、「今ちゃんと動いているシステムを壊さずに、新しい Java(JDK/JRE)に乗り換えるための一連の作業」です。単に「JDK を入...
Java

Java | Java 詳細・モダン文法:設計・実務視点 – 非推奨 API の扱い

「非推奨 API」とは何か非推奨 API(deprecated API)は、「今はまだ使えるけれど、将来は消えるかもしれない/使ってほしくない」と宣言された API のことです。Java では @De...
Java

Java | Java 詳細・モダン文法:設計・実務視点 – レガシーコード対応

レガシーコード対応を一言でいうとレガシーコード対応は、「よく分からないけど本番で動いている古いコード」を、壊さずに理解し、少しずつ安全にマシな状態へ近づけていく作業です。「全部書き直したい」という気持...
Java

Java | Java 詳細・モダン文法:設計・実務視点 – 古い Java との互換性

「古い Java との互換性」とは何を指しているか「古い Java との互換性」というとき、実は複数のレイヤーの話が混ざっています。コンパイルしたクラスファイルが、どのバージョンの JVM で動くかと...
Java

Java | Java 詳細・モダン文法:設計・実務視点 – モダン Java の書き方

「モダン Java の書き方」とは何かここでいう「モダン Java」は、Java 8 以降で手に入った機能や考え方を前提にした書き方のことだと思ってください。昔ながらの「for 文だらけ・null だ...
Java

Java | Java 詳細・モダン文法:設計・実務視点 – 可読性とパフォーマンスのバランス

「速いコード」より「分かるコード」が先まず大前提として、実務では「とにかく速いコード」より「読んで分かるコード」の方が価値が高いです。なぜかというと、ほとんどのコードは「読む時間>書く時間>実行時間」...
Java

Java | Java 詳細・モダン文法:設計・実務視点 – defensive programming

defensive programming を一言でいうとdefensive programming(防御的プログラミング)は、「相手(呼び出し側や外部システム)が“ちゃんとしている”と期待しすぎない...
Java

Java | Java 詳細・モダン文法:設計・実務視点 – イミュータブル設計

イミュータブル設計を一言でいうとイミュータブル(immutable)は、「一度作ったら中身が変わらないオブジェクト」のことです。Java で一番有名なのは String です。String は rep...
JavaScript

JavaScript | 非同期処理:Promise 応用 – Promise の落とし穴

まず「Promise の落とし穴」をざっくり整理するPromise 自体は仕組みとしてはそんなに難しくないのに、実際に書き始めると「なんか思った通りに動かない」「エラーが消える」「順番がおかしい」みた...
JavaScript

JavaScript | 非同期処理:Promise 応用 – 非同期関数の再利用

「非同期関数の再利用」を一言でいうと非同期関数の再利用は、「一度作った Promise ベースの処理を、“場面だけ変えて何度も使い回せる形” に設計すること」です。言い換えると、同じような API 呼...
JavaScript

JavaScript | 非同期処理:Promise 応用 – Promise のラップ

まず「Promise のラップ」を一言でいうとPromise の「ラップ」とは、「既存の処理(コールバック形式や Promise など)を “Promise を返す関数” という形に包み直して、扱いや...
JavaScript

JavaScript | 非同期処理:Promise 応用 – 条件付き非同期処理

「条件付き非同期処理」って何かをまずイメージするPromise を使っていると、だんだんこういう場面が出てきます。「A の結果しだいで、B を呼ぶか呼ばないか決めたい」「ログイン済みなら API を叩...
JavaScript

JavaScript | 非同期処理:Promise 応用 – 逐次処理の書き方

まず「逐次処理」とは何かをはっきりさせるPromise で言う「逐次処理(ちくじ処理)」は、「非同期処理を A → B → C… のように“順番に”実行する書き方」 のことです。具体的には、A が終わ...
JavaScript

JavaScript | 非同期処理:Promise 応用 – 並列処理の考え方

まず「並列処理」をざっくりイメージでつかむJavaScript の Promise でいう「並列処理」は、「待ち時間がある処理を “同時にスタート” させて、全部終わる(またはどれかが終わる)のを待つ...
JavaScript

JavaScript | 非同期処理:Promise 応用 – Promise.any

Promise.any を一言でいうとPromise.any は、「複数の Promise のうち、“最初に成功したもの 1 つ” だけの結果を採用する関数」 です。race が「一番早く 成功でも失...
JavaScript

JavaScript | 非同期処理:Promise 応用 – Promise.race

Promise.race を一言でいうとPromise.race は、「複数の Promise のうち、“一番早く決着したやつだけ” の結果を採用する関数」 です。race(レース)という名前の通り、...
JavaScript

JavaScript | 非同期処理:Promise 応用 – Promise.allSettled

Promise.allSettled を一言でいうとPromise.allSettled は、「複数の Promise が “成功しても失敗しても、とにかく全部終わるまで待ち、結果をぜんぶレポートして...
JavaScript

JavaScript | 非同期処理:Promise 応用 – Promise.all

Promise.all を一言でいうとPromise.all は、「複数の Promise を“同時に走らせて”、全部そろったら結果をまとめて受け取るための関数」です。たとえば、ユーザー情報を取得する...
JavaScript

JavaScript | 1 日 120 分 × 7 日アプリ学習:API通信アプリ(Datamuse APIで語彙検索アプリ)

Datamuse API 編 1日目へようこそ今日は 「API 通信アプリの基礎を“実際に動く形”で理解する」 ことがゴールです。Datamuse API は「単語の関連語・類義語・韻を踏む単語」を返...
C#

C# Tips | 文字列処理:Unicode正規化

はじめに 「Unicode正規化」は“見た目は同じ文字を、本当に同じにそろえる”作業Unicode正規化は、一言でいうと「見た目は同じなのに、内部的なバイト列が違う文字列を、同じ形にそろえる」処理です...
C#

C# Tips | 文字列処理:Levenshtein距離

はじめに 「Levenshtein距離」は“どれくらい似ているか”を数字で教えてくれるものLevenshtein(レーベンシュタイン)距離は、「ある文字列を別の文字列に変えるために、何回“1文字の挿入...
スポンサーリンク