Moem ― アイデアを書き溜めるためのノートブック型メモツール

2009-02-21 公開
2010-06-27 更新

ホーム » プロジェクト » この記事

概要

 Moem は、覚え書きやアイデアメモを保存するためのメモ記録ツールです。(Microsoft Windows で動作するローカルアプリケーション。データの保存場所は任意。)

*

 思い付いたアイデアや言葉は、どこかに記録しておかないと消えてしまいます。そのようなテキストを、まずは「とりあえず保存しておく」ことが第一の目的です。

 メモは、項目毎に「ノード」の形で追加します。一つのキーワード箇条書きの一項目、あるいは一つの文章段落の単位で、一つのノードにします。

 それぞれの項目には、作成した日時の情報が自動的に記録されます。(メモの日時情報を記録しておくことは重要です!)

*

 ノードは「ページ」上の自由な位置に移動できます。上から下、左から右に流れる木構造の形で、アイデアや覚え書きを整理します。また、ノードの実体を重複することなく、複数のページに複写することもできます。思考を整理するためのツールとしても役立てるでしょう。

*

 作成したページ・ノードは、素早く全文検索できます。大量のメモを、長期間に渡って保管編集、そして検索閲覧できることが、第二の目的です。

 その他の主な特徴・機能は以下の通りです。

取扱説明書

より詳しい解説

 このページには次の章があります。

 レビューして頂きました。(他薦。)

ダウンロード

最新版

寄付歓迎

 Moem は「カンパウェア」(寄付歓迎のフリーソフト)です。気に入って頂けた場合は制作支援をお願いします。(価格は任意です。)

AnyWare+ 寄付受付

PayPal

過去のバージョン

動作環境

 本ソフトウェアの動作には Microsoft .NET Framework 2.0 が必要です。(制作者の動作確認環境は太字のみ。)

コンポーネントの入手先

既知の不具合

 以下の問題を確認しています。次回以降の更新で改善できると思います。

ToDo

 今後、以下の機能の実装を予定しています。

 要望などがあれば連絡先にてお伝えください。頂いた提案を必ず実現できるとの保証はありませんが、開発の参考になります。

質問と回答

 FAQ です。

“Moem”は何と発音しますか。

「もえむ」と読みます。

“Moem”という名称の由来は。まさか、いまさら「萌え」ですか。気色悪いですね。

 "memo" のアルファベットを並べ替えたものです。特に深い意味はありません!

これは「アウトラインプロセッサー」なの?

 広義には Yes、目的・用途によっては No です。

 Moem は、あくまで「常駐型のメモツール」として開発しています。

 ノードは「表題と本文」ではなく、全てのノードは、一つのキーワード、箇条書きの一項目、あるいは一つの文章段落です。

 ただし、それが故に、長文原稿の編集には不向きだと思われます。論文や小説を執筆するためのツールと見なすには、多少の難があります。

 また、完全なアウトラインツリーではなく、ノードは二次元の紙面上に「配置」する形を採用しています。この点でも「アウトライン」とは少し乖離があります。

謝辞

 Moem は、以下のオープンソース・コンポーネントを、それぞれのライセンスに基づいて利用・同梱しています。ありがとうございます。

Azuki テキストエディタエンジン
http://azuki.sourceforge.jp/
完成度の高い、和製のテキストエディターコントロールです。このコンポーネントのおかげで、標準の TextBox コントロールでは心許なかったテキスト編集の機能が大幅に強化されました。
System.Data.SQLite
http://sqlite.phxsoftware.com/
データベースのバックエンドには SQLite を利用しています。これはその .NET Framework 版です。本家と同様にパブリックドメインとして公開されています。

要求と仕様

要求

想定する用途

 具体的には……

想定しない要求

要素

リポジトリー
Moem が管理するデータベース。複数のページ、ノード、エントリーを持つ。
ページ
ノードを配置する作業画面。
ノード
テキスト項目。ページ上の任意の位置(グリッド)に配置する。
エントリー
テキスト項目の本体。本文の他に作成日時や更新日時、履歴などの属性情報を持つ。複数のノードに「投影」される。

Moem に至る道程

 Moem は、既存の「メモツール」とはちょっと違う、あまり見掛けない形の情報管理ツールです。

――いったい、どうしてこんな形をしているのか。

 もちろん、形には意味と理由があります。現在の設定に至るまでには、様々な試行錯誤がありました。ここではその一端を紹介します。

  1. テキスト管理ツールが欲しい!
  2. アウトラインプロセッサーに出会う
  3. 不満1:どうして本文が木構造でないのか
  4. 不満2:木構造では駄目だ!
  5. 投影の概念
  6. ある一つの到達点

テキスト管理ツールが欲しい!

 ソフトウェア制作など、PC 上で何らかの創作活動をしていると、いわゆる「覚え書き」を書き留める(書き溜める)ためのツールが欲しくなります。ToDo、アイデアメモ、Tips、作業手順の記録、などなど。そのようなテキストデータは、どこにどうやって保存してゆけばよいのでしょうか。

 たとえば、Microsoft Windows に標準搭載されている『メモ帳』で .txt ファイルを編集・管理することも、できなくはないでしょう。しかし『メモ帳』だけではデータ項目の整理や検索が大変です。

アウトラインプロセッサーに出会う

 日本語圏の Windows オンラインソフトウェア界には、「アウトラインプロセッサー」と呼ばれるテキスト管理ツールの一大ジャンルがあります。

「表題」と「本文」で構成されるデータ項目を、木構造形式の「ノード」として管理するものが主流です。ユーザーインターフェースとしては、ウィンドウの左側にノードツリー、右側に表題と本文の編集欄、といった構成が一般的(※)でしょうか。

 なるほど、これは便利そうです。少なくとも『メモ帳』よりは管理し易いことは間違いないでしょう。また、項目に「作成日時」や「最終更新日時」といった追加属性を持つものもあり、情報管理が強化されます。

 しばらくは『kie』や『eMemoPad』などのアウトラインプロセッサーを利用していました。(ありがとうございます。)

※ツリーとノードが一体になった内在型(一体型)のアウトライナーも存在します。

不満1:どうして本文が木構造でないのか

 ただ、この形の情報管理にも多少の疑問と不満が残ります。

 私の場合、覚え書きは、短くまとめた文章、特に箇条書きで記すことが多く、漠然と「本文の内容もリスト形式として構造化したい」と考えるようになりました。

 思いは募り、やがて“本文の内容も木構造である”アウトラインメモツールの試作に至りました。現在の Moem の前身です。

 項目は「表題と本文」ではなく、全ての項目はノードになります。表題は「表題ノード」として表します。そしてもちろん、ノード毎に日時情報を持ちます。

不満2:木構造では駄目だ!

 これで不満が解消……すればよかったのですが、まだ満足しません。今度は「木構造」自体に対する不満です。

 項目の数が増えるに従い、ノードを「どこに配置すべきか」という問題が生じるようになります。

 木構造は「文章(思考)の”流れ”を表す」ためのデータ構造としては有用ですが、「情報を分類する」観点においては融通が利きません。木構造はノードの「パス」を一意に決定することを求めるからです。

「このノードはここ!」と即決できるのなら問題はありませんが、ときには「どの親ノードの下に入れるべきか……」と悩むノードもあります。

 また、検索性を補う手段として「タグ付けによる分類」機能を追加してはみたものの、どうしても一覧性を欠くままでした。

 問題を残したまま、試用が続きます。

 そんなあるとき、他のジャンルのツール(ペイントツール)の設計に取り掛かった際に、そのツールで有効なあるアイデアを、テキスト管理ツールにも応用できることに気付きました。「投影」という概念です。

投影の概念

 木構造の問題は、項目の「位置」が“固定されてしまう”ことにあります。全てのノードは、いずれか”一つの”親ノードの下に所属することになります。

 しかし情報を管理する中で、「このノードAは、こちらのノードBの傍にも、向こうのCの傍にも置きたい」という場面が、しばしば現れます。かといって、ノードAを別の場所にコピー&ペーストすることは憚られます。情報管理において、情報項目の不用意な二重化(ダブり)は避けるべきです。

 問題の根源は何か。――「項目が位置に縛られていること」なのか。では、位置に縛られないで管理するには、項目はどうあればよいのか。

「実体と表示の分離」が、その一つの解になります。

 ノードは、その場所に存在するのではなく、どこか別の、画面には表示されない場所に存在するのだと考えます。画面上のノードは、その「ノードの実体」を“投影”する「影」です。

 一つの実体について複数の投影を画面上に配置すれば、見掛け上は、一つの項目が複数個存在する(同じものが複数ある)ことになります。しかし項目の実体は依然として「一つ」のままであり、項目の編集は、それを投影する全てのノードに反映されます。

 ノードが特定の場所に縛られなくなったことで、ノードはもはや木構造ではなく、複数の親ノードを持つ「グラフ構造」になることもできます。

 これで木構造の不満は解消されました。「どこに配置すべきか」と悩むことは、もうありません。好きな位置に、好きな数だけ投影を作成すればよいのです。

ある一つの到達点

 投影の概念の導入により、情報管理の厳密性(「漏れなく、ダブりなく」)と一覧性の両方を満たすことができました。

 あとは、ノードを二次元の紙面上に配置するようにしたり、「書き溜める」ツールとしての仕様を追加して、現在の Moem になります。

設計思想

 Moem の設計について、その思想の一端を書き残しておきます。

フォントに依存しない配置

 Moem は「装飾のないテキスト」を扱う「メモツール」です。図を描くためのツールではありません。「データ」と、その画面上の「表示」は、明確に分離・区別します。

 メモの項目である「ノード」は「ページ」上の任意の位置に配置します。ただし、その位置座標の単位は「ピクセル」ではありません。

 項目をピクセル単位で配置するユーザーインターフェースでは、項目の「位置データ」が画面の状態、特に「フォント」の設定に依存することになります。

 文字の大きさはフォントによって異なります。フォントを変更すると、同じ内容のテキストであっても、その横幅と縦幅のピクセル数は変化します。ノードの配置をピクセル単位で行うと、フォントを変える度に配置が崩れてしまいます。(つまり、ノードの最適な配置が、テキストの内容やフォントに依存している。)

 ノードの位置座標は、フォントなどの画面の設定には依存しない座標系であることが望ましいです。Moem では、ページに「論理グリッド」を設けることで、この問題を解決しています。(ノードのサイズを常に 1 x 1 と見なす座標系。)ノードのテキストに改行や折り返しがあるときは、以降のノードは自動的に物理的な位置を移動して表示されます。テキストの内容やフォントを変更しても、ノード間の論理的な距離は変化しません。

リッチテキストは好かない

 Moem は「装飾のないテキスト」を扱う「メモツール」です。『Microsoft Word』や『ワードパッド』で扱うような「リッチテキスト」には対応していませんし、今後も対応する予定はありません。作者の要求として、文字に「飾り付け」を行う機能を必要としていないためです。(フォントや色、太字や斜体の設定は、“不要”であるにとどまらず、“非常に邪魔なもの”と捉えています。)

制作記録

 開発途上のスクリーンショットです。(サムネイル画像をクリックすると原寸画像を表示します。)

2009-07-16

*

2009-07-08

**

 外見を僅かにブラッシュアップ。内部の実装も進めています。

2009-06-30

**

 前回の更新から、なんと半年も過ぎてしまいましたが、またなんとも代わり映えのしない画面です!

2008-12-30

*

2008-11-24

*

2008-10-31

*

2008-10-10

*

更新履歴

2010-06-27

2010-02-21

2010-02-03

2010-01-10

2009-12-12

メッセージを送る



e-mail: webmaster(at)sunny-grove.net
Twitter: @toru_t
ソフトウェアの不具合報告について

※コメントは非公開です。ここには表示されません。


*

Copyright © 2008-2010 Toru TAKAGI. All rights reserved.

*