概要
Moem は、覚え書きやアイデアメモを保存するためのメモ記録ツールです。(Microsoft Windows で動作するローカルアプリケーション。データの保存場所は任意。)
思い付いたアイデアや言葉は、どこかに記録しておかないと消えてしまいます。そのようなテキストを、まずは「とりあえず保存しておく」ことが第一の目的です。
メモは、項目毎に「ノード」の形で追加します。一つのキーワード、箇条書きの一項目、あるいは一つの文章段落の単位で、一つのノードにします。
それぞれの項目には、作成した日時の情報が自動的に記録されます。(メモの日時情報を記録しておくことは重要です!)

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

作成したページ・ノードは、素早く全文検索できます。大量のメモを、長期間に渡って保管、編集、そして検索・閲覧できることが、第二の目的です。
その他の主な特徴・機能は以下の通りです。
- 全ての編集操作の無制限 Undo/Redo。
- 項目の本文は装飾のない Unicode テキスト。
- 自動保存・管理されるデータベースには SQLite を採用。数個のファイルで構成され、USB メモリーやオンラインストレージで持ち運びも可能。
- データベースは XML 形式でファイルを書き出し・取り込みできる。
- 通知領域に常駐、ホットキーで呼び出し。
取扱説明書
より詳しい解説
このページには次の章があります。
- 要求と仕様 … 想定する用途、想定しない要求
- Moem に至る道程 … どういう目的で作り始めたのか
- 設計思想
レビューして頂きました。(他薦。)
- Vector … Moem - 新着ソフトレビュー (2010-02-02)
ダウンロード
最新版
- Moem 0.5.0.0 (2010-02-21) moem_20100221.zip (817 KiB)
寄付歓迎
Moem は「カンパウェア」(寄付歓迎のフリーソフト)です。気に入って頂けた場合は制作支援をお願いします。(価格は任意です。)
過去のバージョン
- Moem 0.1.0.0 (2009-07-30) moem_20090730.zip (736 KiB)
- Moem 0.2.0.0 (2009-08-04) moem_20090804.zip (750 KiB)
- Moem 0.3.0.0 (2009-08-13) moem_20090813.zip (776 KiB)
- Moem 0.4.0.0 (2009-08-28) moem_20090828.zip (779 KiB)
- Moem 0.4.0.1 (2009-09-05) moem_20090905.zip (781 KiB)
- Moem 0.4.0.2 (2009-09-06) moem_20090906.zip (779 KiB)
- Moem 0.4.0.3 (2009-10-07) moem_20091007.zip (778 KiB)
- Moem 0.4.0.4 (2010-01-10) moem_20100110.zip (790 KiB)
- Moem 0.4.0.5 (2010-02-03) moem_20100203.zip (791 KiB)
動作環境
本ソフトウェアの動作には Microsoft .NET Framework 2.0 が必要です。(制作者の動作確認環境は太字のみ。)
- Windows 7
- Windows Vista
- Windows XP + .NET Framework 2.0/3.0/3.5
- Windows 2000 + .NET Framework 2.0
コンポーネントの入手先
既知の不具合
以下の問題を確認しています。次回以降の更新で改善できると思います。
- ノードの追加などの操作に時間が掛かる場合がある。(不具合)
- ノードの横幅が狭い。(仕様)
- ノードのテキストが妙な所で折り返されることがある。(不具合)
ToDo
今後、以下の機能の実装を予定しています。
要望などがあれば連絡先にてお伝えください。頂いた提案を必ず実現できるとの保証はありませんが、開発の参考になります。
- ノードを折り畳み表示する機能
- ノードを素早く入れ替える機能
- ノードを素早く移動・複製する機能
- 選択ノード間の余白行を一括編集する機能
- ノード・エントリーを統合する機能
- ノード・エントリーを分割する機能
- エントリーの編集履歴にアクセスする機能
- 検索機能の強化
- 全文検索の高速化
- 関連するノード・ページの自動検索と提示
- 日時によるノードの検索
- カレントページ内のノードの検索
- ページを分類する機能
- エントリーにラベルを貼り付ける機能
- ページをテキストファイルとして出力する機能
- ページを画像ファイルとして出力する機能
- ショートカットキーのユーザー設定
- テキスト折り返し表示のブラッシュアップ
- URL をクリックで開く
- 画像ノード
- カラーテーマ
質問と回答
FAQ です。
“Moem”は何と発音しますか。
「もえむ」と読みます。
“Moem”という名称の由来は。まさか、いまさら「萌え」ですか。気色悪いですね。
"memo" のアルファベットを並べ替えたものです。特に深い意味はありません!
これは「アウトラインプロセッサー」なの?
広義には Yes、目的・用途によっては No です。
Moem は、あくまで「常駐型のメモツール」として開発しています。
ノードは「表題と本文」ではなく、全てのノードは、一つのキーワード、箇条書きの一項目、あるいは一つの文章段落です。
ただし、それが故に、長文原稿の編集には不向きだと思われます。論文や小説を執筆するためのツールと見なすには、多少の難があります。
また、完全なアウトラインツリーではなく、ノードは二次元の紙面上に「配置」する形を採用しています。この点でも「アウトライン」とは少し乖離があります。
謝辞
Moem は、以下のオープンソース・コンポーネントを、それぞれのライセンスに基づいて利用・同梱しています。ありがとうございます。
- Azuki テキストエディタエンジン
- http://azuki.sourceforge.jp/
- 完成度の高い、和製のテキストエディターコントロールです。このコンポーネントのおかげで、標準の TextBox コントロールでは心許なかったテキスト編集の機能が大幅に強化されました。
- System.Data.SQLite
- http://sqlite.phxsoftware.com/
- データベースのバックエンドには SQLite を利用しています。これはその .NET Framework 版です。本家と同様にパブリックドメインとして公開されています。
要求と仕様
要求
- テキストを書き溜めるための簡易データベースが欲しい。
- 「ファイル」を意識せずに使えること。
- テキストは書き捨てではなく、何年も継続して保管、編集、参照する。
- テキストは段落の単位で項目を分割したい。段落を独立した項目として扱い、それぞれに属性情報、特に日時情報を付加したい。
- 項目の総数は数万件に上る。
想定する用途
- 長期記憶の補助ツール・備忘録として使う。
- 思考整理ツールとして使う。(頭の中の思考を文章として書き留めること自体に意味がある。)
- 思考記録ツールとして使う。(エントリーには作成日時・更新日時が記録されるため、その時点における発想のスナップショットになる。)
具体的には……
- 思い付いたアイデアやキーワード、ToDo を素早く書き留める。
- 覚え書き。(過去に結論を出した案件について、再び一から考え直すような無駄はなくしたい。)
- 作業手順を書き記しておく。
- 時間を掛けて(期間を置いて)アイデアを練り上げる。
想定しない要求
- 最終出力を編集するためのツールではない。
- 文字や図画のピクセル単位の配置は取り扱わない。
- リッチテキスト(文字単位の色やフォントの設定)には興味がない。
- あらゆるデータを一元管理する「なんでもデータベース」ではない。
- あくまで「装飾のないテキスト」を主体とするツールである。
- ウェブサイトの文書を“そのまま”取り込むことには興味がない。
- ウェブブラウザーを内蔵したりはしない。
- 「アウトラインプロセッサー」ではない……?
- 「マインドマッピング」のためのツールではない。
要素
- リポジトリー
- Moem が管理するデータベース。複数のページ、ノード、エントリーを持つ。
- ページ
- ノードを配置する作業画面。
- ノード
- テキスト項目。ページ上の任意の位置(グリッド)に配置する。
- エントリー
- テキスト項目の本体。本文の他に作成日時や更新日時、履歴などの属性情報を持つ。複数のノードに「投影」される。
Moem に至る道程
Moem は、既存の「メモツール」とはちょっと違う、あまり見掛けない形の情報管理ツールです。
――いったい、どうしてこんな形をしているのか。
もちろん、形には意味と理由があります。現在の設定に至るまでには、様々な試行錯誤がありました。ここではその一端を紹介します。
テキスト管理ツールが欲しい!
ソフトウェア制作など、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
- 「概要」を更新。
- 「既知の不具合」を更新。
- 「ToDo」を更新。
2010-02-21
- Version 0.5.0.0 公開。
2010-02-03
- Version 0.4.0.5 公開。
- 「ToDo」を更新。
- 「紹介されました」を追加。
2010-01-10
- Version 0.4.0.4 公開。
2009-12-12
- 「既知の不具合」に追記。
- 「要求と仕様」に追記。


