Engineering Blog
Notes from
the Build.
認証基盤、クラウドインフラ、自社プロダクト開発。実際に手を動かして得た設計判断とその理由を、そのまま書き残しています。
Latest Articles
Android の戻るボタンで、ダイアログではなくアプリが閉じた
Capacitor 本体は back を1行も処理していない。何も書かない状態は無反応ではなく、既定の終了だった。
5 min readproduct flavor を足したら、Gradle は成功したまま 9 時間前の APK が署名された
存在チェックを足しただけでは防げなかった。Gradle の前に出力先を消して初めて「無ければ落ちる」が成立した。
5 min readプライマリ言語を日本語にしても、App Store の「言語」は英語のままだった
メタデータは日本語、言語宣言は英語。同じ商品ページの2つの値が、別のシステムから来ていた。
4 min readServer Component に Context がないので、表示漏れの防止をビルドの手前に出した
Context が使えない Server Component で、コンポーネントの使い方をどう強制するか。
5 min readkind を増やしても表せない — discriminatedUnion の軸と、読者が知りたい軸は直交していた
分類の軸を増やしても表せないものがある。公開21件を数えたら、食べ物は kind を跨いでいた。
6 min readarchive が通っても Distribution 証明書は1枚も発行されていない — SSH 越しの Mac mini で iOS を Ad Hoc 署名する
archive は手元の Apple Development 証明書で成功する。Distribution 側の発行可否は export まで分からない。
5 min readtext-pretty を日本語の本文に付けると、Safari だけ右が余る
本文カラム 350px のうち最大 78px が空いていた。Chrome では再現しない崩れだった。
5 min readopengraph-image を1枚置いても、OG 画像が付いたのはそのページだけだった
ビルドは通り、画像の URL も 200 を返す。それでも og:image は8ページ中2種類にしか出ていなかった。
9 min readミニ PC 1台の自宅サーバーに何を載せているか — 層の切り方と、状態の置き場所
自宅サーバー3部作の第1部。1台に何が乗っていて、リクエストが何を通り、状態がどこに置かれているかを図2枚で示す。
10 min readLAN の中だけで動く HTTPS を組む — 実在する TLD にワイルドカードを張らないという判断
ワイルドカードは実装が最小で影響が最大になる。自宅 LAN の名前解決と自動 TLS を、どこまで自分のものだと主張するかで設計した記録。
10 min read自宅サーバーの操作を自作 CLI 一本に寄せた — 14 コマンドの中身と、どの端末からでも同じように動く仕組み
手で触った1回はどこにも記録されない。状態を変える経路を1本にした CLI の全体像と、SSH 自動転送・マルチノード・巻き戻し・ドリフト検知の設計。
17 min readパスキーの verified: true は「この署名が正しい」以上のことを言わない — 自前 OP に WebAuthn を実装して書いた 6 つの防御
ライブラリが検証してくれるのは署名だけ。誰の鍵か・その鍵は進んでいるか・この登録は正当かは、全部その外側に書くことになった。
10 min readデプロイ先に入れた secret は読み戻せない — 署名鍵の唯一の恒久コピーは削除対象の中にあった
デプロイ先は値を注入する場所であって、保管する場所として設計されていない。環境を作り直す日まで、その違いは表面化しない。
9 min readPostgreSQL から Cloudflare D1 へデータを移す専用ツールを書いた — 型の対応と、間違えたときに止まる仕組み
移行ツールが最初に見つける問題は、たいてい移行ツールのバグではなく移行元のデータのほうだった。
10 min read設定を忘れたら全部落ちる — 管理画面の認証ゲートを fail-closed に倒した
その middleware が唯一の防壁なら落とす、他に本命があるなら通してよい。設定漏れを機能停止として可視化する設計の話。
9 min readCloudflare Workers の PBKDF2 は 100,000 回までしか回せない — テストが全部通ったまま本番だけ落ちた
ランタイム固有の制限は、ローカルの互換レイヤーが「動いてしまう」方向に嘘をつく。発覚から修正、CPU 時間の壁までの記録。
9 min readWorkers route をデプロイしても本番は切り替わらなかった — cutover の実体は DNS だった
移行手順のどの操作が実際にトラフィックを動かしているのか。それが分かればロールバック手順も自動的に決まる。
8 min read動いている実装を作り直すとき、仕様ではなく byte 一致を検証手段にする
仕様は複数の実装を許すが、移行で求められているのはそのうちの1つとの一致。判定に解釈が入らない基準を置いた話。
10 min read屋号だけの個人事業で DUNS 番号を取得するまでにやったこと
難しいのは申請そのものではなく、その前提となるドメイン・メール・サイトを揃える部分にある。実際に通した順序。
8 min readOpenID Connect の認可コードフローを、実装しながら理解する
リクエストとレスポンスを1本ずつ追いながら、PKCE・state・nonce がそれぞれ何を守っているのかを整理する。
12 min read