一画ずつ
名前や言葉を入れると、その字が筆順どおりに一画ずつ書かれていく。入りで細く、送りで太く、終わりは画の種別に合わせて払い・止め・跳ねを書き分ける。速さは3段、これから書く画は薄い下書きで、書き始めには番号が出る。まだ何も書いていないときは「たとえば」の3語が出て、押すとそのまま書ける。書き終わったものは動画とPNGで保存できる。筆順データは同梱していて、入れた言葉は端末の外に出ない
所要時間1時間55分
制作メモ
- AIに任せた
- 着手前の実測。候補にした4案のデータを先に叩いた。Google Fontsは日本語でもtextサブセットが効くこと(4字で1.7KB)、地理院の標高APIにCORSヘッダが無いこと、kanjiapi.devの学年別リストが1006字で現行の配当表より20字古いこと、KanjiVGが取得できてCC BY-SA 3.0であることを確かめた/要件定義(ユーザーストーリー8本+UX5階層を通して実装が10件決まった)、実装、ユニットとE2E/筆順データの加工。KanjiVGの配布XMLから画の種別とパスだけを取り出し、座標を小数1桁へ丸めて94ファイルに分けた。相対座標なので丸めの端数を次の座標へ繰り越し、元のパスと曲線を突き合わせてずれを検査する仕組みを入れた/筆づかいの設計。画の種別(㇐㇑㇒㇏など)から終わり方を払い・止め・跳ね・捺に振り分け、道のりの位置ごとに太さを変えた輪郭を多角形として組む/デモの振り付け、プロモ動画、スクリーンショット採点。採点は画面しか見ない評価者に2周まわし、11点から17点(合格は16点)へ上げた。1周目の「番号に縁取りを付けろ」という指摘は、縁取りが元からあったのでそのままでは直せず、真因(画と番号を1画ずつ交互に描いていて、あとの画が前の番号を塗りつぶしていた)をコードで突き止めてから直した
- 自分でやった
- 4案からの選択/実機での確認とX投稿
- 失敗と修正
- 座標を小数1桁に丸める処理を正規表現の置換で書いたら、パスが壊れた。-0.02 が 0 になったときに数値の区切りだった負号ごと消え、3.6 と 0 がくっついて 3.60 という別の数になった → 置換をやめてコマンドと数値に分けて読み直し、区切りを組み立て直す形にした。あわせて、丸めたパスと元のパスを曲線上の点で突き合わせて、ずれが0.25単位を超えたら生成を失敗させる検査を入れた(79,907画の実測で最大0.188)
書き終わった字の番号が、黒い画に重なって読めなかった。番号には紙の色の縁取りを前から付けてあったのに効いていなかった → 真因は縁の太さではなく描く順番で、1画ずつ「画を描く→その番号を描く」を繰り返していたため、あとの画が前の番号を塗りつぶしていた(秋の9画目が4・5・6を消していた)。1マスぶんの画を全部描いてから番号をまとめて描く2パスに変え、縁も2.4から3.2へ太くした
広い画面で1字だけ書くと、1マスが画面の丈を超える大きさに広がり、入れる欄と「書く」が画面の外へ落ちていた。何も書いていないときは空の枠だけが画面を埋めていた → マスの実寸に上限(300px)を置いて盤面を中央へ寄せ、まだ何も書いていないときは「たとえば」の3語を出して押すだけで書けるようにした
プロモ動画の録画設定をDay 035から複製すると、アニメーションが1コマも撮れないところだった。Day 035は reducedMotion: 'reduce' で録っていたが、このアプリは「動きを減らす」設定のとき完成形だけを出す → 録画のコンテキストを 'no-preference' にし、その理由を render-promo.mjs と tools/promo/README.md の先頭に書いた


































