ernacs 入門 キ電話 月し、 正した お新疋 * た。 * した まし 欲わん がか 番番 を っ 4 1 ・ 1 ・ イよ 0 、 0 4 ( り 図 図図 M H のフォルダーとメッセー 、ノ system mailbox ↓ 0 状差し デフォルト・フォルダー 保存する 捨ても ー一日 ot ー 6 ! 0 ミト 6 ) ーまプ - + ⅲ bO 習 (mh—e i + i nmx . done ・郵便受けは system mailbox 状差しはデフォルト・フォルダー ( inbox ) ・手紙を分類するための紙挟みは MH の、、フォルダー にそれぞれ対応させました。これで、 フォルダー ら・・・・・・聖徳太子だって、同時に 7 つのミーティングには出 1 ) system mailbox に届いたメールはます inbox フォル られませんからね。 ダーに取り込む 2 ) 不要なメールは mh-delete-msg コマンドで削除 3 ) 必要なメールは名前をつけたフォルダーに整理 4 ) それ以外のメールはそのまま inbox フォルダーに入れ フォルダー機能 ておく 紙挟みとフォルダー A さんは、受け取った手紙を紙挟み ( フォルダー ) にしま とすれは、普通の手紙とおなしように分類できます ( 図 っておく習慣があります。 14 ) 。また、あとになって、、あの手紙が見たい〃と思ったと きには、フォルダーの中身をひっくり返して調べることも 1 ) 朝、郵便受けに届いた手紙はます状差しに入れておいて できます。 暇なときに目をとおし、 フォルダーの雰囲気が分かったところで、実際の使い方 2 ) 不要なダイレクトメールなどはそのまま屑籠に、 に移りましよう。こては 3 ) 必要な手紙 ・友達や親戚からの手紙 ・メッセージをフォルダーに読み込む方法 ・クレジットの明細書 ・メッセージをフォルダー間で移動させる方法 ・水道、電気、電話などの領収書 ・フォルダー名を知る方法 は、それぞれ、、私信〃、、、クレジット〃、、、領収書〃という ・カレント・フォルダーの変更 ラベルを貼った紙挟みに整理し、 ・フォルダーの消去 4 ) それ以外の手紙はそのまま状差しに入れておきます。 について説明します。 さて、ある日 A さんは計算機でメールをやり取りするよ メッセージの読込み うになりました。そこで、やはり不要なメールと保存して おくメールとをふだんと同し方法で整理することにして、 いったん mh ー rmail を実行したあとで新しいメ ーノレカゞ 届いたら、 120 UNIX MAGAZINE 1991.1
図ロ M-x mh-copy-msg を実行した画面 ロ 2C 12 / 24 、 " ta ita. ~. k , X00 , 80 , 00t ~ 、 , ー tion. くくこのたひ、丿リスマ 3 12 / 25 santa@kita. 8・k5 Merry xnas ! ! ! くく A Merry Christmas and A 5 + 01 / 01 a-sya 6 01 / 01 a-sya emacs 入門 キ電話 月し、 正した お新ん * した 5 りイま わん v—・カ・カ ー号号 番番 凵話話 ーし。く ′イ a を 1 4 よ 2 0 0 イよ 0 0 ・ 4 5 図 ( 一日三匸 [ 1 「ⅱーーら凵ー 十 6 「にロ ; (mh-e こ匸 an ) ー一日ロ t ー 1 (mh-refile-msg) (mh-inc-folder を実行して systemmailbox から読み込んでください。 を実行してください。このときフォルダー名を訊ねられる れで新たなメッセージが inbox フォルダーに追加されま ので、カレント・メッセージの移動先フォルダー名を指定 す。図 15 は mh-inc-folder コマンドを実行した状態で、 します。ここでは、フォルダー名を、、 ski" にしてみます。 4 番以降のメッセージカ噺しく追加されたものです。 Destination folder [ + inbox] ? + ski メッセージの移動 指定したフォルダーがすでにあれば何もいわすに処理し inbox のメッセージを別のフォルダーへ移すには、 ますが ( 図 16 ) 、存在しないと、 or n) F01der + ski does not exist . Create it? と訊ねられます。ここで、、 y 〃を指定すれは噺しいフォルダ フォルダー名を知るには ? ーが作られますし、、、 n 〃を指定すれば何もせすに処理を中 断します。もちろん同しコマンドを使えば、 inbox 以外の さて、 mh-refile-msg コマンドも mh-copy-msg コマ フォルダーから別のフォルダーへ移動させることもできま ンドも、これまでに作ったすべてのフォルダー名を覚えて いなければ使えないのでしようか ? いえいえ、まさかそん す。 メッセージを移動する代わりに、コピーすることも可能 な使いにくいシステムが生き残っているはすがありません。 です。その場合には、 次のようにすれば、簡単にフォルダー名が分かります。 その 1 補完機能を使う mh-copy-msg) フォルダー名を訊ねられた時点でく SPC 〉キーを叩いて みてください。 としてみてください ( 図 17 ) 。 ただし、 mh-refile-msg コマンドも mh-copy-msg コ Destination f01der [ + inbox] ? + マンドも、これだけでは scan バッフアにマーク (A や C ) すると、図 18 の下のウインドウのように * CompIe- をつけただけで処理はまだおこなわれてはいません。実際 tions * バッフアが作られ、フォルダー名が表示されま にメッセージを移動したり、コピーしたりするには「メッ す。 セージの消去」の項で出てきた mh-execute-commands その 2 mh-list-folders コマンドを使う を実行してください。このコマンドは、メッセージの消去 や移動などを実際に実行します。 M-x mh-list-folders 〔可 121 UNIX MAGAZINE 1991.1
emaCS 入門 スマキ電話 マス ~ ス、電 スリ月 > 、 リク正した ク、お新え 、は増 まび * した たこまし 叩変増 がが 番番 凵 2 巛話話 電電 0 0 行 .3 一虍 0 十、 4 、十、 ・よ ( NC っ 41 ↓ 1 4 よ・よ 1 ・ 1 ・ O 図 スマキ電語 マスス、電 スリ月い、 リク正した ク、お新え 、は増 まび 1 」 * た だの 8 * した くき 6 し たこく く 5 りま 欲わえ 8 8 >, 鷓亦増 番番 CC—ー・物宙一電一 0 ン コ の 8 名 - レ オ 4 4 5 1 1 っ 2 っ 4 つ 0 0 フ , よ 1 1 1 0 0 1 2 っ 0 4 5 、 6 図 - 第いいⅱ - わュ ープを + inhoy , cur msg ( oth 合、 f i les) 6 0 3 0 Possible conpletions ・ e : +ir&x + ski range + present -NEmacs: (Fun 「トート tmh—tern 事 下司浦戸口 t -1 い - ート listing folders... done Destination folder [ + i 曲 ox ] ? + を実行すると、図 19 の下のウインドウのように * mh temp * バッフアが作られ、フォルダー名の一覧とメッ セージがいくつ保存されているかなどの情報が表示され ます。 いすれの方法でも既存のフォルダー名を知ることができ ますが、補完機能のほうはコマンドの途中でフォルダー名 だけを知りたいとき、 mh-list-folders コマンドはもうす こし詳しい情報を知りたいときに便利です。 NO curr ・ ent nessage フォルダーの変更 フォルダーの消去 フォルダーを使ってメッセージを分類するなら、当然、 別のフォルダーへ移動してメッセージを表示する機能も必 使わなくなったフォルダーは、 mh-kill-folder コマン ドで消すことができます。ます、 mh-visit-folder で消し 要です。それには、 たいフォルダーに移動してから、 M-x mh-visit-folder 亘〕 M-k コマンドが用意されています。 mh-visit-folder は、 scan (mh-kill-folder バッフアでは、 を実行してください。カレント・フォルダー ( 現在いるフォ ルダー ) が消去されます。 にバインドされています。このコマンドを実行すると、 その他のトピック ・移動先のフォルダー名 表小したいメッセージの範囲 mh-e の使い方の最後に、ちょっと便利な機能をいくつ か紹介しておきましよう。ここでとりあげるのは、 を訊かれるので、 Visit folder [ + inbox]? + ski ・ sequence Range [ a11 ] ? ユニエ ・エイリアス ( 別名 ) ・ signature ( 署名 ) のように答えてください ( 図 20 ) 。フォルダー名が分からな ければ・・・・・・もういいですね。忘れたら、「フォルダー名を知 ・検索 ・キーバインド、関数のドキュメントを知る方法 るには ? 」の項を読み返してください。 図 20 M-x mh-visit-folder を実行した画面 ロ 1 12 / 26 sk i-kanj i Let's go tO the Ski T g 欲 u. くく * * * お正月スキ (rrh-e ミ仁 ar' ) ーー劑ト -—ZZ-ld + sk 1 m30 ( 1 ) 122 UNIX MAGAZINE 1991.1
図ー Rma ⅱの仕糸且み system mailbox BSD . /usr/spool/mail/username SystemV . /usr/mail/username ー丿し メール 1 メーノレれ 既存のメ emacs 入門 プライマリ RMAIL ファイル /RMAIL メール 1 メール m メール m 十 1 メール m 十れ フォーマットを 変換して追加 こでいきなり mh-e についての説明にとりかかって もよいのですが、 RMAIL の仕組みと比較するためにちょ っと横道に逸れて前回の復習から始めます。 すでにお話ししたとおり、ユーサー宛てのメールはすべ て system mailbox と呼ばれるファイルに保存されてい ます。 RMAIL では、図 1 のようにいったん systemmail- box の内容を読み出してフォーマットを変換したあと、 、、 RMAIL ファイル〃と呼ばれるファイルに追加します。 の RMAIL ファイルには複数のメッセージ ( 1 通ぶんの メールをこのように呼びます ) が保存されており、 ・メッセージを読む ・メッセージを消去する のような動作は、 systemmailbox を直接対象にするので はなく、 RMAIL ファイルを扱うようになっていました。 MH でもメッセージに対する処理は system mailbox を直接扱ったりはせす、ゞフォルダー〃と呼ばれる場所に移 動させてからおこないます。フォルダーは、 RMAIL シス テムでいえばゞ RMAIL ファイルクにあたりますが、 ・ RMAIL ファイルの実体は UNIX の、、ファイル〃 ・ MH のフォルダーの実体は UNIX の、、ディレクトリ〃 とか、 ・ RMAIL では、複数のメッセージが 1 つの RMAIL フ ァイルに保存されている ・ MH では、個々のメッセージが 1 つのファイルに保存さ 112 れている などの違いがあります。 MH では system mailbox のメッセージがます inbox という名則のデフォルト・フォルダーに読み込まれますが、 これは &/Mail/inbox ディレクトリに対応します。図 2 は、 MH が mailbox のメッセージをデフォルト・フォルダー に移す仕組みを示しています。 さて、前回はメールについての初めての説明だったので、 初級、中級、上級コースと分けてみました。しかし、今回 はもうメールの基本的な部分は理解できたでしようから趣 向をかえて、 基本的なメールの読み書き ・フォルダーの取扱い ・その他のトピック ・ Nemacs と mh-e の関係 の順に説明してみましよう。 M Ⅱを使った メールの読み書き RMAIL も mh-e も、 Nemacs から普通に使っている かぎりは潜在的な機能に大きな差はありません。コマンド 名や表示、動作がすこし違う程度です ( あら ? こんなふう に書いたら全然違うように聞こえてしまう。おかしいな あ ) 。そこで、これから先は前回の RMAIL の記事との diff をつけておきますので、 patch を当ててください。・・・・・・ん ? だめ ? 誌面上 ( オフライン ) で patch なんてとんでもない って ? うーん、どこぞのサーピスのように UNIX MAG- AZINE もネットワークで配られるようにならないかなあ。 UNIX MAGÄZINE 1991.1
・今回出てきたコマンドの一覧 mh—rmail mh—smail mh—smail—other—window 操作ナるコマみ・ scan ノ M (M-s) M M x x x x x x x x ー x x x mh-show ( . ) mh-page-msg ( く SPC>) mh-previous-page ( く DEL>) mh—next—undeleted-msg (n) mh—previous—undeleted—msg mh-goto-msg (j , g) mh—vrite—msg—to—file ( > ) mh—delete-msg (d) x mh-undo (u) mh—execute—commands (), X) mh-put-msg-in-seq ( % ) mh—delete-msg—from-seq (M-%) mh¯msg¯ls¯lli—seq mh—rename—seq mh¯narrow—to—seq x mh-widen (C—X ) x mh—search—folder x mh¯send (), s) mh¯ansver (a) x mh-forvard (f) のコマ、 (C-x れ ) scan / etter (p) ツ mh-yank-cur-msg (C-c C-y) x mh¯send—letter (C-C C-C) mh—insert—signature (C—C C— scan ノ x mh—inc—folder (i) mh-refile-msg ( つ mh-copy-msg (c) x mh—list—folders (M-I) x mh—visit—folder (M-f) x mh-kill—folder (M—k) -e etter C—c C—f t C—c C-f s C—c C—f c C—c C—f b C—c C—f f IC attern ノ ・のコマン ernacs 入門 sequence からメッセージを外す sequence にメッセージを加える コマンドの実行 コマンドの取消し メッセージの消去 メッセージの内容をファイルへ保存 指定したメッセージに移動 前のメッセージに移動 次のメッセージに移動 メッセージをスクローノレダウン メッセージをスクローノレアッフ カレントメッセージを表示 ウインドウを分割後、 mh-e letter モードを起動 mh-e letter モードを起動 mh-e scan モードを起動 すべてのメッセージを scan 六ッフアに表示 sequence に属するメッセージたけを一覧表示 sequence の名前を変更 メッセージカ : 属している sequence を表示 カレントメッセージを *draft* ノくッファ冫こコピ メールを転送するためのスッフアを用意 返事を出すための六ッフアを用意 メールを書くための六ッフアを用杞 くターンにマッチするメッセージを探す 別のフォルダーに移動 フォルダーの一覧を表示 メッセージを男リのフォルダーにコビ メッセージを男リのフォルダ フォルダー冫こ新しいメッセ signature を挿入 メッセージを送信 ーに移動 ージを取り込む フォルダーを消去 カーーソノレを・ Fcc : フィ カーーソノレを・ Bcc : フィ カーーソ / レを・ Cc : フィ カーソルを Subject カーーソノレを・ TO : フィ ールドへ移動 ールドへ移動 ールドへ移動 ールドへ移動 ールドへ移動 : フィ くターンにマッチするメッセージを表示 mh—do—pick-search (C—C C—C) M—x kill—buffer (C-x k) のコマ M—x load—file M—x load—library M—x describe—function (C—h f) M—x describe—bindings (C—h b) 関のコマン の ル UNIX MAGAZINE 1991.1 キー六インドの一覧を表示 関数に付属しているドキュメントを表示 指定された Lisp フ。ログラムをサーチパスを使って口 絶対パスで指定された Lisp フ。ログラムをロード ノくッフアの消去 ド 129
emacs 入門 図 2 MH 窈士組み system mailbox BSD : /usr/spool/mail/username SystemV . /usr/mail/username デフォルト・フォルダー &/Mail/inbox &/Mail/ inbox/ メール 1 メール m メール m 十 1 メール m 十れ 既存のメール メールれ 複数のファイルを分割して追加 これからしはらくは、メールを読み書きするための基本 図 3 M-x mh-rmail を実行した画面 的な機能についてのお話です。最初に ロ 1 、 11 / 24 santa@kita.〔.kun xmas present ~ ー ~ 。 ti 。。 .0 ただ 0 、ま、、ク 4 3 1 ツ 25 santa@kita. 8. kl-n Merry Xnas ! ! ! くく A Merry Christmas, A Happy N ・ MH の起動 / 終了 について説明したあと、届いたメールを処理するための、 ・メッセージの一覧表小 ・メッセージのスクロール ・メッセージの表示 ・メッセージの消去 十 i 「わ OX.. done を、 さらにメールを出すための、 1 ) mh-e システムを Nemacs 内に読み込み、 2 ) system mailbox を調べ、 メールを書く 3 ) 新しいメールがあればファイル・フォーマットを変換し、 メーノレー、ツダ 4 ) デフォルト・フォルダーに追加する メールの返事を書く メッセージの転送 の順で処理を実行します 4 。図 3 は、 mh-rmail コマンドを メーノレの当医 実行した状態です。この図のバッフアは、、 mh-e scan" モ の順に話を進めます。 RMAIL の記事もだいたい同しよう ードで、新たに届いたメッセージの一覧を表小しています。 な順番になっているので、見比べながら読むのも理解の助 今後は、このバッフアをヾ scan バッファ〃と呼ぶことにし けになるでしよう。そりや、もちろん人によってはよけい ます。しつはヾ scan 〃とはメッセージの一覧を表示する mh に混乱してしまうこともありますけどね。 のコマンド名なのですが、 scan コマンドのほうはデフォル ト・フォルダーにすでに取り込まれているメッセージの一 MH の起動 / 終了 覧をすべて表示し、この図のように新たに取り込んだメッ mh-e を使ってメールを読むには、何をおいてもます、 セージだけを表示するわけではありません。 さて、運よく mh-rmail が実行できた場合はそのままメ M-x mh-rmail 〔 0 ー ールを読んでゆけばいいのですが、前述したとおり MH は を実行してください。 mh-rmail は、 4 2 ) ~ 4 ) の処理に対応する mh のコマンドは "inc" (incorporate) です。 3 : 03 、ト 3 ) ーま - N +inhr_N 113 UNIX MAGAZINE 1991.1
連載 /IJN Ⅸ Communication Notes—の ない、実装されていない、あるいは不要なコマンドで 小分類 x5z ファイルシステムに関連したもの。 x4z その他。 x3z ューサー認証に関連したもの。 ョンに関連したもの。 x2z コントロール・コネクションまたはデータ・コネクシ を要求するコマンドへの返答。 xlz 状態問合せへの返答やヘルプメッセージなど、情報 あるというエラー ーバーの OS が UNIX などの場合には課金名がない ( ロ していることがあります。これは、それへの対応です。サ では、ユーサー名と計算機の使用量の請求先の指定が独立 課金“ c 厩を指定します。メインフレームなどの OS ACCT co ″厩 コマンドの直後に送られなければなりません。 パスワードが必要な場合には、 PASS コマンドは USER パスワードとしてカ s 0 を指定します。アクセスに PASS カ s 0 なります。 ドを送ると、すでに送ったパスワードの課金指定は無効に しサーバーをアクセスすることが可能です。 USER コマン 回でも発行できますから、改めて別のユーサーの権限で同 スワード、課金の 3 つでおこないます。このコマンドは何 を指定します。 FTP では、利用者の認証はユーサー名、パ ューサー名 ( UNIX の場合はログインネーム ) に襯 e USER 襯召 アクセス・コントロール関係のコマンド で書かれているのが引数です。 て SERVER-FTP がおこなう動作を説明します。小文字 ンドだけです。以下に FTP のコマンドと引数、それに対し RFC959 に規定されたなかでインプリメントされたコマ リスト 1 の HELP コマンドに対して返ってきたのは、 FTP のコマンド る規定はなく、コマンドごとに定義されています。 リプライコードの 3 桁目には全体をとおした一貫性のあ 40 グイン名がユーサー名と課金番号の両方を意味する ) ので、 課金指定は省略されます。 前節で説明したカテゴリー 3 のリプライコードの代表的 な使用例は、ログイン・シーケンスです。 PASS コマンド に対して、ログインが完了したら 230 が返ってきます。 スワードが誤っていると、エラーで 532 が返ってきます。 パスワードはあっているが、課金指定が必要な場合は 332 がリプライコードになります。 USER-PI は、これによっ てユーサーにアカウントの入力を督促するか否かを切り替 えます。 CWD カ 4 ル 4 襯 e Change Working Directory ーーーワーキング・ディレ クトリの変更です。 UNIX のようなディレクトリをもつ単 ーの階層的ファイルシステムでは、加襯はディレク トリへのパス指定です。これは、通常のシェルの cd コマン ドと同しです。 Macintosh や MS-DOS 、 VMS のような 複数ポリューム ( ドライプ ) からなる階層的ファイルシス テムではポリューム指定が必要です。たとえば Macintosh の NCSA-TELNET に組み込まれている FTP サーバーでは、ポリューム名がルートディレクトリ 直下のディレクトリ名であるかのごとくみえるように実装 されています。そして、フォルダーはディレクトリにみえ ます。 HD40 というディスクポリュームのフォルダー sys - tem のなかのフォルダー SP001 に移るには、 CWD /HD40/system/sp001 というコマンドを送ります。 ディレクトリをもたない OS でも、ファイルのグループ を指定するなんらかの機能がある場合には、そのファイル グループ指定を CWD コマンドでおこないます。 CDUP 親ディレクトリにワーキング・ディレクトリを移します。 サーバーが UNIX の場合には、 と同しですが、親ディレクトリを指定する方法は OS によ って異なるので FTP コマンドとして採用されました。 SMNT 加〃 4 川 e (Structure MouNT) UNIX MAGAZINE 1991.1
図 23 M-x mh-search-folder コマンドを実行する前の scan ノヾッファ 1 11 / 24 smta@ki ta. 8. kun Xnas present reservation. くくただいま、クリスマス 2 12 / 24 santa@ki ta. no. kun Xmas present reservation. くくこのたびは、クリスマ 3 12 / 25 smta@kita.no. kun ト回・・ ry xmas ! ! ! くく A Merry Christnas, A ロ 5 01 / 01 a-sya 6 + 01 / 01 a-sya emacs 入門 図 24 M-x mh-search-folder コマンドを実行した後の scan / ヾッファ 2 12 / 24 santa@kita. 。。 . kun xnas 。、。。 t ~ ~ 。 ti . くくこあたび丿う 4 3 12 / 25 santa@kita.8. kun Merry Xnas ! ! ! くく A Merry Christmas, ard A ロ 5 % 01 / 01 a-sya 6 + 1 / 01 a-sya Tel NI わ er くく Tel Nt 第わ er くく ( 1 旧ー 2 ー第 - N +inbox 5 「に gs ( 1 一 6 news" のメッセージ ( 、、 Subject: scan)--All - フィーノレドが、、 news") 5 mses 1-6) ー第トⅢ + inbox Searching.. 旧 (mh-e 3 こ an トー引ト を選び出したりすることができます。 例として、表題が、、 Tel 〃のメッセージを選んでみましょ う。もともと inbox フォルダーは図 23 のようになってい たとします。 1 ) mh-search-folder コマンドを実行します。 M-x mh-search-folder 〔 0 ] 2 ) 次に、どのフォルダーを対象とするかが訊ねられます。 この例では、 inbox フォルダーを選びます。 Search folder [nil] ? + inbox 3 ) pick ー pattern バッフアが起動されるので、パターンを 指定します。 こでは、 Subject: フィールドに TeI と書き込みます。 図 25 コマンド名のコンプリーション 1 11 / 24 s 代 a ita. 8. kt-n Xmas pres 部虍 res 日、 vation. くくただま、クリスマス 2 12 / 24 santa@kita. 8. kl-n Xmas present reservation. くくこのたびは、クリスマ 3 12 / santa@kita.8.kun Merry Xnas ! ! ! くく A Merry histnas, md A 5 01 / 01 a-sya 6 + 01 / 01 a-sya 5 第 3 三 ーま - 国いⅱ bo : ・ mh-extract-rejæted-ma Ⅱ mh—ed i t-aga i n nh—del ete—nsg-from-seq rnh—copy—rnsg nh-burst-d i gest POSSlble CO ーー etions are ・ ( 1- 朝 ー c トを ck ートの 物ー lete—msg rh—do-p i ck—search rh—execute—commands 物イ orw ・ d rh-goto-msg ーわー i nser ・ t—尾 tt 部・ rh—ki Ⅱー f 引 r ・ 『わーⅱ st—fol ders mh—fully—ki Ⅱー士・ aft ーわ - ir ℃尋引「・ rh-insert-signature mh—l etter—mode M-x mh-e には、 ーしロ (Fundamental )—-TD ー et_ i 0n5 ー このほかにもさまざまなコマンドが用意さ キーパインド、関数の説明 From : To : Cc : Date: Subject : Te1 4 ) 最後に pick-pattern バッフアで mh-do-pick- search コマンドを実行すれは、条件にマッチしたメッ UNIX MAGAZINE 1991.1 マークが条件にマッチしたメッセージです。 図 24 は pick 機能を実行した後の scan バッフアで、 % mh-do-pick-search) C-c C-c セージが scan バッフアに表小されます。 れています。今回は説明しなかったコマンドも使ってみた いという人は、 mh ー e のコマンド名はすべて、、 mh ノで始 まることをヒントにしてください。ヾ mh ー〃で始まるコマン ドを知るには、 Nemacs の補完機能を使います。「フォルダ ー名を知るには ? 」のところでも出てきたように、適当な 状態でく SPC 〉キーを叩くと次に入力する文字列などの候 補が表示されます。この機能を利用して、 M-x mh - 0 〕 としてみてください。 mh ノで始まるコマンド名の一覧が * Completions * バッフアに表示されたでしよう ( 図 25 ) 。候補が 1 つしかなければバッフアには表示されす、コ マンド名が完成されます。たとえば、 mh-e を読み込んで いない状態で、 M-x mh-r 0 〕 とすると、一致するコマンドは mh ー rmail ですから、 125
HP SoftBench HP Encapsulator CASE のケーススタディ 「計画は捨てるつもりで作成せよ。どうせそうすることにな る」とは Frederick Brooks が記したことはだが、 HPS0ft- Bench 環境の米国内での発表とデモンストレーションの月リ 日、メールツールは捨てられたのであった。そして、ただち にそれまでの苦労のなかから学んだアイデアを利用して、メ ールツールをほとんど完全に書き直す作業が開始された。 のときには、まったく新しいメールプログラムを作成するの ではなく、 HP EncapsuIator を用いて HP-UX のメール ・ HP SoftBench のメッセージからメールメッセージへの ったのは、次のような理由があった。 さらにもう 1 つのメール・プログラムを作成することにな なぜ別のメール・プログラムが必腰だったのか ? 用した。 プログラム mai ⅸをカプセル化するというアプローチを採 70 ア開発のような重要でコストの高い間題を解決するためであ 門的なユーサーがコンピュータを購入するのは、ソフトウェ ・ HP SoftBench 環境の有用性を高める。調査によると、専 に使用してみる必要があった。 sulator という新しい孑気去を製品として実用化する前に実際 ・ HP Encapsulator の微調整をおこなう。 HP Encap- によって高度なテクニックを習得できるようにしたいと考え を示す。将来の開発者には、コードとコメントを調べること ・本格的な実例によって、 HP Encapsulator 言語の使用法 ザー・インターフェイスを目指した。 もあった。そこで、 HPSoftBench メールはより優れたユー する。また、変史の多い環境ではメンテナンスが困難なもの 混乱させるし、別のものは大量のカスタマイズ作業を必要と いがたかった。あるものは雑然としていて新しいユーサーを のユーサー・インターフェイスは、どうみても理想的とはい システムの環境で実行されるはとんどのメール・プログラム ・ユーザー・インターフェイスを向上させる。 X ウインドウ・ 夜間に実行される場合にはとくにそうであろう。 えられる。プロセスが無人状態で実行される場合、あるいは ってチームや各開発者などに通知することを望んでいると考 ージが送られたときには、ソフトウェア開発者はメールを送 橋渡しとなる機能を提供する。ある HP SoftBench メッセ って、メールのようなオフィス・オートメーションのためで はないことが分かっている。それにもかかわらず、この種の ューザーもメーカーがメールシステムを提供することを期 待している。 Encapsulator の利用 Encapsulator 記述言語 (EDL) は新しい言語である。新し い言語が出現すると、いわはその言語という船に乗って新し い咼レベルのアイデアという海を航海し、新しい構造という 地図のない水域を探検し、低レベルの細部という岩 ( X ツー ルキットなどのライプラリでは顕著に、、突出〃している ) のあ いだをやすやすと通り抜けることができるようになる。しか し、新しい言語には新しいパラダイム、つまりプログラミン グの間題についての新しい考え方が含まれているのが通例で ある。 EDL の場合もその例にもれない。 HP - UX の mai ⅸアプリケーションのような複雑なツー ルをカプセルイヒするには、困難がともなう。書き直しが進む につれて mailx についての認識か深まった結果、設計を修正 する必要が生してきた。たとえば、フォルダを管理するコー ドは mailx のフォルダ処理方式の詳細な機能を把握するに つれて 2 度も書き直すはめになった。 mai ⅸのソースファイ ルにアクセスすることは可能であったにもかかわらす、ソー スを調べたのは 1 回だけであり、それも結局はコードからは なんの回答も得られないことが分かっただけであった。たん に各種の条件を設定し、ターミナル・ウインドウで mai ⅸを 実行してその動作を観察するほうがはるかに簡単であること が判明した。 しかし、既存のプログラムをカプセル化するということは、 コードを最大限まで再利用することにはかならない。つまり、 メールの配達、フォルダの管理、ェイリアスの作成、メッセ ージの表示などのむすかしい問題は、すでに誰かほかの人物 によって解決済みなのである。アイサック・ トンのこ とばを借りれは、 HP SoftBench メールは解決の一部を世に もたらした巨人の肩の E にっているために、、、先人クよりも 遠くまで見通しているのである。 Bob Desinger ソフトウェア開発工ンジニア Software Engineering Systems Division UNIX MÄGAZINE 1991.1
ernacs 入門 , イ▽ X00 , = 0 。 t ~ , 。 ~ 。 tio 。 . くくただいま、クリスマス Merry Xmas ! ! ! くく A Merry Christnas, and A N です。 sequence 機肯皀 mh-delete-msg-from-seq 外すときは、 sequence に属していたメッセージをその sequence から のように sequence 名を指定してください。逆に、ある Add tO sequence : FromA として、 mh-put-msg-in-seq) に属させるためには、 アのカーソル位置にあるメッセージを特定の sequence 具体的なコマンドの使い方に移りましよう oscan バッフ ます。 させれば、大量のメッセージを相手に格闘しなくても済み 表小 2 ) 、、 FromA 〃に属するメッセージだけを scan バッフアに にしておきます。そうすれば、目的のメッセージを捜す場 ク ) sequence 1 ) A 社の社員からのメッセージは、、 FromA" という名前 出すのはひと苦労です。そこで、メールを受け取ったとき、 的のメール たとえは、 A 社からの連絡メールを見つけ に何百通もたまってしまっているでしよう。そのなかから目 メールを大量に受け取る人なら、いつのまにかフォルダー のメッセージが複数の sequence に属すことも可能です。 のグループには名前をつけることができます。また、 1 っ バッフアに表示させる機能です。、、 sequence" と呼はれるこ プ分けし、あるグループに属するメッセージだけを scan sequence 機能は、フォルダー内のメッセージをグルー 図幻 M-x mh-put-msg-in-seq を実行した画面 1 11 / 24 santa@kita. 8. kun 3 12 / 25 santa@ki ta. 8. kun 5 + 加 1 / 01 a-sya ロ 6 % 01 / 01 a-sya とします。図 21 は、 ーー第一「」い nbo:-ll 5 1 に三 ( 1 一日 ) 、 ITI h - 巳三匸イコ ) - ーら凵 - メッセージ 5 、 6 が、、 FromA" sequence に属している場合の例で、メッセージ番号の右 の % マークはこのメッセージがなんらかの sequence に 属していることを示しています。 メッセージが属している sequence 名を知りたい場合 には、 mh-msg-ls-in-seq) を入力してください。工コー領域にそのメッセージの属し ている sequence 名の一覧が表示されたでしょ ? Message 5 iS : FromA もちろん、 sequence 名を変更することも可能です。 場合は、 M-x mh-rename-seq 〔亘ー この としてから、上と同様に、 Delete from sequence: FromA UNIX MAGAZINE 1991.1 とすれば、どの sequence 名をどう変えるか訊ねられるの mh—narro 、 M—to—seq C-x n アに表示させるには、 ある sequence に属するメッセージだけを scan バッフ New name : FromB 01d sequence name : FromA で、次のようにしてください。 123 Narrow tO sequence : FromA ますから、 と入力してください。どの sequence を表示するか訊かれ