Skip to content

Commit 301ad30

Browse files
committed
デザインドキュメントと技術ドキュメント(同じじゃね)を書きかけで追加
1 parent 0a82ee5 commit 301ad30

File tree

2 files changed

+71
-0
lines changed

2 files changed

+71
-0
lines changed

DesignDoc.md

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
# "Jet" Design Doc
2+
3+
## 名称
4+
5+
Jet(仮名)
6+
7+
いい名前募集中。
8+
9+
## 目的
10+
11+
大サイズの JSON データに対する「非定型なタスク」を補助すること。
12+
13+
「非定型なタスク」とは、スクリプトなどを使って定型的な形に押し込めることが難しい or そうする価値が低いタスク。
14+
15+
## 開発の背景
16+
17+
作者は日常業務において, そこそこ大きなサイズ(~数 MB)の JSON データを扱うことが多い。\
18+
JSON データの閲覧には Firefox を利用することが常であった。\
19+
Firefox はデフォルトで JSON を良い感じに表示してくれるのだが、いくつか難点がある:
20+
21+
- 表示パフォーマンスが悪化しやすい
22+
- 検索機能が微妙に不親切
23+
- URL を持たない JSON データが開きにくい
24+
25+
そこで, これらの難点を解決したものを Web アプリとして実現しようとしている。
26+
27+
## 実現目標
28+
29+
Firefox の JSON 表示機能に対する不満を解決すること。つまりこんな感じ:
30+
31+
- 巨大な JSON に対しても、**表示スピード・操作感を軽快に保つこと**
32+
- **詳細な検索**, たとえば JSON の構造に対する検索や値に対する検索ができるようにすること
33+
- **野良の JSON データ**を簡単にビジュアライズできること
34+
35+
現在これらは*おおむね*クリアされている。が、これから先どうなるかはわからない。
36+
37+
## 目標としないもの
38+
39+
- リッチなグラフィカル UI / UX
40+
- パフォーマンスを妨げない範囲で(主にテンションを上げる目的で)ならやって良いが、パフォーマンスとの二択になる場合は常にパフォーマンスを優先する。
41+
- JSON lint / prettier
42+
- おまけとして付いているが, 必要なら切っていい
43+
- 超巨大(100MB~)な JSON の取り扱い
44+
- そんなもの直接見ようとしないでください・・・
45+
46+
## 実現形態
47+
48+
- NextJS による SPA
49+
- デプロイ先は Vercel
50+
51+
## おおまかな処理
52+
53+
ユーザが入力した or ストレージから取得した文字列 を JSON に変換し(Parse),\
54+
さらにそれを HTML 要素に変換して、リスト表示する(Visualize)。
55+
56+
この流れは今のところは逆転しない。つまり Visualize ステージから元の JSON 文字列を編集する手段は提供していない。
57+
58+
すべての処理はクライアントサイドで完結している。ただしこれも今のところ。
59+
60+
## 内部構造
61+
62+
上述の通り、データの流れは
63+
64+
文字列 -> JSON データ -> HTML 要素
65+
66+
となっている。
67+
68+
記述を簡潔にするため、文字列と JSON データ はグローバルステート([`Jotai`](https://jotai.org/))として管理されている。\
69+
HTML 要素も, JSON データ に依存する計算的(computed)グローバルステートとなっている。
70+
71+
原理的には JSON データも文字列に依存する計算的グローバルステートにできるが、UI の都合上あえてそうしていない。

README.md renamed to TechDoc.md

File renamed without changes.

0 commit comments

Comments
 (0)