COMPUTER LANGAUGE Nov. 1991 間 m 血い暉咄 野口修男訳 / 福富寛監訳 『 A 旧 want to do is ・・・』 どうだろうか , 皆さん。このアプ はない。 人てもあった John Lions 教授は UNIX V6 の 発明の父とは ローチの問題点はひとつのことしか見てい カーネルのソースコードを書き換えて , 読 ことにある。複雑なシステムの場合 , みやすい学習用のものにした。この UNIX に 必要は発明の母といわれている。おそら ちょっとした変更がびつくりするような結 付属していた文書フォーマッティングシス くそのとおりなのだろうが , 私はその父が 果をもたらすこともある。このような変更 テムに対して , 彼は当時 ( 1977 年 ) て、も次の 誰かも知っている。それは「いいかい , 私 がもたらす二次的な問題をきちんと認識し ようにいっていた。「 nroff プログラムの協 のやりたいことは・・・・・・」という重要な言葉 ておかないと , その問題が壊減的な結果を 力も必ず言及しておかなければならない て会話を始める人間だ。 引き起こす可能性が高くなる。 nroff がなければ , このノートをこのような , こて、は下心のある誘惑の話をしている 「やりたいこと」と「やらなければならな 形式て、製作することは決しててきなかった のてはない。そんなのは小説やショートシ こと」には違いがある。後者をかたづけ はずだ。しかしながら , 一方ては nroff は意 ョートの分野の話だ。ここて、私が述べてい れば仕事は完結する。これには直交性 , 完 に反する不可解な秘密も生成しているのて , るのは次のような仮想的な人物だ。つまり , 全性 , 一貫性などの重要な問題が絡んてい 著者の謝意は次のように複雑な感情の入り ある問題を解決するための方法を考えては る。また , エレガンスという不可解な概念 雑じったものになってしまった。 rnroff はプ いるが , まだ完結しておらず , その解決方 に踏み込むことにもなる。 ログラム文書制作技巧を今後実践する人た 法をインプリメントするための援助を求め たったひとつの小さな変更だったら , た ちに対して , 創造力に富む肥沃な場を間違 ているような人物てある。 とえその組み込みがどんなに不完全だった いなく提供しなければならない』 ( 訳注 : 原 それて、は , なぜ彼は援助を求めているの としても , システムを破壊するまて、には至 文は Certainly nroff must provide て、始まっ だろうか ? おそらく , インプリメントす らないだろう。しかし小さな変更ても繰り ており , この must が「 ~ しなければならな 返し蓄積されると , システムのあちこちて い」と「 ~ するはずだ」の両方の意味て使 るのに必要だと思っている変更が彼自身に とっては規模が大きすぎたり , あるいは変 予想外の結果を引き起こすことになる。そ われているようて、ある ) 。ちなみに , nroff に 更しようとしているものがすて、に他人に使 して変更を加えるのがますます困難になり , ついてもっとひどい表現をしたプログラマ 動脈硬化のような痛みを生じさせる。 われているため , 変更に彼らの同意を必要 を私は知っている。 とするのかもしれないからだろう。我々の とくにアテローム性動脈硬化 ( 訳注 : 血 ビジネスの世界て、は , 大きなソフトウェア 管壁の退行性動脈硬化 ) ともいえるシステ ー祖文書フォーマッタ ムに , UNIX 下て、発達してきた nroff/troff と がこのようなものに相当することがよくあ いうタイプセッティングパッケージがある。 る。あるいはプログラミング言語や OS の標 nroff も元来は本当に美しかった。私が B これは現在ても世界中て、使われているパワ 準スペックがそうて、あったりする。 rianKernighan から聞いたところては , 彼 フルなパッケージだが , 実際に使おうとす 私はほんの小さな機能を追加したいだけ が Princeton 大学の大学院生だった当時 , 最 ると次から次へと予想外の出来事に挑戦す もちろんその機能の用途もわかってい 初のヾ runoff 〃プログラムを生みだしたそう る。その機能がほかに何か有用なところが ることになるだろう。 だ。そもそもの始まりは「コンビュータカ あったとしても , それは私の知るところて New South WaIes 州立大時代の同僚て友 ードにフリーフォーマットてテキストをパ Programming on Purpose 17
胆 c ト叩 Design 衂併 t 叩搬 y プジェクトの値 , 受け取るようにすれば , プロトコルをすへ ないしそのユーザの , オ を実装した後は , ーっのアプリケーション パラダイムを , ーっまたは複数のアプリケ てのクラスに対して一般化て、きて便利てす。 ーナーは誰かということに関与する定型的 ーションクラスのためのプロトタイプとし 同じくまた , ExactMatch クラスと Hash なポリシーを新たに必要とします。 クラスも , Root の派生クラスてあり , その クラスの実装により , 関連クラスの結合 て作れます。 の仕方も定義されます。そういう結合の一 プロトコルの中に Root を指すポインタまた そのプロトタイプを作るサイクルによっ 部は , ある機構から別の機構への結合て、す。 て , アプリケーションクラスの性能試験や , は Root のリファレンスを引数として取りま また別の一部は , 機構からポリシーへの結 その後の実装変更などが可能となります。 す。これらの抽象ポリシークラスの派生ク 合て、あり , それは早期結合または遅延結合 直交性という特長によって , 機能をある実 ラスは , 仮想関数によってプロトコルの実 〔ランタイム結合〕のどちらにて、もて、きま 装から別の実装へと再利用していくことが , 装手段を提供します。 す。たとえば , 単純なキューのアルゴリズ 最大限に可能になります。ポリシーオプジ クラスの設計と実装 ムクラスは , 配列のトボロジーを必要とす ェクトも再利用て、きますし , 汎用の機構プ るだけて、あり , それは柔軟性を何ら犠牲に ロトコルへのインタフェイスも再利用可能 直交性に関しては , 設計上の決定事項が せずに定型化て、きます。 て、す。ーっの機能を変えても , 他の機能は 一方 , プライオリティキュー〔優先順っ あまりに多くて , そのすべてを本稿て、はカ 手を触れる必要がありません。メンテナビ きキュー〕は , リンクトリストのトボロジ ーて、きませんが , 重要な幾つかを指摘し リティと再利用性の夢も , 実現が近くなっ ーを必要とするて、しよう。しかし , これら たのて、す。 ておこうと思います。 ニマリズム ( 最小主 のキューのアルゴリズムクラスのどちらも , [ 訳注 ] 本稿にはリストがいっさい付随 最も重要なことは , ニマリズムという考え方は , 音 義 ) て、す。 アプリケーションが動いているときにはト していません。直交性のあるクラスライプ 楽や絵画て、はそれなりに有意て、すが , ソフ ポロジーの選択に関する柔軟性を必要とし ラリを作る , というよりも , クラスライプ トウェアにおいては必須事項て、す。ある機 ラリを設計構想する者は誰もが , 主要素間 ません。 能を提供するためのメソッドは , て、きるだ 一部の結合は , ランタイムの遅延結合て、 の直交性の最大化を目指す , と言ってよい け数少なくなければなりません。いろいろ なければなりません。遅延結合は一般的に のて、はないて、しようか。本稿の筆者が採用 ポリシーオプジェクトに適用されます。た した、、軸〃は , 値 / トボロジー / アルゴリズム / と凝ったことは , この接合的クラスの上の ポリシーの 4 本て、したが , あなたが構想する セマンティック層 ( すなわちアプリケーショ とえば , 文書の探索の方法 ( 完全合致ポリシ ン ) に任せましよう。リスト上に [ ] を書く ーオプジェクトによって実装されている ) を とどうなるて、しようか。 ANSI C 十十等が , ューザが選択する方式ならば , ポリシーオ テンプレートや例外処理に関する標準を定 ことや , 配列をポップしたい という誘惑 に抵抗してください プジェクトの選択は , アプリケーションの めたとき , C 十十のクラスライプラリにおけ ューザによってランタイムに決められるて、 もうーっ , 議論しておく価値のあること る直交性も , より実装しやすくなるて、しょ は , 値クラスの変換演算子て、す。変換演算 しよう。ポリシーオプジェクトはランタイ う。私が個人的に , 本稿から感銘を受けた 子は , オプジェクトをネイテイプの C のデー ムにインスタンスを作られ , ポリシーオプ 点は , C の内蔵データ型まて、も , クラス階層 ジェクトを受け取る機構プロトコルを介し タ型にキャストないし変換します。たとえ の中へ再実装してしまう , という考え方て、 ば , RealNumber というオプジェクトは , そ て , 機構オプジェクトに渡されます。 す。 れを double にキャストするための変換演算 メンテナビリティの 子を提供て、きます。 実現 Harvey Reed 氏は , バーデュー大学で数学 ある値を , プリンティングのために , C の 文字列型に変換する変換演算子を , 加える と計算機科学の学士号を取得し , ジョージ ア工科大学で計算機科学の修士号を取得し ことを考えてみましよう。他の変換のほと 接合的クラスライプラリにとっては , 幾 んどが , たとえば int のように , 単一のメモ つかの機能が欠かせません。それらの機能 た。 彼は現在 , ネットワーク管理の分野のオ リ区域への変換てす。しかし文字列への変 は , 機構またはポリシーへと分類され , お 換は , char * および , 文字が入っている c プジェクト指向デザイナであり , 分散シス 互いに直交性を維持します。次いて、それら テムに関する論文でローウェル大学より博 har の配列という , 二つのメモリ区域を作り の機能は , クラスの階層という姿をしたプ 士号を取得することを , 目指している。 ます。この変換は , これらメモリ区域 , オ ロトコルへとマップされます。ライプラリ 24 C M AGAZINE 1 2 5
int 上でも使えるようになるのですか ? Crow 現在出荷している NewWave 製品 は , もちろん Windows 上て、実行て、きるアプ リケーションて、す。 PenWindows は Wind0 ws を拡張したものて、 , 既存の Windows アプ リケーションと互換てきる非常にすばらし いものだと思っています。 PenPoint はたく さんの機能を提供て、き , 見栄えのする本当 にすばらしい OS て、す。実際 , NewWave が 最初に提供し , GO が PenP0int に取り入れた ような種類のものがたくさんあります。優 れた , 強いオプジェクト指向設計て、す。し かし , 我々は PenPoint をサポートする特別 オプジェクト指向ツールの使用は , たとえ が , OMG ( オプジェクトマネージメントグ な計画を発表したことがありません。 ループ ) が現在進めている作業は , このよ しかし , プラットホームに関わるように ツールがなくてもそのテクニックを応用し うな標準化を促進する最良の方法て、しよう。 なるとすれば , この種の問題を考える必要 ています。アプリケーション開発の効率に おいて非常に大きなメリットを受けられま OMG は非常に速いべースて、動いています があるのて、はないかと思います。 PenPoint が , まだまだ大変な努力が必要て、す。デベ す。十分に定義されたインタフェイスて、モ が産業界て、本当に重要なプラットホームに シュールコンポーネントを作ると , そのコ ロッパが , 不必要に再び作り直すことなく , なり , 多くのユーザが使い始めるようて、し ンポーネントは再利用て、きます。このメリ ほかのコンポーネントを利用させるよラな たら , 統合やタスクオートメーションのた ットと現状の間にある最大の障害は , 単に 基準を確立することは , 我々がしなければ めにシステムレベルて、拡張し , 付加価値を 教育の問題といえます。オプジェクト指向 ならないことのひとってす。しかし , 我々 つけようと考えるて、しよう。 しかし , 現在あなたが Windows のメジ は OMG が正しい方向に進んて、いると考えて 環境のコンセプトを受け入れずにツールを ャーなデベロッパである以上 , どこに最大 購入し , 実行している人がたくさんいます。 います。 その結果 , その不必要な複製の努力に そしてどんなツールて、あれ , 優れたオプジ の焦点をあてるのでしようか ? よって恩恵を受けて成功した現在のコンビ ェクト指向の設計を学ぶ教育が最大の障害 Crow 我々が今もっとも重要視しているの ュータ界の巨人を倒すようなことになるの は Windows と UNIX て、あり , 特別な製品計 となります。 でしようか ? ふたつ目の大きな問題は , もっと広い産 画があります。 Crow ええ , 現在製品ファミリーを持ち , 業界て、の再利用て、す。これが進めばすべて オプジェクト指向 支配的な位置て、リーダーシップをとってい のデベロッパは , すて、に開発されたものを 技術の課題 る有力なソフトウェア会社がたくさんあり もう一度作らなくて済みます。どれほど . w ます。明らかにビジネス目標はリーダーシ オプジェクト指向技術が今直面してい kl ファイルが移植て、きる機能を持っている る非常に , いや , もっとも難しい問題は何 かわかりますか ? どれほどたくさんの同 ップの地位を利用するところにあります。 でしようか ? 過去のほかの技術は高い評 しかし , 我々はこのような会社とともに仕 じプログラムがトランスレートされ , 数千 価を受け , コンビューティングの次のビッ 事をしているのて、わかるのて、すが , 有力企 におよぶ違った . wkl のインプリメンテーシ クウェープとして歓迎され , やがて産業が 業間て、は , 標準化の方向に向かうための大 ョンを繰り返しているて、しようか。まった 進むにつれ自然に消減していきました。オ 胆な活動が見られます。このような会社の く同じコードの数千もの複製が , それぞれ プジェクト指向環境にも同じ状況があては 大部分は , 発展する方向を見定め , 起こり 異なった潜在的パグを持っているのて、す。 まるでしようか ? また , 継続するには何 得る変化の最先端て、イニシアテイプをとる これはまったく時間の浪費て、す。 がいちばん難しい問題でしようか ? オプジェクト指向設計て、は , . wkl ファイル ことにたいへん努力しています。 Crow それはふたつあります。オプジェク しかし , あなたのいうことも正しい き刃 ハンドラコードを 1 度書けば , 標準のインタ 0 じ、 識もせず , 反応もしない会社は , 今日その ト指向はテクニックてあり , 非常にうまく , フェイスを介して再利用て、きるのて、す。 会社がどれほど強くても , 将来つぶれてい 効果的にたくさんの違った方法にも適応し れを我々の産業て、実行するには , 標準イン タフェイスを定義する基準が必要条件て、す ます。個々のプログラマや組織の範囲て、の きます。 16 C MAGAZINE 1 2 5
ea e で s , 録の djgcc が必要なのて、すが , 1 月号 っかりとバグ取りしてから使って として環境変数で必要な分の環境 ☆現役 発売の時点てすてに 10 月号は在庫 くださいね。 用のメモリを開放します。 3 月号の増田さん。うちでも古い P 切れの状態て , 入手は困難になっ たとえば , 環境変数で、、 ENV= ☆「環境用のメモリ」っいて ていたようてす。 C マガジンの購入 C ー 9801E は , ほかの機種とともに現 ABCD" と設定する必要があるプロ 役でがんばっています。その理由 グラム PROGRAM というアプリケ はお早めに願いますにつ。 3 月号の「環境用のメモリ」の質問に は , ①歴代 PC ー 9801 シリーズ ( 無印 ついてですが , MS-DOS の COMM ーションを実行するバッチファイ ☆心、太 から DA まで ) の中で「電源容量」が ANDO.COM にも ,/E : オプション ルは次のようになります。 ベスト 3 に入る ( →大容量のポード あのお・・・・・・十三里半はわかったん があります。設定の方法は , CON SET DUMMYI= に対して安全 ) 。② FDD が前面にな ですけど「心太」ってなんですかあ ? FIG. SYS 中で , SET ENV=ABCD いので逆向きに置くと拡張スロッ 十三里半って九里四里うまい・・・・・ SHELL= COMMAND.COM PROGRAM ト ( 6 スロット ) がユーサ側に置ける ですよねえ。でも地方によっては , /E く size> 子プロセスを終了すると , 子プロ ( スロット型リムーハプル HDD を使 と指定すれば指定した環境用メモ 九里に足りないんで八里っていう セスの環境変数などはすべてクリ うと PC ー 9801FA のように HDD を抜 ところもありますよオ・・・ リが確保されます。しかし , 村上 アされますが AUTOEXEC. BAT で き差しできる ) 。③スピードが遅い 小池英之 ( 岐阜県 ) さんの質問だと FD から起動されて 設定した環境変数は , そのまま残 のでアセンプラでのデバッグに便 小池さん以外にも , 「十三里半 いるようなので少し工夫が必要で っているので環境変数をわざわざ 利 ( 何をしているかわかりやすい ) 。 ( サツマイモのこと ) 」はわかっ す。 CONFIG. SYS の SHELL 文で , 元に戻す必要はありません。ただ 佐伯俊也 ( 京都市 ) /E : 512 と設定し AUTOEXEC. BA たけど「心太 ( トコロテン ) 」はわか し , ーっ難点があって環境変数を T で環境変数 DUMMY を仮に設定 最新機種てなくても十分な場 らないという方がかなりいらっし 設定する BAT ファイルには必ず 合はけっこうありますからね。 する方法です ( Fig. 1 ) 。 Fig. 1 中の トコロテンは地方に やいました。 SET DUMMYn= という一文を追加しなければなり 大切に使ってやってください。し よって食べかたも違うようて、すし , 、、 # ″の個数が 116 個というのは MS ひょっとして「心太』という表記 かし , PC ー 9801E を使用する理由の ー DOS のコマンドラインに入力でき ません。 Ke-yu (NIFTY-Serve) ② , ③は普通はデメリットに入る る文字数が 127 文字のためです。子 は全国て、通用するものて、はないの ' 91 年 3 月号本コーナー村上敦 項目てすが , 使い方と目的によっ プロセスを起動するときに環境変 彦さんの質問に対する回答は かな ? 暑いときには , よく冷え てはメリットになるのてすね。 たトコロテンが最高て、すよね。 数はそのまま引き継がれますから Ke ー yu さんのほかにも , たくさんの 子プロセスで環境変数が必要にな 方からいただきました。ありがと ☆毎月買います ! ☆やさしい先生 ったときには , うございます。代表として Ke-yu さ 今までは目次や特集を見て買って 私の研究室の先生は , 解析用のプ んからの回答を紹介させていただ SET DUMMYI= いましたが , 最近バックナンバー ログラムができあがるまでは「まだ きました。村上さん , ぜひお試し (SET DUMMY2=) がほしくなり , しかも手に入らな できないの ? 」というのに , 版が (SET DUMMY3=) いことが多い。「あの時買っていれ できあがって Bug ー Fix をしていると Fig. 1 環境用メモリを確保するための CON 日 G. SYS と AUTOEXEC. BAT 例 ば・・・・司なんて思ったりして。そこ 「コンピュータばかりさわっていな CONFIG. SYS で , これからは毎月買うことにし いで実験しろ ! 」というやさしい人 SHELL:A : .COM/AND.COM A : \ /P /E : 512 ました。だから , 付録ディスクに です。こんな私って・・・ FlLES:25 BUFFERS=20 もよいソフトを入れてください ( わ 先生に恵まれた学生 ( 京都府 ) がままやなあ ) 。 プログラムのバグによる誤動 AUTOEXEC. BAT ECHO OFF Marbow ( 大阪府 ) 作はこわいて、すよね。まして , PROMPT $P$G PATH=A : \ : B : \ 解析用のプログラムとなると見か 弊誌のバックナンバーは , 意 SET DUMMYI : # # # # # #.. SET DUMMY2:######.. けだけは正常に動作しているよう 外に早く在庫切れになるよう SET DUMMY3=######.. に見えても出力データの信頼性は てす。たとえば , ' 92 年 1 月号付録の SET DUMMYn:######.. 無に等しくなってしまいます。し djgpp の実行には , ' 91 年 10 月号収 160 C MAGAZINE 1992 5 個個個 ( 0 6 6
programming 聞咄 現代的なタイプセッティングパッケージ く知っていたのだ。彼の周囲の人たちがい るための特殊な内部コードに置き換える。 はかなりすごい。ノヾッケージには , メニュ もちろん仕上がりの美観に関心がないのな つも「 Joe, 私はこういうことがしたいんだ ードリプンのコマンド入力 , WYSIWYG デ ら , この機構をオフしても差し支えない。 ・・・」といっていた。そしてそれを実現 設計て、困難なのは , テキスト処理のどこ するために彼がしなければならない仕事に イスプレイ , 多くの異なるプリンタ用の出 ついてはほとんどだれも気にかけなかった。 カドライバが含まれている。このようなパ て、リガチャを導入するかを決定することて ッケージは nroff や troff よりも一般的には使 Kernighan もかって次のようにいったことが ある。あまり前の段階に導入してしまうと , テキストが崩れてしまってページプリント ある。「私のやりたいことは , 等式を簡単に いやすく , 予想外のことにびつくりさせら れることも少ない ( ただし , これは一般的な には適さなくなってしまう。逆にあまり後 タイプセットすることなのだよ。これにつ 舌て、あることに注意してほしい ) 。しかし重 いては数学者からの主張もあるようだが , の段階て導入しようとすると , リガチャを 要ないくつかの点ては nroff / troff より劣る。 認識する機会を失ってしまう。この決定を それらを解析する代わりに , どのようなも のて、あるかを私に説明させてもらいたい」。 というのも , 古い nroff / troff パッケージに柔 新規プログラムに導入するだけて、も十分に 軟性を与えていたパワフルなマクロが現代 困難てあり , 既存コードの変更による導入 その結果彼はすぐに EQN 言語を発明し , 的なパッケージてははとんど提供されない ならばさらに困難だ。 れはその後長期間にわたるヒットとなった。 のだ。その代わりに , nroff/troff 上て、組み上 nroff/troff の内部 <Brian が見つけたもの ちなみに , Ventura PubIisher は等式セッテ げられ成功した機構が取り込まれているだ イングマークアップ用として EQN をほとん は啓示的だった。マークアップコマンドを どそのまま採用している ( しかし彼らの文書 けだ。だから , 見えないものを手に入れる 処理するメインループに変なコードがあっ ことはてきない ( つまり , 外からみえる機 て、は Brian に対して何の賞賛も与えていない た。そのコードはまず現在のリガチャの処 能しか利用てきない ) 。 ようだ ) 。 理ステートを記憶し , 次にその ( リガチャ ) , こまてて、私は ( 私の見るところの ) 歴史 処理をオフしていた。そうしておいてから ログラムのエレガンス と設計の間にある問題を取り上げてきたっ 1 行を読み込み , コマンドとしてその内容を もりだ。その途中て重要なポイントを見失 処理していた。コマンド処理の終了後にリ ったかもしれないのて , ここて、要約してお ガチャ処理を適切なステートへと戻してい Brian による EQN のインプリメントは , た ( このステートが場合によってはコマンド troff 入力に対するフィルタとしてのプリプ ューザが何かを要求をするときは , たっ の実行結果て、変化したのはもちろんだ ) 。 ロセッサだった。等式を見つけ , それを読 たひとつのものしか見えなくなる傾向があ み込み , 見たこともないようなものだがと これがなぜだか予想がっくはずだ。そう , る。そしてエレガンスの必要性にはまった リガチャフィルタがコマンドプロセッサよ にかく troff 的なものを出力する。 り上流に入っていたのだ。そのままて、は . fi EQN 出力の中て、のマクロ展開を理解する く関心を持たない。後になってエレガンス て、ないことてひどい目にあって , やっとそ と書いたフィルタコマンドが , コマンドし には , 湿った土の中の岩を持ち上げるよう に余分の , しかもかなりの力を必要とする。 の必要性に気づく。 て認識される前にリガチャに化けてしまう。 プログラムには次から次へと変更が加え だからこのリガチャ機構を各コマンドごと たまにしか等式をタイプセットしない我々 に一時的に停止しなければならなかったの られる。最初から明確なプログラムほど , にとって , このようなわけのわからない虫 を食べてくれる動物のような troff は賞賛に そのような変更に耐え寿命が長い。しかし このような構成については , ひどいもの いくらよくて、きたプログラムて、も , 最後は 値する。 だといわざるを得ない。かっては , 悪いプ Mike Lesk は同様のことを表のタイプセ 柔軟性を失う。 ログラム設計の典型として引用したりもし 今日人気のあるプログラムを書いている ッティングに対して行った。それが TBL な た。ただしそれも , 自分自身のコードが埋 人たちは , その前に人気のあったプログラ のだが , おそらく誰かが「簡単に表をタイ ムのエラーをあざ笑っている。ても実は遠 プセットしたい」といったのてあろう。 まっているのを見つける以前のことだ。今 回しに彼らの成功をまねしているのだ。い てはもっと , もの分かりがよい れも仕事を完結させるために , 見えないと わば正義が明らかに行われていないのだが , このように不適切な位置 ( 順序 ) てのリ ころ <troff をかなり乱している。て、もこの いつかは彼らに番がまわ 結果 , 表のフォーマッティングも現代的な ガチャ処理は確かに悪いことだが , Joe がそ 心配はいらない タイプセッティングパッケージへのアドオ うしたのも許せる。彼は作業の完結のため ってくるのだから ンとなった にはどんな妥協が必要なのかを誰よりもよ 20 C MAGAZINE 1 2 5
オプジェクトマネージャを通して OpenDB にアクセスすることがて、きるて、しよう。し かし , OpenDB などは , 将来発売される製 品のコンポーネントとなります。 NewWave は長い間活躍して , オプジェ クト指向技術の普及を確かにサポートして きました。 NewWave はまた , オプジェクト 指向技術の利点から恩恵も受けました。ひ とつの要因は , もちろん , NewWave が最初 に登場したときに比べてハードウェアが大 きく変化したことです。私が疑問に思って いるのは , 真のオプジェクト指向環境では 新しいソフトウェアをサポートするために ハードウェアが大きく変化することが必要 なのか , ということです。私がとくに考え ているのは , Steve JObs と彼の NeXT ma chine の関係です。彼は , 世界のオプジェク ト指向全体をサポートすることを基本にし て , NeXT を開発したように思えるのです が , そこまでする必要があるのでしようか ? Crow 我々は特別な必要条件があるとは思 っていません。大きなディスク容量や , メ モリ容量 , 高速プロセッサや高解像度など の恩恵を受けていないアプリケーションデ べロッパがいるとは思えません。確かに NewWave もこの点て、は同じて、す。 NewW ave は , アプリケーションの内部操作性を非 常に強調しているのて、 , 私たちはいって、も ューザプラットホームやそのパフォーマン スに照準を置く傾向にあります。ューザが NewWave を実行しているとき , 一度に数種 類ものアプリケーションを実行しているこ とに突然気づくのはよくあることて、す。 れはあまり強力て、ない環境を使っている場 合には , あてはまらないかもしれませんが おそらく私はこれて、十分だとか , 満足し ているとか , もう何も必要ないなどとは決 していわないつもりて、す。て、も , 我々が開 発中に何か特殊な要件に遭遇しても , 特別 ードウェア設計が必要とは考えません。 我々が普段 , 特殊なハードウェア設計をあ まり念頭においていないのは , 既存のプラ ットホームやアプリケーションを利用して 14 C MAGAZINE 1 2 5 出口を見いだすという最初からの戦略があ ったからて、す。そして , 既存のシステムを 利用て、きないかぎり , 本当に市場にだせる 解決策は生まれないだろうと我々は考えて います。 コンビュータシステム技術の展開に関し ては , 平均的組織て、は , そして積極的な組 織て、さえ , ある期間にインストールされた システムの約 10 % を展開させるのが限界て、 す。既存のシステムを利用しないて、 , 新プ ランドのハードウェア技術やソフトウェア 開発に一から資本投資を必要とする解決策 は , 確実に最低 10 年の展開サイクルが必要 なのて、す。我々はこの世界て、長く働いてい ますから , 今から 10 年後にはすべて変わっ ていることぐらいは十分承知しているつも りて、す。 確かに変化は速いですからね。 Crow て、すから , まさに最初の時点から , 我々の戦略はいつも , 既存のシステムとア プリケーションを利用するシステムや先端 技術を開発することて、した 0NewWave はほ かの製品と同様 , 最新のシステムてあるこ とて、優位性を保てますが , 基本は既存のシ ステムとともに動作することて、あって , 決 してユーザが新技術のメリットを利用する ために従来のアプローチを捨て去ってしま うことて、はありません。我々はシステムの ビジネスに十分すぎるくらい関わっている のて、 , これが明確な戦略だと信じています。 新たな GUI への対応 技術の劇的な変化といえば , まったく 異なった技術を推進させる努力をどのよう に考えていますか ? とくにペン入力シス テムや , 音声入力とタッチスクリーン入力 の復活などですが。 Crow 我々は , GUI はインタフェイス設計 の進化に見られる水山の一角だと考えてい ます。 New Ⅵ rave のモシュール設計やデベロ ッパに提供しているツールは , ユーザイン タフェイスをアプリケーションの実働部分 から区別する方法によって , アプリケーシ ョンを作成するのに役に立ちます。ところ て、 , 正直にいって , 我々が NewWave て、提供 した方針と同じ基本に立ってアプリケーシ ョン全体を構築したデベロッパはあまりい ません。ほとんどのアプリケーションは , 既存の Windows や DOS アプリケーションを 改良したものて、す。しかし , NewWaveC' 我々 が持った基本的 Agent アーキテクチャて、ある タスクオートメーション機能は , ューザイ ンタフェイスから分離したアプリケーショ ンへのプログラムインタフェイスを提供し ます。このプログラムインタフェイスは , アプリケーションのユーザインタフェイス と実働部分の間にレイヤを定義しています。 我々は実験を行っています。現在はまだ 最初のインプリメンテーションの実験段階 なのて、 , その結果をお話することはて、きま せんが , PenWindows を使って , PenWind ows 下て、 NewWave を実行しています。とも かく , 直接操作に重点を置いた環境て、ある PenWindows 下て、も , NewWave はあなたが 想像されるようにすばらしいものて、す。 Ne wWave はまったく変更をしなくても , Pen Windows て、その力を発揮て、きます。しか し , PenWindows のようにペン入力による 環境の本来のメリットを得るためには , ジ ェスチャー認識をアプリケーションに組み 込むことが必要て、す。つまり , ジェスチャ 認識は , コマンドをアプリケーションに 送るメカニズムが明らかに異なっています。 NewWaveAgent は , コマンドをアプリケ ーションに送る標準的プログラムインタフ ェイスを提供するように設計されています。 我々が試作品の作成を進めているのは , Agent のためのジェスチャー認識フロント工 ンドて、す。これを利用すれば , アプリケー ション自体に変更を加えず , Agent を使って 各アプリケーション用のジェスチャー認識 を提供することがて、きます。 Agent はペンの 動きを認識し , どのアプリケーションが動 作の焦点を持っているかを判別して , 適切 なコマンドをそのアプリケーションに送り ます。つまり , 我々は , 変更を加えない既 存のアプリケーションに , ジェスチャーに
と完全合致 (exact match) のポリシーが関与 ればなりません。 します。最初に , Root からの派生クラスを してきます。これらのポリシーは , それぞ プロトコル間のお互いの関係は , ある面 ーっ作り , その新しいクラスを Topology と れ別々て、す。半順序は , トボロジーを整列 て、はクラスの階層を決定します。より一般 呼びます。 T 叩 010gY も , やはり抽象クラス するために使われ , 完全合致は一つのオプ 性に富んだプロトコルは , そうて、ないプロ て、す。 T 叩 010gY の中に , 汎用的なトボロジ ジェクトを見つけるために使われます。ど トコルよりも上位になるて、しよう。多重継 ーナビゲーションのプロトコルを , すべて ちらの場合も , 比較のポリシーは , 比較さ 承を利用したいと考える設計者は , 階層を の特定のトボロジーに適用て、きる純粋仮想 れる二つのオプジェクトの外部のポリシー 必要に応じて組み立てるやり方を望むて、し 関数として設けます。これらのプロトコル オプジェクトによって , 実装されるべきて、 は , すべてのトボロジーの外見をリニアに よう。 す。 機構のプロトコルは , 前に説明した要件 します。 TopoIogy から派生するクラスは , こうして , 実装がさまざまに異なるオプ から定義されます。含めるべき重要なメソ リンクトリスト , バイナリツリーなどの , ジェクトを , アプリケーションに適した順 ッドは , メモリ管理 , プリンティング , ト 特定のトボロジーて、す。特定のトボロジー 序概念と合致概念によって , 統一的に比較 ポロジーのナビゲーション , トボロジーの もクラスて、あり , それのインスタンスを作 て、きるようになります。たとえば , 複数の 操作 , アルゴリズムを特定しない演算 , 個々 れます。これら特定のクラスの中に , 操作 文書を、、作成日付〃や、、最前の更新日付〃によ のアルゴリズムに固有の演算 , そして値の のプロトコルや , より特定的なナビゲーシ ってソートする場合 , ランタイムに順序づ 変換て、す。ポリシーのプロトコルは , ポリ ョンの機構などを設けることがて、きます トボ。ジーを操作するプ。ト。 ~ ( 挿入なら けポリシーを適切に選ぶことによって , 同 シーの要件により定義されます。ポリシー じ機構て、ソートて、きなければなりません。 は , トボロジーのオーナーシップ , 半順序 , には , そのトボロジーのノードが情報オプ 完全合致 , そしてハッシングをカバーして ジェクトのオーナーか否かを決めるスイツ ハッシングは , オプジェクトを表す一つ の計数を提供する ( 数て、はないものを数て、表 いる必要があります。 チを設けます。 す ) 機構て、す。この番号は , ハッシュテープ まず , 機構のプロトコルをマップします。 次は , 汎用のアルゴリズムプロトコルの 最も一般性のあるプロトコルは , メモリ管 ルや辞書中のバケッ〔複数データの入れ物 : ためのクラスを作らなければなりません。 理用とプリンティング用て、す。これらのプ 配列やリストなど〕の位置を見つけるため Root からの派生クラスをもうーっ作って , ロトコルを , 同じクラス ( Root クラスと呼ぶ ) それを AIgorithm と呼びます。これも , 抽象 によく使われます。このハッシングもやは こに , 汎用的なアルゴリズ り , 対象となるオプジェクトとは別のポリ に入れ , Root をクラス階層のトップに置き クラスて、す。 シーオプジェクトによって , 実装される必 ます。 Root は抽象クラスになります。 ムプロトコル ( 探索など ) を , すべてのアル ゴリズムクラスに適用て、きる純粋仮想関数 次に , Root の中のメモリ管理のプロトコ 要があります。 ルを , C 十十が提供している staticnew, お として設けます。 Algorithm からの派生クラ クラスの階層 よび static delete にします。 static なメソッ スは , 個々のアルゴリズムに固有のプロト ドは , クラスのインスタンスを作らずにプ コル ( たとえばキューへの挿入 ( Enqueue ) な 次のステップは , 直交的な機構とポリシ ロトコルにアクセスする手段を提供します。 ど ) を持ちます。 Queue など , AIgorithm か ーを , プロトコルへとマップすることて、す。 らの派生クラスは , インスタンスを作るこ プリンティングは , 純粋仮想関数として プロトコルは , インタフェイスの定義て、す。 提供します。純粋仮想関数とは , 各クラス とがて、きます。 C 十十て、は , 最終製品はクラスの宣言て、しよ の中て、そのクラスのため独自のプリンティ 最後に , ポリシーのプロトコルをマップ う。クラスの階層は , 機構とポリシーにア ングのメソッドを定義て、きる , という関数 します。仕事を単純化するために , Root か て、す。 Root クラスは抽象クラスなのて、 , 仮 クセスするプロトコルから成り立ちます。 らの派生クラスを三つ作ります。最初のは これらのプロトコルには , 十分な一般性が 想関数もこのレベルて、は純粋て、す ( R 。 ot のイ PartiaIOrder と名づけ , ' こに半順序プロト あって , 関連する機構を互いに入れ換えて ンスタンスはありえないのだから ) 。 コルを入れます。このクラスは抽象クラス も OK, というようになっていなければなり さてそうすると , Root から派生するクラ て、あり , 純粋仮想関数を提供します。設計 者は , この PartiaIOrder からの派生クラスを ません。またポリシーのプロトコルも , 十 スはどれも , C 十十のメモリ管理を使い , ま 作って , 半順序プロトコルの現実の実装を 分な一般性があって , あるタイプの決定を たプリンティングのメソッドを提供てきま 提供て、きます。このプロトコルが , Root を 必要とするどんな機構て、も , そのための単 す。 次に , トボロジーのプロトコルをマップ 指すポインタまたは Root のリファレンスを ーのポリシーを使えるようになっていなけ オプジェクト指向設計への直交性概念の導入 23
けて、はありません。ファイルを読まないぶ ドのリファレンスとメニューを表している ノ設計案 2 ん表示が速くなるかもしれませんし , 構造 構造体の配列て、す。リファレンスとメニュ が単純なぶんバグが出にくいかもしれませ ーはどちらも , 項目の名前とその先のノー ノードの中身の文章をみな , メモリに取 ド名の一対 ( PAIR ) からて、きています。その ん。 り込むのがまずいなら , List 6 て、はどうて、し データ構造を決めるときには , そのデー 配列の何番目まて、使われているかは max c タ構造がどう使われるかを考えるのがたい よう。 ref index と max menu index のメンノヾて、 せって、す。 す。 今度は text のかわりにファイル内の位置 どの処理に重点をおくかて、 , どういうデ ファイル内の位置は longpos が fte Ⅱ ( ) の ( 関数 fte Ⅱ ( ) の返り値 ) を持ってみました。 ータ構造がよいのかがわかってきます。ス れならメモリ不足の心配はありません。 返り値 , longline がファイル内の行番号を 問題点は ? ノードの「構造」が構造体 NO ローガン風にいうなら「使い方が形を決める」 示しています。ファイル内の行番号という DE 2 には反映されていません。つまりこの とて、もいいましようか。グッドデザインを メンバが含まれているのはエデイタを自動 ノードの「上」「前」「後」のノードへの道しる 目指してください。このへんは次回に詳し 的に起動させる行番号の情報を使うからて、 べが構造体 NODE 2 のメンパ内に入ってい く考えてみるつもりて、す。 す。 ません。ということは , ノード間の移動を 筆者はメモリ確保の処理を楽に作りたか 行うときにはいちいち pos へシークして , ノ ったのて、 , 配列を多用しました。 ードを読んて、 , ヘッダの情報を得る必要が G IJ i nfO プラウサとの比較 あることになります。 今回の付録ディスクに収録した info プログ そう。構造体を設計するとき , すなわち ラムて、取ったデータ構造は List 7 のとおりて、 データ構造を決定するときには , どのよう す。ちょっと複雑て、す。構造体のメンバの ちなみに , 3 月号て、紹介された DOS 上て、動 な情報が必要か , どのような操作が必要か , 中にさらに構造体や配列が入っています。 作する info プラウザにも , ノードの構造体が をよく考える必要があることがわかります 構造体 NODE のメンバを簡単に紹介しまし 登場するのて、比較してみましよう。 List 8 て、 ね。ノードの表示 , ノード間の移動 , そう す。配列は使わず , メンバ next による線形 いう操作を行うとき , 設計したデータ構造 メンバ header はノードのヘッダて , 構造 リストを使っているようて、すね。またファ て、はどんなことが起こるかを見定めなくて 体 (HEADER) になっています。ここにはこ イル内の位置は pagetop, nodetop という LO のノード , 前のノード , 後のノード , 上の はなりません。 NG 型て、持っています。また , ファイル名 f ノード , の名前が格納されています。 ilename をノードに含めていますが , これは たとえば List 5 のように中身をすべてオン メモリて、持つのがいつも悪い方法て、あるわ メンバ cref とメンバ menu はそれぞれノー info が複数ファイル間にまたがったノードの 移動を許しているからて、す。今回筆者が作 ノードの定義 [ 1 ] 成した DosInfo て、は複数ファイル間はサポー トしていません。 もうひとつの特徴は , ファイル名やノー ド名に配列て、はなくボインタを使用してい ることて、す。配列を使う ( 配列を切る ) と , メモリが始めからドンと確保されてしまう のて、 , メモリがムダに使われる場合もあり ます。 ただしポインタと malloc ( ) を使っている とプログラムが複雑になったり , free( ) し 忘れてバグを生んだりすることもあります。 このあたりは設計者の腕の見せどころて、し ノド設計案 3 List 名内 、上っな 00 4 ノードの定義 [ 2 ] List 1 : typedef struct { name[MAX KEYLENJ : 2 : Char 3 : long POS ; 4 : } NODE_2 ; / * ノード名 * / / * ファイル内の位置 * / 68 C MAGAZINE 1992 5
なれ P マウス 最近では、コンピューターに触る人 というのを特定するのが困難になっ てきています。少し前までは、多少なり ともコンピューターに関しての知識を有「 している人だけが、コンピューターを利 用していたものですが、今では全くコン ピューターの知識がない人も、この電子《 ~ 機器に触らなければならないのです。 それにともなって、マウスを利用し ロ たグラフィカルューザーズインター フェース ( GUI) というものが脚光を浴び るようになってきました。マウスを利 用して、希望する処理を画面上で選び 出す : ・。かなり直感的に処理を進めていく ことができるので、コンピューター初心者 であっても習得は難しくありません。こ 一怦のような、とつつきやすいソフトウェア は、これからますます必要とされること でしよう。 しかしソフトウェアの開発者にとっ て、この時代の流れは手放して歓迎 することのできないものかもしれません。 初心者に優しい GU 一環境を達成させるた めには、非常な労力が必要とされるから です。 しかも厄介なことに、この GIJ 一とい うのは、その名の通りグラフィック を多用します。開発者は試行錯誤を繰り 返しながら、分かりやすい画面を設計し なければならないのです。もしできあが った画面に少しでも気に入らないところ があれば、もう一度テサインシートを前 に修正をし、コードの修正・ : 。とてもじ ゃないけれど、やってられないでしよう円 さらに GIJ 一環境ては、操作系の整合 性にも気をつかわなければなりませ ん。 GU 一の実現には、開発者がしなけれ ばならないことが山積みになって立ちふ さがっているのです。 、 58 ′ 000 円 ( 表示価格には消物税は 含まれておつません ・オートテモと評価のために体験版の《があります。 希望の方は、 1500 円切手を同封のうえ弊社までお申し込みください。 ・ Nifty - Se 「 ve の「体験版ソフトウェアステーション」でも、 の体験版を提供中です。 「利用者にやさしいスクリーンをもっと簡単に作りた 本体 . NEC PC -9801 シリーズ ( PC -9801 / lJ2 / 98XA / 98LT 、 98XL い。」と言う願いを。。《は形にしました。■ / 98 日 L のハイレゾリューションモードは除く ) 画面作成て画面のレイアウトの設計および作成をしま EPSON PC -286 / 386 シリーズ。 す。線や円などの 19 種類のエレメントと文字て画面を 周辺装置 . バスマウス ( PC ー 9872 相当品 ) と MS - DOS ( V2.11 以上 ) 作成し、豊富な編集機能てすばやい変更が可能です。 は必す必要。画面印刷は、 PC - P 日 201 相当品のプリンタ ■バターン ( イメージテータ ) やタイルバターンなとは に対応。 バターンエテイタで作成します。自由な大きさのノヾタ ■ M フォントを使用するには、マルチフォント日 OM ボード ーンを作成します。■レイアウトか完成したら画面定 ( PC -980 ト 38 ) と MS-DOS V3.30A 以上が必要。 義で、入力する項目や各種の MM 饑能を指定します。 ■イメージスキャナは PC7N502 / 503 / 506 。 または GT- 1000 / 3000 / 3000V / 4000 / 6000 に対応。 ー画面定義が終了すると、統合生成て C 言語のソース プログラムを生成します。複数の画面を指定の個数の対応言語 MS - C Ⅳ 3.4.5.6 ) 、 Quick-C(Vl. 2) 、 Tu 「 b0-C(V2, C + + ) 、 Lattice-C(V4) C ファイルに生成します。目的のプログラムを作成し、 コンバイルして付属の S に PC ー 0 ライプラリをリンク 株式会社アークビット すれは、実行プログラムが完成します。■で ぐは、アプリケーションの設計及び作成を強力にバ 〒 272 千葉県市川市ニ俣 1 ー 12 一 1 石元ビル 4F 電話 0473 ( 28 ) 1275 FAX0473 ( 28 ) 3612 ックアップします。 動作環境 ' ト : E 報旧蛔線 可引巉出 3 ; ドり込み - リ線 : 蛔 一味日一い D ー く資料請求番号 004 〉
C 教授が r. 2 で登場 / 楽しく学んで、実力アップ / もちろん C 教授がやさしくフォロー 冊 -9800 シリーズ用 また、オフィスや学校に、 C 言語の教材としてご活用下さい。 特長 1 . 初心者にもケーム感覚で、楽しく C 言語が理解できる。 2. 理解度に合わせて次の課程に進むことができる。 3. 各章に練習問題があり、自分の理解度を確認できる。 4. 最終章に C 教授の全体評価がある。 5. 経験者には、 C 言語の手軽な復習教材として利用できる。 対応機種 : PC ー 9800 シリーズ及びその互換機 メディア : 5 インチまたは 3.5 インチ 2HD ディスプレイ 高解像度カラーディスプレイ ( 640X400 ドット ) 必要メモリ : 640KB 以上 対応 0 S : MS-DOS Ver. 3.0 ( または 3.0 以上 ) ( ハードディスク : 2.5MB 以上必要 ) ・お求めは全国の有名パソコンショップ、またはメディ アサイズ・送り先をご連絡のうえ銀行振込で直接 当社まで。振込先 / 協和埼玉銀行高円寺支店 ( 消費税別、送料 \ 1 , 000 ) 普通 : 0035081 セイユーシステムズ株式会社 ・本プログラムは中国・上海交通大学大学院情報工学 C 研究室とセイユーシステムズ ( 株 ) が共同 開発した製品です。・本製品の仕様は、改良のため予告なく変更される場合があります。・本製品 カタログに記載されている各会社名及び製品名はそれぞれ各社の登録商標または、商標です。・表 示価格には消費税は含まれておりません。 く資料請求番号 1 ″上〉 内容充実 V Ⅱ出来 / 発売中 0 発売予定価格 \ 420 , 000 IBM PS / 55 、 DOS / V マシンの渟及と共に開発支援ツールのニーズが高まってまいりました。本バッケージ てはソース付きて以下の構成内容からなります。ツール関数 : キー入力関数、画面制御関数、メニュー関 数、ウインドウ関数、グラフィック関数、マウス関数、プリンタ関数、 PC DOS 関数、 RC -232C 関数他。 ◆ Windows 、 LAN 対応 CAD : 「上海 CAD 」スタンドアロン版 Y98 , 000 NetWave 386 、 10 クライアント版 Y480 , 000 ・お問い合わせ、お申し込み セイユーシステムス株式会社 〒 166 東京都杉並区阿佐ヶ谷南 1 ー 34 ー 1 ー 402 ◆◆◆ TEL. 03 ー 5377 ー 1632 / FAX. 03 ー 5377 ー 3923 当クなありま九 ・今までに開発したプログラを無断夛ァ 0 れたがある。 ・ソフトを開発するにあた違戸が配だ。 ・人に貸すプ 0 グラムをあを使わ扣 ~ な、。 ・ 1 枚しか渡していないデ宅版やサンプル版が、ろ、ろ所で使われて いるようだ。 ・商品ト 0 発売数 0 = 比 ~ 当 : 当 = 型 . い合せが多すぎる。 ・大きな需要があるソフトなのを少か売れてしおい。 ・簡単なプロテクトがあれば試てみたい。 特定の人だけのセキュリティ。 ワンタッチで暗号化。 、 \ 39 , 800 \ 28 , 000 ~ アセッ下ポツ。クス ノ、スワドアフ。 ・データファイルや文書ファイル等の不正使用を防止し ー実行形式ファイルを対象としたシステムて、従来のプ ます。 ロテクトとは全く異質のニュータイプセキュリテイソ ・暗号化・バスワード等によって、正規ユーサーだけか フトです。 ・企業内の大切なプログラムや個人用プロクラムを特定 使える環境を作ります。 ■暗号化等は、メニュー画面から簡単にできます。 の人だけが自由に利用てきるようになります。 ・暗号化したまま工テイトやコンバイルがてきます。 ・コマンド実行によりバスワード機能か自動的に付加さ ■ノーマルファイルとの混在も可能ですので暗号化を気 れるため、誰ても簡単に利用てきます。 にせず使えます。 ( 各機種共シリーズに対応しています ) ・ NEC : PC98 ・旧 M : PS / 2 、 PCAT / XT 、 PS / 55 ・東芝 : J ー引 00 ・富士通 : FM ー R ・爲・日立 : 田 6 ・松下 : バナコム M ・ AX 各種 \ 18 , 000 違法コビー防止用自動プロテクトシステム。 1 セット加枚入 \ 28 , 000 より ~ オートディスクガード ・実行形式ファイルを対象としたプロテクトシステムです。 ・プロテクト作業は、専用のプログラムを使って簡単にできます。 ■プロテクトのかかったファイルは、どこにでもコピーできますが、起 動時には専用のフロッピーティスクが必要となります。 ー同時に暗号化もしますので解析防止にも役立ちます。 ・八一ドディスクに対応したタイプもあります。 ・ MS ー DOS が動くほとんどの機種に対応しています。 サプティレクトリを丸ごと Lock 。 AUTODISK GUARD Barrier Asset BOX PASSWORD-a ノすリアー \ 30 , 000 ■暗号化により、解析を防止するほか、バスワード入力 によってサプティレクトリイを使用できる人を制し ます。 ■ LOCk したサフティレクトリイは隠しファイルとなり、 通常の MS - DOS ではアクセスできなくなります。 ・オリジナルティスクを持っている人か、正しいバスワ ードを入力したときのみ暗号を解除でき、サフテイし クトリイを使うことかできます。 ■バスワードの登録はメニューを使って簡単にできます。 また、サフティレクトリイの Lock / lJn ck は、た った一行のキー入力とバスワード入力て済みます。 ※ MS ー DOS は、米国マイクロソフトネ土の登録商標です ※記載の価格には、消費税は含まれておりません 対応機種 物 0 無ランハート セキュリティゾフト開発の 専門メーカー 〒 4 川静岡県沼津市高島本町 16 ヨ 6 三井生命沼津高島本町ヒル 4F TEL ロ 559 ー 25 ー 8222 代 FAX 0559 ー 25 ー〃 29 く資料請求番号 174 下〉