高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

ページ切り替えのストレス

 今は手をつけてませんが、TMemoのことも考えています。
メモ帳ソフトとして、一番問題かなと思われるのは、ページを切り替えなければいけないことですね。
TMemoはそもそも最大化して書き込むような代物ではないため、見出しごとに改ページした方が、書きやすいです。
しかし、そうなると今度は、ちょっとしたことでもページ切り替えが生じてしまい、使いづらくなってしまう。やはり何らかの、ページ切り替えのストレスをなくすような仕組みが必要です。
 個人的にはあうとらの次期バージョンに付けられるシステム、Casbalのようなものを実装できればと思うのです。
しかし、言うは易しというか…。
Casbalは見たところ、TEditorにあうとらファイルのツリーを展開したものを、全部入れてるのだと思いますが、あうとらはアウトラインプロセッサなので、一度にアクセスされるべきファイルは一個です。故に、エディタに全部展開しても大事にはなりませんが…。
こちらは常駐タイプのメモ帳なので、同時にすべてのブックにアクセスされる可能性がある。もし、この方法で行ってしまうと、全ブック、全ページのファイルをいっぺんに読み込まなければいけないという事態になりかねません。それではさすがに無理っぽいです。ブックだってページだって、理論上は32767個まで作れるのに…*1
 思いついた対策は二つ

  • ページをシームレスに切り替えられる範囲を、1ブック内に限定する
  • 現在表示中ページの前後二つだけを読んでおく

 前者は簡単です。ブック内だけならそれほど大事にはならないだろうと踏んで、全部をロードします。ただし、ページの個数が膨大だったりするとお話になりませんが。
後者は、現在のページと、隣り合う二つのページのみを読み込む方式。それ以降は前者と変わりません。まあ、こっちの方がいいかとは思っています。
 実現するのが後者だとすると、ページとブックの管理方法も、変えなくちゃいけなさそう。
現在誰でも予想がつきそうな、ブックの下にページのクラス(本文は読み込んでない)がぶら下がってる形式になっているのですが、こうなると改めたほうがよさそう。ブックにかかわらず、つねに前後のページにアクセスする可能性があるのだから。なので手間がかかりそうですね、後者は。
 しかし、どっちにしても、TEditorデフォルトの行番号と、行番号の取得ルーチンがおかしくなってしまうので、その辺を変えてやらなきゃいけません。あんまり人のソースコードに手をつけたくはない(バージョンアップの時に面倒だし)ですが、この際やむなしでしょう。継承で済ませられればその方がいいですが。


 うーん、次期バージョンではブックとツリーの簡単な二次元方式を廃止して、ツリーで行こうか、ファイルにちゃんとした名前を付けて、ブックごとにフォルダで分けようか、などと思ってたんですが、ひょっとしたらそれはやらない方がいいかも?そうやって実装したとたんに、これができなくなる可能性があります。計画はかなりあともどりしてしまいました…。
 とりあえず、TMemo1.33を目指して…。

*1:それ以上はコード内でブロックしてます。TMemo APIで使うとき困らないように…