Syntax Error.

[Sy] WhiteBox開発日誌 vol.5:「一つのデータに複数のデータ構造を持たせる」という構想

2017/10/23

思考のブラックボックスを無くすクラウドサービス 「WhiteBox」 の開発日誌です。情報を管理するツールで特徴が出るのが、「どういう形でデータを持つのか」すなわち データ構造 です。今回は WhiteBox のデータ構造の構想について書きます。

中心となるのは、「核となる入力データ」

WhiteBox のデータの中心となるのは、 思いついたこと、TODO、目標、記録・・・ といった入力データです。

入力のインターフェース(受け口)としては、例えば、

  • Web上のテキストボックスから
  • iOS, Android アプリから
  • Chrome拡張から
  • IFTTTなどの外部サービスから

などなど、なるべく色んな入力手段を用意したいと考えてます。

入力データの形式は、プレーンテキスト、HTML、画像、音声など、なるべくなんでも投げ入れることができるようにしたいです。

そうやって集められた一つ一つの入力データを 核(core) と呼びます。

WhiteBox では、 この core に対して付随するデータをくっつけて、様々な管理方法を柔軟に行き来できることを目指します。

また、最初に登録した core の内容は、一切変更しません。

表向きは変更できるようにしますが、裏側のデータの持ち方としては、あくまでも操作できるのは core のコピー 、というイメージで考えています。

今考えている表示形式は、以下のようなものになります。

WhiteBox データ構造の種類

これらの様々な形式に対して、すべての core データごとに付随データを持ち、表示するということです。(リスト形式でも表示できるし、座標などを持たせてマップ形式で表示することもできる、というように)

それぞれの表示形式を少しだけ説明

まだ具体的な設計はこれからですが、現時点での各表示形式のイメージと、用途の例を軽く説明します。

1. リスト

WhiteBox データ構造(リスト)

core がそのままリストの1つのデータ(content)になるイメージです。 入力していった内容がそのままリストになる ってことですね。core が画像などの場合はおそらくURLを持たせることになりそうです。

ドラッグ&ドロップで画面上で並び順を変えることができ、それを index属性 として保持する、ということを考えています。

用途の例
  • 参考URLリスト
  • 箇条書きのメモ

2. 階層リスト

WhiteBox データ構造(階層リスト)

1のリストに 親子関係 をもたせたものになります。

文書作成や階層だててメモを整理したり、アウトライナーみたいな使い方をイメージしてます。

用途の例
  • 文書作成のツール
  • 議事メモ

3. チェックリスト

WhiteBox データ構造(チェックリスト)

1のリストに 「完了/未完了」のステータス をもたせたものです。

同様に、2の階層リストにチェック機能をもたせるのもアリですね。

用途の例
  • 外出時チェックリスト
  • TODO管理

4. テーブル

WhiteBox データ構造(テーブル)

複数の core を縦方向に並べ、それに対して 右方向に列を追加していき、テーブル形式のデータとして扱う ようにします。

例えば買いたいものを並べ、それぞれの「値段」「緊急度」などの値を持たせていくとかですね。

用途の例
  • 比較用マトリックス
  • CSVやExcel等で扱うようなテーブル状のデータ管理

5. チャート

WhiteBox データ構造(チャート)

折れ線や棒グラフなど、複数のタイプのチャートに対応します。core が 数値データのものを複数集め、それを可視化する イメージです。

用途の例
  • 体重記録
  • TOEICの点数推移

6. ボックス

WhiteBox データ構造(ボックス)

1のリストとは違い、 ただただデータを適当に箱に入れていく みたいなイメージです。そこには順番はなく、 例えばランダムに2つ取り出す 、みたいなことができると面白いな、と思っています。

用途の例
  • GTD の Inbox
  • アイディアの倉庫

7. ボード

WhiteBox データ構造(ボード)

core に 座標(縦、横)をもたせる ことで、「付箋を壁に貼る」みたいな感覚で使うものをイメージしています。

用途の例
  • ブレスト
  • 付箋ボード

8. シート

WhiteBox データ構造(シート)

7のボードに、さらに 資料として1枚ものにまとめる という考え方を取り入れたものです。複数のデータをグループ化したり、長文を書いたりすることを想定しています。

用途の例
  • ミッションステートメント
  • 報告書

9. カード

WhiteBox データ構造(カード)

並び順、表と裏のデータを持つ データの集合です。暗記カードのようなイメージがわかりやすいです。

カードの作成だけでなく、カードを1枚ずつランダム表示するなどの機能を実装して、暗記ツールとして使えるようなことも考えてます。

用途の例
  • 英単語カード
  • 名刺管理

10. マップ

WhiteBox データ構造(マップ)

7のボードに加え、データ間の関連性を表現できる ようにしたものです。

グループ化、矢印による結合などをできるようにしょうと考えています。

用途の例
  • KJ法
  • マインドマップ風

11. ノート

WhiteBox データ構造(ノート)

8のシートと近いですが、こちらは 座標の考え方は取り除き、文章や画像を決まった位置に順番に並べていく イメージです。

シートに比べ自由度は減りますが、単純に文章や画像をどんどん並べていきたい、という時に使えるシンプルなものにしたいです。

用途の例
  • 日記帳
  • トラベルノート

12. カレンダー

WhiteBox データ構造(カレンダー)

core に 日時情報 をもたせ、カレンダー状に表示します。

カレンダーの形式は複数用意し、切り替えられるようにしたいです。また、Googleカレンダーとの連携も考えたいです。

用途の例
  • スケジュール管理

ひとこと

これらの複数の表示を切り替えて、TODO管理もしつつ(チェックリスト)、その関連性を確認できる(マップ)みたいなことができると便利だと思うんですよね。

少しずつフロント部分だけでもサンプルを作っていきます。

ほかの日誌も読む