XMLデータの対応は?    TreeMemo 

回答

XMLデータを書き出せます。 インスタンス、スキーマ定義、どちらも書き出します。
スキーマ定義は、代表的な3種類 (DTD, W3C XML Schema, RELAX NG) を用意しています。

ちょっとしたメモが、だんだん型を整え、そして XMLデータベースに成長する操用感を目指しました。 テーマは "ぶらっと自然に XML"。 サンプルファイルをご覧になると、イメージがつかめます。
   [ヘルプ]メニュー [サンプルを開く][XMLデータ]

現在のところ、ツリーの "自然構文" からの書き出しだけを作ってあります。 ツリーに XML専用の情報を持たせたり、スキーマ定義に特化した一種の "文法" を定めれば、さらに機能を発展させることができます。 (例えば、値の範囲をチェックしたり、スキーマ定義の choice を実現する)
でも、まずは XML に特化しない自然なツリーで、どこまで便利になるか見てみたかったので、こうしました。 今後の機能追加は、反響を見たうえで、バージョン5 で行ないます。

 

属性と空要素は書けない?    TreeMemo 

回答

TreeMemo の XML書き出しは、属性と空要素には対応しません。 要素と内容を使った記述に統一します。

解説

こういう情報があるとします。

  ・商品
   ・品名 ... 液晶テレビ
   ・サイズ ... 30インチ

TreeMemo でツリーにしたら、こうなるでしょう。

   商品
    |_ 品名
    |   |_ 液晶テレビ
    |_ サイズ
        |_ 30インチ

XML では2つの書き方ができます。

  ・要素を使って書く

   <商品>
    <品名>液晶テレビ</品名>
    <サイズ>30インチ</サイズ>
   </商品>

  ・属性と空要素を使って書く

   <商品 品名="液晶テレビ" サイズ="30インチ" />

文法的にはどちらも正解。意味も同じです。 (スキーマ定義を使って初期値を設定できるかといった、細かい違いはありますが)
でも、TreeMemo からの書き出しは、"要素を使って書く" 1つに絞りました。

システム的に言えば、同じ情報を表わすのに2つの自由がある状態は、好ましくありません。 XML の仕様は、XMLデータのためだけにあるのではなく、もっと適用範囲が広いため、そうなってしまうのですが、ここはユーザーが仕様を絞って使うのが賢明だと思います。

どうしても属性でなければならない理由があれば、ぜひ、お聞かせください。
ただ、抽象的な仕様論議はするつもりはありません。 伺いたいのは、具体的な事例です。

 

スキーマ定義に変換されるのは一件目?    TreeMemo 

回答

はい。一件目です。

   アドレス帳
    |_ アドレス
    |   |_ 名前
    |   |   |_ ○○ ○子        この部分です
    |   |_ 電話
    |       |_ 090-0000-0000
    |_ アドレス
    |   |_ 名前
    |   |   |_ ○○ ○太
    |   |_ 電話
    |       |_ 090-1111-1111
    |
    :

注意

注意が必要なのは、一件目と二件目以降で構造が違うときです。

   アドレス帳
    |_ アドレス
    |   |_ 名前
    |   |   |_ ○○ ○子
    |   |_ 電話
    |       |_ 090-0000-0000   1件目の <電話> が2つのとき
    |       |_ 050-0000-0000   "0以上無限大" と解釈します
    |_ アドレス
    |   |_ 名前
    |   |   |_ ○○ ○太
    |   |_ 電話
    |       |_ 090-1111-1111   2件目は1つのため、0≦1≦無限 で問題ありません
    |
    :

   アドレス帳
    |_ アドレス
    |   |_ 名前
    |   |   |_ ○○ ○子
    |   |_ 電話
    |       |_ 090-0000-0000   1件目が1つとき、"必ず1" と解釈します
    |_ アドレス
    |   |_ 名前
    |   |   |_ ○○ ○太
    |   |_ 電話
    |       |_ 090-1111-1111   2件目は2つのため、1≠2 となり、このスキーマで
    |       |_ 050-1111-1111   インスタンスをチェックすると、エラーになります
    |
    :

当面は、一件目に持ってくるデータを工夫してください。
あるいは、スキーマ定義を直接なおしてください。

今後

解決策としては、

・スキーマ定義への変換ロジックを高度化する

・DTD や RELAX NG コンパクトスタイル が定める、* + ? といった出現回数の記号を用いて、一件目に明示してもらう

   アドレス帳
    |_ アドレス
    |   |_ 電話*
    |       |_ 090-0000-0000

などの手がありますが、とりあえず、XMLデータベースとしてどれくらい使われるか、反響を見て決めます。

 

メモの文章で、”標準色” だった文字が、”黒” になっていることがある    TreeMemo 

症状

4.5 ~ 4.64 のファイルを開いたとき、起きます。 メモの文章の先頭に、書式 (太字や下線など) が付いていると、こうなります。

原因

以前のデータは、”標準色” と ”黒” の区別が、RichEdit の編集を経ることにより、つかなくなる場合がありました。   ※RichEdit は、メモビューが利用している Windows の簡易ワープロ部品
なお、4.92 からは、RichEdit に自由に編集させなくしているので、今後は発生しません。

対処

手で直すしかありません。
もともと ”標準色” だった文字列を選択し、[色のクリア] を行なってください。

 

メモの文章で、”黒” だった文字が、”標準色” になる    TreeMemo 

症状

4.7 ~ 4.91 のファイルを開いたとき、必ず起きます。

原因

以前のデータは、”標準色” と ”黒” の区別が、RichEdit の編集を経ることにより、つかなくなる場合がありました。   ※RichEdit は、メモビューが利用している Windows の簡易ワープロ部品
なお、4.92 からは、RichEdit に自由に編集させなくしているので、今後は発生しません。

対処

手で直すしかありません。
もともと ”黒” だった文字列を選択し、色パレットで ”黒” に着色してください。

 

4.92 になって、コピーやドラッグが遅くなった    TreeMemo 

症状

コピーや、ドラッグ&ドロップに入るとき、時間がかかったり、「お待ちください」のメッセージが出たりします。

原因

コピーやドラッグの際、TreeMemo は、クリップボードなどに次のものを書き出しています。
   ・オリジナルデータ
   ・テキスト (書式のない文字列)
   ・RTF (書式の付いた文字列)
RTF の書き出しの際、ワープロなどへの貼り付けに使うため、標準的な RTF (文字が黒で、リンク文字が青、といった) への変換を行なっていて、これに時間がかかっているのです。

対処

TreeMemo 内での、コピー&ペースト、ドラッグ&ドロップには、RTF は使われません。 そこで、コピー、ドラッグのそれぞれについて、RTF の書き出しを省略できるよう、オプションを用意しました。
   [設定]メニュー [編集のスピードアップ]

TreeMemo のデータを、ワープロへ貼り付けたりしない方は、両方とも省略するのがよいでしょう。 ときどき貼り付けるという方は、[ドラッグ]については省略し、[コピー]については残しておく、などは、いかがでしょうか。
お使いのパソコンのスピード、ワープロへ貼り付けるか、普段マウスを使っているか、などを考慮して、お好みの設定をなさってください。

 

色モードカーソルが見えない    TreeMemo 

症状

ディスプレイアダプタの種類によっては、色モードカーソルの筆の部分や、メモビュー上での I の部分が見えなくなります。 症状が出るのは、中間色を選んだ場合だけです。

こちらで確認しているのは、intel 830M Graphics Controller 。
DELL のノートパソコンなどに採用されています。

原因

ディスプレイアダプタの能力不足です。
中間色の場合、カーソルは 256色 で作っているのですが、それが、うまくないようです。

対処

4.96 以降をお使いください。
カーソルの色使いを単純にして、回避しました。

 

リンクがずれた    TreeMemo 

症状

メモの文章中のリンクがずれることが、稀にあります。

リンク文字と選択反転のずれ

また、矢印キーを押しても、カレットがリンク文字列の上から動かなくなることもあります。

対処

4.92 以降には、ずれ を直す機能があります。
ずれ を直すには、メモウィンドウで編集している場合、いったんメモウィンドウを閉じます。 セレクトメモビューで編集している場合、いったんツリービューにフォーカスを移動します(F6キーを押下)。 メモウィンドウもセレクトメモビューも、どちらも開いている場合は、両方とも閉じるか切り替えます。
※なお、リンクずれ修正が行なわれると、そのメモに関するアンドゥ用の操作履歴はクリアされます。

また、編集内容を捨ててかまわなければ、編集をキャンセルするのも手です。([編集]メニュー [編集をキャンセル])

予防策

1. 漢字入力オン & 上書き のモードで入力しない。
   ※ Windows XP, 2000 以外をお使いの場合。 XP, 2000 では、このモード自体がありません。

2. リンク文字列を続けない。

リンク文字列は空白で区切る

解説

そもそもの原因は、メモビューが使っている Windows の簡易ワープロの部品 “RichEdit” の仕様が、 Windows のバージョンごとに変わることです。
文字を選択して上書きしたときの動き、など細かい部分なのですが、バージョンによっては把握できない動きをします。 また、仕様の変更も、あまり理詰めな印象はなく、今後も一貫した方向に変化するかはわかりません。

 

スペースで字下げした文章をツリーにドロップしても、階層化されない    TreeMemo 

対処

4.92 では修正されています。
行頭のスペースも、Tab と同じように階層化の意志とみなすようにしました。
4.92 以前のバージョンをお使いの場合、字下げは Tab で行ってください。

解説

2001年あたりから目立つ質問です。 以前はありませんでした。
”Tab による字下げ ” は、プログラマーをはじめ、エディタ のユーザーであれば、お馴染みです。 でも、考えてみれば、ワープロやメールソフトでは、Tab 自体を使わない。 この質問が増えてきたのは、ネット販売ソフトを買う人の中にも、エディタ未経験者が増えてきたからだと思います。 それだけ、ネット販売ソフトが、多くの人に使われるようになったということで、喜ぶべきことと思います。

 

書式が突然変わってしまった。文字が突然化けだした    TreeMemo 

回答

次の DLL の日付を確認してください。

   RICHED.DLL
   RICHED20.DLL
   RICHED32.DLL

(エクスプローラでツールバーから [検索] を選び、ファイル名に 「Rich*.dll」 と入力。
  探す場所は 「c:\windows」 とします。
  通常、「c:\windows\system」 に、これらのファイルがあるはずです)

これらの日付が古ければ、何かのソフトのインストールによって古い DLL が上書きされてしまったのが原因です。 例えば、手元の WindowsMe では、三つとも、2000/6/8 の日付になっていますが、DLL のどれかが、それ以前の日付であれば、Me の発売前なので怪しいと言えます。

対処

DLL を元のものに戻します

解説

上記の DLL (共有部品) は、Windows の RichEdit という簡易ワープロの部品に関わるものです。 TreeMemo のメモウィンドウも、この RichEdit を利用しています。 RichEdit には世代があり、新しい部品と古い部品が混在すると、動作がおかしくなります。

最も根本的な原因は、DLL という共有部品が、ソフトのインストールによって上書きされてしまう、ということにあります。 Windows の DLL (共有部品) という設計そのものが、危ういのです。
詳しくは、カフェバー大西通信の 『パソコンバンキング』 中の 「なぜ DLL を使うんだ?」 の項を ご覧ください。

注意

2001年秋に話題になった Nimda (ニムダ) というコンピュータウイルスも、この DLL を破壊するようです。 ご注意ください。

 

Windows2000, XP で文字が化ける    TreeMemo 

対処

4.92 以降をお使いください。修正されています。

解説

TreeMemo のメモ側の、入力時の文字化けなどの不可解な症状は、以前からごくたまにあったのですが、 Windows2000 が発売されてから、ユーザーさんから指摘される頻度が高くなっています。

原因はわかっています。
TreeMemo のメモ側は、RichEdit という Windowsの標準部品を利用しています。 RichEdit は、RTF (RichTextFormat) という書式付テキストの標準形式を読み書きするものですが、 TreeMemo は、この RTF の読み書きをそのままは使っていません。

RTF には、内容の割にデータ量が膨れるという欠点があり、特に日本語では顕著です。 そこで、TreeMemo は、ファイル保存や [元に戻す] 処理の準備のとき、RTF を解析して、圧縮をかけています。 この解析が環境によって、うまく行っていないようなのが、すべての原因です。

また、Windows2000 になって、RichEdit の書き出す RTF のパターンが、がらりと変わりました。 RTF の文法の範囲内で、パターンだけが変わったのならまだいいのですが、文法的にも、少し変わったようです。

そして、RTF の最新の文法規格書というのは、少なくとも日本語版については入手できなくなっています。 「標準規格」 と言いながら、Microsoft は公開していませんし、 私たちの手元にある、数世代前の正規規格書を発行したアスキーも、改訂版を出版する予定はまったくないそうです。

手元の規格書を入手できたことさえ、ラッキーでした。 マ社のサポートに電話したところ、親切な社員さんが教えてくれたのです。 ところが、その後、最新の改訂版について問い合わせたとき、 別の社員が電話に出て、「そんなことは教えられない。誰が教えたんです?」 と問い詰めてきました。
これはもう、大企業病としか言いようがない。 彼らにとって、”標準規格” という言葉の意味は、何なんでしょうね?

なお、Windows2000 の発売時、RichEdit および RTF の変更について、何のアナウンスもありませんでした。

+ + + + +

さて、いちばん根本の原因は、この状況を読み切れなかったこと。つまり私たちのミスです。
こんなあやふやな ”標準” を信じて、物を作るのが悪い。
XP を良い機会として、RTF の解析・圧縮を、根本から改造しました。

TreeMemo4 を作った四年前と違い、今はデータ量を抑えるメリットは薄れていると感じます。 ハードディスクもメモリーも大きくなり、通信は速くなりました。
RTF の日本語部分の圧縮にマトを絞れば、圧縮率は落ちますが、安全確実な圧縮ができます。 RichEdit および RTF がこういう状況な以上、その方がいいと思います。

また、98, 2000, Me, XP など、各Windows の RichEdit 関連の DLL をチェックしていて気づいたのですが、 日付もバージョンも、必ずしもOSの発売順になっていませんでした。 これは ”後から更新されたから” と思われます。
Internet Explorer のインストールや、Windows Update によって、気づかないうちに更新されていたのでしょう。 これまで、”RichEdit の仕様はOSによって異なる” と考えていたのですが、その認識はもう古いようです。

+ + + + +

4.92 では、次のように処理を変更しました。

・ RTF の圧縮は、安全に行える日本語部分のみとする
(RTFの基本的な文法に変更がない限り、これで行けるはず。
  ファイルサイズは従来通り、テキストファイルの 1.5 ~ 2倍 を維持)

・ RTF の基本文法の変更に備え、RTF 非依存形式でのファイル保存を用意する
(Windowsの RichEdit自体にバグ -- 下位互換に失敗する 等 -- がない限り、問題は起きない。
仮に、WindowsNT version6 で RTF の基本文法が変更されても、Windows98で作ったファイルを NT6 に持っていくことも、その逆も、安全に行える。)

RTF の構文解析は、一箇所だけになりました。
外部のソフトで [コピー] された RTF を [貼り付け] る際、おもに Microsoft Office が書き出す独特な文法を、補正するためにだけ用いています。

 

Alt + F で、[ファイル]メニューがプルダウンしない    TreeMemo 

症状

・Windows2000, XP で、
・ツリーウィンドウを開いていて、
・日本語変換ソフトが漢字入力モードになっていて、
・かつ、入力方法が 「かな入力」 になっているとき、
発生します。
[ファイル]メニューだけでなく、[編集]( Alt + E )、[表示]( Alt + V ) など、 Alt + アルファベット一文字 でのメニューバーのプルダウン操作が、すべて効かなくなっています。

原因

TreeMemo の何かの機能が、日本語変換ソフトとバッティングしているのだと思いますが、原因不明です。

対処

”2000,XP & かな入力” のユーザーの方は、次の操作の癖をつけてください。
・まず、Alt を押します。(メニューバーの [ファイル] が、3D表示になります)
・次に、→ キーで、プルダウンしたいメニューへ移動します。
・最後に、↓ キーで、メニューをプルダウンします。

 

メモを印刷すると、印刷完了後、何も印刷されない紙が、余分に一枚出力される    TreeMemo 

症状

Windows2000, XP で発生します。

原因

Windows と VisualC++ (開発言語) の連携のバグです。
印刷後の後始末をする命令が、余分な紙送りを指示しています。

対処

4.92 以降をお使いください。
問題の命令を回避して印刷するよう、修正しました。

 

背景色をグレーにすると、選択文字の反転色が見えない    TreeMemo 

解説

選択文字の反転色は、背景色の ”補色” を使っています。 補色というのは、色の三原色 (赤、緑、青) の値をひっくり返した色のことです。 例えば、白の補色は黒、青の補色は黄色となり、たいていは、元の色に対して、最も目立つ色になります。

ところが、グレーだけは、赤、緑、青 がすべて中間値のため、ひっくり返しても中間値のままです。 そのため、反転色が見えなくなってしまうのです。 なお、「薄いグレー」 や 「濃いグレー」 では、この症状は出ません。

 

ツリービューとメモビューで、選択文字の反転色が違う    TreeMemo 

解説

メモビューは、Windows の RichEdit という部品を利用していて、反転色などを自由に変更できません。
また、RichEdit の配色は、けっこう変わります。 Windows98 は、Windows95 や NT4 と変わりましたし、NT5 (2000が NT5.0。 XPは NT5.1) では、また変わりました。 NT5 の配色も、これで決まりというほどの出来とは思えませんし、この先もまた変わる可能性は大です。

OS を判定して、いちいちツリービューを合わせるのも手間ですし、 RichEdit は Windows Update や、Internet Explorer のインストールによって、変わってしまう可能性があるから、OS の判定だけでは不十分です。 また、将来、RichEdit を捨てれば、この問題自体がなくなります。
そこで、そのままにしています。

 

4.91 を起動すると、「予期せぬファイル」 の警告が出る    TreeMemo 

症状

「予期せぬファイル形式です」 の警告が出ます。
そのあと、異常終了することもあります。

原因

三つあります。
・4.92 を起動中で、自動バックアップの設定をオンにしている
4.92 が自動バックアップしたファイル ( 4.92 のファイル形式 ) を、4.91 が起動時に、開こうとして起きます。
※ 4.91 以前のバージョンは、自動バックアップファイルのファイル形式チェックを行なっていません。
・[起動時に前回のファイルを開く] の設定をオンにしている
4.92 が前回開いていた 4.92 形式のファイルを、4.91 が起動時に、開こうとして起きます。
・[起動時に開くファイル] に 4.92 のファイルを登録している

対処

起動時に警告が出ると、不安になると思います。
そこで、少し不便ですが、4.92 と 4.91 を併用する間は、それらの設定をオフにすることを、お勧めします。
・[設定]メニュー [自動バックアップ][行う] をオフにしてください。
・[設定]メニュー [起動時に前回のファイルを開く] をオフにしてください。
・[ファイル]メニュー [起動時に開くファイル] をなくしてください。