今のこの状況を作り上げるために、友人・知人やパソコン通信、インターネット等を通じ、多くの先輩達から様々な情報を得、参考にさせていただきました。現在、私の家では充分に便利な環境が実現していますが、さらに、まだまだアップグレードを続けていこうと思っています。
このコーナーでは、これまで諸先輩から有形・無形にいただいた数多くの情報に対する感謝の意味をこめて、私が家で行っている(主にインターネットに関する)環境のアップグレード作業をそのままレポートする、ということを試みてみようと思います。 私が行ったことを、自分用の記録という意味も持たせながら、ただダラダラと書き綴るだけですので、わかりにくい部分なども多々あるかと思いますが、もしこのページを読んで少しでも「参考になった」と思ってくださる方がいらっしゃればこれほど嬉しいことはありません。
時代は下り、世は空前のインターネットブーム。このブームがちょうど始まるころ、私はあるプロバイダに入会しました。私が最初に入会したプロバイダがそこでなかったら、きっと今ほど自宅のネットワークが整備されることはなかったでしょう。そのプロバイダはシェルが使えるのです。と言っても入会した当初は「シェルって何?」て感じで、プロバイダに接続して最初に出るメニューの中の「3. シェル(shell)」の項目は全く気にかけず、「どうせ僕には関係ないや」と思っていたのでした。
一方、私の女房が、これまた偶然ですが、過去に仕事でほんの少しですがUNIXを触ったことがあり、UNIXの入門書を持っていることがわかったのです。「UNIX」という言葉にあこがれていた私は、早速その本を見せてもらいました。そしてUNIXのプロンプトは「#」とか「%」であること、MS-DOSのCOMMAND.COMに相当するコマンドインタプリタを「シェル」と呼び、「sh」や「csh」があること、などを学びました。「ん? シェル? そういえば...」と、はたと気づいてプロバイダに接続し、いつも無視していた「3. シェル(shell)」を選んでみたのです。すると、「uranus% 」と出た、これは、UNIXのコマンドプロンプトだぁ、と、えらく感動したのを覚えています。そこから私とUNIXのおつきあいが始まったのでした。
W氏は(プロですから当然ですが)コンピュータに関する知識が大変豊富で、私は仕事の話もそこそこに、彼の持つ数多くの知識を貪欲に聞き出し、たくさんの興味深い事実を知ったのです。中でも最も驚愕したのは、W氏が、自宅でUNIXを動かしている、という事実でした。な、なんと、パソコンにUNIXが搭載できるのか!? 私はとんでもないカルチャーショックを受けました。UNIXというと、詳しくは知らないけどいわゆる大型コンピュータと言われるもので使うためのもの、という固定観念を持っていたからです。
負けず嫌いの私がW氏に「ほうほう、今はパソコンで動くUNIXがあるんですか。」などと涼しい顔をして相づちをうってみると、W氏は、
「えぇ、今はありますよ。LINUXとかFreeBSDとか。私はLINUXを使っていますが。」
とお答えになりました。「LINUX」、そして「FreeBSD」。パソコンでUNIX。
感激もひとしおに、「LINUX、FreeBSD、LINUX、FreeBSD...」と、まるで豆腐を買いに行く小僧さんのようにつぶやきながら、その日は帰宅したのでした。
インターネットもその頃はNetscapeバージョン1の時代で、テレビCMで二枚目俳優が「おい、お前インターネットって知ってるか」などと渋い声で言っていた頃でした。私がインターネット接続に使用していたのは主にMacintoshで(Windows95は発売されたばかりで使い方をよく把握していなかった)、Netscapeを使いながら「ちょっと表示が遅いよなぁ」不満に感じていたのでした。
その不満を解消すべく、当時アナログの最高速だった28800bpsの壁を破るため、ISDN回線の導入に踏み切りました。しかしここでも一つ問題がありました。それはMacintoshのシリアルポートのスピードです。私の所持しているMacintosh LC475のシリアルポートで出る速度は57.6Kbpsです。これでは最大128KbpsというISDNの魅力が生きてきません。もちろん、ISDNの導入によってそれまでの28.8Kbpsよりは速くなりましたが、どうも劇的な差が感じられず、中途半端な気分でした。
そんなある日、パソコンショップをぶらぶらとしていたら、気になる商品が目に飛び込んできました。いわく「TA機能を内蔵したルータ。端末型ダイヤルアップIPの接続でも使用可能。定価168,000円」。当時「ルータ」といえば何十万もする高価なもので、とても私のような素人が使うようなものではない、と思っていたので、最初にその値段の安さに驚きました。そして店頭に掲示された機能をじっくりと読み、「これだ!」と思いました。
それまで私が行っていたインターネット接続は
という形だったので、シリアルポートの57.6Kbpsがボトルネックになっていました。しかし、このルータを使用すれば
という形になり、ボトルネックはなくなります。
大きな出費は賭でしたが、その店頭にあったルータをその場で購入し、家のEthernetに接続しました。このルータ購入は単にネットサーフィンのスピードアップというのが直接の動機でしたが、後から考えればこれこそが、それまで「互いにつながっているだけ」だった我が家のネットワークが、外への指向を持つきっかけとなった瞬間だったのです。
インターネット接続を行う場合、パソコンはIPアドレスを持たなければなりません。今このページをこうして読むことができるのも、こちらのサーバがあなたのコンピュータのアドレス「(none)(3.144.224.30)」に向けてデータを送っているからです。
通常パソコンにTAやモデムを直接つないでダイヤルアップする場合なら(WindowsのダイヤルアップネットワークやMacintoshのMacPPPなど)、パソコンがプロバイダにダイヤルしたときに、プロバイダの手持ちのアドレスの中から他と重複しないIPアドレスを一つ借り受けます。そしてそれはダイヤルしたパソコン自体のアドレスになります。ですから、通常はダイヤルアップの度に毎回違うIPアドレスが与えられます。
しかし、ルータ接続の場合はやや事情が違います。パソコンにはあらかじめ固定のIPアドレスを振っておきます(仮に「192.168.1.2」としましょう)。このアドレスはユニークなものである必要はなく、どこかで同じアドレスが使われていてもかまいません(実際にはローカルアドレスとして予約されているアドレスを付けます)。パソコンがインターネットに要求を出すとその要求はルータに送られ、ルータはプロバイダにダイヤルします。そして他と重複しないIPアドレスを一つ借り受けます。パソコンから直接ダイヤルアップする場合と異なり、IP借り受けはルータが行いますので、パソコンはその借りたアドレスを知る必要がありません。
仮にその借り受けたアドレスが「210.154.11.189」だったとすると、パソコンからのパケット(送信元「192.168.1.2」)はルータで「210.154.11.189」という仮面(masque)をかぶせられ、「210.154.11.189」から送信されたものとしてインターネットへ出ていきます。逆に外から来る「210.154.11.189」宛のパケットはルータに到着して仮面をはがされ、パケットを要求したアドレス「192.168.1.2」に返されます。仮に別のパソコン(例えば「192.168.1.3」)からパケットが出ても、ルータはやはり同じ「210.154.11.189」の仮面をかぶせます。インターネット側から見ると、どのパソコンから出たパケットも、見かけ上は一つの「210.154.11.189」というアドレスから発しているように見えます。そしてそれに答えて「210.154.11.189」にパケットを返します。受け取ったルータは仮面をはがし、パソコンごとに正しく振り分けます。これが「IP masquerade」の動作のあらましです。
ルータがアドレスを一つ借り受ける...LAN内のパソコンはその一つのアドレスをみんなで共同して使う...外向きのパケットはルータが見知し、自動的に仮面をかぶせてインターネットに出してくれる...
私の頭の中で、インターネットの解説書に出てくる、あの蜘蛛の巣のような図形が広がり始めました。「そうか、考えてみると、パソコンがインターネットに接続されているというより、うちのEthernetがインターネットに接続されている、と言う状態なんだな。」
じゃぁ、家の中にサーバがあってもいいんじゃん。
Macintosh用のWWWサーバ「MacHTTP」というプログラムについて、書籍などでその名前だけは知っていました。早速ダウンロードし、Macintosh LC475で走らせました。そして隣にある使い慣れないWindows95でNetscapeを起動し、Macintoshに振ってあったIPアドレスを入れてみました。
http://192.168.10.1
スルッ、とスマートにMacintosh内のWebページが表示されました。そのページ内のリンクをクリックすると、ルータのランプがチカチカしてプロバイダにダイヤルし、遠くのページが表示されました。「こりぁ、当初思っていたより便利だぞ!」単なるTAの代わりに買ったルータがこの日から「パケットの宛先を見て送り先を振り分ける」という本来の「router」として認識されたのです。「宛先がこのアドレスなら勤務先の会社へのダイヤルアップ」「この宛先なら別のプロバイダへダイヤルアップ」と、送り先パケットによって適切なダイヤル先を選ぶようにルータの設定を次々に増やしていきました。
今で言う「イントラネット」の原理ですね。今考えれば「何をあたりまえのことを」と笑っちゃいますが、当時は感動したものです。さて、MacHTTPでローカルなホームページを表示することができ、さらにそこから透過的にインターネットに出ていけることはわかりました。ただMacintosh LC475はサーバとしてはやや力不足でしたし、第一、サーバを動かしたままだと普段の使用に支障が出ます。「でも家の中にもサーバがあったら色々便利だよなぁ」。
その時、あのW氏が自宅でUNIXを動かしていることを思い出したのです...
機は熟し、いよいよ自宅でUNIXを使ってみよう、ということを具体的に考えるようになりました。MS-DOSで使用していたPC9801BXにハードディスクを増設し、そこにUNIXを入れてみよう、というわけです。狙っているのは98への移植が進んでいるという噂のFreeBSDです。情報を得るために書店に行き、FreeBSDのインストール用の参考書を一冊購入しました。その本の裏表紙にはCD-ROMが引っ付いています。パソコン関連書籍に慣れていた私は、よく見もせずに、あぁ、デモ版のソフトが入ったCDだろう、などと気にも留めずに購入したのでした。そしてその本を読み始めてすぐに、私はある事実を知って愕然としました。
なんとFreeBSDは無料のフリーソフトウェアだったのです。
Windows95を購入したときには、以外に安いもんだなぁと感じましたが、FreeBSDはなんとタダで、商品ですらなく、フリーソフトだったのでした。私は情けないことに、この時点になってやっとFreeBSDの名前の由来に気がついたのでした。裏表紙に引っ付いているCD-ROMは、デモ版でもなんでもなく、実に本物のFreeBSDそのものだったのです。
オペレーティングシステムが、フリーソフトウェア。そこには何か、商用ソフトと決定的に異なる、私にとって未知の哲学が流れているように感じられました。持っていた参考書を捨てるように脇に置き、突き動かされるようにブラウザを起動して検索Webページを開き、検索フィールドに「FreeBSD」の文字を打ち込みました...
市販ソフトの場合、それを購入した人たちがパソコン通信などで互いに情報交換することはあります。しかし、フリーソフトとなると話は逆です。オンライン世界にある情報こそ、オリジナルの本物の情報であり、書籍はあくまで二次的なものにすぎない、ということになるからです。そしてやっと、FreeBSDの公式のWebページにたどりつきました。日本語のページもあることがわかりました。Webページを読み進む中で
当時、FreeBSD(98)のバージョンは2.1.5でした。しかしPC/AT互換機用のFreeBSDは2.1.7の時代に入っていました。参考書についていたCD-ROMは2.1.6です。FreeBSD(98)のインストールガイドを参考にしてインストール用のブートフロッピーは作成してみたものの、バージョンがずれているのでそのまますんなりとはインストールできません。また、2.1.5のCD-ROMを今から入手するのは絶望的でした。そこで、えーい面倒だ、とばかりにFTPインストールにトライすることにしました。FreeBSDの全てをインターネットサイトからダウンロードしてインストールする方法です。 このFTPインストールは結果的に難なく成功したのですが、その勝因は、
FTPインストールは、やってみるとなかなか感動的なものです。インストールに必要なのは、先ほどちょっと述べましたが、たった一枚のフロッピーディスク(ブートフロッピー)です。FTPインストールの場合、OSの全てをインターネット経由で入手するので、ソフトウェアのインストールには付き物のCD-ROMとか膨大な枚数のフロッピーディスクなどは必要有りません。そしてそのブートフロッピーも、ディスクイメージをFTPソフトによりダウンロードします。つまり、最初は手元には何もないところから始まるわけです。
インストールの方法の選択肢から「FTP」を選ぶと、接続先のFTPサイトのリストが現れ、その中からネットワーク的に近いところを選択します。その次に、デフォルトルートやネームサーバの設定を行います。私の場合、デフォルトルートはルータのアドレス「192.168.10.4」を指定することになります。ネームサーバはプロバイダのネームサーバのアドレスを指定すればOKです。それらを指定し終えたらインストール実行。すると、ブートフロッピー内の小さなプログラムの要求によりパケットがルータに送られ、ルータはプロバイダにダイヤルアップして、目的のFTPサイトに接続されます。そしてFreeBSD一式をダウンロードし、ハードディスクの的確な場所にインストールしてくれます。この間、全自動。FreeBSDのインストーラは何と優れていることでしょう。
OSまるごとですからダウンロードは数時間かかりますが、意外なほどあっけなくインストールができてしまいました。
インストールが成功した後、W氏より98用のFreeBSDのCD-ROMが存在することを教えてもらいましたが、後悔はまったくありませんでした。FTPインストールを実際に体験してみて、これこそが本来のFreeBSDのインストール法だ、とさえ思っています。(と言ったからって、FTPインストールを薦めてるわけではありません。CD-ROMからインストールできるならCD-ROMを使うべきです)
こうして、PC9801BXに無事FreeBSDがインストールされました。
最初に
login:
と表示されたとき、それはとても無表情でしたが、心の中で熱く感動したのをよく覚えています。
こうして、私の家にUNIXがやって来ました。私にとっては何度目かの、「新たなOSとの出会い」です。プロバイダへアクセスして「3. シェル(shell)」を選ぶことにより、ある程度UNIXのコマンドを使用することはありましたが、それはあくまで利用者としての立場でのUNIXであり、制限も多く、できることは限られていました。今度は自宅の、私の目の前のパソコンにUNIXがインストールされたわけです。さぁこれで思う存分UNIXを習得できるぞ、と軽い気持ちで意気揚々として望んだのですが...
その考えが甘かったことをすぐに思い知らされました。Windows95のような親切、MacOSのような親しみ、MS-DOSのような生真面目さ...
UNIXにはそれらが全くなく、ただひたすら寡黙でした。UNIXは自分からは何も教えてくれません。自分からは何も求めて来ません。
そうか、こちらから要求しないと何もしてくれないんだな。
この、コンピュータを使う上で至極あたりまえのこと、そして忘れかけていた懐かしい感覚を、UNIXに触れることで久しぶりに再認識させられることになるのでした。
<コラム> 「うちのLAN」について
このような、やや難解だけど、しかしある種の人には大変有用なもの、という想定だったのです。で、ずいぶん昔にやった作業については細かいことは忘れてしまっているので、その部分は概念的な説明にとどめよう、という方針でこのシリーズを書き始めました。「いよいよ我が家でUNIX」までの文章はそのつもりで書いてきたわけです。 現在の私の家ではFreeBSDが二台稼働しており、インターネットには専用線で接続されています。つまり、「いよいよ我が家でUNIX」に書かれているのは、まだまだずいぶんと前のことなわけです。それ以降も現在に至る細かい作業はほとんど記録していませんし、忘れちゃってますので、まだまだ多くの「概念的な説明」をしなければなりません。 ところが、文章を書き進め、「いよいよ我が家でUNIX」まで書いたところで、ちょっと私の心境に変化がありました。むしろ、現在の形態(文体)でこのままこのシリーズを続ける方が良い(あるいは面白い)のではないか、と思い始めたのです。 冷静に考えてみれば、セットアップの具体的な方法を解説したWebページは数多くあります。その上、私は、上記の四角内の記述を見てもわかるとおり、いわゆる取扱説明書的な文章は下手です。私は「照明はコンピュータに通底している」などとエラソウなことを某雑誌で発言しましたし、そういう性格に期待してこのページに来ている方もいらっしゃるでしょうから、どうせならより演劇的に、多少の創作も混ぜておもしろおかしくLAN構築の経緯のドキュメンタリーを作ってみよう、と思うようになったのです。そんなわけで、以下の章でもこのシリーズは、「コンピュータに詳しくない人でもなんとなくわかる(あるいは感じ取れる)」という雰囲気を理想として書き進めようと思います。 「いよいよ我が家でUNIX」をアップしてから以下の章を書くまでにちょっと時間があいたのは、実は上記のような迷いがあったからなのでした。
|
それらのコマンドに対する当時の感想を正直に表現するなら、「それで?」っていう感じでした。確かに、短いテキストファイルを作ったり、それをディレクトリに分類したり、それを保存するためのディスクをフォーマットしたり、あるいはそれらの結果を画面に表示したり、ということはできます。あるいは、リダイレクトというのを使って、画面に表示されるべきものをファイルに保存する、なんていうこともできます。でもMS-DOSコマンドはどれも結局のところ、
さて話を現在に戻しましょう。私が初めて入力したUNIXコマンドは、これまたご多分に漏れずlsでした。
% ls
と打つとファイルの一覧が画面に表示されます。そして、MS-DOSの時と同様に、cp、cat、rm、cd、moreといった具合に、まずはMS-DOSと対比させながらコマンドを覚えていきました。さすがにUNIXはMS-DOSよりはコマンドも多く、「一足す一は?」を答えられるコマンド(bcなど)もありましたが、総合的に思った感想はやっぱり「それで?」でした。
MS-DOSの時と違って楽しかったのは、ゲームがインストールされていたことでした。FreeBSDのインストーラで「全てインストール」を選択すると簡単なゲームが自動的にインストールされるのです。「rain」や「worms」といったスクリーンセーバー的なものや、プログラミングの教科書に出てきそうな「fish」「snake」などの簡単なゲーム、さらには「tetris」なんていう高度なものも入ってたりして、暇つぶしになります。
そのゲームディレクトリの中に、「pig」というプログラムがありました。これはなんだろう、と何の気なしに
% pig
と入力してみました。何も起きません。何も起きない画面に向かって「a」と打ってみました。すると「away」という表示が出ました。次に「abc」と打ってみると「abcway」と応えます。「dog」と打ってみました。すると今度は「ogday」という応え。どうやら、入力した文字列に対して何らかの規則に基づいた変換をし、その結果を表示しているようです。
% pig
a
away
abc
abcway
dog
ogday
何はともあれ、まず pigのオンラインマニュアルを見てみることにしました。
% man pig
すると、
PIG(6) FreeBSD Reference Manual PIG(6) NAME pig - eformatray inputway asway Igpay Atinlay SYNOPSIS pig DESCRIPTION Ethay igpay utilityway eadsray ethay andardstay inputway andway iteswray itway outway otay andardstay outputway inway Igpay Atinlay. Usefulway orfay eneratinggay onthlymay eportsray.
困り果てて、アメリカに留学した経験のある女房にこの謎の文章を見せてみました。すると「あ! ピッグラテンでしょ。」との答え。どうやら、アメリカの子供が遊びで使う暗号アルゴリズムのことだということがわかりました。教わってみれば非常に簡単な変換規則です。上記の文を解読したものを下記に書いておきますので、どうぞご自分で変換規則を突き止めてみて下さい。(C言語のわかる方はこちらへどうぞ)
NAME pig - reformat input as Pig Latin SYNOPSIS pig DESCRIPTION The pig utility reads the standard input and writes it out to standard output in Pig Latin. Useful for generating monthly reports.
% pig
hello
ellohay
hello world
ellohay orldway
まてよ、これって、キーボードで打ったものをpigが解釈して、結果を画面に返してくる、っていうことだよな...
pigのマニュアルに書かれていたことが頭の中によみがえりました。
... reads the standard input and writes it out to standard output ...
キーボードが標準入力で、画面が標準出力...たしか「パイプ」っていうのは、標準出力と標準入力をつなぐもので...「リダイレクション」っていうのは....そうか、わかったぞ! 次の瞬間、私の指は目的の結果を得るための最良のコマンド(と言っても良いでしょう)を打ち込んでいました。
% cat tegami.txt | pig > tegami-pig.txt
新しく作成されたファイル「tegami-pig.txt」を見てみると、見事に原文がピッグラテンに変換されていました。それをワープロにペーストして印刷し、FAXで送信する間、私の頭の中では、UNIXのコマンドで標準入力を受け取れるものにはどんなものがあったかを思い出していました。cat、more、grep、head、tail、そして、sed、awk、perl、さらには telnet、ftp。数え上げたらきりがありません。UNIXは、かつて覚えたMS-DOSに比べ、標準入力を受け取ることのできるコマンドがとてもたくさんあります。そして、UNIXは標準入力と標準出力を、ディスクに保存された普通のファイルと区別無く位置づけています。
画面に表示されるべき結果をファイルに書き出す、あるいはパイプでコマンドに渡す。処理したい原稿をファイルに書いておいて、リダイレクトでコマンドに渡す...標準入力と標準出力を縦横に組み合わせれば、なんと無限の可能性が開けてくることでしょう。
何よりも、私は単純に、UNIXのコマンドでピッグラテンの作成ができたことがうれしかったのです。テキストデータの加工というごく単純な作業でも、それが実生活でぴったり使える瞬間にたまたま居合わせることができた、それがとても感動的だったわけです。
こうして私は、最も遠回りな、しかし最も楽しい過程を経て、UNIXの基本である、全てのデバイスをファイルとして扱うという考え方を理解したのでした。
その後はさらにUNIXの可能性に心おどらせ、テキストデータ、標準入力、標準出力、パイプ、リダイレクションなどをキーワードに勉強を進めて、UNIXの良さが少しずつわかるようになって行ったのでした。
ある日、私はぼんやりと、そういえばホームページってテキストデータなんだよなぁ、と考えておりました......
しかし、LAN内(ローカル)にサーバを置く一番のメリットは、「自由」な環境が得られることでしょう(FreeBSDのFreeという言葉には、無料という意味の他に、自由という意味も込められているそうです−−ここで使っている意味とは違うと思いますが(^^;)。例えば、今ご覧になっている私のホームページの表紙には、アクセスカウンターがありますが、最初にアクセスカウンターを付けた当時は、カウントの動作原理などもよくわからず、失敗が怖くて、ただやみくもにAizawa Toshiyukiさんのページに書かれた通りに設定しておりました。しかし、ローカルにサーバを置いてからは、それこそ何でもやり放題です。SSIだろうとCGIだろうと、納得のいくまでローカルサーバで研究し、何回でもテストを重ね、自分の好みの動作が得られてから、悠々とプロバイダのサーバにコピーしてやればいいのです。
早速、自分のページに(やみくもに)付けたアクセスカウンターについて研究してみることにしました。index.htmlのアクセスカウンターの部分には、実際には
Access counter: <!--#exec cmd="./count.sh"-->
と記述されていて、count.shには下記のようなことが書かれています(当時)。
#!/bin/sh
COUNT=./count
OLD=`cat $COUNT`
NEW=`echo $OLD + 1 | /usr/bin/bc`
echo $NEW
echo $NEW > $COUNT
一行目の「#!/bin/sh」は、解説書ではよく「おまじない」と言われているもので、この一行を書いておくと以下のスクリプトを/bin/shというプログラムで実行せよというような意味になります(たぶん)。/bin/shというのは、MS-DOSで言えばCOMMAND.COMみたいなもんです。ものすごく乱暴に例えると、
UNIXのスクリプトで「一行目に#!/bin/shを書く」というのは、MS-DOSなら「拡張子を.BATにする」ということに相当します。
二行目のCOUNTは変数名です。別にCOUNTでなくても、XでもYでもかまいません。右辺の./countはファイル名です。このファイルにはアクセスカウンターの数字が格納されています。すなわち、例えば今現在(2024/12/22 11:43)で言うと、カウンター値は「 200326
」であり、これはつまり./countに「 200326
」という数字が書かれている、ということを意味します。
シェルプロンプトから「cat ./count」を実行すれば、カウンタの現在値が標準出力に返されます。
% cat ./count
200326
%
三行目の「`cat $COUNT`」では、いま代入したCOUNTを使い、まさに上記のことを行っています(変数を呼び出すには「$」を使います)。そしてそれ全体が「`」で挟まれた形で書かれています。「`」で挟むと、実行結果の意味になります。つまり
OLD=`cat $COUNT` とすると、まず「cat $COUNT」すなわち「cat ./count」が実行され、その結果である「 200326
」がOLDに代入されます。
四行目の「/usr/bin/bc」というのは計算をするプログラム(電卓プログラムと考えればよい)で、標準入力から計算式を読み、結果を標準出力に返します。ここではパイプ「|」により計算式を受け取っています。パイプの前段にあるのは「echo $OLD + 1」で、結局「200326 + 1」という計算式が/usr/bin/bcに渡されることになります。その処理全体が「`」で囲まれてますから、最終的に「200326 + 1」の計算結果「 200327 」がNEWに代入されます。
そして、五行目の「echo $NEW」でNEW(= 200327 )を標準出力に出し、六行目の「echo $NEW > $COUNT」で./countの中身をNEWに書き替えます。
ここで、注目すべきは五行目です。
このシェルスクリプト(count.sh)を仮にシェルプロンプトで実行すると、実行毎に1ずつ増える数字が表示されます。
% ./count.sh
200327
% ./count.sh
200328
% ./count.sh
200329
%
数字が表示されるのは、五行目の「echo $NEW」の実行結果としてです。つまり、この六行のスクリプトの中で、五行目だけが「表示」をする行なのです。言ってみれば、SSI(の #exec cmd )による表示というのは結局のところ、コマンドの標準出力がHTMLに埋め込まれてブラウザで表示されるわけです。「SSI」というと、解説書には色々と難解なことも書かれていますが、ユーザのレベルだけで考えるならば、HTMLの一部に、標準出力(ないしはそれに類するもの)を埋め込む、ということだと考えることができます。
標準入出力はUNIXの得意技。SSIを使用すればその標準出力を自由にページに張り込める...
WWWというのは今までは「HTMLファイルを表示するもの」だと思っていたけど、「標準出力が表示できる」となるとさらに大きな可能性があって...
いやむしろ、「標準出力を表示する」という方が本来的で、HTMLファイルというのはその特別なケース、と考えた方が良いのかも知れない...
そして私の興味は、SSIよりもっと自由で、もっと大きな可能性を秘めた「CGI」へとシフトしていくことになるのです。
さて、賢明な読者の方には既におわかりの通り、この文章自体にもSSIが含まれています。例えば、アクセスカウンターの解説部分に出てくるセンテンス
その処理全体が「`」で囲まれてますから、最終的に「200326 + 1」の計算結果「 200327 」がNEWに代入されます。
は、実際のHTMLファイルには下記のように書かれています。
その処理全体が「`」で囲まれてますから、最終的に「<!--#include virtual="../count"--> + 1」の計算結果「 <!--#exec cmd="echo `cat ../count` + 1 | /usr/bin/bc"-->」がNEWに代入されます。
最近は、カラフルで賑やかなホームページが花盛りですが、私はむしろ、結果の見た目は地味でも、しかしその裏には楽しい技術がたくさん盛り込まれている、という方が性に合っているようです(笑)。
プロバイダへの接続で不具合が発生しました。当時の私の接続環境は、「ルータを買おう」でも述べたように、ルータを使用したISDN回線の接続でした。ISDNの魅力は何といっても最高128Kbpsというそのスピードにあるわけですが、ある時、プロバイダに64Kbpsでしか接続できなくなってしまったのです。症状は何とも奇怪で、ある特定の機器(私の使用していたルータ、友人の使用していたあるTA)を使用し、かつ私のアカウントで接続しようとした場合にだけ、回線が切断される、という現象でした。プロバイダと何度も連絡を取り合い、ルータのメーカーはもちろん、かのW氏をはじめ、多くの友人・知人に協力してもらいながら原因究明に努めたのですが、結局原因はわからず、その後も症状は謎の回復、再発を何回か繰り返しました。その間、プロバイダは「お客様の設定の問題」、私は「プロバイダ側の何らかの異常事態の発生」という主張を互いにゆずらず、物別れのままになりました。
そのころ、私が一ヶ月にインターネット接続に使っていたお金は、プロバイダ課金だけで軽く5桁に達していました。電話料金を合わせれば数万円です。それと時期を前後してNTTが「OCNエコノミー」という新しいサービスを開始しました。プロバイダに128Kbpsでつながらないことに苛ついていた私は、このOCNを使用して常時接続してみようか、という考えに急速に傾いて行きました。W氏に意見を聞いてみると、彼自身は既に数ヶ月前に常時接続を確立しており、なかなか良いとのことでした。
よし、いっちょやってみるか。
自宅にUNIXを置いて以来、ずっと不満に思っていたのはこちらからはインターネットの世界に飛び出してどこへでも行くことができるが、インターネット側からはこちらにアクセスすることはできない、という点でした。そしてその不満は高額な出費をして常時接続を実現しなければ解消されない、ということもわかっていました。ですから、仮に常時接続になったらどうなるかという思考実験(イメージトレーニング)は既に十分でした。
決断してからは非常に迅速でした。私の頭の中には既に常時接続体制の模型が出来上がっていたからです。
そして、ついに自分で自由に使えるドメイン、IPを入手しました。
ドメイン:letre.co.jp
IPアドレス:210.154.11.176/28
「うちのLAN」はついに世界に接続されたのです。
% ping 210.154.11.178
PING 210.154.11.178 (210.154.11.178): 56 data bytes
64 bytes from 210.154.11.178: icmp_seq=0 ttl=252 time=58.974 ms
64 bytes from 210.154.11.178: icmp_seq=1 ttl=252 time=55.626 ms
64 bytes from 210.154.11.178: icmp_seq=2 ttl=252 time=55.550 ms
64 bytes from 210.154.11.178: icmp_seq=3 ttl=252 time=55.163 ms
やった! インターネット側(外の世界)から私のコンピュータに信号を送り、その返事が返された瞬間です。このときはとても感動したのを覚えています。
地球上のどこかで私宛に送信されたパケットは、インターネットを縦横に駆けめぐり、世界にたった一台しかない私のコンピュータめがけて飛んでくる...
何と感慨深いことでしょう。
こうして「letre.co.jp」ドメインはスタートしました。ホームページも自分のドメインに移動し、メールソフトに「メールを定期的にチェック」の設定をしました。そして、女房にもメールアドレスを与えてみました。
英語に堪能な女房は、あれよあれよと言う間にアメリカで運営されている趣味のメーリングリストに入会し、WWWから映画俳優のデータベースを見つけだし、イギリスに住む友人と文通を始めてしまいました。その姿は、私の知る「コンピュータの初心者」とは明らかに異なるものでした。
そしてある日女房はこんなことを言いました。
「インターネットって便利だねぇ」
私は あれ? と思いました。これまで私は、インターネットの良さはコンピュータの専門家や私のようなオタクにしか理解できないものだと思っていました。なのに、これまでパソコンをワープロとしてしか使っていなかった女房が見る見るうちに様々なサービスを上手に利用するようになり、挙げ句の果てに「インターネットって便利だねぇ」です。
それを見て、世の中に「インターネットは難しい」という人と「インターネットは簡単だ」という人がなぜ同じ位の数いるのか、その理由が少しずつわかりかけてきました...
あらゆる「もの」は、「誰のもの」という人に属する側面と、「どこのもの」という場所に属する側面を持っています。ものによって、そしてそのものへの見方によって、それは人に属したり場所に属したりします。
こういった「会社にある私の席の」「女房専用の」「私の原稿執筆用の」という言い方が必ずしもパソコンの所有者を意味しているわけではないことに注意して下さい。所有権とは関係なく、「だれそれのパソコン」という考え方が生まれたのです。
私はよく、いわゆる「パソコン初心者」の方々から色々と質問を受けるケースがあります。それに応対していて気づいたのですが、パソコンを上手に使えない方たちに共通するのは、パソコンをどうしても「場所に属するもの」と考えてしまうことです。
一方、パソコンをよく使える方は、本人が意識しているかどうかは別として、確実にパソコンを「人に属するもの」としてとらえています。
では、コンピュータにおける「ネットワーク」はどうでしょうか。
ネットワークは言うまでもなく、場所に属するものです。foo.ne.jpという場所、bar.or.jpという場所、hoge.ac.jpという場所、全てそれらは特定の人ではなく、場所を示しています。
そして、それらの場所はインターネットというすばらしいシステムにより、互いに接続されています。
「場所に属するもの」としてのネットワークがあり、「人に属するもの」としてのパソコンをその中に置く。
これこそが、現代において最も有効にコンピュータを利用する方法だと思います。私の女房は、自分専用のパソコンを持ち、そして「letre.co.jp」という場所を与えられました。だからこそ、あそこまで上手にインターネットを使いこなすことができたのです。
今、このページをご覧になっているあなたも、おそらく電子メールアドレスを持っているでしょう。あなたの電子メールアドレスをもう一度見つめてみて下さい。その中の「@」以降の部分、それがインターネットにおけるあなたの「場所」です。
*
*
*
私がこうして構築してきたLAN、それは、私という人間が作ったものですが、ネットワークである以上、一つの場所としての責任を負わなければなりません。このネットワークは、たとえそれが私一人が作ったものであっても、決して、私という人に属する「私のLAN」ではなく、やはり、
なのです。
|
ξ
□P