声のかけら。設置マニュアル

結城浩

声のかけら。の設置マニュアルです。 このマニュアルと同じ内容が、配布されているアーカイブにも同梱されています。 最新版は、 最新版の設置マニュアルにあります。

目次

詳細目次

はじめに

    What did I dream? I do not know:
        The fragments fly like chaff.
    Yet, strange, my mind was tickled so
        I cannot help but laugh.
                -- Nursery Rhymes

    いったい どんな ゆめだっけ?
    しらない しらない おぼえていない
        ゆめのかけらが とんでいる
    でもおかしいな こころのなかが
    なんだか とっても くすぐったくて
        おもわず くすくす わらっちゃう
                ―― マザーグース

こんにちは、結城浩です。

「声のかけら。」は、何気ない一言を書き込んだり、 誰かの一言にふと別の一言を添えてみたりすることで、 発想を広げたりのんびりしたりするための掲示板です。

「声のかけら。」では、みなさんが書き込んだ文章を「かけら」と呼んでいます。 誰かが文章(かけら)を書き込むと、 それはすぐにみんなから読めるようになります。 でも、掲示板の記事とはちがい「かけら」は何度でも書き換えたり、追記したりできます。 そして、ブログのように、更新した時間順にかけらが並んで表示されます。

「声のかけら。」では、Wikiのように誰でも自由に文章を書き込んだり、編集したりできます。 でも、Wikiのような整形ルールは何もありません。

こんな掲示板、あなたなら何に使うでしょう。

「声のかけら。」は、 Yuki::Kakera (かけらエンジン)というモジュールをベースに作られています。 Perlで作ったCGIを動かしたことがある人なら、きっとすぐに設置できるでしょう。 かけらエンジンを元に、あなた好みのやわらか掲示板を作ってみませんか?

Enjoy!

この文章について

この「声のかけら。設置マニュアル」は声のかけら。をインストールするためのマニュアルです。 自作CGIをサーバに設置したことが一度はある方を対象としていますので、 パーミッションや転送モードなどの用語については解説を省略しています。 ご了承ください。

最新情報

声のかけら。の最新情報は、以下のページで入手できます。 スクリプトのダウンロードもこちらから行うことができます。

以下は、作者のサイトで実際に運営されている「声のかけら。」です。

ライセンス

このソフトウェアはPerlと同じ条件でライセンスします。

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

Copyright (C) 2000-2004 by Hiroshi Yuki. 結城浩

http://www.hyuki.com/

設置手順

以下では「声のかけら。」の設置手順を簡単に示します。

クローバー版やニュースサイト版についてもこれに準じますので、 説明を省略します。

サーバ別の設置メモも参考にしてください。

設置手順1. 配布ファイルを展開

配布ファイルを展開します。

配布ファイル一覧と見比べて、どのファイルが何であるかを把握してください。

設置手順2. Perlのパスを指定

配布しているアーカイブを展開すると、 index.cgiというファイルがあります。 これが「声のかけら。」本体です。

index.cgiの1行目を、 あなたのサーバのPerl処理系のパスに合わせて修正します。

例1:デフォルトのパス指定

#!/usr/bin/perl

例2:WindowsのActivePerlの場合のパス指定

#!perl

設置手順3. ライブラリの場所を指定

配布しているアーカイブを展開すると、 libディレクトリ以下にライブラリが展開されます。 このlibディレクトリの場所を、index.cgi内部でuse libを使って指定する必要があります。

展開したままで使用するなら修正は不要ですが、ライブラリの場所を移動したり、 ライブラリの場所をフルパスで設定する必要のあるプロバイダでは 修正が必要になります。

index.cgiのuse libの行を、 あなたの設定に合わせて変更します。

例1:デフォルトの指定

use lib "./lib";

例2:ライブラリを/usr/alice/local/libにおいた場合の指定

use lib "/usr/alice/local/lib";

設置手順4. そのほかの設定

index.cgiのはじめの方にある、変数$modifier_...の値を修正します。

$modifier_profile
    設置者を示す文字列。
    一般には、あなたのホームページへリンクし、名前を出すとよい。
    例)
        '<a href="http://www.example.com/your/home/page/">Your Name</a>'

$modifier_mail
    管理者メールアドレス。
    "でくくるときには@の前に\が必要なので注意すること。
    例)
        'you@example.com'
        "you\@example.com"

$modifier_site_name
    設置したCGIの名前。
    例)
        '声のかけら。'
        'わいわい掲示板'

$modifier_site_url
    設置したCGIの絶対URL。
    .htaccessをサーバに転送しない場合には、
    最後のindex.cgiを忘れないようにしてください。
    例)
        'http://www.example.com/kakera/'
        'http://www.example.com/kakera/index.cgi'

$modifier_sendmail
    書き込み時に管理者にメールを送るためのsendmailのコマンドライン。
    空文字列なら、メールは送らない。
    例)
        ''
        '/usr/sbin/sendmail -t'
        '/usr/sbin/sendmail -t -n'

    注意: sendmailの実体がqmailの場合には、オプションは-tのみにしたほうがよいという報告をいただいています。
    sendmailが使えるサーバで、
        '/usr/sbin/sendmail -t -n'
    がうまくいかないときには、
        '/usr/sbin/sendmail -t'
    を試してみるとよいかもしれません。

$modifier_theme_dir
    「テーマ」を置くディレクトリ。フルパスが望ましい。
    例)
        "/usr/you/kakera/theme/default"

$modifier_theme_base_url
    「テーマ」を置いたディレクトリのURL。絶対URLが望ましい。
    これはCSSの場所として使うことを想定している。
    theme/default/header.txtも参照のこと。
    例)
        "http://www.example.com/kakera/theme/default"

$modifier_data_dir
    「かけら」を置くディレクトリ。フルパスが望ましい。
    例)
        "/usr/you/kakera/files"

$modifier_image_dir
    アップロードした画像を置くディレクトリ。
    例)
        "/usr/you/kakera/images"

$modifier_image_base_url
    画像のベースURL。絶対URLが望ましい。
    例)
        "http://www.example.com/kakera/images"

$modifier_touch_file
    書き込みがあったときに更新されるファイル。フルパスが望ましい。
    例)
        "/usr/you/kakera/files/touched.txt"

$modifier_charset
    「かけら」の文字コード。この文字コードでファイルが作られる。
    例)
        'sjis'

設置手順5. 公開する解説文を修正

もしも、設置する声のかけら。を公開するならば、 theme/default/do_about.txt を適切に修正してください。 このファイルにはサイトの説明が書かれています。

設置手順6. サーバへ転送

FTPソフトなどを用いて、ファイルをサーバに転送します。 .htaccessは転送する必要がない(転送してはいけない)サイトもありますのでご注意ください。

拡張子      転送モード
.png        バイナリ
.cgi        テキスト
.txt        テキスト
.pm         テキスト
.htaccess   テキスト

設置手順7. パーミッションを設定

配布ファイル一覧の記述にしたがって パーミッションを適切に設定します。

設置手順8. アクセスする

Webブラウザで設置した「声のかけら。」にアクセスしてください。 トップ画面が表示されればOKです。

配布ファイル一覧

配布されているアーカイブには、 以下の3種類のCGIに関するファイルが含まれています。 必要に応じて取捨選択してご利用ください。

ファイル末尾の数字644や755はパーミッションを表します。 この指定はサーバによって異なる場合がありますので、 サーバの管理者やCGI設置マニュアルなどの指示に従ってください。

index.cgi       rwxr-xr-x (755)     実行するCGI本体
files/          rwxrwxrwx (777)     作られるかけらを保存する場所
images/         rwxrwxrwx (777)     アップロードした画像を保存する場所
変更ファイル    rw-rw-rw- (666)     touched.txt、書き込まれるファイルなど
そのほか        rw-r--r-- (644)

共通ファイル

すべてに共通するファイルです。

readme.html
    ドキュメント。転送不要

tools/simple_theme_converter.pl
    テーマの特殊タグ簡略化ツール。転送不要。

.htaccess                           (644)
    必要に応じて転送。
    .htaccessを設置するとCGIが動作しないプロバイダもあるので注意。

index.cgi                           (755)
    CGI本体。
    設置するときに修正が必要。

files/                              (777)
    かけらのファイルを書く場所なので、
    書き込み可能にしておくこと。

files/touched.txt                   (666)
    書き込みがあると更新されるファイル。

lib/HTML/Template.pm                (644)
lib/Jcode/Constants.pm              (644)
lib/Jcode/H2Z.pm                    (644)
lib/Jcode/Tr.pm                     (644)
lib/Jcode/Unicode/Constants.pm      (644)
lib/Jcode/Unicode/NoXS.pm           (644)
lib/Jcode.pm                        (644)
lib/Yuki/SingleFileDB.pm            (644)
lib/Yuki/FileDB.pm                  (644)
lib/Yuki/Kakera.pm                  (644)
    以上すべてライブラリ。

自動的に作られるファイル

files/recent_changes.txt            (666)
    更新した「かけら」のIDの列が保存されるファイル。
    自動的に作られるので転送不要。

files/search.txt                    (666)
    最近検索した語句を保存するファイル。エスケープ済み。
    自動的に作られるので転送不要。

声のかけら。関連ファイル

theme/default/style.css             (644)

    スタイルシート。
    theme/default/header.txtから参照されている。

theme/default/do_about.txt          (644)
theme/default/do_date.txt           (644)
theme/default/do_edit.txt           (644)
theme/default/do_index.txt          (644)
theme/default/do_read.txt           (644)
theme/default/do_recent.txt         (644)
theme/default/do_rss.txt            (644)
theme/default/do_search.txt         (644)
theme/default/do_top.txt            (644)
theme/default/header.txt            (644)
theme/default/footer.txt            (644)
theme/default/item.txt              (644)
theme/default/create.txt            (644)
theme/default/localjump.txt         (644)

    テンプレートファイル。
    do_がついているのが画面全体に対応するテンプレート。
    それ以外は他から参照されているテンプレート。

クローバー版声のかけら。関連ファイル

以下のファイルは、 クローバー版声のかけら。が不要なら設置の必要はありません。

クローバー版声のかけら。とは、 Web日記システム tDiary ( http://www.tdiary.org/) 1.5の 「クローバー」テーマに対応させた声のかけら。です。 tDiaryのテーマを利用する際の参考にどうぞ。

clover.cgi                          (755)
theme/clover/clover.css             (644)   tDiary由来。
theme/clover/clover_anchor.png      (644)   tDiary由来。バイナリモードで転送。
theme/clover/clover_anchor2.png     (644)   tDiary由来。バイナリモードで転送。
theme/clover/clover_h1.png          (644)   tDiary由来。バイナリモードで転送。
theme/clover/do_about.txt           (644)
theme/clover/do_date.txt            (644)
theme/clover/do_edit.txt            (644)
theme/clover/do_index.txt           (644)
theme/clover/do_read.txt            (644)
theme/clover/do_recent.txt          (644)
theme/clover/do_rss.txt             (644)
theme/clover/do_search.txt          (644)
theme/clover/do_top.txt             (644)
theme/clover/footer.txt             (644)
theme/clover/header.txt             (644)
theme/clover/item.txt               (644)
theme/clover/create.txt             (644)

ニュースサイト版声のかけら。関連ファイル

以下のファイルは、 ニュースサイト版声のかけら。 が不要なら設置の必要はありません。

Yuki::KakeraとYuki::SingleFileDBを使って、 簡易ニュースサイトを構築できます。

news.cgi                            (755)
files/news.txt                      (644)   これを書き換える。
theme/news/create.txt               (644)
theme/news/do_about.txt             (644)
theme/news/do_date.txt              (644)
theme/news/do_edit.txt              (644)
theme/news/do_index.txt             (644)
theme/news/do_read.txt              (644)
theme/news/do_recent.txt            (644)
theme/news/do_rss.txt               (644)
theme/news/do_search.txt            (644)
theme/news/do_top.txt               (644)
theme/news/footer.txt               (644)
theme/news/header.txt               (644)
theme/news/item.txt                 (644)
theme/news/localjump.txt            (644)
theme/news/style.css                (644)

files/news.txtを書き換えてサーバに置くと、 自動的に日付ごとに分けられて表示されます。 Webからの編集はできません。 入力ファイルは、news.cgiの中の$modifier_data_fileで指定します。

基本的使い方

ここでは「声のかけら。」の基本的使い方を示します。 クローバー版声のかけら。およびニュースサイト版声のかけら。については省略します。

「かけら」を作る

声のかけら。のトップページ にはテキストを書くエリアがあります。 ここに掲示板のような感覚で好きなことを書き込んでください。 新しい「かけら」(トピック)が作られます。

一行目は見出しになります。

「かけら」に追記する

かけらの下に追記フォームがあります。 そこにテキストを入力して追記ボタンを押すと、 現在のかけらにテキストを追加することができます。

「かけら」を書き換える

editというリンクをたどると編集画面に移り、かけら全体を自由に編集できます。 誰が作った「かけら」でも編集できます。 書き換えた「かけら」はトップページで最上位に移動します。

かけらの色を変えることもできます。

誰でも編集できるという点で「声のかけら。」はWikiに似ています。 ただし、Wikiのような表記方法(整形ルール)は特にありません。 改行は改行になり、URLはリンクになるだけです。

「かけら」を探す

検索フォームを使って、指定した文字列を含む「かけら」を検索することができます。

検索履歴は表示されていますが、削除することもできます。

「かけら」を表示する

permalinkというリンクをたどると、 その「かけら」全体を表示することができます。

「かけら」の色変更

「かけら」の周りの色を変えることができます。

editというリンクをたどった編集画面で、色を選択してください。

画像ファイルのアップロード

1つの「かけら」には、1つずつ画像をアップロードすることができます。

editというリンクをたどった編集画面で、参照...というボタンを押し、 画像ファイルを指定します。そして画像を送信するボタンを押すと、 その「かけら」に画像ファイルがくっついて表示されるようになります。

編集画面で画像を削除するというボタンを押すと、 その画像ファイルは削除されます。

いうまでもないことですが、公開されている「声のかけら。」に、 あなたが公開する権利をもたない画像をアップロードしてはいけません。

サーバ別の設置メモ

サーバごとの設置に関するメモです。 内容は古いかもしれません。 以下に示すサーバ以外に設置した方がいらっしゃいましたら、 フィードバックのフォームから情報をお寄せください。

Free Prohostingへの設置例

Free Prohostingへの設置例です(2004年4月現在)。

.htaccessは転送しないでください。

パーミッションの設定は不要です。

index.cgiを以下のように修正してください。XXXの部分はユーザごとによって異なります。

my $modifier_site_url = "http://XXX.prohosting.com/~XXX/kakera/index.cgi";
my $modifier_theme_dir = "./theme/default";
my $modifier_theme_base_url = "http://XXX.prohosting.com/~XXX/kakera/theme/default";
my $modifier_data_dir = "./files";
my $modifier_image_dir = "./images";
my $modifier_image_base_url = "http://XXX.prohosting.com/~XXX/kakera/images/";
my $modifier_touch_file = "./files/touched.txt";

AAA!CAFEへの設置例

AAA!CAFEへの設置例です(2004年4月現在)。

.htaccessは転送しないでください。

index.cgiのパーミッションは705にします。

index.cgiを以下のように修正してください。XXXの部分はユーザごとによって異なります。

my $modifier_site_url = "http://cgi.XXX.aaacafe.ne.jp/~XXXXX/kakera/index.cgi";
my $modifier_theme_dir = "/usr/home/free/home/XXXXX/public_html/kakera/theme/default";
my $modifier_theme_base_url = "http://cgi.XXX.aaacafe.ne.jp/~XXXXX/kakera/theme/default";
my $modifier_data_dir = "/usr/home/free/home/XXXXX/public_html/kakera/files";
my $modifier_image_dir = "/usr/home/free/home/XXXXX/public_html/kakera/images";
my $modifier_image_base_url = "http://cgi.XXX.aaacafe.ne.jp/~XXXXX/kakera/images/";

lib/HTML/Template.pmの2174行近辺を以下のように修正してください。 原因は不明ですが、AAA!CAFEのFile::Specが古いのかもしれません。

修正前:
    $filepath = $self->_find_file($filename,
        [File::Spec->splitdir($fstack[-1][0])]
    );

修正後:
    $filepath = $self->_find_file($filename,
        [ split(/\//, $fstack[-1][0]) ]
    );

AAA!CAFEのバナーが出てしまうため、RSSはうまく機能しません。

infoseek (isweb)への設置例

iswebへの設置例です(2004年4月現在)。

.htaccessは転送しないでください。

index.cgiはkakera.cgiなどとしてcgi-binに格納し、パーミッションは755にします。

kakeraとlibは、ホームディレクトリ直下に格納します。

kakera/filesとkakera/imagesのパーミッションは777とします。

kakera.cgiをたとえば以下のように修正してください。 XXXの部分はユーザごとによって異なります。

my $modifier_site_url = "http://XXX.hp.infoseek.co.jp/cgi-bin/kakera.cgi"
my $modifier_theme_dir = "../kakera/theme/default";
my $modifier_theme_base_url = "http://XXX.hp.infoseek.co.jp/kakera/theme/default";
my $modifier_data_dir = ../kakera/files";
my $modifier_image_dir = "../kakera/images";
my $modifier_image_base_url = "http://XXX.hp.infoseek.co.jp/kakera/images/";

Referer: によって閲覧を制限しているので注意してください。 つまり外部からリンクが張ってある場合、クリックしても表示されないことがあります。

情報提供は、 FukTommyさんです。 ありがとうございます。

xreaへの設置メモ

XREAへの設置メモです。

基本的には問題なく動作するとのことです。

ただし、書き込み直後にトップページに戻る処理が正しく動作するために、 以下の記述を.htaccessに追加します。

LayoutIgnoreURI .cgi

その際には、theme/*/header.txtあたりに広告を手動でいれるようにしてください。

sendmailを使う場合には、以下のように指定します。

$modifier_sendmail = "/usr/sbin/sendmail -t";

以上の情報は、声のかけら。へ書き込んでくださった方によります。 情報提供ありがとうございます。

ロリポップへの設置例

ロリポップへの設置例です(2004年5月現在)。

.htaccessは転送する必要はありません。

index.cgiのパーミッションは700にします。

設定マニュアルに表記されている「絶対 URL」は http: で始まる URI、 「フルパス」は /home/sites/.... で始まるパスです。 フルパスはレンタル契約時に送られるメール「アカウント情報のご案内」と、 ユーザー専用ページで確認できます。

書き込みをメール通知する機能を動かせません。 qmail のオプションを指定してもだめでした。 書き込み通知機能は RSS 購読で補えると思います。

index.cgiの文字コードはShift_JIS、改行コードはLFで動作確認しました。 改行コードはテキストエディタで制御してください。

以下はパーミッション設定です。

index.cgi を配置するディレクトリは手動で作成することをおすすめします。lib や theme などのディレクトリは一括アップロードで大丈夫だと思います。

以上の情報は、 声のかけら。ロリポップ設置例を元に、許可を得て転載・編集しました。感謝します。

plalaへの設置メモ

plala への設置メモです(2004年7月現在)。

パーミッションは以下のようにしました。

    kakera/ 705
        index.cgi 704
        files/ 705
            touched.txt 604
        images/ 705
        lib/ 705(中のフォルダも同じ)
            *.pm 604
        theme/ 705
            default/ 705
                *.txt 604

.htaccessも使用可能ですが、特に使いませんでした。

sendmailは使用設定しませんでした。

Perlのパスは/usr/local/bin/perlでした。

#!/usr/local/bin/perl

フルパス指定のところは、すべて/home/XXXX/を使いました。 use libの行でもフルパスを使っていることに注意してください。

以下のXXやXXXXにはユーザ固有の情報が入ります。 ぷららではサイトのURLとCGIのURLがサーバ名の部分から違うので注意が必要です。

##############################
# Libraries.
use strict;
use lib "/home/XXXX/kakera/lib";
use CGI::Carp qw(fatalsToBrowser);
use Jcode;
use Data::Dumper;
use Yuki::Kakera;
##############################
my $modifier_profile = '<a href="http://wwwXX.plala.or.jp/XXXX/">XXXX</a>';
my $modifier_mail = '';
my $modifier_sendmail = "";
my $modifier_site_name = 'XXXX';
my $modifier_site_url = "http://cgiXX.plala.or.jp/XXXX/kakera/index.cgi";
my $modifier_theme_dir = "/home/XXXX/kakera/theme/default";
my $modifier_theme_base_url = "http://cgiXX.plala.or.jp/XXXX/kakera/theme/default";
my $modifier_data_dir = "/home/XXXX/kakera/files";
my $modifier_image_dir = "/home/XXXX/kakera/images";
my $modifier_image_base_url = "http://cgiXX.plala.or.jp/XXXX/kakera/images/";
my $modifier_touch_file = "/home/XXXX/kakera/files/touched.txt";
my $modifier_charset = "sjis";

カスタマイズ

声のかけら。はプログラミングの知識を持たない人にもカスタマイズがしやすいように構成されています。

たとえば、見た目やページの構成は、 Perlでプログラミングしなくても HTMLやCSSの知識があれば修正することができます。

画面の見た目を変えたい

色やフォントなど、 画面の見た目を変えたいときには、スタイルシートを修正します。 スタイルシートの知識が必要です。

たとえば、theme/default/style.cssを修正します。

画面の構成そのものを変えたい

タイトルや表示する要素の場所など、 画面の構成そのものを変えたいときには、テーマを修正します。 HTMLの知識が必要です。

たとえば、theme/default/*.txtを修正します。

テーマを修正する際には、 テーマ作成のための特殊タグも参考にしてください。

主な設定を変更したい

トップ画面で表示される「かけら」の個数など、 主な設定を変更したいときには、index.cgiを修正します。 Perlの知識がちょっぴり必要です。

機能を追加したい

プログラムに機能を追加したいときには、 lib/Yuki/Kakera.pmを修正します。 Perlの知識が必要です。

mod_rewriteでURLに?を含めない工夫

デフォルトの.htaccessでは、 mod_rewriteを使っています。 これは、 http://www.example.com/kakera/20040420070958.html というHTML風のURLで、 http://www.example.com/kakera/?20040420070958 へアクセスするためです。

Apacheでmod_rewriteが使えるようになっている必要があります。 自分でhttpd.confを触れる人はhttpd.confの中を以下のように修正します。

#LoadModule rewrite_module modules/mod_rewrite.so
↓
LoadModule rewrite_module modules/mod_rewrite.so

mod_rewriteを使う場合(デフォルト)

Options ExecCGI FollowSymLinks
AddType application/x-httpd-cgi .cgi
DirectoryIndex index.cgi
RewriteEngine on
RewriteRule ^([0-9]+)\.html$ ?$1

mod_rewriteを使わない(使えない)場合

Options ExecCGI
AddType application/x-httpd-cgi .cgi
DirectoryIndex index.cgi

path_infoでURLに?を含めない工夫

.htaccessによる制御ができないサーバで URLに'?'を含めたくない場合には、 次のようにindex.cgiを修正します。

$modifier_site_urlにCGI名まで含める

my $modifier_site_url = 'http://www.example.com/kakera/index.cgi';

use_html_permalinkを1にする

my $cgi = new Yuki::Kakera(
            ...
            use_html_permalink => 1,
            ...
        );

このようにすると、かけらのpermalinkは、 http://www.example.com/kakera/index.cgi/20040417141503.html のようになります。

データファイルに直接アクセスさせない工夫

files, images以下のファイルに 直接アクセスさせたくない場合には、 以下のような内容の、 files/.htaccessおよびimages/.htaccessというファイルを作るとよいでしょう。

Deny from all

テーマ作成のための特殊タグ

声のかけら。では、 テーマを修正することで、サイトデザインを自由に変更できます。

themeディレクトリ以下に自分のテーマディレクトリを作り、 そこに theme/default の内容をすべてコピーし、 自分なりのテーマを作るとよいでしょう。

CGIが使用するテーマの場所は、 index.cgiの$modifier_theme_dirで指定します。 またスタイルシートの場所は$modifier_theme_base_urlで指定します。

テーマを作る際に利用できる特殊タグを以下に示します。 声のかけら。を動作させると、このタグが自動的に置換されます。

(技術的な詳細) Yuki::Kakeraのコンストラクタに渡すオプションのハッシュのうち、 大文字と_からなる名前のものは、 自動的にテーマで使える名前になります。 つまり、Yuki::Kakeraを修正しなくても、 index.cgiとテーマを修正するだけであなたが必要な置換を行わせることが可能です。

特殊タグの簡略化について

(Version 1.0.0以降) タグにはHTML::Template標準の、TMPL_... がついたものとつかないものがあります。 以下の解説ではTMPL_...がついたものはかっこでくくって示します。 どちらを使ってもかまいません。

tools/simple_theme_converter.plを用いると、 自動的に特殊タグを簡略化することができます。 simple_theme_converter.plの使い方は、

perldoc simple_theme_converter.pl

を参照してください。

全体

<VERSION>
    Yuki::Kakeraのバージョン番号。
    (<TMPL_VAR NAME=VERSION>)

<PROFILE>
    設置者のプロフィール。
    ホームページへのリンクになっていることが期待される。
    (<TMPL_VAR NAME=PROFILE>)

<SITE_URL>
    サイトのURL。
    これは非常によく使われる。
    (<TMPL_VAR NAME=SITE_URL>)

<SITE_NAME>
    サイトの名前。
    (<TMPL_VAR NAME=SITE_NAME>)

<THEME_BASE_URL>
    テーマのベースURL。
    CSSファイルの場所を指定する際に利用する。
    (<TMPL_VAR NAME=THEME_BASE_URL>)

かけらごと

<ITEM_TITLE>
    現在の「かけら」のタイトル。
    (<TMPL_VAR NAME=ITEM_TITLE>)

<ITEM_STYLE>
    現在の「かけら」のスタイル。数字です。
    (<TMPL_VAR NAME=ITEM_STYLE>)

<ITEM_BODY>
    現在の「かけら」の内容。
    (<TMPL_VAR NAME=ITEM_BODY>)

<IF ITEM_SUMMARIZED> A <ELSE> B </IF>
    「かけら」が中略されているときにはA、さもなくばB。
    (<TMPL_IF NAME=ITEM_SUMMARIZED> A <TMPL_ELSE> B </TMPL_IF>)

<ITEM_SUMMARY_HEAD>
    「かけら」が中略されているときの、省略されていないはじめの部分。
    (<TMPL_VAR NAME=ITEM_SUMMARY_HEAD>)

<ITEM_SUMMARY_TAIL>
    「かけら」が中略されているときの、省略されていない終わりの部分。
    (<TMPL_VAR NAME=ITEM_SUMMARY_TAIL>)

<IF ITEM_STYLE_d> A <ELSE> B </IF>
    「かけら」のスタイルがdのときにはA、さもなくばB。
    (<TMPL_IF NAME=ITEM_STYLE_d> A <TMPL_ELSE> B </TMPL_IF>)

<ITEM_DATE>
    現在の「かけら」の日付。
    (<TMPL_VAR NAME=ITEM_DATE>)

<ITEM_URL>
    現在の「かけら」のpermalinkのURL。
    use_html_permalink => 1のときには URL/$id.htmlという形式になり、
    それ以外のときには URL?$id という形式になる。
    (<TMPL_VAR NAME=ITEM_URL>)

<ITEM_IMAGE_URL>
    現在の「かけら」の画像へのURL。
    (<TMPL_VAR NAME=ITEM_IMAGE_URL>)

<ITEM_IMAGE_URL> A <ELSE> B </IF>
    画像があるときはA、さもなくばB。
    (<TMPL_IF NAME=ITEM_IMAGE_URL> A <TMPL_ELSE> B </TMPL_IF>)

<ITEM_EDIT_URL>
    現在の「かけら」の編集用URL。
    (<TMPL_VAR NAME=ITEM_EDIT_URL>)

<ITEM_NUM>
    ページ内での「かけら」一覧にふられる番号。
    (<TMPL_VAR NAME=ITEM_NUM>)

<IF ITEM_ALMOST_FULL> A </IF>
    もうちょっとで、この「かけら」がいっぱいになるときにはA。
    (<TMPL_IF NAME=ITEM_ALMOST_FULL> A </TMPL_IF>)

かけらの一覧

<LOOP ITEM_LIST>...</LOOP>
    「かけら」の一覧。かけらごとに...を展開。
    (<TMPL_LOOP NAME=ITEM_LIST>...</TMPL_LOOP>)

編集

<EDIT_ID>
    編集する「かけら」のID。
    (<TMPL_VAR NAME=EDIT_ID>)

<EDIT_BODY>
    編集する「かけら」の内容。
    (<TMPL_VAR NAME=EDIT_BODY>)

書き込み

<IF ERROR_TOOLONG> A </IF>
    書き込みが長すぎるときにはA。
    (<TMPL_IF NAME=ERROR_TOOLONG> A </TMPL_IF>)

検索

<SEARCH_WORD>
    エンコードされていない現在の検索文字列。
    (<TMPL_VAR NAME=SEARCH_WORD>)

<SEARCH_ENCODED_WORD>
    エンコードされている現在の検索文字列
    (<TMPL_VAR NAME=SEARCH_ENCODED_WORD>)

RSS関連

<LOOP RSS_ITEM_LIST>...</LOOP>
    RSSの項目一覧。
    (<TMPL_LOOP NAME=RSS_ITEM_LIST>...</TMPL_LOOP>)

<RSS_ITEM_LINK>
    「かけら」のURL。
    (<TMPL_VAR NAME=RSS_ITEM_LINK>)

<RSS_ITEM_ABOUT>
    「かけら」のURL。
    (<TMPL_VAR NAME=RSS_ITEM_ABOUT>)

<RSS_ITEM_TITLE>
    「かけら」のタイトル。
    (<TMPL_VAR NAME=RSS_ITEM_TITLE>)

<RSS_ITEM_DESCRIPTION>
    「かけら」の説明文。本文の一行目
    (<TMPL_VAR NAME=RSS_ITEM_DESCRIPTION>)。

<RSS_ITEM_DATE>
    「かけら」の更新日時。いまは機械的に日本時間にしている。
    (<TMPL_VAR NAME=RSS_ITEM_DATE>)

<RSS_ITEM_CONTENT>
    「かけら」の本文全体。
    (<TMPL_VAR NAME=RSS_ITEM_CONTENT>)

技術情報

主に開発者向けの技術情報です。

ファイル名

「かけら」はfilesディレクトリ以下に作られ、 ファイル名は、YYYYMMDDhhmmss.txtという形式になります。

たとえば、2004年4月25日16時40分12秒に作られたファイルは、 20040425164012.txtという名前になります。

ファイルの内容

1行目は最終更新日時とスタイルをコロンで区切ったもの、 2行目はタイトル、 3行目以降が本文になります。

「かけら」の一例を示します。 この「かけら」は、2004年3月30日18時50分7秒に作られました(すなわちファイル名は20040330185007.txt)。

この時点での最終更新日時は2004年4月1日14時49分59秒で、 タイトルは「気軽に腰掛けられるベンチ」、 そしてスタイルは3です。

20040401144959:3
気軽に腰掛けられるベンチ
先日、etoさんのテキスト「情報空間に街角や路地はどう生成されるか」
http://eto.com/1994/space/index.html
を読んで、気になった箇所があった。

  イギリスの大学の中には (中略)あちこちに座る事ができるような場所がある。
  結局のところ、イギリスの大学のような空間は話をするための空間なのだ。
  現在のInternetの空間の中では、そのような会話のできる空間というのは、ほとんどない。

こうして、誰でも気軽にcreate, editできる空間ってそんなイギリスの大学のベンチ的かも。
----
なるほどね。

----
書いた人:(^^)

----
のんびりしている雰囲気がよいかも。

----
ということは、あまりがちゃがちゃリンクがないほうがよいかもね。

----
いまのままでも十分きれいだと思いますよ。

Yuki::Kakeraのコンストラクタ

index.cgiではYuki::Kakeraのコンストラクタ(new)に必要なオプションを渡して CGIの振る舞いを制御します。

index.cgiの中の$modifier_...変数は、 このコンストラクタに情報を渡すため、 もしくはフック関数の中で使うためにあります。

my $cgi = new Yuki::Kakera(%option);

オプションには必須のものとそうではないものがあります。 また、/^[A-Z_]+$/にマッチするオプション名は、その値が <TMPL_VAR NAME=オプション名>としてテーマで使用することができます。

(Version 1.0.0以降) DATA_FILEは使われなくなりました。

PROFILE (必須)
    設置者のプロフィール。

SITE_NAME (必須)
    サイト名。

SITE_URL (必須)
    サイトのURL。

THEME_DIR (必須)
    テーマのディレクトリ。

THEME_BASE_URL (必須)
    テーマのディレクトリに対応したURL。

DATA_DIR (hook_tie_methodのいずれか必須)
    Yuki::FileDBを用いるときのディレクトリ名。

IMAGE_DIR
    画像のアップロードを行うディレクトリ名。

IMAGE_BASE_URL
    画像のアップロードを行った場所に対応するURL。

テーマとして展開されないオプション。

use_html_permalink
    mod_rewriteを使うときには1にする。デフォルトは1。

max_summary_length
    中略を行うバイト数の単位。デフォルトは500。

max_msg_length
    かけらの最大バイト数。デフォルトは5000。

max_recent_changes
    トップで表示するかけらの数。デフォルトは20。

max_search_count
     保存する最近の検索語の個数。デフォルトは20。

max_post_length
    アップロードできる1個の画像サイズ。0にするとアップロード不可。デフォルトは0。

debug
    Yuki::Kakeraのインスタンスの内容をダンプしてみせるオプション。デフォルトは0。
    実際の運用では0にするのがよい。

フック関数群。 Yuki::Kakeraの内部からindex.cgiを呼び出すための関数群。 すべて未定義でもかまわない。

hook_send_mail
    書き込みがあったときにメールを送るためのフック関数。
    未定義ならメールは送られない。

hook_touch
    書き込みがあったときに呼び出されるフック関数。
    更新ファイルをtouchするために用いる。
    未定義なら何も行わない。

hook_code_convert
    ユーザからのデータ送信で文字コードを変換するフック関数。
    ここで変換した後の文字コードでファイルに保存される。
    theme/default/header.txtの中にも文字コードに依存した部分があるので確認すること。
    未定義なら文字コード変換は行わない。

hook_rss_code_convert
    RSS出力用に文字コードを変換するフック関数。
    ファイルにはShift_JISで保存し、RSSではrtf-8で出力したいときなどに用いる。
    theme/default/do_rss.txtの中にも文字コードに依存した部分があるので確認すること。
    未定義ならRSS用に文字コード変換は行わない。

hook_tie_method
    デフォルトのデータベースYuki::FileDBを用いないときに使う。
    未定義ならYuki::FileDBを用いる。
    利用例はnews.cgiにある。

hook_untie_method
    デフォルトのデータベースYuki::FileDBを用いないときに使う。
    利用例はnews.cgiにある。

mycmd一覧

Yuki::Kakeraを制御するmycmdの一覧です。

mycmd=top       トップ画面表示(do_top.txt)
mycmd=read      アイテム表示(do_read.txt)
mycmd=edit      編集画面表示(do_edit.txt)
mycmd=search    検索結果表示(do_search.txt)
mycmd=recent    更新順の表示(do_recent.txt)
mycmd=index     作成順の表示(do_index.txt)
mycmd=about     解説文の表示(do_about.txt)
mycmd=rss       RSSの表示(do_rss.txt)
mycmd=date      指定範囲日付のかけら表示(do_date.txt)

mycmd=write     編集の実行
mycmd=create    新規作成
mycmd=delsearch 検索履歴の削除
mycmd=add       追記の実行
mycmd=random    ランダムなかけらの表示
mycmd=upload    画像アップロードの実行

声のかけら。の今後

以下は声のかけら。の今後に関するメモです。

バグ報告やご意見などはこちらからどうぞ。

既知のバグ

そのうちやるかもしれないこと

たぶんやらないこと

すんだこと

謝辞

以下のツール・サイトに影響を受けています。ここに感謝します。 特にninjinさんのRandomNoteには多大なインスピレーションをいただきました。 ありがとうございます。

なお、 ファイルの内容の「かけら」の作成者はshinoさんです。 当時作り始めていたCGIに対するこの書き込みが「声のかけら。」の方向性――ふわふわ気軽に――を定めました。 「なるほどね。」という返事は結城が書いたものです。 shinoさん、それから引用文を書かれたetoさんに感謝します。

更新履歴とダウンロード

声のかけら。およびYuki::Kakera(かけらエンジン)の更新履歴です。

関連リンク

バグ報告など

このソフトウェアに関してのご意見やバグ報告、 それから「設置しましたよ報告」は大歓迎です。

サポート用の掲示板やメーリングリストはありませんので、 何かありましたら、 声のかけら。に書き込むか、 フィードバックのフォームをご利用ください(でも、返事は期待しないでくださいね)。