ブログ
ウェブツール・スクリプトのレシピ・utilrepo で作っているツールについてのノート。
- 開発者向け
CSVからJSONへ: クォート、型、エンコーディングの罠
CSVは実際にパースするまでは単純に見えます。クォートのルール、すべてが文字列になる問題、フィールド内の改行、そして整然と見えるスプレッドシートを壊れたJSONに変えてしまうエンコーディングの問題を扱います。
- 計算機
日本の手取りはどう計算されるのか:額面から手取りまで
日本で提示された給与と実際に口座に振り込まれる金額の間で、何が差し引かれるのか(健康保険・厚生年金・雇用保険・所得税・住民税)、そしてなぜ初年度の住民税の差が生じるのかを説明します。
- 時間
和暦の年: 令和・平成・昭和を西暦に変換する
日本の元号カレンダーの仕組み、変換が固定のオフセットにならない理由、改元年のエッジケース、そして元号の日付が今も公的書類で使われている場面を解説します。
- 計算機
韓国の年次有給休暇(연차)の規則:有給休暇はどう発生するのか
韓国の労働法における年次有給休暇の仕組み。入社初年度の月ごとの発生、1年経過後の15日という基準、長期勤続による増加、そして従業員と使用者の双方がつまずくポイントを解説します。
- テキスト
韓国語のローマ字表記: 文化観光部2000年式(RR) vs マッキューン・ライシャワー(MR)
同じ韓国語の名前が異なる二通りの綴りで現れる理由、公式の文化観光部2000年式(RR)と古いマッキューン・ライシャワー式(MR)の違い、そしてどちらをいつ使うべきかを整理します。
- セキュリティ
RSAキーペア解説: 公開鍵、秘密鍵、そしてそれぞれの役割
RSA鍵の公開鍵側と秘密鍵側が実際に何をするのか、暗号化と署名の違い、鍵長が重要な理由、そしていつ代わりにEdDSAを選ぶべきかを解説します。
- 時間
タイムゾーン、UTCオフセット、そしてUTCを保存すべき理由
UTCオフセットとタイムゾーンの違い、サマータイムがオフセットを信頼できないものにする理由、そしてほとんどの日付バグを防ぐルール。UTCを保存し、境界で変換します。
- 開発者向け
UUID v4 vs v7: IDにはどのバージョンを使うべきか
ランダムなv4 UUIDと時刻順に並ぶv7 UUIDは、異なる問題を解決します。なぜv7がたいてい優れた主キーになるのか、v4が今でも適切なのはどんなときか、そしてバージョンビットが実際に何を意味するのかを説明します。
- 画像
QRコードの中身: 構造、容量、誤り訂正
QRコードがデータを保存する仕組み、ファインダパターンとクワイエットゾーンの役割、誤り訂正レベルがエンコードできる量を変える理由、そしてコードを生成する前に知っておきたい実用上の限界を説明します。
- 開発者向け
YAMLの落とし穴: ノルウェー問題とその他の静かな罠
YAMLの便利さは暗黙的な型推論から来ており、そこがまさに問題の起きる場所です。国コードがfalseになり、バージョン番号が桁を失い、時刻が整数になります。こうした罠とその回避方法を整理します。
- 開発者向け
パーセントエンコーディング: 予約文字と二重エンコードのバグ
URL のパーセントエンコーディングがどう動くか、なぜ空白がパスでは %20 でフォーム本文では + なのか、encodeURIComponent vs encodeURI、そして二重エンコードのバグがどう %2520 を生むのかを整理します。
- セキュリティ
HMAC で Webhook 署名を検証する
Webhook エンドポイントになぜ HMAC 認証が必要か、標準的な提供者の署名パターン、生ボディと定数時間の罠、そして HMAC が守らないものを整理します。
- 開発者向け
JSON Schema で API ペイロードを検証する
JSON Schema が手書きのペイロード検証を宣言的な契約でどう置き換えるか、重要なキーワード、そして人々を悩ませる format の落とし穴を整理します。
- 開発者向け
Unix タイムスタンプ、エポック、そして 2038 年問題
Unix タイムスタンプが実際に何であるか、誰もが踏む秒 vs ミリ秒のバグ、そして符号付き 32 ビットの時刻がなぜ 2038 年 1 月 19 日 03:14:07 UTC にオーバーフローするのかを整理します。
- 開発者向け
ハッシュ・暗号化・エンコーディング: 人々が混同する 3 つ
エンコーディング・暗号化・ハッシュは別々の問題を解きます。これらを取り違えることが、パスワードが漏れトークンが偽造される原因です。その正確な区別を整理します。
- 開発者向け
破滅的バックトラッキングとその他の正規表現の罠
バックトラッキング型の正規表現エンジンが悪意ある入力でどう爆発するか、入れ子の量指定子がなぜ ReDoS を引き起こすか、そしてそれを直すアンカー・アトミックグループ・線形エンジンを整理します。
- 開発者向け
cron 式の落とし穴: フィールド・範囲・Vixie vs POSIX
cron のフィールドと特殊文字、人々を悩ませる日 (日付) vs 曜日の OR の癖、タイムゾーンと DST の危険、そして秒フィールドの移植性の罠を整理します。
- 開発者向け
CIDR 表記の読み方: サブネット・マスク・ホスト数
CIDR 表記の読み方を整理します。/n の意味、プレフィックスからネットマスクへの変換、利用可能なホスト数の計算、ネットワークアドレスとブロードキャストアドレスの求め方、そして /31 と /32 の特殊ケースまで扱います。
- 開発者向け
Base64 は暗号化ではありません: 実際に何をしているのか
Base64 はバイナリをテキストに移すための転送用エンコーディングであり、セキュリティ手段ではありません。その仕組みと使いどころ、そしてこれを機密性と取り違えることがなぜ実際の事故につながるのかを整理します。
- 開発者向け
JSON vs YAML: いつどちらを使うか、そしてそれぞれの落とし穴
JSON と YAML は同じデータをモデル化しますが、失敗の形は鋭く異なります。YAML の型強制と空白の罠 vs JSON のコメントの欠如と冗長さを整理します。
- 開発者向け
AWS Cost Explorer の CSV を読む: フィールド別ガイド
AWS Cost Explorer の CSV エクスポートの各列が実際に何を意味するのか、初めて読む人がつまずくスキーマの落とし穴、そして欲しい答えを得るためのファイルの切り分け方を整理します。
- 開発者向け
日本企業の AWS コスト管理でよくある 7 つの失敗
稟議・年度予算・タグ統制・円安リスクなど、日本のエンタープライズに特有の AWS コスト管理の落とし穴と、その対処法をまとめます。
- 開発者向け
JWT 署名アルゴリズム比較: HS256、RS256、ES256、EdDSA
2026 年に重要となる 4 つの JWT 署名アルゴリズムのトレードオフ、それぞれが鍵配布にとって何を意味するか、そして実システムに今なお現れるアルゴリズム混同攻撃を整理します。
- 開発者向け
AWS の請求が突然跳ね上がる理由 — よくある 7 つの原因
予期しない AWS コスト増加が取る 7 つの形、それぞれが Cost Explorer でどう見えるか、そして再発する前に突き止める方法を整理します。
- カレンダー
営業日 vs 暦日: 祝日を含めた締め切りの計算
営業日を正しく数え、足す方法、つまり O(1) の平日公式、祝日カレンダーの問題、そして素朴なコードを壊す包含/排他の端点と時間帯のエッジケースを整理します。
- 計算機
韓国の手取り給与はどう計算されるか: 四大保険と所得税
韓国の額面の給与提示がどう手取りになるか、つまり四つの国民保険、労働者・使用者の負担、源泉徴収の税、そして年末調整を整理します。
- テキスト
URL のスラッグ化: Unicode・発音区別符号・衝突
タイトルを URL セーフなスラッグに変える方法、つまり小文字化・正規化・翻字のパイプライン、発音区別符号と非ラテン文字がなぜそれを壊すか、そして衝突をどう扱うかを整理します。
- デザイン
色のコントラストと WCAG: アクセシビリティ検査を通す
WCAG の色コントラスト比がどう計算されるか、テキストと UI の AA・AAA のしきい値、監査が最もよく指摘する失敗、そして WCAG 2 の計算が及ばない点を整理します。
- 画像
EXIF メタデータ: 写真が明かすものと、その消し方
EXIF メタデータが写真に何を埋め込むか — 端末、タイムスタンプ、GPS 座標 — どこで生き残りどこで除去されるか、そして画像を壊さず安全に消す方法を整理します。
- 開発者向け
curl コマンドを読んでコードに移す
curl コマンドをフィールドごとに正確に読み、fetch や Python の requests へ正しく移す方法、そしてほとんどの翻訳がつまずく暗黙の POST の罠を整理します。
- セキュリティ
TOTP 認証アプリのコードは実際どう動くのか
TOTP (RFC 6238) が共有秘密と現在時刻をどうやって 6 桁のコードに変えるか、なぜ両者が一致するか、そして何を守り何を守らないかを整理します。
- セキュリティ
パスワードエントロピー解説: 何が実際にパスワードを強くするのか
パスワードのエントロピーをビットでどう測るか、なぜランダムな長さが複雑さの規則に勝つか、そして鍵・トークン・パスフレーズでエントロピーの基準をどこに置くかを整理します。