[Sy] WhiteBox開発日誌 vol.5:「一つのデータに複数のデータ構造を持たせる」という構想
思考のブラックボックスを無くすクラウドサービス 「WhiteBox」 の開発日誌です。情報を管理するツールで特徴が出るのが、「どういう形でデータを持つのか」すなわち データ構造 です。今回は WhiteBox のデータ構造の構想について書きます。
中心となるのは、「核となる入力データ」
WhiteBox のデータの中心となるのは、 思いついたこと、TODO、目標、記録・・・ といった入力データです。
入力のインターフェース(受け口)としては、例えば、
- Web上のテキストボックスから
- iOS, Android アプリから
- Chrome拡張から
- IFTTTなどの外部サービスから
などなど、なるべく色んな入力手段を用意したいと考えてます。
入力データの形式は、プレーンテキスト、HTML、画像、音声など、なるべくなんでも投げ入れることができるようにしたいです。
そうやって集められた一つ一つの入力データを 核(core) と呼びます。
WhiteBox では、 この core に対して付随するデータをくっつけて、様々な管理方法を柔軟に行き来できることを目指します。
また、最初に登録した core の内容は、一切変更しません。
表向きは変更できるようにしますが、裏側のデータの持ち方としては、あくまでも操作できるのは core のコピー 、というイメージで考えています。
今考えている表示形式は、以下のようなものになります。
これらの様々な形式に対して、すべての core データごとに付随データを持ち、表示するということです。(リスト形式でも表示できるし、座標などを持たせてマップ形式で表示することもできる、というように)
それぞれの表示形式を少しだけ説明
まだ具体的な設計はこれからですが、現時点での各表示形式のイメージと、用途の例を軽く説明します。
1. リスト
core がそのままリストの1つのデータ(content)になるイメージです。 入力していった内容がそのままリストになる ってことですね。core が画像などの場合はおそらくURLを持たせることになりそうです。
ドラッグ&ドロップで画面上で並び順を変えることができ、それを index属性 として保持する、ということを考えています。
用途の例
- 参考URLリスト
- 箇条書きのメモ
2. 階層リスト
1のリストに 親子関係 をもたせたものになります。
文書作成や階層だててメモを整理したり、アウトライナーみたいな使い方をイメージしてます。
用途の例
- 文書作成のツール
- 議事メモ
3. チェックリスト
1のリストに 「完了/未完了」のステータス をもたせたものです。
同様に、2の階層リストにチェック機能をもたせるのもアリですね。
用途の例
- 外出時チェックリスト
- TODO管理
4. テーブル
複数の core を縦方向に並べ、それに対して 右方向に列を追加していき、テーブル形式のデータとして扱う ようにします。
例えば買いたいものを並べ、それぞれの「値段」「緊急度」などの値を持たせていくとかですね。
用途の例
- 比較用マトリックス
- CSVやExcel等で扱うようなテーブル状のデータ管理
5. チャート
折れ線や棒グラフなど、複数のタイプのチャートに対応します。core が 数値データのものを複数集め、それを可視化する イメージです。
用途の例
- 体重記録
- TOEICの点数推移
6. ボックス
1のリストとは違い、 ただただデータを適当に箱に入れていく みたいなイメージです。そこには順番はなく、 例えばランダムに2つ取り出す 、みたいなことができると面白いな、と思っています。
用途の例
- GTD の Inbox
- アイディアの倉庫
7. ボード
core に 座標(縦、横)をもたせる ことで、「付箋を壁に貼る」みたいな感覚で使うものをイメージしています。
用途の例
- ブレスト
- 付箋ボード
8. シート
7のボードに、さらに 資料として1枚ものにまとめる という考え方を取り入れたものです。複数のデータをグループ化したり、長文を書いたりすることを想定しています。
用途の例
- ミッションステートメント
- 報告書
9. カード
並び順、表と裏のデータを持つ データの集合です。暗記カードのようなイメージがわかりやすいです。
カードの作成だけでなく、カードを1枚ずつランダム表示するなどの機能を実装して、暗記ツールとして使えるようなことも考えてます。
用途の例
- 英単語カード
- 名刺管理
10. マップ
7のボードに加え、データ間の関連性を表現できる ようにしたものです。
グループ化、矢印による結合などをできるようにしょうと考えています。
用途の例
- KJ法
- マインドマップ風
11. ノート
8のシートと近いですが、こちらは 座標の考え方は取り除き、文章や画像を決まった位置に順番に並べていく イメージです。
シートに比べ自由度は減りますが、単純に文章や画像をどんどん並べていきたい、という時に使えるシンプルなものにしたいです。
用途の例
- 日記帳
- トラベルノート
12. カレンダー
core に 日時情報 をもたせ、カレンダー状に表示します。
カレンダーの形式は複数用意し、切り替えられるようにしたいです。また、Googleカレンダーとの連携も考えたいです。
用途の例
- スケジュール管理
ひとこと
これらの複数の表示を切り替えて、TODO管理もしつつ(チェックリスト)、その関連性を確認できる(マップ)みたいなことができると便利だと思うんですよね。
少しずつフロント部分だけでもサンプルを作っていきます。