参考・ポロン<ボツ原稿>『ローカルサーバでGUIチックに−−集中連載・1』 Webサーバをインストールすれば、たちまちGUIチックな言語に変身 いまさらPerl? −−今こそPerlです! Webサーバをインストールすれば 、ブラウザからスクリプトをコントロールでき、たちまちPelrは、GUIチックな 言語に変身するのです。 −−−−最初に。このスクリプトの位置づけ−−−− すべて、cgi-binディレクトリに入れて動作させます。 原稿を書いた時点で、企画自体がボツになりました。 原稿では、listtxt.plにしか触れていませんが、「down load」か らスクリプトをダウンロードすると、総てのスクリプトをgetできます。 総てのスクリプトとは、下記の通りです。 「ぽろん」に関しては、スクリプトをバージョンアップし、書籍『今日からPerlプ ログラマー』の方に入れる予定です。 10月号以降は、原稿を書いていないので、判りにくいですが、 基本的に、テキストビューワ(縦書き・横書き)+jpgビューワの統合環境です。 (この企画は、ボツになったので、「縦書き」ネタのみ、形を変え、別の機会に掲載し ました。) 9月号 listtxt.pl……ブラウザ上 1・指定フォルダ以下のテキストファイル、画像をリストアップ。 2・クリックで表示。 3・他スクリプトと協調し、 縦書き・横書き表示サポート。 協調スクリプトがない場合にも配慮 10月号 sub_html.pl……tatehtml.plと共通のサブルーチン yokohtml.pl……ブラウザ上でテキスト表示(横書き)。 色変更・強制改行可能。 1000文字程度で改ページ 強制改行アリ。sub_html.plとsub_web.plが必 須。 11月号 kakkogif.pl……ブラウザ上で 1・縦書きカッコ類を表示 2・gifの色変更可能 3・"ぽろん"のロゴマークを表示 11月号では、このスクリプトにより、インライン画像の話題 に触れる予定でした。 12月号 tatehtml.pl……ブラウザ上で 1・kakkogif.plと共に動作 2・テキスト縦書き表示。ページ分割される。 3・色変更・段組変更。 4・強制改行可能。一ページの行数も変更可。 5・ページジャンプナビゲータ完備。 6・kakkogif.plのない環境でも疑似縦書きカッコを表示 可。 kakkogif.plと、sub_html.plとsub_we b.plが必須。 1月号 photo.pl………ブラウザ上で 1・指定フォルダ以下の静止画像をリスト化。 2・サムネイル表示。 3・自動ページ送り。 4・サムネイルサイズ変更可。 5・もちろん、サムネイルクリックで、元画像を表示可。 画像管理スクリプト。0ページでリスト画面、ページめくると、 1ページ以降は、サムネイル表示。 サムネイル状態でのスライドショーができるソフトは珍しいです。 段組変更、写真表示サイズの変更などもブラウザ上から操作できます 。 −−−−本文−−−− ●PerlをGUIで……! PerlをGUIで使えたら……。アプ ローチは色々ありますが、最も簡 単なのは、PCをWebサーバにして、 CGIとしてPerlを実行する方法です。 複雑なウィンドー&マウスオペレ ーションは、ブラウザが担当して くれますから、ちょっとしたコツ だけ守れば、PerlでらくちんにGU Iプログラムが組めます。 CGIとはなんでしょう? インタ ーネットの掲示板とか、アクセス カウンタなどは、ご存じの通り、 CGIプログラムで動いています。P erlで書かれたCGIは、他の言語の ものにくらべ、群を抜いて多いの です。 ●webサーバインストール・設定 まずは、さっそく、PCをWebサ ーバにしてしまいましょう。HP 「今日からPerlプログラマー※」 にもリンクを張りましたが、AN HTTP Server 1.34c(高速・安定) 、webserver 1.00(軽い)のどち らも、フリーかつ、簡単なので、 お勧めです。どちらにも不具合が ありますが、今後のバージョンア ップを待ちましょう。 |※URL |http://www.geocities.co.jp/SiliconVall ey-Cupertino/6103/ 設定の重要なポイントは、1・ CGIの実行を、Perlから、JPerlに 変更すること、2・CGIのある フォルダを実行可能にすること、 3・テンポラリファイルを書き出 すフォルダを書き出し可能(パー ミッション)にすること、4・外 にWebサーバを公開しないこと、で す。以上の具体的な設定方法が判 らない場合は、HP「今日からPe rlプログラマー」をご覧ください。 なお、大きな注意点として、こ の連載のCGIは、 xxxx┬cgi-bin └home のようなディレクトリ構成を想 定しています。cgi-binから相対的 に見た場合、"../home"の位置に、 ドキュメントルートがあることが スクリプトの前提になっています ので、この構成を取らない場合は、 合わせて、スクリプトの変数を変 更して下さい。 ●集中連載・題して「ファイル平面管理"ぽろん"」CGIプログラムの要点を、これか ら、五回に渡って集中連載します。 毎月、別の手法を紹介すると同時 に、実用可能なプログラムを発表 します。さらに、五回分のスクリ プトを全部合わせると、全体で、 「ファイル平面管理"ぽろん"」と いうプログラムになります。 "ぽろん"は、存在すら忘れてい たファイルを"ぽろん……"と発見 できるようなファイルローダプロ グラムです。最近のwindowsや、各 種フリーウェア(Albumや、Susie 等)では、サムネイル表示、テキ ストファイル表示、スライドショ ーなどの機能により、ファイル管 理がしやすくなっています。しか し、どの方法も管理の基本単位は、 あくまでも「フォルダ」です。フ ォルダ管理が、立体的な管理とす れば、"ぽろん"は、いわば、平面 管理であり、フォルダをまたいで 下位フォルダまでのファイルをひ とつのページに集め管理します。 ファイルの立体管理では、探し たいファイルにすぐに到達できる 利点がありますが、どんなファイ ルがあったのか、ろくに覚えてい ない、一万もあるファイルをなん となく見わたしたい場合、平面管 理の"ぽろん"は、強力なツールに なります。 テキスト表示では、横書き、縦 書き表示、背景色、文字色、段組 などを好きに変更して表示する機 能、画像表示では、サムネイルの 大きさ変更、サムネイルの段組変 更と、サムネイル状態でのスライ ドショーなどをサポートしていま す。 今月は、フォルダをまたいで、 ファイルのリストアップを行う部 分のlisttxt.plを発表します。そ の他の機能は、来月以降に対応し ます。"ぽろん"の詳細が知りたい 方は、HP「今日からPerlプログ ラマー」をごらん下さい。 ●今月のスクリプト sub_web.plと、listtxt.plが両 方で一つのスクリプトです。sub_ web.plは、ライブラリではなく、 来月以降のスクリプトと共通部分 のサブルーチンを、単に切り離し た物で、来月以降も必要になりま す。 また、この連載では、perlでな く、Jperlでの動作を想定していま す。perlでは、2〜3の命令が問 題となり、動作しません。 Jperlの入手先は、HP「今日か らPerlプログラマー」にも二種類、 リンクを張りました。注意点は、 Jperlのパッケージによって、Jpe rl.exeのインストール位置が異な るので、webサーバに、それをきち んと設定することが必要です。 ●CGIの基本形式 htmlでは、画像や文字にリンク を張ることで、クリック一つで操 作できます。htmlのこの性質を利 用し、CGIは、htmlを出力(表示) することで、ブラウザ上でGUIを実 現します。 以下は、長い一行でできている test2.plです。これを、webサーバ のcgi-binフォルダに保存して下さ い。 ------test2.pl------ print "Content-type: text\/ html\n\n<HTML><HEAD><TIT LE>te st</TITLE></HEAD><BODY&g t;こんにち は<BR>$ENV{'QUERY_STRING'}<BR> <A HREF=\"http://localhost/cg i-bin/test2.pl? This_is_param eter\">ここをクリック</A></BOD Y></HTML>"; ------------------- これを実行させるには、ブラウ ザのURL欄に、「http://localhos t/cgi-bin/test.pl」と打ちます。 webサーバが起動していて、きちん と設定されていれば、「こんにち は」と表示されます。このように、 CGIでは、htmlを表示させたい 場合、いきなり「<HTML>〜」と表 示せずに、まず、「Content-type: text\/html\n\n」と表示します。 そこから続けて、普通にhtmlを表 示してゆけば良いのです。 では、$ENV{'QUERY_STRING'}と いうのは、何を示しているのでし ょうか? これもCGIプログラ ムの、もう一つの重要な点です。 <ここをクリック>部分をクリッ クすると、「こんにちは」の下に、 「This_is_parameter」と表示され ます。これは、test2.plにパラメ ータで文字列を渡しているからで す。ですから、今度は、ブラウザ のURL欄に、「http://localhost/ cgi-bin/test.pl? hello」と打て ば、「hello」が表示されます。 つまり、URL欄のプログラム名の 後に、「? 〜」と続けることで、 CGIにパラメータを渡すことができ るのです。ここに様々な変数を指 定することで、プログラムの動作 を自由にカスタマイズできます。 今月のスクリプトでのパラメータ 処理は、「sub post(sub_web.p lに記述)」と、これを呼び出して いる行(listtxt.pl)で確認でき ます。 ●URLエンコード・URLデコード ここで、一つ困ったことがあり ます。ブラウザのURL欄は、日本語 などの二バイト文字を通さない場 合があるのです。実用上は、URL欄 に日本語を記述しても問題はない のですが、URL欄でパラメータを渡 す時は、URLエンコード(%+16進 二桁の文字コードに変換)をし、 それを受け取ったらURLデコードを すると覚えましょう。 半角も全角も全部エンコードす るには、 |@decode = unpack("C*","$txt_ |in");$value ="";foreach $i |(@decode) { $txt_out .= spri |ntf ("%%%02X","$i"); } これで、$txt_inを$txt_outにエ ンコードできます。これでも、ス クリプトは問題なく動きます。し かし、正式なURLエンコードは、0 -9a-zA-Zと_-.*に限り、エンコー ドしません。 sub url_encode(sub_web.pl) では、これを少し変更し、0-9a-z A-Zと_-.@/をエンコードしない文 字にしてあります。また、unpack ("S",$n)に、一バイト文字を渡す と、常に0になってしまうので、二 バイト文字と一バイト文字で、異 なる処理をしています。 ●起動 listtxt.plと、sub_web.plをcg i-binフォルダに入れ、ブラウザか ら、「http://localhost/cgi-bin /listtxt.pl」を表示させます。最 初の起動時のみ、「/home/var」フ ォルダにlisttxt.txtが生成され、 ドキュメントルート以下で、指定 しておいたフォルダ以下のファイ ル一覧が、再帰的にリストアップ されます。 しばらく待っていると、listtx t.txtがhtml化されて表示されます。 二回目のアクセスからは、既存の リストファイルを元に表示される ので多少は高速になります。 テキストファイルは、冒頭の5 0、100、150、200文字(全 角換算)が表示され、なんのファ イルかわからない物もある程度予 測できるようになっています。 このテキストヘッダの文字数は、 クリックで変更できます。変更し たり、「リスト再読み込み」をク リックすると、フォルダを調べ、 listtxt.txtが新たに生成されます。 表示画面の、htmlファイルやjp gファイルなどをクリックすると、 そのままブラウザの機能で表示さ せることができます。 このように、listtxt.plは、忘 れ去られたフォルダの忘れ去られ たテキストファイルを閲覧するの に適したスクリプトです。今後は、 データは、cgi-bin以下に移して管 理しましょう。 "ぽろん"最大のウリである、縦 書き表示と画像インデックスは、 来月以降発表するスクリプトがあ れば、自動的に使えるようになり ます(このままで使用すると、「 スクリプトがありません」と表示 されます)。 また、来月発表するyokohtml.pl があれば、自動判別し、横書き表 示の時に、表示色カスタマイズや 改行のないファイルを強制的に改 行する機能を利用できます。