このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

ランダムに画像ファイルを表示される方法は?

発言者:柾木 博行
( Date Thursday, February 06, 1997 21:43:24 )


こんばんは、柾木です。

よく商業サイトで、ホームページの一番上に、ランダムにバナー広告を表示させること
が多いですよね。これと同じ事をAppleScriptでもできないでしょうか?

Tanaka's CGI Kitの中にある「random」は、画像ファイルとテキストファイルを
ランダムに組み合わせて表示するようになっていますが、できれば既にある特定の
ページ上からCGIを呼び出して、そのページ内の特定の位置に画像ファイルを表示
させようということを考えています。そういうときに、どうやって画像ファイルを
HTMLの中に埋めこめばいいのでしょう?

それともやはりCGIでHTMLのデータを組み立てて、ページ自体をリダイレクト
して送り出すしかないのでしょうか?

田中求之 さんからのコメント
( Friday, February 07, 1997 01:57:34 )

つまり、あるページに、アクセスする度に、ランダムに色々な画像が出るようにしたい
ということですよね?

AppleScript で CGI を作ることが可能です。次のスクリプトを banner.acgi と
してコンパイルしてください。

---
property crlf : (ASCII character 13) & (ASCII character 10)

property redirect_header : "HTTP/1.0 302 Found" & crlf ツ
  & "MIME-Version: 1.0" & crlf ツ
  & "Location: "

property grpahic_path : "" --- 画像のはいっているフォルダーのパス

on ヌevent WWWスsdocネ
  set myF to fileToName (randomDir file grpahic_path)
  
  return redirect_header & "/adpics/" & myF & crlf & crlf
end ヌevent WWWスsdocネ

---

* 使用する画像は、Web サーバーと同じフォルダー内の adpics というフォルダーに
入っているとしてます。

あとは、ページの HTML で <IMG SRC="banner.acgi"> という具合に CGIを
呼び出すだけです。これで、アクセスする度に、違った画像が表示されます。

ようするに、ランダムにリダイレクトをかけてやるわけです。

柾木 博行 さんからのコメント
( Friday, February 07, 1997 15:43:15 )

田中先生、いつもながらすばやいRES、ありがとうございます。

何か、大変だろうなぁと思ってメッセージを投稿したんですが、意外とシンプルで
簡単なスクリプトで出来ちゃうんですねぇ。

CGIで呼び出しても、どうやってHTMLに取り込むのかなぁなんて考えていたのですが、<IMG SRC・・・>で呼べるんですね。もっと複雑な処理が必要になるのかと思ってました。たとえば田中先生の大嫌いなフレームを使うとか(笑)。

それはさておき、早速試してみたのですが、どうもうまく動きません。

まず、上にある田中先生の指示通りにスクリプトをbanner.acgiという名前でコンパイルして、WebSTARと同じルートディレクトリに入れて起動しました。また、名前は適当に付いているGIFファイルをいくつか入れた「adpics」という名前のフォルダーを同じくルートディレクトリに入れました。

そして、バナーを貼り込むHTMLファイルは、ルートから4つ下の階層にあるので<IMG SRC="../../../banner.acgi">という形にして保存しました。
ところが、このHTMLファイルにアクセスしてもバナーを出したいところにはネットスケープの壊れた画像アイコンが表示されてしまいます。ディレクトリの問題ではないと思うのですがどうでしょうか? ディレクトリ以外のところで気になるのはTanaka's osaxのバージョンです。Tanaka's CGI Kitを活用させていただいている関係で、まだ最新のTanaka's osaxは入れておらず、1.0b10というバージョンを使っています。これが問題でしょうか?

 それから、さらに追加で質問させて下さい。やはりバナーでランダムに画像を表示させるだけでなく、それぞれのバナーに関連するページをリンクさせたいと思うのですが、それを上のスクリプトを手直しして出来るようになるでしょうか? それとも画像を表示させる上のスクリプトと、それで出てきた画像によってリダイレクトさせるスクリプトの2つのCGIが必要になるでしょうか?

→  Welcome 2 Macworld EXPO

柾木 博行 さんからのコメント
( Friday, February 07, 1997 16:07:31 )

なんどもコメント、すいません。おまけに上はグチャグチャに<NOBR>みたい
になってしまってご迷惑をおかけしています。

さて、「ディレクトリに問題はない」みたいに書きましたが、今、気がついたの
ですが、

>property grpahic_path : "" --- 画像のはいっているフォルダーのパス
というのは、""の中にパスを設定するということでしょうか?
ここ、何もやってません……。もし設定する必要があるとすれば、フルパス
でしょうか、それとも相対パスですか? 相対パスとすれば、どこから見ての
画像の入っているフォルダーの(adpics)のパスのことでしょうか?

田中求之 さんからのコメント
( Friday, February 07, 1997 16:24:36 )

 grpahic_path には、画像の入っているフォルダー(adpict)のフルパス
を設定してください。


あと、NetCloak を使うとランダムな画像表示が可能です(実は私のサーバーの
某ページでこれをやっている)。

また、時間が来ると自動的に画像が変わる仕組みは、Frame を使うと簡単に実現
できます。

柾木 博行 さんからのコメント
( Wednesday, February 12, 1997 16:06:05 )

田中先生、ご返事が送れて失礼しました。
おかげさまで無事にランダムに画像ファイルを表示することが出来ました。

関連するページにリンクさせるのは、このスクリプトを元にランダムにHTML
ファイルを表示するようなCGIを作って、それをフレーム表示するターゲット
HTMLとしてメインページから呼び出せばなんとかなりそうです。
ありがとうございました。

松本 進 さんからのコメント
( Friday, January 02, 1998 08:26:49 )

インターネット上のファイルを保存すると「CGI」で保存されることが
ありますね。このファイルを表示させるために葉、小生のパソコンの場合
いったんネットスケープをたち上げてから「ファイルを開く」で表示して
います。「JPG」ファイルだとファイル名をクリックするだけで表示で
きるのですが、「CGI」の場合も、同様にすばやい表示ができないもの
でしょうか。都合良いものがあれば紹介下さい。

田中求之 さんからのコメント
( Friday, January 02, 1998 15:33:18 )

CGI から送られてきたデータの型がわかれば、ファイルのタイプを変更すれば(Mac
の場合)、クリック一発ですむようになるはずです。

画像なのであれば、たいていは GIF か JPEG でしょうね。Graphic Converter
のような自動判別を行うツールで見るようにするというのも一つの方法でしょう。