コース
Canvasマスターへの道
すぐに記憶を失う一枚のピクセル面から始め、再描画可能・テスト可能・アクセシブル・移行可能・共同編集可能で、AIも安全に接続できる本番品質の無限キャンバスエディターを作ります。
- モジュール
- 4 モジュール
- レッスン
- 18 レッスン
- 目安
- 目安 72時間
- 対象
- 対象: HTML、CSS、TypeScriptの基礎を身につけ、本番品質のCanvasエディター設計を本気で理解したいフロントエンドエンジニア。
APIを暗記する前に、道のり全体を見る
- 描画面を選ぶ 誰が描き、誰が編集するか決める
- 記録する ObjectはDocumentに残す
- 操作する 入力をGeometryとState Machineへ通す
- 壊す 本物の故障を意図的に起こす
- 証明する TestとTraceで合格する
5歳の子どもでも絵を見ることはできます。しかし本番システムは、さらに多くの問いに答えなければなりません。絵の中のものは何という名前か。誰が動かしてよいのか。クラッシュ後に取り戻せるか。Canvasを見られない人も操作できるか。10万個のObjectがあっても、なぜ止まらないのか。3人と1つのAIが同時に変更したら、誰の変更を採用するのか。
このコースは、そうした問いから始まります。各章ではまず、手で触れられるような小さな玩具の世界を示し、次に何が起きるかを先に予測します。それから玩具を正式な用語、TypeScript Interface、Browserの挙動、Test Evidenceへ翻訳します。比喩を事実の代わりにはしません。比喩がどこから通用しなくなるかを、毎章必ず明示します。
最終的に作るもの
学習用プロジェクト Canvas Lab を継続して拡張し、最後には次の機能を備えたVisual Operations Canvasを完成させます。
- 業務固有のShape、Text、Image、Connector、Snapping
- KeyboardとScreen Readerで使える代替Interface
- History、Autosave、Crash Recovery、Version Migration
- 安全なAsset Lifecycleと、PNG、SVG、JSON、高解像度Tiled Export
- 再現可能なGeometry、State Machine、Browser、Visual、Performance Test
- Evidenceがある場合にだけ有効にするWorkerまたはGPU Renderer
- 復旧可能なMultiplayer Sync、Offline Queue、Presence
- 制限されたActionだけを実行でき、Preview、Undo、Auditが可能なAI
この3層は決して混ぜない
- Document 全員で共有して保存する事実
- Session 自分の端末だけの作業状態
- Presence 今オンラインで、消えてよい一時的な信号
描画にも明確な境界があります。DOMはText Editing、Semantics、Accessibilityを保ちます。Canvas 2Dは学習用カーネルの高頻度描画を担当します。GPU Rendererを追加するのは、Benchmarkが効果を証明した場合だけです。Documentは特定のRendererに依存しないため、筆を交換しても台帳を書き直す必要はありません。
毎章で繰り返す学習ループ
- 玩具で遊ぶ: 具体的な物、動き、結果から、予測できるMental Modelを作ります。
- 翻訳する: 玩具の各要素をEngineering Conceptへ対応づけ、比喩の境界を示します。
- 思い込みを壊す: 小さなDemoでだけ正しそうに見える直感を、最小の反例で崩します。
- 作る: Canvas Labへ、実行できてTestできる機能を一つ追加します。
- わざと壊す: Symptom、LogまたはTrace、Root Cause、Repair、Regression Testを記録します。
- Evidenceで合格する: 自動化できる証明を目視だけで済ませません。人の確認が必要なものには、EnvironmentとPass Criteriaを記します。
- 教え返す: 専門用語なしでRuleを説明し、新しい場面へ応用します。
始める前の準備
コースの例はすべてTypeScriptのStrict Modeを使います。Modern Browser、Node.js 22、Package Manager、Browser DevTools、Unit TestとBrowser Testを実行できるTerminalが必要です。React、tldraw、WebGPU、Browser Compatibilityを扱う章では、具体的なVersionを固定するか確認日を明記します。時間とともに変わる主張は、Official Documentationで再確認してください。
Matrix、Spatial Index、CRDT、Shaderを先に知っている必要はありません。必要なのは、まず予測すること、自分の手で壊すこと、そしてなぜ修正できたかをEvidenceで説明することです。
コース進捗
コース目次
第I部:描く前に描画面を選ぶ——プロダクト、ピクセル、座標
無限キャンバスというプロダクトモデルと描画技術を切り分け、ぼやけず、再現でき、座標が一貫した学習用カーネルを作ります。
- 01 第1章:まだ描かない——Canvasはプロダクト設計ではない 同じ業務図をDOM、SVG、Canvas、GPUで実装して比較し、最初のRenderer選定ADRを残します。 公開中
- 02 第2章:すぐに記憶を失うピクセルの紙 Bitmap、CSS Pixel、物理Pixel、DPRを理解し、購読を重複させず状態も失わないCanvasHostを実装します。 公開中
- 03 第3章:お絵描きを再現可能なレシピにする その場しのぎの追記描画を、Documentから画面全体を再構築できる決定論的なマルチパスRendererへ変えます。 公開中
- 04 第4章:4枚の地図と1台のカメラ Local、Parent、World、Viewport、Screen座標を統一し、可逆なCamera、Zoom、Rotation、Minimapを完成させます。 公開中
第II部:ピクセル世界に頭脳を与える——モデル、スケジューリング、入力、ツール
Documentを唯一の事実源にし、Reactと高頻度Engineを分離して、統一入力、幾何クエリー、状態機械で操作を整理します。
- 05 第5章:ピクセル世界に台帳を作る 安定したID、Scene Graph、Shape/Asset/Binding Record、Rendererから独立したドメイン変換境界を設計します。 公開中
- 06 第6章:ランプが点いたときだけ描き直す——Render SchedulerとReactの境界 Invalidationで描画を駆動し、React Strict ModeでもEngine、Observer、Listener、rAFを常に1組だけ動かします。 公開中
- 07 第7章:マウス、指、ペンに同じ言葉を話してもらう Pointer、Wheel、Keyboard、Gestureを、ツール層が扱える統一されたWorld座標イベントへ変換します。 公開中
- 08 第8章:細い縁を調べる前に大きな箱を探す Canvas Contextに依存しないGeometryKernelを作り、Broad PhaseとNarrow Phaseで正確にヒット判定します。 公開中
- 09 第9章:ツールは信号機であり、Booleanの袋ではない 明示的なState、Guard、Cancel、Commit、CommandでSelect、Hand、Rectangle、Freehand、Eraserを構成します。 公開中
第III部:「ドラッグできる」から「信頼できる」へ——操作、文字、Asset、復旧
プロらしい操作感、ネイティブ文字編集、安全なAssetパイプライン、時間移動、Migration、テスト、アクセシビリティ、可観測性を揃えます。
- 10 第10章:触って気持ちよいエディターにする 複数選択、Resize、Rotate、Snap、Connector、Clipboard、複製Drag、画面端Scrollを実装し、どのZoomでも閾値を一定に保ちます。 公開中
- 11 第11章:描かれた文字は編集できる文字ではない Canvasはプレビュー、DOMは編集を担当し、Font、Wrap、Grapheme、Bidi、IME、Caret、Selectionを正しく扱います。 公開中
- 12 第12章:借りた画像を勝手に箱へ詰めてはいけない Upload、Decode、CORS、Origin Clean、SVG Sanitization、Memory Budget、複数形式Exportを含むAssetプロトコルを設計します。 公開中
- 13 第13章:タイムマシンと古い箱 TransactionでUndo/Redoを管理し、検証と冪等Migrationで版をまたぐデータを扱い、Document、Session、Presenceを分離します。 公開中
- 14 第14章:正しく見えることと、本当に正しいことは違う Model、State Machine、Browser、Visual、Accessibility、Performance、Production Telemetryの各層でCanvasエディターの正しさを証明します。 公開中
第IV部:マスターの判断——Performance、Worker、GPU、SDK、共同編集、AI
Traceでボトルネックを見つけてからThreadやRendererの更新を判断し、Build/Buy/Hybridと共同編集プロトコルを選びます。
- 15 第15章:1万人を一人ずつ探さない 再現可能なBenchmarkを作り、Invalidation、Culling、Spatial Index、Cache、LOD、Memory上限の効果を順に測ります。 公開中
- 16 第16章:受付を厨房へ入れない——WorkerとGPUへの更新 Main-Thread Canvas 2D、OffscreenCanvas Worker、GPU Prototypeを比較し、乱順、Backpressure、Crash、Device Loss、Fallbackを扱います。 公開中
- 17 第17章:車を自作するか、実績あるシャーシを買うか 固定したtldraw 5.xを題材に、Raw Canvas、SVG、Konva、GPU、Three.js、tldrawのBuild/Buy/Hybrid ADRを完成させます。 公開中
- 18 第18章:人とAIが同じ台帳を編集する Server-Authoritative SyncとCRDTを比較し、AIを検証可能・Preview可能・Undo可能・監査可能な型付き操作に制限します。 公開中