当該広告中のメーカー名 / 製品名は各社の商標・登録商標です SUN-OS, HP-UX, IBM-AIX, SGI-IRIX, OSF/I, Ultrix Windows-NT, PC UNIX, DOS, OS / 2 , Mac-OS 他 For ss 4 / 5 / 20 用内蔵ドライプ 2GB 135 , 000 円 4GB 240 , 000 円 リムー / ゞプル・ディスク シリース 7Wide & Ⅳ a な 0 Ⅳ ) 2 d ⅱレ e . 用 D / s k みドお。ーを PC, W/S の全機種 S C S I - 2 ~ 16GB 対応 S C S I - 2 / 3 8.6G8 d 「ⅳ e 寸応 PC, W/S の全機種 キャニスタ d ー f f 0 「・れ t ー a ー S C S I ・ 2 / 3 U い r a み W ー d 0 d i f を・「 e れい我 ! S C S I - 2 / 3 U い r a / W ー社 0 社 i f f ・ r ・ n t i a ー ドディスク価格表 全機種フォーマット済・各 0 S 対応インストール手順添付 使用環境にあわせて D ⅱ v e P a r a m e t e 「のチューニングをして出荷 参、考筆第 ディス。ク 新価、格 , は ←ポリューム数 対応レ F 対応 PC,Å W/S (SCSIID 第 ) ー 啼問合塾もゾ 1 1 GB 65 , 000 1 2GB 120 , 000 1 4GB 190 , 000 1 9 GB 360 , 000 2 ~ 7 18 ~ 60GB 700 , 000 高速入出力ディスクアレイ仕様 (RAID 0 , 1 , 3 , 5 可能 ) / キャッシュメモリ 4MB ~ 64MB 18 ~ 90GB 1 , 000 , 000 PC, W/S の全機種 一朝 4 d ⅱレ e 用 D / s k ~ 34GB 対応 PC, W/S の全機種 U Wide 3- c ん〃〃 el ( 720M お / “ c. ) D なた A な S C S ー - 2 / 3 PC, W/S の全機を U ltr 4 / W ー 0 d ー「 f r をれ t ー a ー ・ 14 ~ 60GB 対応 ・オフ。ションで 120GB まで対応 SUN-OS ー HP-UX S C S ー - 2 / 3 旧 M-AIX SGI-IRIX U ー t 「題 / W i d 0 OSF/1v ー Mac•OS 0 ル c A ′ X 3 畆ー f f 0 「・れ t i a ー W ー n d 0 W s T (RAID Co 0 〃を′ & EncIosure) 1 OwcArray Series RAID お〃 c ん s 〃′ e 参考価格 0 ル cA ′ ra EX3(RAID c 。。 & お祠。。 , の 電源の二重化・多重化、 A ID コントローラの二重化も可能です 下記価格は RAID EncIosure の電源が ( 300 Ⅳ k2 ) のものです 14GB( 2GB x 7 ) ダ / : 500 , 000 円 28GB( 4GB x 7 ) ダ / 応 570 , 000 円 60GB( 8.6GB x 7 ) ダ / : 700 , 000 円 RAID SYSTEÆれ含ディスクドライ刀 下記価格は R 剛 D En 引 os e の電源がニ重化 / あトスルフ。対応のものです 第、第ツを ユ 4 GB ( 2GB x 7 ) 950 , 000 円 28 GB ( 4GB x 7 ) 7 , 880 , 000 円 60 GB ( 8. 6GB x 7 ) 3 , 750 , 000 円 ユ 20 GB ( 8.6GB x ユ 4 ) Ca 〃 200 GB ( 8.6GB x 24 ) Ca 〃 〃 0 ″お : Ⅳ 2 な 0 ル 0 ′ Wide or Ultra W イ S 加 g 〃イ / Di ガ e 厩り 300 GB ( 8.6GB x 35 ) Ca 〃 RAID ッ el の 7 , 3 , 5 & ん / ″ & Wa ′襯 S ル / 二重化電源対応 600 GB ( 8. 6GB x 70 ) Ca 〃 SUN-OS, HP-UX, IBM-AIX, SGI-IRIX, OSF/I, PC-UNIX, Mac-OS, OS / 2 , W 加イ 0 脚 - Ⅳ T ダ / : 日本計算化学サービス株式会社〒 251 藤沢市辻堂 1579-14 ビル TEL 0466-30-1407 FAX 0466-30-1405 9
理論である。公開鍵と非公開鍵は、暗号を破ろうとする者 に知られない 1 組の素数から導き出される。そこで、素 数を擱則して鍵を因数分解しようとする総当たり方式の不 正行為を防止するために、大きな素数にもとづく大きな鍵 ( 512 ピット以 E) カイ吏われる。ただし、「公開町音号シス テムは大きな鍵を利用しているから、それよりも小さな鍵 を使う秘密靆システムよりも安全」とはかぎらない。 公開音号システムには、秘靆システムより優れた点 がある。ます、公開鍵は Kerberos のような鍵の受渡し のための複雑なプロトコルを必要としない。さらに、公開 鍵では電イ署名とデータの整合性のチェックもできる。ド キュメントに電子的に署名すると、ハッシュ関数によって ドキュメントの一方向固定サイズのハッシュ値が生成され る。この一方向の値は Message Digest ( 以下、 (D) と 呼ばれるが、チェックサムあるいは電子的な拇印と考えて もよい。 MD は、送り手の鍵を用いて暗号化される。受け 手は , MD 刎直を計算し、それが送られてきたものと同し 値であるか否かをみてデータの整缶生を石忍する。受け手 は、ドキュメントとともに送付される暗号化された MD を送り手の公開鍵を用いて角売する。両者刎勧ゞ同じであ れば、伝送の途中でで煉されていないことが保証さド キュメントの整合性カ蔀忍できる。受け手カ甘寺っている公 開鍵カ鉦当な送り手のものであれは、そのドキュメントは 間違いなく送り手が送ったものだと証明される。 デジタル署名の有効性を立証するには、公開鍵の正当性 を証明するイ督はみが必要である。たとえば、 2 人の友人の あいだであれば、かなりの確率で安全に公開鍵を茁妾受け 渡せるが、他人どうしの場合はかなり難しい。したがって、 鍵の配布センターでは数多くの個人や団体の公開鍵を預か らねばならない。公開鍵をほかの人に知らせたい人は、鍵 配布サーピスを通して自分の公開鍵を登録すれはよい。大 部分の公開音号化システムでは、ユーザーが自分でキー を生成するので、己布センターは詐称もしくは偽造を防 ぐために保証機関 ()A : Certifying Authority) の彳齬リ も兼ねなければならない。 CA は、いわば電イ的な公証人 と考えられる。 CA は、ユーザーに対して身分を証明でき るもの ( 運転免許証や公正証書など ) の提示を求める。ユ ーサーは、それらの証明書を添えて公開鍵を CA に提出す る。すると、 CA はユーザーの公開鍵と氏名、有測限、 発行した CA の名前、シリアル番号などの情報を記した UNIX MAGAZINE 1997.4 UNIX & Security 1 ■ 電イ的な証明書をユーサーに交付する。これらには、すべ て CA の非公開鍵を用いた電 - 子署名か記されている。 ITU ( 旧 CCITT) X. 509 国票準で定義されたこの証明ガ去 は、多くのアプリケーションで証明書を発行するイ督はみと して用いられている。 ューサーがメッセージに署名すると、証書カ曙名の一部 に書き加えられる。受取り人は、 CA の公開鍵を用いてメ ッセージの正当性を石忍する。証明書の偽造を防ぐには、 CA の公開鍵も安全に保管しなけれはならない。そこで、 CA はさらに上位の機関による証明を受け、証明の階層構 造か形成されていく。この構造の項点に位置する CA は、 もっとも信頼できるものでなけれはならない。この本咎はみ では、 CA の非公開鍵のをがきわめて重要になってくる。 非公開鍵が盜まれると、証明書の偽造が可能になる。こ のような事態を防ぐために、 CA では CSU (Certificate Signing Units : 証明署名ユニット ) と呼ばれる不正防止 用のイ督はみを使っている。さらにセキュリティを強化する ために、 CSU では何人かの職員に複数の鍵を持たせるこ ともある 9 電イ署名のために独自の CA を設け、職員の 証明書を発行する企業や組織もあるだろう。 公開釶暗号システムには矢可斤もある。たとえば、公開鍵 は秘密音号システムよりも遅い。したがって、ほとんど のアプリケーションでは最商なセキュリティとパフォーマ ンスを両立させるために、公開鍵と秘密とを組み合わせ て利用している。この場合、基礎になる秘音号方式に 必なセッション鍵云達に公開暗号方式を使う。その うえで、秘密鍵システムによってデータか暗号化される。 公開鍵システムと秘密靆システムには、秘密鍵と非公開 鍵の保管という共通の間題がある。ユーザーは、自分の秘 密鍵や非公開鍵を安全確実に保管しておかねはならない。 鍵をオ絲ーる Smart card はこれに対する 1 つの解決策 ではあるが、物理的なセキュリティ上の地をもたらし、 ワークステーションに新たなハードウェアを追加しなけれ ばならなくなる。 Message Digest 111 る。 MD は、主として認証 ( 電イ署名 ) とデータの整合 であり、ドキュメントに対して固定長ハッシュ値を生成す さきほど述べたように、 MD は一方向のハッシュ関数
SimpIeName ldentifier { CLASS_TOK C1assInit CLASS_TOK C1assInit CLASS_TOK C1assInit CLASS_TOK C1assInit CLASS_TOK C1assInit CLASS_TOK C1assInit Qua1ifiedName Name C1assDec1aration Modifiers Modifiers Modifiers Modifiers ー CLASS_TOK C1assInit . ' ldentifier { $ $ = malloc(strlen($l) + 1 + str1en($3) + 1 ) ; strcat($$, $ 3 ) ; strcat($$, strcpy($$, $ 1 ) ; lnterfaces C1assB0dy C1assOut Super C1assB0dy C1assOut Super lnterfaces C1assBody C1assOut CLASS_TOK C1assInit C1assName C1assBody C1assOut CIassName lnterfaces CIassB0dy C1assOut C1assName Super C1assBody C1assOut C1assName Super lnterfaces CIassB0dy C1assOut C1assName C1assName C1assName C1assName C1assBody C1assOut C1assInit C1assName C1assOut Super { jdatainit() ; } ldentifier { cI . cname { jdataprint() ; } EXTENDS_TOK C1assType { c1. sclass Fie1dDec1aration Modifiers Type Variab1eDec1arators Forma1Parameter ー Type error c1assADD($1) ; ー Type VariabIeDecIarators ー Modifiers error c1assADD($2) ; Loca1Variab1eDec1aration Type Variab1eDec1aratorId { c1assADD($1) ; } 90 Type Variab1eDec1arators { c1assADD($1) ; } UNIX MAGAZINE 1997.4
連載倉敷芸術科学大学のネットワーク構築ーの 写真 6 勸、塚の DHCP サーパー Librett020 写真 4 10 / 100Base T が標準の SGI 02 DHCP サーバーに仕立てます。 Libretto なら場所もと らないし、乍中の騒音も気にならない程度てす。なによ り、無停電電源が最初から付いています。私の自宅でも、 Libretto が DHCP サーバーとして 24 時間休ます活躍 しています ( 写真 6 ) 。自分のアクセスしそうなネットワー クに組み込んでおけば、ノート PC ューザーにとって幸せ な竟の出来上がりです。 倉敷芸科大では、大学力叫与するイベントとして仮設の インターネット・コーナーを設鶯するために、 ISDN ルー dows 竟に住んでいるのなら、多少嘸理をしてでも去斤 タ ( ヤマハの RT100i0 写真 7 ) を 2 台購入しました。ほ のマシンにしたはうがよいかもしれませんが、私のように とんど何も知らない学生でも設定がおこなえることと、設 デスクトップ PC では BSD/OS しか動かしていないよ 定去を熟知している学生が多いことを詔面して選定しま うな人種には、たいへん魅力的な状況です ( 写真 8 ) 。パソ した。これでまたイベントか増えるのかと思うと、すこし コン雑誌ではありませんから、 こでは生能面での細かな 気か重くなりますが・・ 選定理由については触れません。運用サイドからみると、 やはり 3 年間の保守カ咐くものカ鱚しいですね 2 。 20 万円コース ネットワーク管理で利用する各種のサーバーを、 PC で漣用しようというサイトか増えているようです。 Win- 描匠の PC は 1 世代交代が敷しく、一に前のモテルであれ dows NT べースだったり、 FreeBSD であったりと形態 ば格段にお買い得となります。 MMX Pentium の登場に はさまざまですが、たいていの場合、デスクトップ PC で より、甬の Pentium を載せている PC は叩き売り状態 構築されているようです。私ロ邇尺権があれば、おそらく になっています。とくに、 P5 ー 200 (Pentium 200MHz) や P5 ー 166 のマシンは 20 万円前後で購入できます。 Win- 2 私の周りには DEC 、 HP 、 IBM 、 DELL の PC があります。 写真 5 10 / 100Base T 文寸応の PCMCIA カード 'VDK ・ Lan 40 UNIX MAGAZINE 1997.4
連載 /FreeBSD ノートー① リスト 2 関数 startup-setlocale()(l) startup—setlocale(category, locale) int category ; const char *10ca1e ; int found, i, len; Char *env, *r; if ( ! PathLocaIe & & ! (PathLocaIe = getenv ( "PATH—LOCALE" ) ) ) PathLoca1e PATH_LOCALE ; リスト 3 関数 -startup-setlocale() ( 2 ) static int startup—setrunelocale (encoding) Char FILE *fp; char name [PATH—MAX] ; RuneLoca1e * て 1 ; if ( ! encoding) return(EFAULT) ; * The and "POSIX" locale are always here . if ( ! strcmp(encoding, "C") Ⅱ ! strcmp(encoding, "POSIX") ) { CurrentRuneLoca1e = &_Defau1tRuneLocaIe ; (void) (void) (void) (void) return(O) ; strcpy (name , strcat (name , strcat (name , strcat (name , PathLoca1e) ; encoding) ; "/LC_CTYPE'I ) ; の他の権限を入手して悪用する危険性がある、ということ になる。 対応と対策 間題の本質はライプラリ関数 strcpy() の仕様にある。 strcpy() はバッフアへの書込みをおこなうが、その長さ は引数のデータによって決まる。引数にプログラマーの予 期しなかった大きな値が入っているとバッフアカヾ叡・し前 述したような問題か起きる。このような性質をもったライ プラリ関数としては、ほかにも strcat() 、 sprintf() など がある。 今回発見されたセキュリティ・ホールは、このような関 数を含む setuid あるいは setgid されたプログラムには、 どれにも潜在的に存していることになる。プログラムの UNIX MAGAZIN E 1997.4 内部で作成されたデータならはあらかじめ長さを知ること ができるので上如勺間題が少ないが、プログラム外から与 えられたデータをコピーする場合には対策が必要である。 たとえば、 strncpy() のように前もってバッフアに書き 込める長さに制限をえることのできる関数を使う、ある いはプログラムの構成そのものを見直して危険のある関 数の使用を回避する、といったガ去が考えられる。 FreeBSD プロジェクトでは、このセキュリティ・ホ ールが発見されたのを受けて、現在公開されているバー ジョンへのパッチを含むバグレポートを公開した。それと 同時に、公開されているバージョンのうち最新の 2.1.6 ー RELEASE を全面的に見直して安全策を施したものを 2.1.7-RELEASE として公開した。 はかの OS についても、 buffer overflow vulnerabil- 105
1997 年 4 月 1 日発行 ( 毎月 1 回 1 日発行 ) 第 12 巻第 4 号通巻 126 号昭和 63 年 9 月 5 日第三種郵便物認可 マツマ - にツの (. 。マ刀ンノ OUNIX Communicati0 第 030 彙 es ・・カーネレを読もう ( 8 ) Radix す′ ee による経路制御 ◆ UN ー X 知恵袋・・・ネームサー′ヾー ( 2 ) 設定 ODaemons & 0 ′ ago れ S ・・・ Au 彙 00 e れ彙の導入 ◇ NE す WOR す H ・・・ NFS の歩み、 PC 用 NFS 製品 ◆ワークステーションの基礎知識・・・ CPU ◇ F ′ eeBSD ノート・・・セキュリテす 1 ホーレ ◇倉敷芸術科学大学のネットワーク構築 ・・・年度末の買物リスト ◇暗号イヒシステムの概要 1 7 4 号 810 円
プログラマー入門 JavaScript(6) 荒井美千子 フレームは文書の枠 ばして、後半の「 JavaScript て操作するフレーム」の節 知ってるよ " という方は、前半のフレームの説明部分は飛 かったるいなあ。フレームなら り方から始めましよう。 失礼しました。それではさっそく、フレームの甬乍 どんなものかもさつばり分からないって ? フレームってなんだろう ? 前回の記事は読んでないし、 は面倒そうです。 どで Web ページを自測庄成するとき、フレームを操るの かは分かりません。しかし、たしかに CGI プログラムな この問答が Web の世界の王堋大を央しているのかどう ジにまでは手が回らへんのかも」 ど、僕のようにサーチェンジンで見つける奧のほうのペー 「そのせいかなあ。 こぞ ! というべージに使うてるけ りや、フレームって作るのか面倒やけど」 「あんたが見るべージの傾向に問題があるんやないか ? そ んやで」 「せやけど、フレームで作ったページって案外見かけんも は、この機能を用いたページをバすることができます。 Netscape 2. x 以降や lnternet Explorer 3. x 以降であれ せんでしたが、最近はほかのプラウサも対応しています。 機能です。当初は Netscape のプラウザでしか表示できま これは、最初に Netscape が HTML に追加した拡張 Script で扱ってみましよう。 予告したとおり、今回は Web のフレーム機能を Java- UNIX MAGAZINE 1997.4 以降に進んでください。 表示できるまでにひと騒ぎ フレームは、プラウサのウインドウを一ト . 下や左右に分割 する機能です。 HTML については習うより慣れよです。くだくだと説 明するより、自分で HTML ファイルを作って表示して みるのか道です。お手許のテキストエデイタで、リスト 1 の HTML ファイルを作ってください。 こにはフレー ムのあらゆる機能か満載されています。 さらに、 framel. html—frame7. html と名付けた 7 っ の HTML ファイルも同じディレクトリに作ってくださ い。フレームの機能を石忍するだけなので、ファイルの中 身はなんでもかまいません。できたら、リスト 1 をフレー ム対応のプラウザで表示してみましよう。図 1 で示した ような 7 分割のウインドウか表示さオは成功です。 「あれ ? 、、あんたはフレームを知らんね " やて」 「そりや、フレーム対応のプラウサを使うとらんからや」 フレーム機能をサポートしていないプラウサでは、 く nof rame > く /noframe> の部分か表示されます。 正確には、フレーム機能をサポートしていないプラウザ では frameset タグも、 frame タグも noframe タグも知 らないので、とにかく処理を進めて noframe タグのあい だの普通の HTML の部分だけを表示します。つまり、特 別な処理は何もしません。 一方、フレーム機能をサポートしているプラウサは、 frameset と frame を解釈し、さらに、、 noframe タグで 93
THROWS_TOK ; THROW_TOK ; return TRANSIENT_TOK ; return TRY_TOK ; return VOID_TOK ; return VOLATILE_TOK ; return WHILE_TOK ; return PLUSPLUS ; return MINUSMINUS ; LABLAB ; return RABRAB ; return RABRABRAB ; return LEQ ; return GEQ ; EQ ; return NEQ ; return LAND ; LOR; throws throw transient t ry VOid v01ati1e while ー十十 " くく " return FIoatingPointLitera1 ; FIoatingP0intLitera1 ; return "false" B001eanLitera1; return / * まだまだ甘い * / CharacterLitera1 ; / * まだまだ甘い StringLiteraI ; Nu11Litera1 ; MULTEQ ; return DIVEQ; MODEQ ; return PLUSEQ ; return MINUSEQ ; return LSHIFTEQ ; RSHI FTEQ ; RROTEQ ; return ANDEQ ; return EXCEQ ; return OREQ ; return " くく = 取 u11 ABSTRACT_TOK ; return BOOLEAN_TOK ; return BREAK_TOK ; return BYTE_TOK ; return CASE_TOK ; return CATCH_TOK ; return CHAR_TOK ; return CLASS_TOK ; CONTINUE_TOK ; return DEFAULT_TOK ; DO_TOK ; DOUBLE_TOK ; return ELSE_TOK ; EXTENDS_TOK ; return FINALLY_TOK ; FINAL_TOK ; return FLOAT_TOK ; return FOR_TOK ; IF_TOK ; return I MPLEMENTS _TOK ; return IPPORT_TOK ; INSTANCEOF_TOK ; return INTERFACE_TOK ; return INT_TOK ; LONG_TOK ; NATIVE_TOK ; return NEW_TOK ; PACKAGE_TOK ; return PRIVATE_TOK ; return PROTECTED_TOK ; PUBLIC_TOK ; return RETURN_TOK ; return SHORT_TOK ; return STATIC_TOK ; return SUPER_TOK ; return SWITCH_TO K ; return SYNCHRONI ZED_TOK ; return THIS_TOK ; return abstract boolean break byte case catch char Class continue default do double else extends fina11y f inal float for if implements import instanceof interface int 10 Ⅱ g native new package private protected public retUrn short static super switch synchronized this yylval . id = newstr (yytext) ; return ldentifier ; return *YYtext ; {ID} 92 UNIX MAGAZINE 1997.4
DZ—X 流プログラミング 造をもつ C 言語のようなプログラムで、プロックが始 まるときに処理をしておき、プロックを抜けるときにも やはり処理をおこないたいという場合です。 次のような構文規則の定義がある例を考えます。 ' { ) Statements ) } ' B10ck こで、プロックに入るとき、つまり最初の、、 { " を読 み込んだときにアクションを実行したい場合は、次のよ うに言己することができます。 B10ck B10ck1 B10ck2 ' { ' { block-start(); } B10ck2 Statements ' } ' { block_end() ; } これは、 BIock を 2 つ (Block1 と Block2) に分け て、それぞれにアクションを付ける方法です。この方法 では、もとの構文規則が見えにくくなってしまうという 欠点があります。 もとの構文規則がより分かりやすい、もう 1 つの方法 を紹介しましよう。実際には何も生成しない構文規則を 加えて、そこにアクションを付けるガ去です。 ) { ' B10ck_ Statements ) } ) B10ck { block-end() ; } B10ck1 78 今泉貴史 { block-start() ; } BI 。 ck ーか新たに加えた構文規則ですが、右辺には何も なく、文字列は生成しません。しかし、アクションは実 行されるので、目的の処理をおこなえます。 ところで、実際には途中にアクションを書くことがで きます。次の例を見てください。 B10ck { block-start() ; } Statements ' } ' { block-end() ; } B10ck 前回は、文法の構文規則とアクションから構文角斤器 を生成する yacc について紹介しました。 yacc に加えて lex を使えば、上交的簡単にプログラミング言語を認識 するプログラムが作成できます。 今回は前回の約束どおり、エラー処理の方法、デバッ グの方法、アクションの指定方法などについて触れて いきます。そして最後に、より大きな例題としてプロ グラミング言語を解析するプログラムに挑戦してみまし この例では、途中にもアクションが付いています。 yacc は、このような規則をみつけると、直前の例と同し く内部的に空文字列を生成するような構文規則を加え、 そこにアクションを付けます。ですから、さきはどの例 と同様な構文解析器が作成されます。 ほんのすこし違うのは、同しアクションをもつ構文規 則が複数ある場合です。 末尾以外のアクション 前回は、かならす構文規則の末尾にアクションを付け ていました。それでは、途中にアクションを書きたいと きはどうすればよいのでしよう。たとえば、プロック構 UNIX MAGAZINE 1997.4 81
PERL ADVISOR ⑩ Per における参照 RandaI し . Schwartz 0 襯こⅣ / X E ルル オプジェクト、オプジェクト、オプジェクト・ 。フ ログラミングの世界は、どうやら、、オプジェクト指向 " に 向かっているようだ。 Perl とて例外ではない。そう、 Perl にもオプジェクト孑旨旬プログラミングのための機能が備わ っている。しかし、ほかの有名なプログラミング言語とは 違って、 Perl ではオプジェクトを利用したコードを書い てもいいし、あるいはオプジェクトをまったく使わなくて もい、い、。 それでは、 PerI のオプジェクトについてみていくとし よう。 Perl におけるオプジェクトは、データ構造に対す る参照 (reference) であるにれまでにも参照を使ってき たが、忘れてしまったのなら、皆さんのシステムにあるは すのオンライン・マニュアル perlref を読むといい ) 。た だし、参照を特定のパッケージに、 bless"l し、そのパッ ケージをオプジェクトの、、 class " にする必要がある。 簡単な例でみていくことにしよう。 Car ( 車 ) というオ プジェクトのクラスを作り、そのなかににれから使う ) 新しい Car を作成するメソッド new を書く。このメソッ なければ、このコードは動かない。サプルーチン new は ノヾッケージ Car のなかに new というサプルーチンが $myCar = new Car ; ドは、次のようにして呼び出す。 78 と。 1 bless() については、オンライン・マニュアルの perlobj を参照のこ $self; $self—>{passengers} = { } ; bless $self , $class ; my $self = { } ; shift; my $class sub Car : : new { 次のようになるだろう。 こではいくつかの処理をおこなっているので、 1 っす つ順番に説明しよう。 5. $self のなかに、インスタンス変数 passengers を作 なかでメソッドをみつけることができる。 このように記慮しておけば、あとで正しいパッケージの ハッシュはこのパッケージに所属することを記億する。 これで $self の値か変化するわけではないが、匿名の 4. オプジェクトを、このパッケージに渡す 多い。 は、このハッシュの要素となるので、こうすることが いる。インスタンス変数 ( オプジェクトに固有の変 この変数を、中身が空の匿名のハッシュに初期化して される 3. オプジェクトは、 $self という局所変数を用いて生成 出しではかならすよぶんな引数が 1 つある。 呼出しとの違いの 1 つである。つまり、メソッドの呼 ている。これが、通常のサプルーチン呼出しとメソッド そこで、この引数を $class という局所変数に代入し ( パッケージ名 ) である 2. このサプルーチンに渡される最初の引数は、クラス名 合わせてこの名前を使っている。 べつに new でなくてもいいが、 C 十十や Smalltalk に new である 1. サプルーチンはパッケージ Car のなかにあり、名前は 中身は空の匿名のハッシュ ( 参照 ) である。 成する 6. 最後に、 $self の値を返す 戻り値は匿名のハッシュに対する参照だが、 ク ) ノ、ツ UNIX MAGAZINE 1997.4