[自作のコモノ集 Top]
『なんちゃって画像転送同調装置』
別名「ぱらぱらまんが型画像同調装置」
 某大学にあるCALL教室には「画像転送装置」という
ものがあります。これを使うと、教師卓上にあるPCとか
ビデオとかDVDとかの画像を
学生机上にあるモニタに(しかも動画で!)映すことができる(右図。ここでは
「自習開放は12:40まで」と書かれた紙が表示されている)という、
非常に便利な装置なわけなんですけど。
でも、この装置はかなり高価で、
そうそう簡単にあちこちの環境に導入できるシロモノではありません。
某大学にあるCALL教室には「画像転送装置」という
ものがあります。これを使うと、教師卓上にあるPCとか
ビデオとかDVDとかの画像を
学生机上にあるモニタに(しかも動画で!)映すことができる(右図。ここでは
「自習開放は12:40まで」と書かれた紙が表示されている)という、
非常に便利な装置なわけなんですけど。
でも、この装置はかなり高価で、
そうそう簡単にあちこちの環境に導入できるシロモノではありません。
でも。間近でこういうのを見てると思うんだよなあ。
たとえばインターネットにつながったPCが10台くらいあるだけの教室でも、
画像転送装置みたいな感じで、静止画でもいいから、
全PCのモニタに同じ画像を、ほぼシンクロさせる形で表示できたらなあ、と。
‥‥で、ある日ふと思いついたわけです。教師用卓上にある、備付けの
PC の画面を転送するのは確かにタイヘンだろう。
でも「全部のPCは同じサイトにアクセスできる」という条件をうまく使えば、
あらかじめ用意しておいた画像ファイルを学生機にだいたい
同時に表示できる程度の機能をもった、
画像転送装置のまねごとをするシステムくらい、
けっこう簡単に作れるんじゃないの?? と。
というわけで作ってみたのがコレです。(スクリプトを書いたり
試したりしてる時間より、このページを書いたり直したりするのに
かかる時間のほうがどう考えても長い‥)
でもでも
  - 2台以上のPCが使える環境にあるとわかりやすいと思いますが、
      WWW ブラウザのウィンドウを2つ以上同時に表示しても
      だいたい雰囲気は掴めると思います。
-  まず片方のブラウザ(A)、あるいは1台目のPC(先生機を想定)で
      ここをクリックします。
-  次に、もう片方のブラウザ(B)、あるいは2台目以降のPC(学生機を想定)
      でここをクリックします。
-  ブラウザ(A)(あるいは、1台目のPC)にはリンクが付いてます。
      このリンクをクリックすると、別の画像に表示が切り替わったと思います。
      その状態で10〜20秒程度待ってると‥
-  ブラウザ(B) で表示される画像が、ブラウザ(A)で表示されてる画像と
      同じに変わったでしょ?
-  大スクリーンもなく、画像転送装置もなくて PC しかないという環境で、
      なにか図とか画像を提示したいときとかに、なかなか使えるのでは? と
      自画自賛してるのですが、どんなもんでしょう?
  
- [ 学生機用 cat.cgi のソース ] と、
      [ 先生機用 cntl.cgi のソース ] です。
      なんか典型的な「動けばいいや」スクリプトで、
      動いたのを確認したところで書くのをやめてます。かなり汚いですね。
      ははは (^_^;(最初に公開した頃の cat.cgi とか cntl.cgi には
      current.dat ファイルのロック機能とか、
      起動後に一定時間が経過したら自爆する機能(これで無限ループ防止)などの
      安全装置が付いてましたけど、Apache on WindowsなWWWサーバでも動作するよう、
      それら安全装置は全部はずしました^^)
- なお、さらに動画にも対応させたバージョンも作成しましたが、これがまた
    さらにソースが汚い‥(^_^;
ファイル構成と、簡単なしくみ
このディレクトリの中身はだいたいこんな感じです:  
  -  このシステムが表示対象にするのは、
      カレントディレクトリにある *.jpg, *.jpeg,
      *.gif, *.png, *.body にマッチする名前のファイルです
      (2006/10段階)。
      これらのファイルは、名前によってソートされて
      その順番で画面表示されます。
-  HTML ファイルを表示したいときには、HTMLファイルに
      おける <body> タグから </body> タグまで
      の部分を *.body という名前のファイルにして置きます。
      ちなみに *.body ファイルでは「このディレクトリ」を
      示す際に「$D$」という表記を使っています。
-  cntl.cgi(先生機CGI)、cat.cgi(学生機CGI)ともに、
      起動時にカレントディレクトリにある *.jpg, *.jpeg,
      *.gif, *.png, *.body にマッチするファイルをチェックし
      名前でソートしておきます。
-  cntl.cgi は、画像ファイル(など)を表示する際に、
      現在表示中の画像ファイルの順番を、
      current.datという
      名前のファイルに記録します。もしこのファイルが
      ない、あるいは壊れてるときには、その中身は「0」
      であると勝手に判断されます。
-  cat.cgi は、起動時に
      current.datというファイルを
      チェックし、その中身によってどの画像ファイルを
      表示するか決めます。
-  cat.cgi は一定時間が経過するとページのリロードが
      起こるようになってます。その結果、cntl.cgi が
      表示してる画像とだいたい同じ画像が表示されるように
      なるわけです。
即席 Windows機WWWサーバ上での運用
さて、実際に「インターネットにつながったPCが10台くらいあるだけの教室」で
このスクリプトを使おうと考えたときに、
私にとって最も都合がよいのは「その教室にある10台くらいのPCのうち、
どれか一台を即席WWWサーバに仕立てあげて、そこでこのCGIを動かす」
ことです。
そこでまず、WWWサーバやPerlなどのパッケージを詰め込んだ
フラッシュメモリを用意して、
  -  PC にフラッシュメモリを挿して、
-  フラッシュメモリ内にある、WWW サーバ本体のアイコンを
      クリックするだけで即席 WWW サーバ起動!
‥‥するような環境の構築を行います
[このへんについては、こちら]。
そして、その即席サーバ上でこの CGI を稼働させてみる訳なんですが‥
おお、ちゃんと動く! (^o^)
  -  Perl で書いた CGI が稼働するWWWサーバを用意する。
      ここでは Perl は /WWW/Jperl/JPERL.exe としてアクセスできると仮定。
-  参照させたい画像ファイルなどを置く場所を用意する。ここでは
      /WWW/htdocs/show とする。
-  [ 学生機用 cat.cgi のソース ] と、
  [ 先生機用 cntl.cgi のソース ] を
    /WWW/htdocs/show に置く
-  これらの CGI ファイルはどちらも最初の行は
      「#!/usr/local/bin/perl」となっている。
      これだとCGIが動かないので「#!/WWW/Jperl/JPERL」と修正。
-  参照させたい画像ファイルなどを /WWW/htdocs/show に置く。
TA
[Windows-version since 2007]
[Since 2004]