ADR-0043: キャンバスとスライドのエディタは、ツールごとに、名前を付けた複数の図とスライドを IndexedDB に保存する¶
Status¶
承認
Context¶
訪問者は、同じ端末で再訪したときに、前に描いた図と、前に作ったスライドを開ける。
ツールごとに、図とスライドを 1 つだけ保存するか、複数保存するかを決める必要がある。
- 訪問者が作った図とスライドは、訪問者のブラウザに保存する。プレイグラウンドの中では、ツールの間で origin を分けない。
- キャンバスは、draw.io の Embed Mode と Excalidraw の 2 つのツールである。draw.io の図は、親のページが受け取って保存する。
- スライドのエディタは、Markdown を保存する。
- 訪問者は、記事の図をキャンバスで開ける。
Decision¶
draw.io のツール、Excalidraw のツール、スライドのエディタは、どれも、名前を付けた複数の図かスライドを IndexedDB に保存する。
訪問者は、一覧から、開く図かスライドを選ぶ。
- 「新しい図」と「新しいスライド」の操作は、前の図とスライドを消さない。
- 保存するデータの形を、3 つのツールでそろえる。
- キャンバスのツールは、記事の図を開いただけでは、IndexedDB に保存しない。訪問者が最初に編集したときに、新しい図として保存する。
- 保存してあった図は変えない。同じ記事の図から作った図が保存してあっても、「キャンバスで開く」のリンクは、記事の図を開く。
- 保存する図は、元にした記事の図の名前を持つ。
複数を保存する理由は、新しく作り始めたときと、記事の図を開いたときに、訪問者が前に作ったものが消えないようにするためである。
最初の編集で保存する理由は、同じリンクを開くたびに、一覧に図が増えないようにするためである。
Verification¶
端末、ブラウザ、バージョンは、ADR-0039 と ADR-0041 の Verification と同じである。
試作は、ツールごとに図かスライドを 1 つだけ保存した。複数を保存する形は、試作していない。
- 3 つのツールで、編集のたびに IndexedDB に保存し、再訪で読み込めた(3 つのブラウザ)。
- 1 つだけ保存する draw.io のツールで、記事の図を開いて編集すると、保存してあった図が、開いた図に上書きされた(Chromium)。
Considered Options¶
| 選択肢 | 強み | 弱み |
|---|---|---|
| 採用: ツールごとに、名前を付けた複数の図とスライドを保存する | 新しく作り始めても、記事の図を開いても、前に作ったものが消えない | 一覧、名前の変更、削除の画面を作る。保存するデータの形に、名前と識別子が要る |
| ツールごとに、図かスライドを 1 つだけ保存する | 作るものが少ない | 新しく作り始めると、前のものが消える。残したいものは、訪問者がファイルに保存する |
開いた図を保存する時点の選択肢は次のとおり。
| 選択肢 | 強み | 弱み |
|---|---|---|
| 採用: 最初に編集したときに、新しい図として保存する | リンクを開くたびに、一覧に図が増えない | 編集しないで閉じると、一覧に残らない |
| 開いたときに、新しい図として保存する | 開いた図が、必ず一覧に残る | 同じリンクを開くたびに、同じ図が増える |
| 同じ図から作った図が保存してあれば、それを開く | 記事を開き直すと続きが開く、実行環境の動きと同じになる | 記事の図が変わっても、古い図が開く。記事の図に戻す操作が要る |
Consequences¶
Positive¶
- 訪問者は、複数の図とスライドを、同じ端末に残しておける。
- 3 つのツールで、保存と一覧の作りを共有できる。
Negative¶
- 訪問者が保存した図とスライドが増えると、ブラウザの保存の容量を使う。
- 一覧と削除の画面を、ツールごとに置く。