機能 スクローーノレアッフ スクロールダウン 次のメッセージを表示 ッセージを表示 ト・メッセージを削除し、 次のメッセージを表示 ト・メッセージを削除し、 ッセージを表示 行ク ) メ カレン カレン 前のメ C-v く SPC 〉 含めて前のメッセージを表示 削除マークのついた 含めて次のメッセージを表示 削除マークのついた 削除の取消し メッセージも メッセージも M-x 旦 9 止 . リ p く CR 〉 emacs 入門 表ーサマリ・バッフアとメッセージ・バッフアのコマンド / キーバインド ( それぞれ、上段がコマンド名、下段がキーバインド ) C—d C—d サ・マリ・ノヾッファ M-x rmail— く SPC> M—x rmail— く DEL> rmai 1 rmai 1 rmai 1 ー rmai 1 rmai 1 rmail— rmail— summary— summary— scroll—msg¯up scroll—msg—down ー summary— ー summary summary ー —summary— ー summary summary—next—msg summary—prevxous¯msg delete—forvard —delete—backward undelete next—a11 -previous—all メッセーシ・ / く、ノファ M—x scroll—up く SPC> 、 C-v M-x scroll ー do 取 く DEL> 、 M delete—backvard delete—forward prevxous—undelete—message rmail—next—undelete—message rmail— rmail— rmail— rmail— prevlous—message rmail—next—message rmail—undeleted—previous—message のいすれかを実行しても同しようにスクロールされます。 のスクロールも用意されてます。サマリ・バッフアで、 順方向へのスクロールがあるのですから、もちろん逆方向 M-v く DEL> とするか、メッセージ・バッフアで、 く DEL 〉 M-x rmail-summary-scroll-msg-down く CR> 異なるコマンドで指定できる場合もあります。その対応を サマリ・バッフアとメッセージ・バッフアから同し操作を それに続けて ( ) 内にコマンド名を書いておきます。なお、 はコマンド名に対応する標準のキーバインドだけを示し、 また、コマンド名を使わなければ指定できない操作以外 てあっても混同しないでくださいね。 ジ・バッフアでしか操作できないこともあるので取り混せ も簡単な操作方法を紹介するようにしますが、メッセー 以降の説明では、なるべくサマリ・バッフアでのもっと とします。 M-x scroll-down く CR 〉 106 表 1 に記しておきましたので、参考にしてください。 ・メッセージの表示 さて、どんどん続けましよう。 メッセージの最後までいってしまったら、何度く SPC 〉キ ーを叩いてもそこでおしまい、次のメッセージは表小して (rmail—summary¯previous—msg) そう、 previous" の、 かりですね。 セージを表小するには・・・・・・賢明な読者の方なら、 ント・メッセージになりました。ということは、 を叩いてください ( 図 5 ) 。これで、次のメッセージがカレ (rmai ト summary-next-msg) その場合は、サマリ・バッフアで、、 next 〃の、 くれません。 もうお分 則のメッ UNIX MAGAZINE 1990.11 には、サマリ・バッフアで通常のカーソル移動コマンド ( C 直前、直後以外のメッセージを直孑旨定して表示させる しようか。 セージの位置に移動していることにも気づいてもらえたで しょ ( 図 6 ) 。サマリ・バッフアのカーソルが対応するメッ を叩きましよう。ほら、最初のメッセージが表示されたで
emacs 入門 図 8 メッセージの削除 kirin ate: S 聞 . 2 Sep 90 燔 : : 07 JST Return-Path: <ki rin» To: siroyagi Subject: happy birthday! お生日おめでとう . 図 7 番号を指定してメッセージを表示 【 0 加 : ZOu ate: Sun. 2 Sep 90 燔ヨ 9d2 JST Return-Path: To: 8 ー royagi Subject: hello おですか ? キリン (RHAIL Narrov 3 / 3 ) ーー A11 ー - [ 」」」 - (RMAIL Narrow 2 / 3 ) -- Top -- [ 」」」司 - 司 -———-NEnacs : RMAIL -Nünacs : RYAIL good taste kuroyagi happy bi rthday! kirin hello ZOu 【 oya good tas te happy bi rthday! kirin he ll 0 zou 00 00 00 0 & 0 も 0 も 00 00 ぐ 0 (RMAIL 町町旧 I ツ : AII) -- A11 ーー [ ー」」一 ] ー (RMAIL summary: A11 ) ーー A11- ート」」一 ] ー R AIL 一町ツ - ト -%%-Nünacs : ん I レ近 C-u 3 j と入力するといちばん最初のメッセージを表示しますし、 (rmai ト summary-delete-forward) で消えていただきましよう。これでカレント・メッセージ と入力すると、いちばん最後のメッセージを表示します。 には、、消去マーク〃が付いて、次のメッセージカ噺たなカ メッセージを思いどおりに表示できるようになったとこ レント・メッセージになります。 ろで、普通のエデイタ画面でのカーソル移動を思い出して 図 8 は、 kuroyagi さんのメッセージを消去した後の状 ください。 態です。上のウインドウには、 kuroyagi さんの次の kirin さんのメッセージが表小されていますが、下のウインドウ C-n 次の行へ移動 のサマリ・バッフアはまだ変化していません。しつはこの C-p 則の行へ移動 サマリ・バッフアはすいぶん怠け者で、もういちど、 C- 〉バッフアの最後へ移動 でしたね。メッセージ・バッフアでメッセージを表示する 場合も、 (rmai ト summary) コマンドを実行しないかぎり、表示し直してくれません。 図 9 はサマリ・バッフアを表示し直した状態です。メッセ ージ番号と日付のあいだに、、 D 〃と書かれているのが消去 マークです。メッセージの消去にはもう 1 種類あって、 C-d (rmai ト summary-delete-backward) は、カレント・メッセージに、、消去マーク〃を付けた後、 ■メッセージの消去 メールの量は人気のバロメータ。とはいえ、届いたメー 1 つ前のメッセージへ移動します。でも、このコマンドの ルもどんどん捨てていかないと、あっという間にメールが 出番はほとんどなく、だいたい d だけで事足りてしまいま す。だって、メッセージを読むときってあまり逆向きには 溜まってしまって、あなたも一躍メール長者。ああ、また ディスクを喰い潰しちゃって、スーパーユーサーからのお 読まないでしょ ? 5 それに、速い計算機を使っているとき 叱りのメールが山のように・ そんなことにならないた 5 誰かのメールに対していろんな人がフォローのメールを出していたら、届いた めにも、つね日頃からの整理整頓が重要です。不要なメッ 順番に読まないとわけが分からなくなってしまいます。でも、もとのメールよ りもフォローのメールのはうが先に届いてしまうことがあるのよね。ああ、や セージにはサマリ・バッフアから、 つばりわけが分かんない。 n 次のメッセージを表示 p 前のメッセージを表小 〉最後のメッセージを表示 です。こんなところにも Nemacs の一貫性が感しられて、 ついつい嬉しくなってしまうのは私だけでしようか ? 0 108 UNIX MAGAZINE 1990.11
emacs 入門 図田メッセージの削除の取消し om : kuroyagi Date: S . 2 Sep 90 燔 : 19 : 03 JST Retum-Path: <kuroyagi> To: Si royagi Subject: good taste 白山羊さんへ、 おいししを見つけたので、手紙にして送リます . どうぞ召し上が kuroyagi good taste kirin happy birthday! zou hello 図Ⅱ expunge した光態 rom: kirin ate: Sun, 2 Sep 90 ヨ 9 : 07 JST Return-Path: <ki rirp To: siroyagi Subject: happy bi rthday! お生日おめでとう。 キリン (RMAI•L Narrow 1 / 2 ) ー - Top ーーロエト ] ー -NEmacs: R!{AIL . (RMAIL Narrow 1/3)——Top--[JJJ-]— -NF•nacs: RHAIL royagi 和 0d taste kirin happy bi rthday! he Ⅱ 0 zou い 0 00 00 00 00 00 0 ・ 0 & 0 こ (RYAIL Summarv: AII) ーー A11 ーート J 」一 ] ー 司 --%%-NEmacs : RYAIL-summary -%%-Nünacs: tA I L-sununary ( 心鞴 IL Summary: A11 ) ーー A11 ー -t-JJ- ト punging deleted æssages. on を (rmai ト next-undeleted-message) や p (rmai ト previ- 図に *deleted" ラベルの付いたメッセージ ous-undeleted-message) は、削除マークのついたメッセ rom: kuroyagi ate: S 聞 . 2 Sep 90 : 19 : 03 JST ージを飛ばして次のメッセージを表示します。しかし、消 Return-Path: 《印 yag TO : s i royagi Subject: good taste 去マークがついたメッセージでも表示できるのです。サマ 白山羊さんへ、 ・ノヾッフアで、 おいししを見つけたので、手紙にして送リます . どうぞ召し上が接 無 IJ 羊よリ C-n (rmai ト summary-next-all) を試してみてください。次のメッセージに消去マークがっ いていても、ちゃんと表示してくれます。また、サマリ・ ノヾッフアで、 C-p を入力してください。 (rmai ト summary-previous-all) 以 E で、 RMAIL モードの基本的な操作をひととおり理 と入力すれば、前のメッセージに消去マークがついていて 解できたことと思います。次は、もう 1 歩進めて RMAIL も、これまた表示してくれます。 モードを使い込んでみましよう。 RMAIL 中級者コース 置 RMAIL モードの終了 RMAIL モードを終了するには、 ・ラベル機能 メッセーシ・ノヾッファ で quit" の、 RMAIL モードにはメールを分類するための、 ・システムがつけるラベル (rmai ト quit) ・ユーサーがつけるラベル を入力してください。また、サマリ・バッフアを終了する の 2 種類の、、ラベル機能〃があります。 システムがつけるラベルの代表的なものは、、消去マーク〃 にはサマリ・バッフアでやはり、 でしよう。メッセージを消去するコマンド rmail ー delete ー forward や rmail-delete-backward を実行すると、メ ッセージに消去マークカ咐きます。図 12 を見てください。 -NEnacs: RY.AIL. ( A Ⅱ . r.arrow 1/3,deleted)--A11—-[J 」」一 (rmai ト summary-quit) 110 UNIX MAGAZINE 1990.11
HP SoftBench HPSoftBench 環境では、ある種のトリガはツール内で 定義済みとなっている。しかしさらに重要なのは、 HP Encapsulator を用いれはユーザーの環境内の任意の通知 メッセージをきっかけとして実行される独自のトリガをユ ーザーが定義できるという点である。たとえば、ユーサー はヾピルド処理が正常終了するたびに自動的にチームに通 知すびというイベントトリガを定義することが可能であ り、またファイルがバージョン管理にチェックインされる たびにメトリックス ( ソフトウェア開発プロセスにおける さまざまな属性を計測するもの ) が収集されるようにする こともできる。 プロードキャスト通信 HPSoftBench 環境では、ツール間コミュニケーション にプロードキャスト・メッセージ・サーバー ( BMS ) と呼ば れる機構によって提供されるプロードキャスト・モデルを 使用している。 BMS は、ユーサーのソフトウェア・エンジ ニアリング環境内の各種ツールにメッセージを振り分け るメッセージ・ディスパッチャである。 BMS は、ちょうど 通信衛星のような働きをする。つまり、環境内のツールか らメッセージを受け取ると、メッセージのタイプに応して あらかしめ転送を依頼されていたツールに向けてそのメ ッセージを再度プロードキャストするのである。 HP SoftBench ツール ( または HP Encapsulator に よって統合されたツール ) は、スタートアップ時に BMS との接続を確立し、そのコマンドクラス ( すなわち当該ツー ルがサポートしているツールプロトコル ) とサーピスする 操作 ( 当該ツールのメッセージべース API ) を宣言する。ま た、環境内で発生する各種のイベントのうち、どのイベン トの発生時に通知を必要とするのかについて ( つまり、ツー ルがイベントトリガを定義したいメッセージについて ) も BMS に指示しておく。このメッセージの詳細については、 「プロードキャスト・メッセージ・サーバーのメッセージ構 造」を参照してはしい。 HPSoftBench 環境には 2 つのタイプのメッセージ、す なわち通知メッセージと要求メッセージがある。通知メッ セージはアクションを周囲に通知するメッセージであり、 要求メッセージはツールが環境に対してなんらかのアクシ ョンの実行を要求するメッセージである。 BMS は通知メッセージを受け取ると、そのメッセージ を受け取りたいと BMS にあらかしめ知らせていたツー ミュニ・ケ・ - ーンヨン 図 2 HP So 代 Bench のツー丿レ問コ Development Manager Progra m Editor Program Builder Broadcast Message Server ルは膨要なメ Static Analyzer 50 プロードキャスト・メッセージ・サーバーを介した ツーノレ間コミュニケーション。各ツー ッセージだけを受け取る。 UNIX MAGÄZINE 1990.11 用して各ツールの複数のインスタンスを区別している。 ルド ( すなわちコンテキスト ) を含んでいる。 HPSoftBench 環境は、これを利 ッセージが参照しているデータの存在位置を示す 3 つの要素からなるフィー なるのは、メッセージのコンテキストである。すべてのメッセージは、そのメ 2 この説明は多少単純化されている。メッセージの振り分けの際に重要な要因と いう言葉を用いたほうが正確であろう。 求していたツールに対してだけおこなわれるからである。感マルチキャスト〃と 適切ではない。メッセージの転送は、当該メッセージをあらかしめ明示的に要 1 厳密にいえば、やプロードキャスドメッセージ・サーバーという名称はあまり スタマイズできる ) 。続いてそのツールを起動し、そのツー べースをチェックする ( このデータベースはユーザーがカ ルの名称と起動するためのコマンドを格納しているデータ ールに転送する 2 。そうでなければ、起動すべき適切なツー であれば、 HPSoftBench 環境は要求メッセージをそのツ いるかどうかをチェックする。そのようなツールが実行中 に対してサーピスをおこなデと API を通して宣言して Bench 環境はすでに実行中のツールがヾそのタイプの要求 BMS が要求メッセージを受け取ると、ます HP Soft- ツールの実行 量が大幅に減少する 1 。 ージ処理が簡略化され、ネットワーク上のメッセージ通信 ジを受け取ることはない。これによって各ツールのメッセ る。ツールは、あらかしめ要求しておいた以外にメッセー ことがある。このようなときには、メッセージは破棄され 場合によっては、どのツールも転送の依頼をしていない てこのメッセージを使用することになる。 サ ) はプログラム・データベースを再解析するトリガとし として、また Static Analyzer( スタティック・アナライ ジャー ) はディレクトリのアップデートを実行するトリガ この図の場合なら、 DeveIopment Manager ( 開発マネー ての通知メッセージを依頼されていたツールに転送する。 メッセージを送信している。 BMS は、このイベントについ ツールが DIRECTORY- BUILD の正常終了を知らせる ルに転送する。たとえば、図 2 ではプログラム・ビルダ・
emacs 入門 図 4 RMA にウインドウのスクロール おいししを見つけたので、手紙にして送ります . どうぞ召し上が 黒山羊よリ 図 3 サマリ・バッファ F 【 0 田 : kuroyagi Date: S 凹 . 2 Sep 90 燔 : : 03 JST Return-Path: <kuroyagi> To: Si royagi Subject: good taste 白山羊さんへ、 おいししを見つけたので、手紙にして送ります . どうぞ召し上が hlroyagi good taste kirin happy birthday! zou hello (RNAIL Narrow 1 / 3 ) -- B0t ーー卩」」司 - (RMAIL Narrov 1 / 3 ) ーー Top ーー卩」 J - ] ー RYAIL —Nünacs ・ -Nünacs: F+IAIL good tas te 印 ya 駅 kirin happy birthday! hello ZOu 00 00 00 C ・も 0 も ? 0 ーー・ 0 もれ、リ 00 00 00 2 3 (RMAIL Summary: A11 トー A11 ーート JJ 司ー ( 鼬 IA ーし Summary: AII) ーー A11 ーート」」司ー -%%-NF.rnacs: Rh1AIL-summary -%%-NFnacs: 田 4A I L-summary Computing 3u1 Ⅳ lines... done たに届いた最初のメッセージが表示されているはすです。 ージに特別なマークをつけたり、 RMAIL のシステムが 表示されたこのメッセージを、、カレント・メッセージ〃と 目印としてつける文字列 ( ちょっと複雑なのであとまわ し ) 呼びます。 ・サプジェクト ・サマリーの表示 メッセージの Subject: フィールドの内容 もちろん、この状態のままでもメッセージを読めますが、 RMAIL モードに入ったら何はともあれ、 メッセージが長くてウインドウに収まりきらないときに は、サマリ・バッフアでく SPC 〉キーを叩いてください。画 と入力してください 4 。図 3 のようなバッフアが表示されま 面がスクロールしてメッセージの続きが表示されます ( た す。 だし、もう一方のウインドウはメッセージ・ウインドウで このバッフアがサマリ・バッフアで、これまでに受け取 あるとします ) 。図 4 は図 3 のメッセージをスクロールさ ったメッセージの一覧を表小してくれます。各メッセージ せた状態ですが、ちゃんとメッセージの続きが表示されて とともに、メッセージ番号、日付、発信者、ラベル、サプ いるでしよ。 ジェクトなどが表示されますが、それぞれの意味は下記の もう一方のウインドウがメッセージ・ウインドウでなけ とおりです。 れば・・・・・・ RMAIL はいっこうに気にせす、やはりスクロー ルさせてしまいます。では、 ・メッセージ番号 1 ) ウインドウが 2 つ以上表示されていると・・・ RMAIL がメッセージを管理するためにつける番号 ( メ 2 ) ウインドウがサマリ・バッファ以外にないと・・ ッセージを指定するときに使います ) どうぞ自分で試してみてください。 ・日付 メッセージを受け取った日付 メッセージ・ノヾッフアのスクロールは、 -scroll-ms -u く CR> メッセージの From: フィールドの内容 でも実行できます。ただし、関数名が長すぎるので実際に 使われることはめったにないでしよう。また、メッセージ・ RMAIL がサポートしている機能で、ユーサーがメッセ バッフアに移動して、 4 help の閉をと覚えると覚えやすいのですが、このコマンドの関数名は本当は rmai ト summary です。 ■メッセージのスクロール 105 UNIX MAGAZINE 1990.11
emaCS 入門 して 5 行目で、変数、、 rmail-mode-hook" にフック関数 private-rmail-hook" を設定しています。 あとは、これを . emacs(Nemacs の初期設定ファイル ) に書いておけは、 rmail コマンドを実行したときに上に示 した 3 つのファイルからメールを取り込んで RMAIL モ ードを起動するようになります。 このようなフック関数はユーサーが独自に初期設定をし たり変史を加えたりできるようにするためのテクニックで すが、 MAIL や RMAIL モードだけでなく、 Nemacs の あらゆる場面で実現されています。さらに付け加えておく なら、このようなフック関数の概念は Lisp 言語では一般 的に使われており、柔軟なユーサー・インターフェイスを 提供するための手段ともなっています。 次回の予告編 いるかなどについてお話ししたいと思います。どうぞ、お である MH が、どのようにして Nemacs に組み込まれて の使い方から始まって、 Nemacs とは独立したプログラム 次回は「 Nemacs から使う MH コマンド」です。 MH 楽しみに ( あらい・みちこ ASTEC) ・今回出てきたコマンドの一覧 モード切替え M—X rmail M—x rmail-mail (m) M-x rmail-reply (r) M-x mail (C-x m M-x mail-other-window (C-x 4 m) RMÅIL モードのコマンド ( サマリ・パッファ ) て mail rmail— て ma 土 1 ー て ma 土 1 ー rmail— rmail— rmail— rmail— て mail rmail— rmail— summary— summary— —summary— summary— summary— summary— summary— summary— summary— summary— —summary ( れ ) scroll-msg-up ( く SPC> ) scroll-msg-down ( く DEL> ) next-msg (n) previous-msg ( Ⅱ ) delete-forward (d) delete-backvard (C—d) undelete (u) next-all (C-n) previous-all (C-p) quit (q) RMAIL モー ドのコマンド ( メッセジー・パッ 7 ァ ) M-x scroll-up ( く SPC> 、 c-v ) M-x sc て 011 ー d0 n ( く DEL> 、 M-v ) M-x rmail—next-undeleted-message ( Ⅱ ) M-x rmail—previous-undeleted-message (p) M-x rmail—shov-message (j) C-un M-x rmail—show-message (C—u れ j) quit (q) previous-message (M-p) next—message (M—n) expunge (e 、 x undeleted-previous-message (u) delete-backvard (c-d) delete-forvard (d) -last-message ( > ) rmail— rmail— て ma 土 1 ー て ma 土 1 ー rmail— rmail— rmail— rmail 122 RMAIL モードを起動 MAIL モードを起動 RMAIL モードからメッセージの返事を送信 MAIL モードを起動 ウインドウを分割後、 MAIL モードを起動 メッセージの一覧を表示 メッセー - ジを ' スクローー / レアッフ メッセージをスクロールダウン 次のメッセージを表示 前のメッセージを表示 削除マークのついたメッセージも含めて前のメッセージを表示 削除マークのついたメッセージも含めて次のメッセージを表示 ージを削除し、前のメッセージを表示 ージを削除し、次のメッセージを表示 RMAIL サマリモードを終了 削除を取消 カレント・メッセ カレント・メッセ カレント・メッセージを削除し、前のメッセージを表示 カレント・メッセージを削除し、次のメッセージを表示 いちばん最後のメッセージを表示 番目のメッセージを選択 いちばん最初のメッセージを選択 削除されていない前のメッセージを表示 削除されていない次のメッセージを表示 メッセージをスクロールダウン メッセーージを ' スクローノレアッフ。 RMAIL モードを終了 削除の実施 削除の取消し 削除マークのついたメッセージも含めて前のメッセージを表示 削除マークのついたメッセージも含めて次のメッセージを表示 UNIX MAGAZINE 1990.11
emacs 入門 ,刀、/ 図 RMA にファイルへのコビー プライマリ RMAIL ファイル [RMAIL ファイル形式 ] メッセージ 1 メッセージ 2 メッセージび ) コビ メッセ ジク ) コビ メッセ ージ 3 図ロ inbox を指定した RMAIL ファイルの作成 RMAIL ファイル A メッセージ 1 既存のメッセージ RMAIL ファイル形式 メッセージ 3 既存のメッセージ [RMAIL ファイル形式 ] RMAIL ファイル B 既存のメッセージ [RMAIL ファイル形式 ] RMAIL ファイル C news コマンドから保存したファイル [mailbox 形式 ] メー / レれ メール 1 メールの 追加 ージ 1 RMAIL ファイルに取り込めます。このとき同時に、 4 new messages read メッセー メッセ に対して、 rmail-expunge コマンドを実行する とどうなるか ? 答 2 : ちゃんとメッセージが削除されてしまいます。 ということは、ほかのシステムラベルと同し名前のラベ ルをユーサーも付けることができるわけです。混乱しそう ですが、逆手にとればシステムの裏をかくこともできそう ですね 6 。 RMAIL 上級者コース ■新しく届いたメールの取込み いったん RMAIL モードに入ってしまってから新たな メールが届いたらどうしましよう。もういちど rmail コマ ンドを実行してもよいのですが、メッセージ・バッフアで 、、 g 〃または "M-x rmail-get-new-mail" と入力すれば 6 システムの裏をかいたからといって、何かいいことがあるわけではありません UNIX MAGAZINE 1990.11 のように、新たに何通のメッセージが届いていたかを表小 します。 RMAIL システムでは、複数の RMAIL ファイルを作 って届いたメールを分類することができます。たとえば、 いったんプライマリ RMAIL ファイルにすべてのメッセ ージを取り込んでおいてから、メッセージごとに別の RMAIL ファイルに分類することができます ( 図 16 ) 。 RMAIL ファイルごとに異なった inbox を指定するこ とも可能です。たとえば、 UNIX のメールシステムでは標 準設定でホームディレクトリの下のヾ mbox 〃と . いうファイ ルにメールを保存します。この mbox を inbox とする RMAIL ファイルを作ってその内容をコピーしたり、 UNIX のニュースシステムを使って保存したファイルを inbox として RMAIL ファイルに取り込むこともできま 113
FreeSoftwa 「 e の世界一 sort コマンドでは、これらのオプションを複旨定する -S ステータスの順にする ( デフォルト ) Mush> sort —a —d たとえば、 ことができます。 らきたものについては日付順に並べ替えられます。 とすると、メッセージを出した人の名前の順に、同し人か 使います。 なお、 curses モードでは、、 0 〃 ( 昇順 ) や、、げ′ ( 降順 ) を 並べ替えるものです。 これは、 10 番目から 20 番目までのメッセージを日付順に Mush> 10 ー 20 ー sort —d また、次のようにパイプと組み合わせることもできます。 ンでメッセージを検索し、それがどのメッセージに含まれ 次に pick を説明しましよう。 pick は与えられたパター びつく ! ピック ! ! Pick ! ! ! Mush> pick 川 ているかを表示します。 に pick を利用することはめったになく、ほとんどの場合 対応していないので注意が必要です。私がこのように単純 みの正規表現が利用できるのですが、日本語の文字列には フォルダーから削除されます。この検索文字列にはおなし いうフォルダーに保存され、そのメッセージがカレント・ とすると、 abc 〃という文字列を含むメッセージが abc と Mush> pick abc ー save + abc ー delete セージが表示されます。ここでパイプを利用して、 とすると、加で指定した文字列が含まれているメッ 64 十れ初めの個のメッセージ とすれば、次のオプションがあることが分かります。 Mush> pick ー ? はオプションと組み合わせています。 ー〃最後の個のメッセージ カ / 襯で示される日数前のメッセージ 指定文字列を含まないものを検索 To : フィールドから検索 Subject: フィールドから検索 指定されたメッセージから検索 大文字と小文字を区別しない 指定されたメールヘッダから検索 -h ん d げ メールヘッダの From: フィールドから検索 る。 〃で始まるときや空白を含むときなどに使用 これ以後の pick の引数をすべて検索パターンとす 以前に出されたメッセージ 日付による検索、十ルなら以降、一なら -t 以下にいくっか例を示します。 月 / 日 / 年 定します。 -d オプションでは、日付を次のようなフォーマットで指 4 N foo@ascii.co.jp Oct 4 8 : 15 ( 45 (i) Re: He110 1 N foo@ascii.co ・ jp Oct 1 10 : 25 ( 30 (i) HI 文字列を捜し出し、次のように表示します。 とすると、 Mush は From : フィールドから、、 f00 〃という Mush> pick —f f00 最初の例で、 pick -d 4 / 20 pick -d ー / 8 / 89 pick -d 十 8 / 8 pick -d / 今年の 4 月 20 日のメッセージ 1989 年 8 月以前のメッセージ 今年の 8 月 8 日以降のメッセージ 今日のメッセージ ー ago ( ー a でもよい ) は一 d オプションとよく似ています が、これは Mush を起動している日付からの相対日数で検 索するものです。ー ag 。は簡単な書式を判断し、数字に続く 文字が、、 d 〃 (date) 、、、 w ' ′ (week) 、、、 m 〃 (month) 、、、 Y 〃 (year) UNIX MAGAZINE 1990.11
R N であった。 HP SoftBench F = 異常終了通知 ◆ Co 川のー C ss Command ー Class は操作のタイプである (EDIT 、 DEBUG など ) 。 ◆ Co 川襯の記ー 4 襯 e Command-Name は、 Command-CIass 内部での操作 名称である (SAVE-FIIE STEP 、 STOP など ) 。 Com- mand-Class と Comman&Name を組み合わせると、ユ ークな操作を定義することになる (EDIT SAVE-FILE. DEBUG STEP など ) 。 ◆ C の 2 / / Context は、 3 つの要素から構成される ( ホスト、べース・ ディレクトリ、ファイル ) 。これは、操作対象とするデータの 位置を孑ぐするものである。 Context は、同一ツールの複数 のインスタンスを区別するために使用される。たとえば、ユ ーザーが同時に 2 つのプロジェクトの作業をしていてそれぞ れのデバッガを実行させている場合でも、コンテキストによ ってメッセージはまちがいなく該当するデバッガに送信され るようになる。 各メッセージには、オプションで可変フォーマットの引数 リストを設定することができる。このフィールドは、操作に 関連した付加的な情報 ( 関数名や変数名など ) を提供するも のである。 HP SoftBench 製品では、複雑なデータは値では なく参照によって渡される。たとえば、スタティック・アナ ライサから複雑な照会要求に対して返す回答の通知メッセー ジの場合、 Argument にはデータを格納しているファイルへ のポインタが設定されることになる。 ジ・サーバーのメッセージ構造」を参照 ) 。 この通知機構は、イベントトリガという HPSoftBench の強力なコンセプトの要となっている。トリガとは、ユー ザーのソフトウェア・エンジニアリング環境内の任意の場 所で一定のイベントが発生した際に実行される操作の集合 である。簡単な例を挙けれは、 HP SoftBench ツールがフ ァイルを変更すると、そのツールは変更があったことを周 囲に通知し、同しファイルを操作しているほかのツールが 必要に応して最新の情報を採り入れられるようにしている。 実行した操作の通知を各ツールにおこなわせるという発想 は、プラウン大学の FIELD システムの研究から得たもの ◆ ールが送信したメッセージをプロードキャスト・メッセー HPSoftBench のツール間コミュニケーションは、あるツ プロードキャスト。メッセージ・サーバーのメッセージ構造 ◆ 以下の Message-Type が定義されている。 ◆ M に 7 いる。 ッセージは、もとのメッセージと同一の要求識別子をもって る。言い換えれば、ある要求の結果として送信された通知メ セージをもとの要求メッセージと関連づけることが可能とな ーク本でユニークな ID を使用することにより、応答メッ 番号、プロセス ID 、ホスト ) から構成されている。ネットワ Request-ID( リクエスト (D) は、 3 つの部分 ( メッセージ ◆ eq ″おト / D に通知されるようになっているからである。 ることによって当該イベントに関連づけられたほかのツール が特定のツールにメッセージを送るのではなく、 BMS に送 ルドを使用することはない。これは、 HPSoftBench ツール し、規約によれば HP SoftBench ツール自体がこのフィー Originator は、メッセージを送信したツールである。しか CO 川川 4 れ d ー Na 川 CO 厩 e [ ″川召厩 ] ・ 4 トル Mes に乃加朝〃ー C 次のような構造になっている。 いうかたちでおこなわれる。 HPSoftBench のメッセージは ジ・サーバー ( BMS ) がはかの適切なツールに振り分けると 要求メッセージ 正常終了通知 イベントトリガ メッセージべースの API モデルにおける拡張機能で重 要なのは、すべての HP SoftBench ツール ( および HP Encapsulator を用いて統合されたすべての外部ツール ) が、 1 つの操作を実行した後にかならすそのアクションを 周囲に通知することである。この通知メッセージは、当該 操作がユーザー・インターフェイスあるいはメッセージ・ インターフェイスのいすれを通して起動されたかにかかわ らす送出される。また、この通知メッセージは操作が正常 に終了したかどうかも示す ( 「プロードキャスト・メッセー UNIX MAGAZINE 1990.11 である [ 5 ] 。 49
FreeSoftware の世界 15 The MaiI User's SheII(2) P. D. StalImen 先月号では、 Mush の基本的な使い方を紹介しました。 そこで今回は、メッセージの整理を主体にして、 Mush の パイフ饑能やカスタマイズなど、より高度な使い方を紹介 しましよう。 では、さっそくフォルダーのシェイプアップにとりかか f 00 b 、 baz Mush> folders るかを調べるときは f 。 lders コマンドを使います。 folder コマンドを使います。また、どんなフォルダーがあ Mush を起動したあと内部でフォルダーを指定するには、 ダー名〃を省略すると mbox を指定したことになります。 のように Mush を起動することもできますが、ヾ十フォル % mush —f + フォルダー名 ます。また、シェルのコマンド行から、 定すれば /Mail/ フィルダー名にメッセージが保存され こうしておくと、 save のときに十フォルダー名〃と指 % mkdir -/Mai1 きる ) を作っておく必要があります。 は、あらかしめ /MaiI ディレクトリ (folder 変数で設定で めにフォルダーを分けてやらなけれはなりません。それに mbox はどんどん大きくなってしまうので、整理整頓のた で設定できる ) に追加されます。そのまま使い続けると、 しないとメッセージはデフォルトの /mbox(mbox 変数 前回も述べたとおり、 save の実行時にフォルダーを指定 とりあえず mbox とフォルダー 62 りましよう。 メッセージの分類 UNIX MAGAZINE 1990.11 っている場合は、メーリングリスト名のフォルダーにま ォルダーに保存する。とくにメーリングリストなどに入 たとえば、メールのサプジェクトが同しものを 1 つのフ ・内容別に分類する。 たメールを f00 というフォルダーにしまう。 たとえば、 f00 さんからきたメールと f00 さん宛に出し ・やりとりした相手別に分類する。 よく用いられるのは、次のような方法でしよう。 類の方法について考えてみましよう。 のではあまり意味がありません。そこで、メッセージの分 メッセージをかたはしから 500 個すつに分けて保存した およそ 500 個くらいにしています。もちろん、受け取った 私は、 1 つのフォルダーにしまうメッセージ数の限度を まいます。 フォルダーでは Mush を使うューサーのはうが参ってし で参照するのでしようから、あまりにもメッセージの多い ら Mush が高機能だからといって、保存するからにはあと 去のメッセージを参照するのがたいへんになります。いく あまりたくさんのメッセージを溜めてしまうと、あとで過 もっと大きくすることもできますが、 1 つのフォルダーに ージを扱えます。この限界値は Mush のインストール時に Mush では、 1 つのフォルダーで最大 1 , 000 個のメッセ めです。 いて気になることが生したときに確認できるようにするた ことにしています。これは、後日にメッセージの内容につ 私の場合、受け取ったメッセージはとりあえす保存する