すべての記事
名前が20文字ちょうどでも保存できない — 文字数の数え方を1か所に決めるまでの実測
絵文字や合成文字が入ると、クライアントとサーバーで文字数が食い違います。4つの数え方をNode v22で実測し、切り詰め2,000件の破損率75.6%・UTF-8往復での置換文字化36.1%という結果から、カウントの正本を1か所に置く設計へ至るまでをまとめました。
1.10.0 の端末が強制アップデートに落ちる — 最小サポートバージョン判定を4実装で実測する
リモート設定で最小サポートバージョンを引き上げるゲートを、バージョン比較の4実装で実測しました。localeCompare が同値と言い切る箇所、fail-open の境界、審査中バージョンを閾値にした事故までを記録しています。
2文字の検索語が静かに0件になる — Expo アプリの日本語検索インデックスを実測で選び直す
SQLite FTS5 の trigram トークナイザは2文字以下の日本語クエリを例外なしで0件にします。2万件のカタログで線形走査・bigram 転置索引・FTS5 を実測し、索引を足すべき閾値と起動コストの実数を出した記録です。
実験の割り当てが同じ端末に偏る — 100万件のIDで確かめたハッシュ選定と salt の位置
端末側で実験の変種を決める割り当てが、実験を2本並べた途端に同じ端末へ集中しました。100万件のIDで4つのハッシュを測り、原因がハッシュの一様性ではなく salt の連結位置にあったこと、そして採用した実装までを実測値とともに残します。
生成した壁紙カタログのハッシュが毎回変わる — 非決定の出どころを5つ切り分ける
同じ画像フォルダから同じ catalog.json が出てこない。opendir の列挙順、JSON.stringify のキー並べ替え、照合順序、Unicode 正規化、非同期の完了順。1,225ファイルで一つずつ切り分けて、出力を1種類に固定するまでの実測記録です。
Renovate が触ってよい依存と、触ってはいけない依存 — Expo SDK 57 の123パッケージを機械的に切り分ける
Rork 生成アプリに依存の自動更新を入れると、Expo が版を管理している123パッケージまで巻き込まれます。2026年7月30日時点の実測では、うち6件が npm の最新版へメジャー更新される差でした。除外リストを手で書かず SDK から機械生成する手順をまとめます。
壁紙カタログに同じ絵が二度並んでいた — 知覚ハッシュの閾値を324枚で実測して決める
画像カタログの重複検出を、SHA-256・dHash・色相署名・ブロック署名の4通りで実測しました。dHash 単独では適合率0.9%。平坦な画像でハッシュが潰れる現象と、閾値ではなく正解ラベルの方が間違っていた顛末を、再現できるコードと数値で共有します。
prebuild --clean で消える手入れを、上げる前に数える — Expo SDK 57 移行の棚卸し
Expo SDK 57 への移行前に、ios/ へ加えた手入れが prebuild の再生成でいくつ失われるかを数える手順をまとめました。素の差分649行のうち意味を持つのは3行。ノイズを正規化して実質的な変更だけを抽出するスクリプトと、config plugin への移し替えを実測つきで共有します。
最低サポート iOS をいつ上げるか — 利用率ではなく、コードに残った分岐の数で決める
最低サポート OS の引き上げを利用率で判断すると、毎年同じ結論になって先送りが続きます。OS 分岐に注記を付けて棚卸しし、iOS と Android の引き上げ先ごとに消せる分岐を数えるスクリプトと、引き上げ後に見る指標をまとめました。
iOS プレリリース版の端末を計測から外して失敗した記録 — 除外ではなく分離するトラック設計
OS のプレリリース版を使う端末を計測から除外した結果、正式リリース当日に手掛かりを失いました。除外ではなく os_track で分離し、閾値とリリースゲートを分ける設計を実装コードとともにまとめます。
同じ通信が同時に何本も飛ぶのを1本に束ねる — 参照カウント付きシングルフライト層の設計
起動直後に同じ API へ何本ものリクエストが同時に飛ぶ多重フェッチを、進行中の Promise を共有して1本に束ねる設計です。束ねる範囲を決めるキーの組み立て方、失敗した Promise を配り続けてしまう罠、呼び出し側の中断が全体を巻き込む罠、そして束ね率を数えて回帰を止めるテストまで、参照カウント付きシングルフライト層の実装を実測の通信ログとともに残します。
アプリの設定値を三層で解決する — 既定・ユーザー・リモートを境界付きにマージするレイヤー設計
既定値・ユーザー設定・リモート設定をひとつの型安全なレイヤーでマージする設計です。壊れたリモート値でもアプリが崩れないよう、キーごとに上書きの強さを変え、境界クランプと検証を通す実装を、実際の事故から起こしたコードで解説します。