リンク機能の強化
[2008/11/30] NishimuraHiromi
CalendarMemo (CM) の機能強化の一環としてリンク機能を改良した。その改良がほぼ終わり実務に耐えるようになったので新しいリンク機能について紹介する。
● リンクとは
WikiPedia の「リンク」の項目を見ると色々書いています。CM で使われるリンクとは他のドキュメントやオブジェクトを連結するハイパーテキストの事です。ハイパーテキストには単にド キュメントを連結するだけではなくインターネットで公開されている Web ページを連結する機能もあります。CM で使われるリンクはハイパーテキストだけではなく若干拡張した機能リンク(プログラムの実行)とい考えも取り入れています。
● CM で使用できるリンクの種類
CM には色々な種類のリンクがあります。ここでは CM で使用できるリンクの種類を紹介します。
(1)ドキュメントリンク
読んで字の如く、他のメモを連 結するリンク機能です。他のアプリケーションでリンクを実行すると現在のドキュメントがリンク先と入れ替わり、あたかもジャンプしたような感じを受けま す。CM の開発者で使用者でもある私は、加齢と共に超短気記憶が衰退し突然にドキュメントが入れ替わってしまう従来のリンクでは前のドキュメントの内容を忘れ思考 が停止してしまいます。そこで CM のドキュメントリンクではウインドウの下からメモシートを引き出し現在のドキュメントの隣に表示するようにしました。これでドキュメントリンクは参照用と いう意味合いが強くなっています。
このドキュメントリンクの書式 は [] で囲まれた中にファイル名が書込まれている文字列です。例えば [※ CalendarMemo 改良項目] のような文字列です。

左がリンク前、右がドキュメ ントリンクを実行したとき
メモシートが引き出され、そこ のリンク先が表示されている様子です
一般のリンクでは Web リンクのように文字列自体にリンク先が埋込まれ文字色が青にアンダーバーが付いたものが多いようです。この方式だと別アプリケーションで開いた時、何処と リンクしているか判らなくなります。その対処のため上記のようなリンク先が判る文字列にしています。
ただし後述する Web リンクなど一般的なリンクの場合にはリンク文字列にリンク先を埋込む方法を採用しています。
注: [] 内の文字をダブルクリックするとドキュメントリンクが実行されます。
(2)Web リンク
これも読んで字の如く、Web ページをリンクする機能です。ただし CM には独自の Web ブラウザを内蔵しているので内蔵 Web ブラウザシートが開いている時にはそこに表示し、開いていない時にはデフォルトの Web ブラウザで開きます。

読売新聞をクリックしたときの様子
この例では内蔵のWeb ブラウザに Web リンクが表示されている
注:Web ブラウザと同様にシングルクリックで実行。
(3)インターネット検索
CM ではインターネット検索もリンクの一つだと考えています。普通の Web リンクはリンク切れの恐れがあります。でもインターネット検索だと検索サイトが閉鎖されない限りリンクは可能で Web サイトが移動しても対処できます。そんな訳で CM ではインターネット検索もリンクの一つとして使用できるようにしました。
現在使用できる検索サイトは Google 検索と Wikipedia 検索です。 Web リンクと同じよう文字列に URL を埋込んでいるのでリンクはアンダーバー付青色の文字列でシングルクリックで実行します。また Web リンクと同様に内蔵 Web ブラウザシートが開いている時にはそこに表示し、開いていない時にはデフォルトの Web ブラウザで開きます。
注:Web ブラウザと同様にシングルクリックで実行。
(4)検索リンク
これは CM ver 1.8.4 から導入された機能です。インターネット検索と同様にドキュメントリンクもファイルの移動・削除・名称変更、等でリンク切れの可能性があります。また同時 に複数のドキュメントを参照用として使用したいときもあります。そのような必要から全文検索が出来るリンクを導入しました。対象が複数あるのでこのリンク を実行するとウインドウ下から検索シートが表示されヒットしたドキュメントがリストアップされます。

[メモシート]を実行したとき の様子
右側に検索シートが表示され、 右上に「メモシート」文字列を含む
ヒットしたファイルのリストが 表示されます。またリストを選択
すると右下に内容が表示され検 索文字列が最初に見つかった場所
へジャンプしています。
このバージョンからドキュメン トの検索は Spotlight を使った全文検索に移行しました。また複数の検索文字列をスペースで区切ると絞り込み検索になります。
注: [] 内の文字をダブルクリックすると検索リンクが実行されます。
(5)機能リンク1: mc (matrix calculator)
行列演算機能を持つプログラム 言語である mc (matrix calculator) のプログラムが実行できます。何故にプログラムの実行がリンクと同じなのか、疑問を感じるかもしれません。私も若干の疑問を感じています。でも特定の文字 列に意味を付加しアプリケーションがその文字列を解釈し実行する機能をリンクと言うならプログラムも立派なリンクではないかと思い機能リンクという名称で リンクの範疇に入れました。
例:トーラスの表示
s = 0.5;
m = 50*s; n = 30*s;
u=|0,2*π||0,2*π| ;u=hokan(u,m,n);
v=|0,2*π||0,2*π|';v=hokan(v,m,n);
x=(cos(u)+3)•cos(v);
y=(cos(u)+3)•sin(v);
z=sin(u);
parametricPlot3D_GL(x/5,y/5,z/5,x,|0,0|,"abc");
setObjectSize("abc",5);
sizeGLWindow("abc",|500,400|);

CM ver 1.8.4 から parametricPlot3D 関数の一部に OpenGL を使った作図関数を追加しました。上記はその例です。単に表示するだけではなくマウスの drag で好きな方向から眺めることができます。
備考:元々CM は mc (matrix calculator) を実行する環境(GUI)を整えるために開発したアプリケーションなので、 これが CalendarMemo の本来の姿です。
(6)機能リンク2: gnuplot コマンドの実行
mc プログラムが実行できるなら別の外部プログラムが実行できても良いのではないか。その第一弾として試したのが gnuplot です。コマンドの第一行目に # gnuplot の文字列があれば選択した文字列が gnuplot コマンドであると解釈し、選択された文字列を gnuplot に渡し結果を貰えるようにしています。
例1:単純な作図
# gnuplot
plot sin(x), cos(x)

.OK.
例2:潰れたあんぱん
# gnuplot
set parametric
set isosamples 50,40
set hidden
set key below
set title "Parametric Sphere"
set urange [-pi/2:pi/2]
set vrange [0:2*pi]
set ztics nomirror -1.0,0.25,1.0
set view 45,50
splot cos(u)*cos(v),cos(u)*sin(v),sin(2*u)

.OK.
(7)シンボリックリンク
上記(1)~(6)までのリン クはドキュメントに貼付けるリンクでした。この他にも利用できるリンクがあります。それがシンボリックリックです。 これを説明する前に CM のファイル管理について紹介しておきます。 CM では一つのドキュメント(メモ)を一つのファイルとして保存します。またメモは時系列で発生するのでメモは年月日の階層構造を持つフォルダーに保存され時 系列(カレンダー)で管理しています。多くのメモはこれで十分なのですが、メモの中には時系列で発生しても時系列で利用しないものもあります。例えば私は 会社でネットワーク管理の雑用をしています。その雑用でネットワークプリンタの IP 管理という面倒な仕事があります。この仕事は時系列で発生しますが記録はいつも一つのファイル(メモ)に書込んでいます。そうなると管理の仕事が発生する と古いファイルまで遡り記入することになる訳で、この操作が面倒です。そこでネットワークプリンタの IP 管理ファイルのようにいつも固定されたファイルを使用するためブックマークに登録しいつでも簡単に登録したファイルが開けるようにしています。すなわち時 系列で利用しないファイルのためブックマークの機能を追加した訳です。
ところが、時系列に関し中途半 端な仕事というものもあります。例えば来週の金曜日まで提出するレポートがあるとします。一週間前から作業する訳ですから作業発生日から提出日までの数日 間に渡り同じファイルを使用することになります。毎日、前日のファイルを複製し追加のレポートを書込むという作業になります。これだと複製のファイルのゴ ミが溜まり、後で検索したときどれが本当の作業ファイルなのか判らなくなります。
そこでコピーの代わりに使うの がシンボリックリンクです。複製したファイルに似ていますが そのファイルを開き編集保存しても実体はオリジナルを編集保存しています。
● リンクの方法
色々なリンクが可能でもリンク 方法が面倒なら使わないのが人情です。そこで CM ではできるだけ簡単にリンク設定ができるようにしています。上記で説明したリングの種類毎に設定方法が異なるので別々に紹介したいと思います。メニュー バーからの方法もありますがメニュー自体を開くのが面倒なので下記で説明する方法を使った方が便利です。
(1)ドキュメントリンクの設定 方法
ドキュメントリンクができるの は CM で管理している年月日フォルダーに保存されているメモだけです。それ以外は別の方法(URLリンク)があります。
当日に書いたメモをドキュメン トリンクにする場合にはウインドウ右上にある当日のメモリストから必要なメモを選び drag & drop で編集中のドキュメントに挿入します。これで終わり。
何時書いたか判らないメモなら 検索シートで探し、ヒットリストから drag & drop 編集中のドキュメントに挿入します。
とりあえずファインダーから ファイルを drag & drop する手もあります(あまりお勧めしません)。
(2)Web リンクの設定方法
Web ブラウザからアンダーバー付青色文字列をドキュメントに drag & drop します。URL が判っているなら直接ドキュメントに http:// から始まる文字列を書込みます(普通は copy & paste でしょう)。
私が頻繁に行う方法は、まずリ ンクしたい Web が見つかるような検索文字列を書込み、その文字列を選択し ⌘+Option+W を実行します。CM は選択した文字列を Web ブラウザで Google 検索します。検索結果からリンクしたいところをドキュメントに drag & drop します。これが嫌だったら、というか先の検索文字列にリンクを埋込みたいのならリンク先の URL を開き URL をクリップボードにコピーしてから先の検索文字列を選択(ハイライト)し ⌘+Shift+Option+L を実行します。これで検索文字列にリンク先の URL が埋込まれます。
(3)インターネット検索リンク の設定方法
ドキュメントに検索したい文字 列を書込む、またはドキュメントから探し選択(ハイライト)します。この状態で ⌘+Optuon+L を実行すると選択文字列に Google 検索用の URL が埋込まれます。また ⌘+Control+L を実行すると選択文字列に Wikipedia 検索用の URL が埋込まれます。
普通は闇雲に検索リンクを張る のではなく確認すると思います。そこで Google 検索の場合は検索したい文字列を選択(ハイライト)し ⌘+Option+W を実行します。すると内蔵の Web ブラウザシートに Google 検索の結果が表示されます。この検索で良ければ改めて検索文字列を選択(ハイライト)し ⌘+ Option +L を実行します。もうお分かりと思いますが W で検索、L でリンクの登録になっています。
これは Wikipedia 検索も同様で、 Wikipedia 検索の場合は検索したい文字列を選択(ハイライト)し ⌘+Control+W を実行します。すると内蔵の Web ブラウザシートに Google 検索の結果が表示されます。この検索で良ければ改めて検索文字列を選択(ハイライト)し ⌘+ Control +L を実行します。
まあインターネット検索の場 合、 ⌘+Option+W や ⌘+Control+W で事足りるのでわざわざリンクを張る必要は無いのですが........お遊びということで。
(4)検索リンクの設定方法
編集中のドキュメントに検索し たい文字列を [] で囲んで下さい。 [] の中をダブルクリックすると自動的に CM で管理しているメモ全体の全文検索結果が表示されます。
(5)機能リンク1・2の設定方 法
説明すると非常に長くなりま す。詳しくはマニュアルを参照して下さい。基本はプログラムやコマンドを選択(ハイライト)し esc キーを押す。間違えていなければ結果がドキュメントに挿入されます。
● 話が長い
こんな長い説明、誰も読まない のでは。少なくても私なら面倒で嫌だ! 後は RPG(ロールプレイングゲーム) のように色々な機能を探してお宝にして下さい。
● P.S.
そういえばリンク機能の強化に 伴い、メインエディタ以外のメモシートやファイルブラウザ、検索シートで表示するドキュメントは編集保存できるようにしている。更にこの部分での mc や gnuplot の実行、その他のリンクができるようにしている。困った事にこれら機能を使い始めると、一体自分は何処のメモを編集しているのか探しているのか、只見てい るのか混乱の極みに陥ります。面白い体験をするかも。
そうそう、既に CalendarMemo ver 1.8.4 は完成しているのですがマニュアルの更新が進まず公開が遅れています。このページもマニュアル作成の一環で......