passgen の実装。crypto と履歴で速さを保つ
passgen の実装で大事にしたのは、生成の強さ と 操作の軽さ の両立です。
安全な乱数を使うことは前提として、そのうえで、画面の反応を遅くしないことも必要でした。
乱数生成の基本
生成処理はブラウザ標準の crypto 系 API を中心に組みます。
これにより、外部ライブラリに頼りすぎず、ブラウザ側で完結した生成ができます。
実装では、用途ごとに出力形式を少しずつ変えます。
- パスワード: 文字種と長さを組み合わせる
- UUID: そのまま識別子として使える形にする
- PIN: 短い数字列として扱いやすくする
履歴を残す理由
生成結果は 1 回で終わらないことが多いので、直前の出力を軽く振り返れるようにしています。
履歴があると、
- 似た値を再利用しやすい
- どのモードで生成したか思い出しやすい
- 直近の作業を戻しやすい
という利点があります。
実装を軽く保つ
この手のツールは、やろうと思えばいくらでも機能を増やせます。
ただし、増やしすぎると「速く使える」という価値が落ちます。
そのため、passgen では「今必要な機能だけを残す」ことを意識して、
生成ロジック、コピー、履歴の責務をできるだけ分けています。
小さいツールほど、実装の単純さがそのまま使い心地に直結します。