RyomaHori

Skills

Numbers are work references. The count reflects how many works cite the skill, not proficiency.

Languages

TypeScript主力

monorepo・strict・23,020 件規模のテスト運用、317k 行のコードベース。Next.js 16 での課金付き SaaS も含む

Python

Flask / FastAPI のバックエンド、画像処理、Blender bpy のヘッドレス駆動、ML 学習パイプライン、VPS 常駐自動化層の運用・監査・改修

Rust

Tauri サイドカー、Axum API、rusqlite/FTS5、STUN 自前パースと UDP ホールパンチ、独自トランスポート

PowerShell

M365 / Exchange / SharePoint 自動化の主要手段。PS5.1 と 7 の差異、日本語 .ps1 の BOM 必須といった実測知見

Dart / Flutter

iOS クライアント 23,302 行 / 81 ファイル / 21 feature モジュール

WGSL / GLSL / TSL

ライセンス制約から後処理シェーダー(ディザ・グレイン・モニター質感)を自作

SQL

99 テーブル規模のスキーマ設計、月次レンジパーティショニング、EAV + generated columns、RLS 設計

VBA(読解・移植)

olevba でマクロ抽出 → 挙動仕様化 → pure-TS 再実装(行単位ポートは意図的に不採用)

Frontend, 3D and motion

three.js

TSL + WebGPURenderer と WebGL2 の自動フォールバックを同一コードで両対応。r160 でのノーバンドル無限円筒ギャラリー、PMREM の自前環境マップ、React Three Fiber

React / Next.js

App Router(15/16)と React 19

デスクトップ UI

WPF + MVVM の 11 画面、Tauri WebView、Eel

エディタ実装

BlockNote(ProseMirror)のカスタムブロック開発。callout / collection_view を独自ブロック化し toExternalHTML / parse まで実装

モーション

GSAP(2026 年の商用無料化を一次確認して採用)、anime.js v4、CSS 主導。Lenis は評価の上で不採用(自作 lerp で代替)

ガラス・質感

feDisplacementMap による実屈折(Aave Glass 手法)。安易な backdrop-filter を禁じ、4 プロジェクトで一貫して使用

アクセシビリティ

axe critical/serious 0、フォーカストラップ、aria-live、キーボード全経路、prefers-reduced-motion 完全対応

PWA

依存ゼロで Service Worker / manifest を手書き

依存を足さない実装判断

PDF 生成ライブラリを入れず印刷用 CSS + window.print() に委譲、MoviePy を使わず Pillow + FFmpeg サブプロセス

Backend, data, sync and networking

分散同期の自前設計

2 チャネル方式(Yjs CRDT + field-level LWW + HLC + transactional outbox)。PowerSync の whole-row LWW を silent data loss の理由で恒久却下

自作数式エンジン

lexer → Pratt parser → evaluator、iterative Tarjan SCC で循環検出、Kahn トポロジカルソート、incremental === full を 30 seed の property test で固定

CalDAV 双方向同期

RRULE 展開 / EXDATE / RECURRENCE-ID override、CTAG ゲート、sync-token フォールバック、URL 正規化ベースの blast-radius guard。実 iCloud で live 検証

低レイヤ ネットワーク

STUN(RFC5389)のメッセージ構築と XOR-MAPPED-ADDRESS パースを外部 crate なしで実装。双方向 UDP ホールパンチ、TCP を UDP に載せる独自プロトコル(seq/ack・並び替えバッファ・200ms RTO 再送)。NAT 越えの成功ログは存在しないことを明記する

プロセス間通信

atomic write のコマンドファイル + state.json ポーリングでデーモンと GUI を疎結合化、Rust ↔ TS の JSON HTTP コントラクト

非同期ジョブ

Celery + Redis、BullMQ + Redis、NATS pub/sub のスキャッター・ギャザー

地理空間

PostGIS + pgvector、Google Earth Engine、trimesh レイキャスト、pvlib

決済

Stripe Checkout + Webhook 署名検証 + 冪等化。サブスク 2 種と買い切り 2 種を同一 Checkout で扱い、webhook で更新・解約・支払い失敗まで状態遷移させる設計

egress 遮断 PDF レンダラ

puppeteer-core + CDP。--host-resolver-rules を DNS バックストップに第三者送信 0

Infrastructure, cloud and operations

VPS + systemd + Tailscale

公開ポートゼロのメッシュ限定配信、systemd hardening によるクラッシュループ抑止、EnvironmentFile による秘密の非露出、整合性の自己治癒

Cloudflare

Pages(本番/プレビューのブランチ運用)、R2(暗号化 Blob を AAD 検証まで実機スモーク)、Workers + D1、wrangler

Microsoft 365 / Graph / SharePoint

証明書ベースの client credentials、Sites.Selected、Mail.Send、Application Access Policy、CSOM/REST 直叩き

メール配信性

SPF / DKIM / DMARC 設計、共有メールボックス、multipart/alternative の自前構築、mail-tester 10/10、550 5.7.708 の切り分けと解除

Windows 配布

Tauri の MSI(WiX) / NSIS 両インストーラ生成(未署名)、PyInstaller

CI/CD

GitHub Actions → SCP → systemd で、ヘルスチェック失敗時に前世代へ ERR trap で自動ロールバック。バンドル予算の機械強制

CI が『定義はあるが一度も緑になっていない』プロジェクトが複数ある(verse-tools はコミット 0 で未実行、screen-state-overlay はリモートなし、convio は旧構成参照で常に赤、miraie は確実に赤、todokede-navi / credo / zero2cash は CI 自体がない)。『CI/CD が得意』と一般化して書かない

Working with AI

マルチエージェント編成の自己設計

設計・裁定 → 実装 → 並列で敵対的なレビューという階層。モデル階層をフル ID で固定する統制ルールを、エイリアス誤解決の実測事故から策定

敵対的レビューの反復

14 ラウンド、17 ラウンド・90 件超をゼロまで収束、8 日で 4 回の自己監査、2 回のライブ監査(72 + 26 件、第 2 回は 9 次元並列 89 エージェント)

独立第二意見のゲート運用

Codex / GPT に狭域 1 観点ずつ当てる。Rust↔TS 境界の P0 契約破壊 2 件を検出して 2 ラウンドで収束

MCP

ピア通信 MCP の自作オーケストレータ層、エラー計装の 18 ツール MCP ブリッジ

LLM コスト最適化

OpenAI 互換キャッシュ + 複雑度ルーティング + SSE パススルー + SQLite 永続 budget guard。月次コスト上限の超過通知(ただし単価はトークン計測ではなく固定定数)

AI 機能の実装

GitHub Models 経由の 17 ルート、fail-closed 三層の見積行ドラフト、ブラウザ内 WASM 推論、Gemini の JSON 構造化出力とキー不要の決定論フォールバック、Claude によるファイル分類

プロンプト設計

最低保証額・技術スタック別の加点表といった厳格なルールをシステムプロンプトに与え、値付けの一貫性を担保

Quality assurance and verification

テスト規模の実績

23,020 / 1,036(84 ファイル・実測一致)/ 581 + smoke 91/91 / 661(60 ファイル)/ 147 / 66(実行確認)

property-based testing とその落とし穴

『generator が安全側に偏ると重大バグを見逃す』を 5 回繰り返して教訓化し、未選択ブランチに erroring subtree を仕込む敵対的 generator へ改めた

パリティ契約テスト

正本とミラーの出力を body byte-identical で機械検知。デスクトップとサイドカーの境界を固定する契約テスト

決定論化

時計・乱数を注入、ctx.now で now()/today() を固定、getBoundingClientRect のタイミング起因 flake を prototype-patch で除去

回帰の機械強制

バンドル予算 CI、Core Web Vitals のリリースゲート化、スモークの数値閾値化

本番障害の根本原因究明

Celery の FAILURE state に dict meta を渡すと永久 pending 化する / AsyncResult を app 未指定で使うと gunicorn gthread のスレッドローカルで DisabledBackend に解決される、の 2 件を特定して回帰テストを追加

ドキュメントと実装の乖離を検出する監査

自分の成果物 3 件について、README の中核主張が実装に存在しないことを独立検証で特定し、主張を撤回した。差別化の核

テストが 0 件のプロジェクトもある(zero2cash / personal-line-assistant / miraie / genesis)。CI で走っていないテストを『通っている』と書かない

Security

設計での封じ込め

blast-radius guard(削除スコープを文字列ブラックリストでなく URL 正規化で判定)、tombstone 安全弁、all-null push ブロック、DROP-and-ACK write gate

暗号運用

AES-256-GCM + 鍵バージョニング + 自動再暗号化。OS 固有鍵(DPAPI)→ PBKDF2 10 万回 → AES-256-GCM + HMAC-SHA256 の改ざん検知。R2 の AAD 不一致で復号失敗することまで実機検証

OAuth の正しい実装

PKCE で配布バイナリに CLIENT_SECRET を埋め込まない設計、ローカルコールバック + state による CSRF 対策

Web の防御層

reCAPTCHA、変更系 API の Origin 検証、CSP + HSTS + X-Frame-Options + Permissions-Policy、UUID バリデーション、IP/ユーザー単位のレートリミッタ

自己検出したインシデント

認証判定を Cookie 存在から getUser() へ厳格化、レート制限の TOCTOU バイパス修正、ログの PII 1,328 行スクラブと送信者名の digest 化

監査

2 回のライブ監査(72 + 26 指摘)、olevba によるマクロ監査、統合監査ログの有効化

反面教師として提示できる材料(自分の実装から)

自前 XOR/『AES 風』暗号と配布バイナリへの client secret 埋め込み、部分文字列だけの ZIP スリップ対策、README が謳う E2E 暗号化の未配線、preflight での API キー先頭表示、サーバーレスで回避可能なプロセス内カウンタ

Architecture, documentation and process

ADR

同期エンジン / クライアントプラットフォーム / グラフ可視化ライブラリの意思決定記録

要件定義書

21 本 9,612 行(第 7 次監査まで)、v1.2 44KB ほか

競合の定量調査から設計根拠へ

同業 24 社を 2 回分析し『スペック付き事例カード / 業種特化フォーム / 設備の数値開示 を 3 点同時に持つサイトはゼロ = 即差別化』と結論して構成を決定

規程・台帳ベースの運用

55 領域カバレッジ監査、文書 ID/版/状態の三点管理、Go/No-Go ゲート、権威と証拠を分離する社内規程

失敗の記録

lessons.md の教訓ログ、障害調査記録、実装乖離の監査記録。一次資料として残っている点が最大の差別化

Design

参照実装の忠実再現

Notion をピクセル忠実にクローン(本文色 #37352f、H1 30px、card-light の影 0 を DOM 実測で確定)

絵文字ゼロの機械検証

アイコンは Lucide 等 OSS セット(MIT / ISC)または SVG 自己生成、ロゴは SVG 自己生成か Figma

Blender の bpy ヘッドレス駆動

メタボール → リメッシュ → サブディビジョン + アーマチュアで有機形状 GLB を自作。外部配布モデル不使用の方針を維持したまま品質問題を解決

Figma

12 ページを 10 回改善し、全 13 枚の記録を残した

人物表現

顔写真を載せない方針に対し、線画イラストで代替する