ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗お題が毎回生まれることで「慣れ」が生じない、日本語タイピング練習ツール。
同じお題を繰り返さないため、暗記による有利不利が発生しない。1問の長さはローマ字10〜35打鍵で、時間制限は設けない。画面にキーボードを表示し、次に打つキーをハイライトする。
| テーマで打つ | 最適化練習 | |
|---|---|---|
| 出題される文章 | 指定したテーマに沿った文章 | 指定した音(例:「ざ」)を必ず含む文章 |
| 用途 | 題材を選んで練習する | 指定した連接の運指を固める |
最適化とは標準運指で同じ指が続く連接を、別々の指が続くよう崩した運指に組み替える=上級者向けの技術で、崩した運指を毎回違う文脈で反復する。
Cloudflare Workers 上で動く。Workerは2本に分かれている。
ブラウザ
| 公開API(HTTP)
v
Next.js Worker(OpenNext)… 画面のSSR、セッション検証、認可
| Service Bindings(HTTP方式)
v
Hono Worker … 外部非公開。D1 / KV / Workers AI へのアクセスを担う
| レイヤー | 選定 |
|---|---|
| フロントエンド | Next.js(App Router)+ @opennextjs/cloudflare |
| バックエンド | Hono |
| Worker間通信 | Service Bindings(HTTP方式)+ Hono RPC(hc) |
| データ | D1(Drizzle ORM)+ KV |
| お題生成 | Workers AI(AI Gateway経由)+ 読み Worker(Vibrato + UniDic トリム辞書で読み仮名の取得) |
| 認証 | Better Auth(Googleプロバイダのみ。Next.js Worker側のみに置く) |
| 入力検証 | Zod(公開APIの入口で行う) |
| スタイル | Tailwind CSS v4(@theme トークンで4色・3書体に制限) |
| テスト | bun test(純粋関数)+ Vitest + @cloudflare/vitest-pool-workers(D1/KV依存) |
| lint/format | oxlint + oxfmt |
| パッケージ管理 | Bun(ワークスペース) |
apps/
frontend/ Next.js Worker。画面・Route Handler・認証
backend/ Hono Worker。D1/KV/Workers AIへのアクセス
reading/ 読み Worker。読み仮名の解析(外部非公開)
packages/
shared/ 型定義、ローマ字入力エンジン、正規化関数、JST日付関数
reading-wasm/ Vibrato の Wasm ラッパー(読み Worker 専用)
docs/ 実装ドキュメント
生成は1プレイ15問(単語は30問)を揃えることを目標に、リトライは最大2ラウンド。1ラウンドの依頼数は読み Worker のバッチ上限(30件)に揃えている。
bun install # 依存インストール
bun run dev # 3 Workerをローカル起動(wrangler dev)。辞書が無ければ先に取得する
bun test # 純粋関数のテスト
bun run test:workers # D1/KV依存のテスト(vitest-pool-workers)
bun run lint # oxlint
bun run format # oxfmt
bun run typecheck # tsc --noEmit
bun run db:generate # Drizzleでマイグレーション生成
bun run db:migrate:local # ローカルD1に適用
シークレットは .dev.vars で管理する。テンプレートは各Workerの .dev.vars.example(リポジトリにはコミットしない)。ローカルのD1はリポジトリ直下の .wrangler/state で両Workerが共有する。