フィンローダのあっぱれご意見番

第73回:頼みの網

初出: C MAGAZINE 1998年05月号
Updated: 1998-06-03

[一覧] [ホームページ]


 「らんだむCGりんく」というページをテスト公開しているが、500リンクを超えたあたりから管理が大変だという感じになってきた。理由はいくつかあるが、その前に、前回、バナーの画像はコピーするのがよいか、リンクするのがよいか、という話題を出した。これについて。

 画像を全てリンクで指定した場合の問題は、リンク先のWWWサーバの応答がない場合である。サーバが落ちているとか、プロセスの制限を使いきって処理できないとか、そのような原因がある時の話だが、いずれにしても多少の時間待ってから初めて応答がないことが分るのだから、その間待たされることになる。バナーの画像をコピーして使えば、「らんだむCGりんく」のページが読めるのなら、同じサーバに置いてある画像も当然読める確率は高いから、このようなトラブルは避けられそうな気がする。

 ところが実際はそううまくもない。なにしろ、500個の画像データをバラバラで持ってこないと全体が表示できないのである。かなり回線の調子がよい時でも10分で終わらないという程度の量である。もしこのサーバの負荷が高かったりすると、最初から最後まで過負荷のサーバからデータを持ってくることになるのもこわい。

 バナー画像をリンクで指定すると、経路の途中でキャッシュが効いてトラフィックが軽減できるのではないか、という説がある。実測したわけではないのでどのような効果が見込めるかは分らないが、理屈としては理解できる。実際どうなのかよく分らないのだが、コピーとリンクと別々のページを作って比較してみると、処理時間はそれほど変わらないような気がしたので、バナーはリンクを使うことにしようと考えている所である。

 利用者の立場としては、バナーの実体をインターネット上で唯一にしておけるということは重要だ。バナーの提供者の修正は、ただちにリンクしたページの表示においても反映される。この性質を利用したページもある。バナーに更新日を書いてあるのだ。うまいアイデアだ。SSIを使うという手もあるが、基本的に、HTMLには直接文章を埋め込む機能が用意されていない。「1月1日更新」というテキストデータを別のサイトに用意して、それを任意のHTMLから埋め込むのは難しいのである。これに対する一つの解法が、インライン画像なのだ。

 唯一の実体をリンクするメリットは大きいし、WWWの最も効果的な使い方の一つである。リンクフリーでない企業ページがあるが、特に企業の担当の方に考えてもらいたい。個人ページの中にメーカーを紹介したり、その電話番号を書きたくなることがある。実際に書いたりすると、電話番号とか部署名が変わった時にちょっと困るかもしれない。抵抗がある。かといって、問い合わせ先を書かないというのも変だ。こんなときは、相手のページへのリンクを張ってしまえばいい。自社の電話番号が変わったのにWebページの更新を忘れている、というような企業は滅多にないだろう。ということでそこに書いてある電話番号は多分信用できる。企業ページに連絡先電話番号を網羅したページを作り、少なくともそこは積極的にリンクフリーにするべきである。他のページから企業の電話番号を参照したいなら、それをリンクする。これで、WWWを見ている人が間違い電話をかけるリスクを小さくできる。

 ところが困ったこともある。例えば「今週見つけた激安パソコンのページ」を作るとしよう。本当にあるかもしれないが。それはさておき、このページに、ショップの問い合わせ先としてURLとか「企業の公開している電話番号ページ」へのリンクが張っておくののはよいアイデアだ。しかし、このページをプリントするとどうなるか。紙の上には「電話番号はここ」というアンダーライン付きの文字がプリントされているだけで、そこをクリックしてもリンク先には飛べない。これは困る。じゃあどうすればよいかというと、電話番号バナーを作ればいい。バナーに電話番号を書いておき、使ってもらうのである。画像にすれば、埋め込んだイメージをプリントしても意味が伝わる。もちろん、これはコピーではなくリンクして使わないと意味がない。


 CGリンクを500集めると、いくつか問題が見えてくる。例えば、基本的に「らんだむCGりんく」はいわゆる「リンクフリー」のページに限って紹介し、事前・事後に連絡してくれというページは対象から除外している。こっちは勝手にリンクしたいわけで、勝手にリンクするなというページをわざわざリンクする必要もないしメリットもないのである。

 問題というのは、リンクした時には「リンクフリー」だったのに、後でアクセスした時に「ごめんなさい、リンクフリーは止めました」というようなページである。実際あったのだ。こういうのは困る。リンク禁止とかフリーというのはその人の勝手だから、あれこれ言うつもりはない。しかし、勝手にリンクして構わないというから勝手にリンクしたわけで、後になって「やっぱり連絡を必ずください」と言われても、それに気付くことは滅多にないのである。だからリンクフリーを止めるのならe-mailでそう連絡をしてくれ、と言いたい所だが、考えてみればこちらはリンクしたという連絡をしていないのだから、相手から連絡しろというのも現実的には無理がある。こちらが気付いたものから自主的に削除するしかなさそうだ。

 些細な問題もある。意外だったが、閉鎖するページが結構あるのだ。1か月のうちに500のうち5〜10ページとか、その程度である。お気に入りのページがWWWから消滅してしまうというのは割と悲しい。もっとも、ないものは参照できないから権利問題等は発生しないと思われるので、そういう意味では無難ではあるが。

 ところで、リンクフリーのページだけ集めていると、勝手にリンクしていいが、e-mailくれたらうれしいなあ、というページが結構あることに気付く。こちらも連絡拒否主義者ではないから、ぽつぽつとe-mailを出していたりする。「事後連絡しないとリンク禁止」という所は最初から候補に入れないのに、「あったらいいなあ」という所はリンクしてe-mailも出すというのは何かというと、こういうのはお互いに要求しないのにあげるという所に趣があるのだ。「くれないと、あげない」と「くれたから、あげる」の違いである。

 最初、500リンクに一気にe-mail出そうかと思って、しかもその処理をするperlスクリプトまで書いた。が、これって一気に返事が来たらアレなのでは…という訳で、少しずつ書くことにした。となると「ここは報告したい」というページから出すのである。「リンクしたら思わず報告したくなるページ」というのは考えてみれば素晴らしいテクニックなのかもしれない。もっとも、本人が私のようにe-mail不精だと困っているかもしれないが。

 最近ちょっと優先的に出しているのが、PostPet対応のe-mailアドレスが書いてあるページである。PostPetのアイコンがあちこちのページに張ってあるので、どうも怪しいと思って調べてみたら、何のことはないSONYの大作戦だった。ただ、結構面白いということも分った。たまごっち、ポケモンと流行したラインにうまく乗れば、これは結構イケるかもしれない。ちょっとソフトが不安定なようで、一度だけ、おやつをあげたらWindows 95が丸ごと凍ってしまうという事故があったが、その後はおおむね使えている。


 プログラムの話が全然ないのもアレなので、ちょっとだけ。らんだむCGりんくのHTMLデータはperlで生成している。リンク毎に、figのような行を書いておき、これを元にHTMLにするのだ。

---- fig. 1 リンクのデータ ----
<DT><A HREF="http://www.vega.or.jp/~ukyo/">Ukyo's HomePage</A>:
bn=ban_ukyo.gif:bl=http://www.vega.or.jp/~ukyo/ban_ukyo.gif

---- fig. 2 生成したHTMLデータ ----
<dt><a href="http://www.vega.or.jp/~ukyo/">
<img src="images/ban_ukyo.gif" WIDTH=200 HEIGHT=40 align="left"
ALT="banner">
Ukyo's HomePage</a>
<br clear="left">

 ご覧になると分るように、フィールドの区切りに「:」を使っている。これはtermcapとかpasswdとか、あのあたりの形式をいいかげんに真似しただけで、深く考えていなかった。だから、最初にperlで処理した時、いきなりコケたのである。URLの中にはまず確実に「http:」という文字列が出現する。最近どうも思慮不足のまま設計してひどい目に合っているのだが、とにかくこの「:」をうっかりしていた。ではどう処理するのがエレガントなのかというと、やはり区切り文字を「:」以外にすればよいのだ。実は、それが何となくそのままになっている。どう処理したかというと、list 1である。perlスクリプトは「:」で区切った部分文字列単位で処理するように書いてある。「bl=***」のようなデータを発見したら、とりあえずそれを$banner_linkという変数に突っ込む。この時、変数の値は"http"となるはずである。次の処理では、おそらく「//」で始まる文字列がやって来る。その時に、これは独立した情報ではなくて、URLの一部だと解釈し、さりげなく$banner_linkの後にくっつけるのである。何となくダサい(死語?)処理だが、一応これでうまく行っている。

---- list 1 ----
    if ($i =~ /bl=(.*)$/) {
      $banner_link = $1;
      next;
    }

    if (($i =~ /\/\//) && ($banner_link eq "http")) {
      $banner_link .= ":$i";
    }

 全体のソースなどは http://www.st.rim.or.jp/~phinloda/phin/mylinkc.pl に置いておくので、興味のある方は参照してください。さて、今回のタイトルは「綱」じゃなくて「網」と書いたのだが、うっかり読み間違えた方はどの程度いただろうか。:-)

(フィンローダ ニフティサーブ FPROG SYSOP)


(C) 1998 Phinloda, All rights reserved
無断でこのページへのリンクを貼ることを承諾します。問い合わせは不要です。
内容は予告なく変更することがあります。