総合説明書
汎用リスト生成プログラム - Listgen

■もくじ

●概要
動作環境

導入
設定・使用法
宣言
最後に

■はじめに

このプログラムは、CGI/SSI設置の知識がある程度ある方を対象にしています。
申し訳ありませんが、この説明書を読んでもチンプンカンプンだった人は使用をご遠慮下さい。

■旧Listgenをお使いだった方へ
CGI 版とSSI 版を分割したことにより、listgen.cgi の呼び出し方が変わりました。
定義ファイルの仕様もかなり変更されています。
お手数をおかけしますが、初めて導入するときくらいの慎重さで丁寧に説明書を読み直して下さい。

■前準備
本文を読み進める前にCSVエディタをご用意下さい。 MS-Exel や Lotus 1-2-3 の様な表計算ソフトでも良いです。
推奨CSVエディタは、折井 哲氏が開発した「ListPad」です。
ListPad の軽快な操作感は Listgen 用のデータベースファイルの作成にピッタリです。
シェアウェアながら、機能制限はありませんのでガシガシ使用できます。
(TezzorieApps - 折井 哲氏)
http://www.din.or.jp/~tetsu/apps/
■動作環境
UNIX系OS+Perl なら多分なんでも行けると思います。
厳密には truncate() 関数と flock() 関数をサポートした Perl が必要です。
PERL4で書かれています。(…そのハズです)

Windows系/MacOS系とPerl の組み合わせでも動作する筈ですが、サポート外とさせていただきます。
私の元にはUNIX以外のOS環境がないので動作確認ができないのです。
少なくとも Win9x + MS IIS + ActivePerl の組み合わせでは修正なしには動きません。

動作確認は
   FreeBSD 2.2.7R + Apache + jperl5.004_04-980303 / perl4.0 Rev.1.7.2.2 Patch level 36
   Red Hat Linux release 4.2 + Apache + perl4.0 Rev.4.0.1.8 Patch level 36
にて行いました。

CGI、又はSSIが使用可能になっているかどうかもご確認下さい。
プロバイダ側サーバに Perl がインストールされているかもご確認下さい。

■概要

■どんなソフトなのか
「Lisgten」はperlで動作する汎用リスト生成プログラムです。
Listgen の名前は“List(一覧表) Generator(生成プログラム)”という機能に由来しています。

汎用…といわれてもピンとこないかも知れません。
Listgenは他のリンク集CGI や日記CGI のような決まった目的はなく、表示方法をユーザの方自身に用意してもらいます。
これは一見まどろっこしい方法ではありますが、アイデア次第では色んな使い方に使える、一風変わったCGI プログラムです。
アイデアとListgenを扱うスキルがあれば、他のCGI を複数組み合わせたりしなくても、これ一つで大抵の用事をこなすことができるでしょう。
ただし、このスク リプトを思い通りに使いこなすには多少(かなり?)の鍛錬が必要となります(^_^;

「lisgten」は
実際に表示するための本体 listgen_c.cgi (CGI 版)
listgen_s.cgi (SSI 版)
表示方法を定義するテンプレートファイル 拡張子 .def のファイル
データファイル 拡張子 .csv のファイル
のセットで動作します。
ユーザ(あなた)が定義したテンプレートファイルを解釈し、データを埋め込んでゆき、その結果をブラウザに表示するプログラムです。

イメージとしては、
  • テンプレートファイルという「○だの×だのの形の付いた容器」とデータファイルという「パン生地」を Listgen という機械の箱に入れます。
  • Listgen がガッコンガッコンと動きます。 タイムボカンシリーズの機械みたいな感じでお願いします(笑)
  • ぷしゅーっと音がして吐き出し口から「容器の形をしたパン」が出てきます。
こんな感じでしょうか(^^)

主にリンク集などの作成を目的に作られていますが、表示形式を自分で定義で きますので「新着情報」「用語辞書」「イラスト一覧表示」「日記」など、あなたのアイデア次第でどんな用途にも使用できます。

■それだけじゃあ能がないなあ…
もちろん、何から何まで無分別に加工して吐き出すわけではありません。
一つ一つのデータには「区分」を指定します。
一致する区分以外のものは出力しません(もちろん、区分は複数指定できます)。

普通のパンがいい人もいれば、レーズン入りのパンがいい人も、ジャムがたっぷりのパンがいい人もいるでしょう。
レーズン入りが嫌いな人にレーズンパンが出てきたらかわいそうですよね。
あらかじめ機械に「普通のパンが欲しい」と教えておけば、普通のパンしか作りません。
あれっ? ちょっと例えがおかしくなってきたぞ?(^x^;

例えば、リンク集のデータを作ったとします。
一つ一つのデータ(リンク先のデータ)には、「ここは相互リンク」「ここはCGに強いページ」「ここは文章系」みたいな感じの大ざっぱな分類をつけておきます。 これを Listgen では「区分」と呼びます。
相互リンクのページのみを抽出したいとか、サーチエンジンのみを抽出したいとか、そういうときに「大ざっぱな分類」をもとに、必要なデータか、そうでないかを仕分けをして表示させます。

区分の指定のみでは大ざっぱすぎて間に合わない場合、「キーワード検索」を併用します。
特定のキーワードをデータに埋め込んで区分を拡張する使い方もアリでしょうし、入力フォームを用意してサーチエンジンのような使い方をするのも楽しいでしょう。

■Listgen の生きる道
CGI 版とSSI 版の二つを用意しています。
CGI 版はページそのものを動的に作り出します。
SSI 版はページの中に埋め込んで、その特定部分を動的に表示します。

例えば私の場合、Listgen をリンク集CGI として使っています。
リンク集ページとして表示させる場合はCGI 版を使い、SSI 版はトップページに新着リンクを表示させるのに使う…という棲み分けをさせています。

SSI 版は使えるプロバイダがかなり限られてしまいますが、自由にデザインが出来る分、小回りの利くツールとして使うことが出来るでしょう。

「定義ファイルとデータが分離している」という点も、実は大きな事です。
サイトのデザインが変わったときも、定義ファイルだけを変更すれば、一気にデザインの変更が出来ます。
というと万能な気がしてきますが、Listgen はあくまで「連続したデータを加工して表示する」ツールですので、スタイルシートみたいに使えるような、過度な期待はしないで下さい。

また、必ずしもCGI としてリアルタイムに動作させる必要もありません。
取り敢えず Listgen を使ってHTMLを表示させ、それをファイルに保存して使うという手もあります。
内容を更新したときだけ Listgen を動かして、出来上がったHTMLをページに埋め込む。
こんな使い方もあると思います。
即時性には乏しいですが、サーバの負荷を考えると、更新の遅い内容ならこの方法が一番でしょう。

その場合、「HTMLファイルの作成は自分のパソコンで。 出来たファイルをサーバにアップロードする」という使い方が理想ですね。
Listgenは"Windows不可"とは書いていますが、 "flock(うんぬん)"という部分をコメントアウトするか削除すれば動くように作ってあります。 Windows機の方はActiveStateの"ActivePerl"を試してみては如何でしょう。
(パソコンでPerlをインストールする方法に関する質問は受け付けませんよ…念のため)

■導入

☆解凍☆
listgen.lzh を解凍します。
こんな感じでファイルが詰まっているはずです。
<listgenディレクトリ> [プログラム本体や、周辺ツールを置きます]
listgen_c.cgi Listgen 本体 - CGI 版
listgen_s.cgi Listgen 本体 - SSI 版
jcode.pl 日本語コード変換ライブラリ
©Kazumasa Utashiro
<dataディレクトリ> [データファイルを格納します]
link.csv (サンプル) 某所で使われているリンク集用データ
link_sogo.csv (サンプル) 某所で使われているリンク集用データ(相互リンク分)
new_log.csv (サンプル) 某所で使われているサイト更新履歴
<defディレクトリ> [定義ファイルを格納します]
link.def (サンプル) リンク集用定義ファイル
new_log.def (サンプル) 更新履歴用定義ファイル
<ssi_optディレクトリ> [オプション指定ファイルを格納します(SSI 版のみ)]
link_new.pl (サンプル) リンク集(link.csv , link_sogo.csv)から新着のものだけを抜き出して表示するための指定
new_log_j.pl (サンプル) 更新履歴から「 j (日本語)の区分」かつ「新着」の物のみを抜き出して表示するための指定
new_log_e.pl (サンプル) 更新履歴から「 e (英語)の区分」かつ「新着」の物のみを抜き出して表示するための指定
<docディレクトリ> [説明書が格納されています]
readme.html 総合説明書。これ
listgen_c.html Listgen CGI 版の取扱説明書
listgen_s.html Listgen SSI 版の取扱説明書
advanced.html
history.txt バージョンアップ履歴
これらのファイルが出てきましたか?
確認したら、次に進みましょう。


☆パーミッションの設定・ディレクトリ構成☆
出てきたファイルをサーバ側の任意のディレクトリへコピーします。
そのとき、ディレクトリ名は listgen が適当でしょう。

プロバイダから「スクリプトは cgi-bin 以下に置きなさい」など、スクリプトの置き場所を指定されているときは、そのディレクトリの下に listgen ディレクトリを作って下さい。

最終的には、次の様になるようにします。
<標準のディレクトリ構成>
                                (パーミッション)
/cgi-bin                        (705) -rwx---r-x
   |--/listgen                  (705) drwx---r-x  [プログラム格納用ディレクトリ]
        |-- listgen_c.cgi       (705) -rwx---r-x  (プログラム本体 - CGI版)
        |-- listgen_s.cgi       (705) -rwx---r-x  (プログラム本体 - SSI版) 
        |-- jcode.pl
        |
        |-- /def                (705) drwx---r-x  [定義ファイル用ディレクトリ]
        |    |-- link.def                         (sample:リンク集)
        |    |-- new_log.def                      (sample:更新履歴)
        |
        |-- /data                                 [データファイル用ディレクトリ]
             |-- link.csv                         (sample:リンク集)
             |-- link_sogo.csv                    (sample:リンク集 - 相互リンク)
             |-- new_log.csv                      (sample:更新履歴)

()内はパーミッションの数値
なお、特に権限を表記していないファイルについては(644)でお願いします。
普通、アップロードしたての状態は(644)に設定されます。

備考
パーミッションを表記していない物に関しては殆どのサーバでデフォルトの 644(rw-r--r--) でOKです。
セキュリティの観点から言えば 604(rw----r--)にしておけば言うこと無いです。

なお、サーバによってはパーミッションが 705 では動作しないところがあります。
その場合は 705(rwx---r-x) を 755(rwxr-xr-x) に読み替えて下さい。

ミルトクラブなど、CGI が設置したユーザの権限で動作するサーバに関しては
705(rwx---r-x) を 700(rwx------)に
606(-rw----rw-) を 600(rw-------)に
読み替えて下さい。

その他、詳しい情報については入会しているプロバイダのHowToページなどを参照下さい。
注意(必読!)
画像ファイル以外は「アスキーモード」で転送して下さい。
普通通りに転送してしまうと大抵「バイナリモード」で転送されてしまい、思わぬ誤動作の原因になります。
アスキーモードでの転送の仕方・パーミッションの変更の仕方は各 ftp クライアントの説明書を参照下さい。

■設定・使用法

CGI 版とSSI 版とではそれぞれ異なります。
CGI 版は Listgen / 取扱説明書 - CGI版
SSI 版は Listgen / 取扱説明書 - SSI版
をご覧下さい。 また、定義ファイル・データファイルの作り方は Listgen / 追加説明書 をご覧下さい。

■宣言

このプログラムはフリーソフトです。
著作権は放棄しません。 プログラム中のコピーライト表記を削除したり、改変しないで下さい。
画面のレイアウトを変えたりだとか、メッセージを変更したくらいで名前を変更されると、作者としては非常に寂しいです(笑)
が、あなたが本プログラムに原形をとどめない程の大幅な改造を施した場合は問題ありません。
その辺は常識的なさじ加減ということで…(^_^;

正規版の第三者による配布は禁止します。
これは、普及に伴いバージョン管理が困難になってきた実状を踏まえてこうなっています。
CD-ROMなど、私のページ以外の場所で掲載する場合は必ずご一報下さい。
(ただし、Vectorなど、私が自ら登録したものは除外します)

自由に改造して使用して下さい。  改造したものを再配布する事も制限しません。
ただし、改造版のサポートは改造した方が各自責任を持って行って下さい。

営利目的の使用・個人向けサイト以外の利用を制限しません。
煮るなり焼くなり好きに使って下さい。

このプログラムを用いた事による一切の損害について、作者は責任を負わないものとします。
あなたの責任の範囲において使用して下さい。

■最後に

本ソフトはフリーソフトではありますが、沢山の労力と時間を割いて作られております。
だからといって物質的な見返りはこれっぽっちも期待しておりませんが、皆さんに使ってもらいたい、沢山の反響が欲しい、という自己満足がプログラム製作の原動力になっております。 極力私のサイトへリンクを張ってもらえると作者冥利に尽きます。

もしよろしければ不可思議絵の具まで「Listgen使ってるよ〜」とメールでも掲示板でも何でも構いませんので教えてあげて下さい。
大抵の場合、返事をお返しすることは出来ないと思いますが、送っていただいたメールには全て目を通しております。
そんな皆様の温かいご声援メールは私の元気の源になっています。 ありがとうございます(^^)

©1999,2000 不可思議絵の具
(http://tech.millto.net/~fuka/)