このページでは、 Relmの機能を紹介しています。
お絵描き掲示板。ひとことに「お絵描き掲示板」といってもいろいろ、たくさんあります。BBSNoteさん、らくがき広場さん、CyclamenBBSさん、PalletTownさん、…日記ではnicky!さんとか、使ってる人が増えてきましたね。
では、何でいま新しくお絵描き掲示板CGIを作ったのか。必要なのか?
いいえ、普通に使う分には十分、いえ、充分すぎると思います。どれもいいところがいっぱいあって、個性もさまざまです。何も、問題は、ない。
でも、何ていうか、自分のしたいようなのができないことが多かったんです。モジュールとか、ライブラリとか作って使おうとはしてたのですが、人様の作ったものなので、考えてもわからないところもあるし、CGIスクリプトも注釈ないと何やってるかわかりづらいし、何よりバージョンアップがめんど……げふげふ。
だったら、だったら自分で一から作ればいい、と思い立ち、作リ始めたのが、お絵描き掲示板"Relm"なわけです。
でも、ただそれだけじゃ生ぬるい、どうせ作るなら、いままで思い立った機能、こんなのがあったらいいな、って思ってた機能全部詰め込んじゃえ☆、と、作ったのがこれなんです。
でも、…って作ったのはいいんですが、それはいいんですが、逐一増やしていったら、最終的にめちゃめちゃ多くなってしまってwいろいろできるはいいのですが、設定みると大変だな~って思います。自分でも。
なので、一から十まで理解してくれ、なんていいません。むしろやんなくていいです。(笑)自分の使いたいとこだけ、使いたくないところだけ、理解して、自分好みに設定を変えていってください。それで充分、普通に快適に使えるはずなので。
で、こだわりたくなってきたら、一歩ずつ、中に踏み込んでいってください。設定にしても、デザインにしても、CGI部分はほとんどいじらないので、いじってたらCGIが壊れた、サーバ落としちゃった!なんてことはまずないので、慣れたら軽い気持ちで付き合えるはずです。
それでは、長々でしたが、いいわけは終わり。とりあえず、恐がらずに、楽しんでいじってってくれれば幸いです。
どんな機能があるか、簡単に羅列していきます。普通の掲示板にあるようなの(特に目新しくはないだろうみたいな)のは除いて、ウリ?みたいなのをずらっと。
それぞれの詳しい説明はこの下から。
Relmは、デザインに、HTML形式のスキンを使っています。中のくわしいことは、別のページで書きますが、簡単に言えば、普通のページをつくるくらいの気持ちで、デザインを変えられる、ということです。…ルールはありますけどね。テンプレートといった方がわかりやすいのかもしれません。
relm.ini内では、次のような設定があります。
$skindir = 'skin/'; # ↓からのスキンファイルを入れておくフォルダ
$r_skin = 'l_skin.htm'; # 絵板デザインHTML.
$w_skin = 'l_form.htm'; # 絵板フォームデザインHTML.
$c_skin = 'l_cata.htm'; # 絵板カタログデザインHTML.
$l_skin = 'l_list.htm'; # 絵板一覧・リストデザインHTML.
$p_skin = 'l_paint.htm'; # お絵描き画面のデザインHTML.
$n_skin = 'l_mini.htm'; # 絵板ミニマムデザインHTML.
$css = 'skin/relm_ten.css'; # 共通のスタイルシートのファイル.
これは、CGIが読み込むスキンファイルを何にして、どこに置くか、っていう設定。メイン画面をだす、絵板デザインのスキンなら、skin/ フォルダ内に、l_skin.htm という名前で置いておくぞ、ってことです。
また、スキンファイルは全部同じフォルダの中に置いてください。スタイルシートファイルはどこでもいいです。http://からのURLからでも○。
それと、拡張設定にこういうのがあります。
$rskinuse = 1;
これは、投稿・返信画面で、スレッドの部分(<!--PARENT_ ~内)のデザインを、$r_skin(絵板デザイン)のにするか、$w_skin(フォームデザイン)のにするか、の選択。独自のデザインにするか、お揃いのにするか、ですね。コンティニューのときなどは、どちらにせよ$w_skinのものになります。
HTML書き出しは、よくアクセスする、メイン画面の1P目と、おまけでリストページをHTMLファイルに書き出すシステムです。
簡単に言えば、HTMLなどは、サーバから読み取るだけなのですが、CGIはサーバで実際に実行されてから、内容が出力されて、それから読みこむ、ので、サーバ側に「負荷」というものががかかります。
そんなわけで、s*mではなるべくなら仕事の軽い、HTMLで読むのを推奨しています。CGIはキャッシュもそう効きませんしね、そんなこと気にしないなら、それはそれでいいのですが、できればコンテンツからお絵描き板にいく最初のページは、書き出した index.htm にするとサーバと地球に優しいです。
…でも、HTMLはそれだけではクッキーが取り出せなかったりして不便なので、"Relm"では、HTMLのときは JavaScript でクッキーを取り出しています。JSクッキーは設定でなくすこともできますが、同時に使ってくれると便利かと。
HTMLの設定は、基本設定のところの、
$index = './index.htm';
$listhtm = './list.htm';
場所を変えるときは、CGIからの相対アドレス(URLじゃなく)で書きます。
クッキーの設定は、「基本設定」のところの
$autocook = 1;
と、537行目付近からの「フォームクッキー」のところの項目が設定になります。
また、クッキーを利用することで、投稿フォームなどでは、一時的なコメントなどのフォーム内容の保存、呼び出しができるようになっています。デフォルトでは Submit の隣の、 Save、Call というところです。
えー、間違って他のページにジャンプして、しまったと思って慌てて戻ってみたら、書いた中身が全部消えてた、とか、なんかブラウザが強制終了して書いたの消えた! とかいう経験がある人も多いかと思います。二度目書き直すにはかなりのマナが必要ですよね…。
そんなこと対策に作ったのがこの、Save、Call の機能なんです。長いコメントを書いている途中、書いてる途中だけどちょっと用事ができたときに、Save をぽちっと押してみてください。それからもしブラウザが閉じて消えたりしてしまっても、運がよければ、黄泉の国から戦士たちが帰ってきます。
…そんな、機能。
JS書き出しは、いくつかの簡易的なデータを、何件かJSファイルにも書き出すもの。これによって、他のページなどでこのJSファイルを読み込むことで、いろんなことができる……かもしれません。
あ、「JS」 は 「JavaScript」 の略ですよ? 今更ですが。
いまのところの用途としては、おえび入り口に、「最新の投稿 by ○○さん」とかいって乗っけたり、ランダムで乗っけたり…、…そんなもんかも。JSファイルに関しては、応用のしかたのページで解説。
全部一辺にwいずれも設定で、つけたり、完全に使えなくしたり、できます。
プレビューは、送信前に、投稿したらどんな風に見えるか、とあらかじめ肉眼で確認できるシステムです。投稿・返信画面のフォームでは、別窓ででます。レイヤー、スレッドフォームからは、できるなら、今の画面のまま、最後のコメントの下につき、できないときは別窓で、プレビューします。できるかどうかは、JSのinnerHTML関数が使えるかどうかに依存。
レイヤーレスは、コメントボタンを押すと、返信画面にいかずに、返信フォームがレイヤーででる機能です。タイトルのバーをドラッグするとレイヤー移動も。これは、BBSNoteさんのスクリプトを拝借しております。便利な機能を作ってくださり、しかも使用許可もいただき、あり難き幸。ちなみに、レイヤーレスフォームのソースは、メインスキンの一番下にあります。<!--LAYER_FORM_START-->~<!--LAYER_FORM_END-->ですね。カスタマイズするならそちらを。
スレッドレスは、まんま、一個一個のスレッドの下に返信フォームがつきます。設定で最初からもつけられるし、デフォルトではメニューのところにThreadRes 項目で On/Off 切り替えができます。スレッドレスフォームのソースは、メインスキンのスレッド内(PARENT~内)です。<!--THREAD_FORM_START-->~<!--THREAD_FORM_END-->の間。
ノータイムレスは、??かもですが、日本語で言えば瞬速返信です。…えー、いままでは、返信を送信すると、当たり前ですが、画面がリロードされますよね?でも、一個返信ならまだしも、何個も返信するとなると、返信 → リロード → スクロールバー動かして次のへ → 返信 … と、リロードしてスクロールバー動かしてページダウンするだけ、時間の無駄です。何個もやるとなるとうんざり。 無駄無駄ラッシュです。
それを、リロードされずに、今の画面のまま返信完了の形をとるのが、この機能。仕組みは、返信の送信先のページはインラインフレームのページになるんです。それによって、時間のロスがなく、かなり効率よくポンポン返信したりできます。
「え、それじゃあ返信が成功したか、ってのはどうやってわかるの?」って思うかもですが、エラーでたときはJSのアラートででますし、どんな風に送信されたかは、↑で説明したプレビューのようにすぐ表示されます。
…つまりIE系専用の機能なんですが。また、これを使うときは、プレビュー機能は必須でつけておいてください~。これも、メニューのところに On/Off スイッチがあります。
この機能は、自作するにあたり、一番つけたかった機能のひとつですね。コメントしたいけど、結構メンドウなんだよね、って人結構いると思うんですよ。これで、一言でもいいから、気軽にコメントする気が起きるといいなーとか。気に入ってくれると嬉しいです。
ノーコメントレスは、さらに??かもですが、日本語で言えばへぇ~機能です。…うせやん。
えー、設定内では、拍手・投票機能として書いてます。お絵描きしたら、コメントとか欲しいものです。がんばった絵とかならなおさら。でも、なかなか思い浮かばなかったり、時間なかったり、通りすがっただけ、とか、そんな感じでコメント書くのがいささか難しかったりするケースもありますよね。
でも、いいな、って思えた絵とかには、なんか応援してあげたい。みたよ、よかったよ、がんばれ、って気持ちだけでも、表したい。そんな感じで、何かできないかな、ってことでつけたのがこれ。元ネタは、「Web拍手ボタン」と「トリビア」からです。たぶん。
どんな仕組みかというと、拍手ボタンをクリックすると、投票され、Resボタン の前の数が増えます。数字の場所を変えたかったら、スキン内をいじってください。拍手すると、1ずつ増えていき、レスすると3増えます。(デフォルト設定)
設定で、重複制限(一人一日一回とか)つけれたりもできるので、おえびコンテストとしも、使えるかもしれないですね。個人的にはお気に入りです。コメしなくてもした気になるので。(ぉ
現行ログは、1投稿ごとの詳細が書かれた個別のログファイルと、簡易的な情報だけ保存される、全体のログファイル($logfile)に保存されます。全体のログファイルは、もし壊れたときは、管理モードから、ログフォルダ($logdir)内に現存する個別のログを読み込んで、復旧ができます。
ちなみに、ログファイルなどの冠名($logkan)は、最初に変更することをオススメします。なぜかというと、デフォルトのままでは、予想してファイルを覗かれちゃいますし、画像のは、他の人のお絵描き板で保存するとき、同じだと差し替え警告がでますし、何より、保存したの、後で一目見てどこで描いたのか分かる方のがいいでしょ?(笑)自分のサイトのサインみたいな感じで入れておきましょう。
また、現行ログが設定数($logmax)を超えた場合は、過去ログ機能をつけることで、過去ログフォルダ($olddir)に保存されていきます。過去ログに保存していくと結構容量食うので、OFFにすれば、順次削除されます。なお、過去ログは設定で、公開か非公開(管理人だけ見られる)かは、選択可能。
また、投稿された画像の番号は、設定でログNOと同じにするか、画像のカウントNOにするか、選べます。ログNOと同じにすれば、保存するときNOが一緒なのでわかりやすいですが、差し替えしたときにも同じ番号の画像に差し替えられるので、ブラウザのキャッシュがきいてしまい、前の画像が表示されることが多いのが難点。更新ボタンを押せばちゃんと表示されるはずですが。
カウントNOにした場合はその逆です。どちらも一長一短ですね。
お絵描きの表示などの、基本の設定です。お絵描きアプレットの設定はその2へ。
Relmでは、しぃちゃん製アプレットである、PaintBBS、しぃペインターのアプレットに対応しています。他のアプレットなどは対応してないので、使えません。
当然、描画アニメーションも保存することができます。そのアニメーションファイルや画像を元に、コンティニューすることもできます。
このとき、png形式の画像は、画像から続きを描けない環境が多いので、描画から続きを描く方がいいのですが、アニメなしにすると普通はできません。…が、その対策として、それ用にアニメーションファイルは一応保存するけど、アニメは見られないようにする設定もつけておきました。($animationpng)その場合、投稿者だけアニメーションも見られます。編集画面からどうぞ。
それと、画像を仮にアップしてからお絵描きする、アップロードペイント機能。新規投稿の画面からで、それを使うと、お絵描き画面でアプレットのキャンバスにアップした画像がでて、ちょうどコンティニューするような形になります。どんなとき使うか、使いようはさまざまだろうですが、線画とか他ので描いて、色塗りはおえびのが塗りやすい、って方とかもどーぞ。
また、途中で用事できたとか、眠くなったとか、パソやばいことになってきた、…でもいまは描き上げられない、…かといって途中なのに投稿するのもな~、とかいうときのために、「カキカケ機能」がついてます。($imgkakikake)
これは、投稿時、このチェックをONにすると、絵板表示時にカキカケ状態になり、デフォルトでは NO と Continue、日付 くらいしか表示されなくなるというもの。できてない途中の画像をあげて見せるのはちょっと…ですからね。
続きを描くときは Kakikake(Continue) か編集画面から。パスワードも忘れずに。描きあがったら、もう一度Continue画面か編集画面に入り、「kakikake」チェックを外してやると、ちゃんと表示されます。カキカケてる間にログが流れたら、新規投稿でコンティニューして、古い方のは消してください(笑
この辺の機能も、前々から結構欲しかったやつなので、できて満足ですv
ちなみに、ボツ投稿というのもあります。この設定はお絵描きツールのなんですが。ちょっとうまくいかなかったので、投稿したくはないけど、せっかく描いたし、自分だけ保存しときたい、ってことありません?でもプリントスクリーンとって、切り取って、保存するのはメンドウですよね。そんなときこのボタンを押して投稿すると、ログには残らずに絵だけ仮送信され、自分だけ保存したりすることができます。
なお、絵板画面表示時、設定数よりサイズの大きい画像は、IMGタグで強制で限界サイズに縮小されて表示されます。($upover)返信フォームの画面では等倍です。
描画時間のOn/Offも、投稿者が投稿時に決められたりもします。($painttimeon)
アップロードを許可しているとき、アップロードフォームにURLアドレスをいれると、URLで登録されることもできます。($httpuse)使いまわしの季節絵を配るときとか、一時的に公開したいときとか、そっちのが相手のサーバに負担かけないし、キャッシュも効くので、いいような。や、個人の好き嫌いの問題ですが。(笑)
お絵描きアプレットの設定です。ここの設定は普段使わないので relm.ini ではなく、paint.ini にあります。設定多いかも知れませんが、下のように、場面に分けて細かく指定できます。
いまのところs*m製の拡張ツール(paint_tool.ini)に標準で対応しています。そのうち増えたりするかも。微妙。拡張ツールの機能紹介はツールの項へ。
WCSさんのダイナミックパレットに対応しています。ファイル名($palettejs) と 関数名($palettefunc)を入れてください。普通は、$palettejs='palette.js';、$palettefunc='PaletteInit()'; です。
(@apminsize0~@appfitsize)
($aps{'image_bkcolor'}~$aps{'tool_color_frame'})
こちらでなく、スキン側(l_paint.html)で色を指定する場合は、$appstyleuse=1; に変えてくれればOKです。
設定次第でフレームも使えます。デフォルトのフレーム設定では、左にリストページ、右に絵板のページが来るようになってます。
アイコン掲示板のように、アイコンも使えます。($icontype)ただ、でっかいアイコンだとちょっと画面がうるさくなるので、控えめに、ちっちゃいアイコンにした方がいいかもです。20x20くらいでしょうか。当然、HEDWI(s*m製アイコン登録CGI)、に対応しております。
投稿するとき、フォントカラーとテーブルカラーを選ぶことができます。これで、うまく設定すれば、カラフルな掲示板も作れますね。これも、使わないときはそう設定すればいいだけです。($fontuse、$coloruse)
投稿日付などは、スキン側で大雑把にも、細かくも設定できます。曜日名は、relm.iniの設定で行ってください。(@wdays)
新しい投稿のときは新着表示するタグを設定できます。($newd,$newgif)
引用する(行頭に > とかつける)と、絵板表示時にその1行のフォントカラーを変えることができます。(%gyoutou)
絵板表示時、1スレッドのレスデータ○件かごとに、設定したタグを入れたり、増やしたりする特殊設定もあります。(やや上級? $kugiri1、$huyase など)
「おまけ設定」のところで、各ページのタイトルなんかを設定できます。(投稿ふぉーむ とか 返信ふぉーむ とかいうの。$newtitleなど)
各ページに共通なソースをいれるとき、スキンを変えるのが面倒なら、relm.ini内で設定することもできます。($body_in とか)
最初、$body_in = '';となっていますが、長いソース書くなら、
$body_in = <<'EOF';
~何か書くソース~
EOF
として、EOF~内に書いてください。(EOFの文字は何でもいいのですが)
謎錬金術が使えます。($jumon)例えば、*bb太字/bbとかけば太字になったりするような、特定の文字を特定の文字に変換する機能です。タグがわからなくても、タグ禁止にしてても使えるので、使いたいひとは便利かも。HowToのページに、登録されてる変換リストがでます。
タグは使えるかどうか選べ、($tagok)その使えるタグは、設定次第で増やせます。(@allowtag)
上級技なのですが、ログに保存されるフォームの内容は、設定で増やせます。(@plusform) 詳しくは応用のページにて。
ミニマムモードは、ほぼケータイ、モバイル用の、モードです。PCからは、relm.cgi?view=miniなどとやっても、確認できます。
システムは、特定のIP・HOSTから CGIに アクセスすると、普通のスキンではなく、このミニマムスキンで、出力される、というもの。CGIでないとIPが取られないので無理。(index.htmでは×)
つまり、余計なタグを入れず、ソースさえ軽ければ、携帯でも見れるだろ、ってことで用意したのが、このミニマムスキンを使ったモードなのです。
特定のIP・HOSTですが、「CGIの設定」の「制限の設定」のところで、追加・削除ができます。(@minis)初期設定では、以下のHOSTになってます。
*.docomo.ne.jp... DoCoMo *.ezweb.ne.jp ... EZweb *.ez*.ido.ne.jp.. EZweb *.jp-*.ne.jp ... J-SKY *.vodafone.ne.jp. ボーダフォン *.tu-ka.ne.jp ... TU=KA *.tk*.ne.jp ... TU=KA *.pdx.ne.jp ... PHS
「*」は任意、ということです。
今のところ、閲覧と投稿ができるのを確認しています。画像のアップロードは cgi-lib.pl がエラー出すようで、まだできないようでした。…これから。
以下、余談。
スキンもシンプルな作りなので、PCからも快適に見れるので、ケータイ専用、と考えずに、Lightより軽い、ひとつのビューとして使ってくれても、それはそれでOKな気がします。…ほんとか?
また、ミニマム機能の追加に伴い、デフォルトのサムネイルのサイズを、130x * px、サイズにしました。300x300pxで描いても、400x400pxで描いても、130x130pxになります。300x600pxで描けば、130x260px。
ケータイの待ち受け画像は、だいたい 120x130px みたいなので、サムネイルを待ち受け画像にー、とかいうのもできるかもしれません。・・有効利用。
120x * pxにする手もあったんですが、120x120pxになると、縦が足りないのでwないよりはあった方がいいだろ、ってことで 横130px 指定にしました。差分は切り取ればいいですしね。
120pxにしたい場合は、アプレットの設定の中で、変えてください。待ち受け画像用 おえびとか作りたい場合は、デフォルトのお絵描きサイズを、300x325px とかにすれば、縮小されたとき、120x130pxになるでしょう。
最初は 「モバイルモード」 とかいうゴツイ名前だったんですが、リルムさんなので、「ミニマム」 になりました。(謎)