tek_bun2用定義ファイルの書き方
※このページはtek_bun2.zipに入っている「定義ファイルの書き方.html」とほぼ同じです。
目次
はじめに
文定義ファイル
文定義ファイルの中身
文の書き方
特殊単語
文定義の始まりマーク
単語定義ファイル
サンプル
はじめに
「文定義ファイル」「単語定義ファイル」を作り、それをtek_bun2.cgiに読み込ませることによってテキトーな文を作ります。
「文定義」の中の単語を「単語定義」にある単語でランダムに入れ替えて、同じ流れの文でも違った感じにさせることができるのがウリです。
まずはいきなり文定義、単語定義ファイルの中身を見てみましょう。
例えばこんな感じの文を作りたいな、と思ったとしましょう。
ぼくは
ラーメン
が好きです。
ラーメン
は
細長い
から好きです。
ぼくは
おにぎり
が好きです。
おにぎり
は
丸い
から好きです。
赤字の部分がランダムに入れ替えたい部分です。
こんな文を作るための文定義、単語定義ファイルは以下のような感じになります。
文定義ファイル
[sample]
ぼくは@<tabemono>が好きです。@<tabemono>は@<keiyo>から好きです。
単語定義ファイル
[tabemono;食べ物]
ラーメン
おにぎり
[keiyo;形容詞]
細長い
丸い
文定義ファイルは最終的に作りたい文全体を、単語定義ファイルは文定義ファイルで使われている単語の中身を定義するわけです。
文定義ファイル
文定義ファイルの文字コードは、シフトJISで作成してください。
文定義ファイルの中身
「文定義ファイル」は、まあその名の通り、最終的に表示される文全体を記述したものです。
先ほどの例の文定義ファイルを見てみましょう。
[sample]
ぼくは@<tabemono>が好きです。@<tabemono>は@<keiyo>から好きです。
ここに書いてある内容は以下のような感じになっています。
[sample]
(←文定義の始まりマーク)
ぼくは
@<tabemono>
(←単語定義ファイルで定義されている単語の参照)
が好きです。
@<tabemono>
は
@<keiyo>
から好きです。
文の書き方
ここが文定義ファイルをいじる上での一番重要な点です。
基本的には、文定義にある文をそのまま
HTMLとして
表示します。
(なので、改行したいときは<br>タグが必要です)
例えば文定義の内容が以下のようなときは、
[sample]
これはサンプルですよ<br>
常に「これはサンプルですよ」としか表示されません。
これじゃあまり面白くないですね。
せっかくだから、単語定義の中からランダムに選んだ単語で文の中身を入れ替えましょう。
単語定義ファイルで定義されている単語を参照するには、以下の記述を使用します。
@<単語名>
この記述は、以降「単語参照」と呼びます。
「はじめに」で使用した文定義に@<tabemono>という記述がありましたが、これは 「単語定義ファイルで定義されている単語名"tabemono"の中から、 ランダムに選んだ単語を表示しなさい」という意味です。
単語定義の"tabemono"には、「ラーメン」「おにぎり」が定義されていたので、 表示の時には、文定義の@<tabemono>と書かれている場所は、「ラーメン」「おにぎり」 からランダムに選んだもので置き換えられます。
なお、単語名の大文字小文字は区別します。
なので、@<TANGO>、@<tango>、@<Tango>は、それぞれ別の単語を参照します。
単語参照
@<単語名>
の「単語名」が同じなら、常に同じ単語で置き換えられます。
「はじめに」の例では@<tabemono>が2カ所ありますが、最初の@<tabemono>が 「ラーメン」なら、次の@<tabemono>も必ず「ラーメン」になります。
しかし、同じ単語定義から別の単語を引っ張ってきたいときはどうしましょう?
例えば以下のような文を作りたいな、と思ったとしましょう。
ぼくは
ラーメン
が好きです。太郎君は
おにぎり
が好きです。
ぼくは
おにぎり
が好きです。太郎君は
おにぎり
が好きです。
こんな時には、単語名の末尾に半角数字をつけます。
上の例の文定義は、以下のような感じになります。
[sample]
ぼくは@<tabemono>が好きです。太郎君は
@<tabemono10>
が好きです。
末尾の半角数字以外が参照する単語名になります。
単語名が同じでも、末尾の数字が違う単語参照は、単語定義からランダムに選び直したものを表示します。
(ランダムに選んでいるので、当然同じものになる可能性もありますが、
tek_bun2.cgiで$AllowDuplicateWord=0;とすると、単語参照時に同じ単語が出るのを防ぐことができます。
ただし$AllowDuplicateWord=0の時、単語の定義してある数よりも参照回数が多くなると、エラーとなります)
末尾につける数字は何桁でもかまいません。
また、末尾に数字のついていない単語参照は、@<単語名
0
>と同じになります。
特殊単語
単語参照@<単語名>は、基本的には単語ファイルで定義されている単語から ランダムに引っ張ってきますが、特別な単語名を指定することで、特別な内容に 置き換えられるものがあります。
@<_TODAY>
今日の日付を「○年○月○日」の形式で表示します
@<_YEAR>
今年の年(西暦)を半角数字で表示します。
@<_MONTH>
今月の月を半角数字で表示します。
@<_DAY>
今日の日を半角数字で表示します。
@<_SEASON>
今の季節を表示します。
@<_RND10>
1〜10でのランダムな数字を、半角数字で表示します。
@<_RND100>
1〜100でのランダムな数字を、半角数字で表示します。
文定義の始まりマーク
「ここから文定義が始まりますよ」という印です。
文定義ファイルには、必ず一つ以上の文定義がなければいけません。
文の定義は、次の文定義の始まりマークまでが、一つの文として扱われます。
つまり文定義は何行にわたっていてもかまいません。
「はじめに」の文定義は、以下のような書き方をしても大丈夫です。
[sample]
ぼくは
@<tabemono>が好きです。
@<tabemono>は@<keiyo>から好きです。
文定義の始まりマークは、行の先頭から、
[文の名前]
という形式で書かなければいけません。
文の名前に使用できる文字は以下の通りです。
半角アルファベット
半角数字
半角アンダーバー(_)
ただし、以下の制限があります。
文の名前の先頭に半角アンダーバーは使用できません
文の名前の末尾に数字は使用できません
良い例
[sample]
[test_no_bun_1_]
悪い例
[_sample]
←文の名前の先頭がアンダーバー
[sample1]
←文の名前の最後が数字
文定義ファイルに2個以上の文定義があった場合、tek_bun2.cgiは、定義されている 文の中からランダムに選んだ文を表示します。
文定義ファイルの中には、いくつ文定義があってもかまいません。
例えば文定義ファイルの中身が、以下のような感じだったとしましょう。
[sampleA]
ぼくは@<tabemono>が好きです。@<tabemono>は@<keiyo>から好きです。
[sampleB]
@<tabemono>を食べながら、ぼくは窓の外の@<keiyo>風景を眺めていた。
tek_bun2.cgiはsampleAとsampleBからランダムに選んだ文を表示します。
その結果表示される文字列は以下のような感じになるはずです。
ぼくはラーメンが好きです。ラーメンは細長いから好きです。
ラーメンを食べながら、ぼくは窓の外の細長い風景を眺めていた。
単語定義ファイル
文定義ファイルの文字コードは、シフトJISで作成してください。
単語定義ファイルは、文定義から参照する単語を列挙しまくったものです。
書き方は「はじめに」の例で見てもらったまんまです。
[単語名;コメント]
単語の内容1
単語の内容2
単語の内容3
:
または
[単語名]
単語の内容1
単語の内容2
単語の内容3
:
単語定義ファイルには、1つ以上の単語定義がなければいけません。
また、単語名の宣言のあとには、1つ以上の単語が定義されていないといけません。
「単語名」は、文定義から参照する単語名になります。
例えば単語の定義を
[tabemono]
とすると、 文定義から
@<tabemono>
で参照できます。
単語名に使用できる文字は、文の名前と同じです。
半角アルファベット
半角数字
半角アンダーバー(_)
ただし、以下の制限があります。
先頭に半角アンダーバーは使用できません
末尾に数字は使用できません
単語は1行につき1つしか定義できません。
また、
タグは使用できません。
コメントをつけた単語定義は、tek_bun2edit.cgiで単語の追加/削除ができます。
逆に言うと、tek_bun2edit.cgiで単語を追加して欲しくない単語定義には、単語名に コメントをつけずに
[単語名]
の形式で記述してください。
サンプル
それでは私が作ったものの中では一番ややこしい、「新作映画紹介」の定義ファイルを見てみましょう。
・文定義ファイル
定義されている文は1つだけです。
[str] <table width=80%> <tr><td bgcolor="darkblue"><center><h1><font color="white">@<title_group0></font></h1></center></dr></tr> <tr> <td><br>制作費@<_RND100>0億円をかけた期待の@<genre>映画の超大作。<br> 昨年発売された途端に1ヶ月で@<_RND100>万部を売ったベストセラー小説を、名作「@<title_a1>@<title_b1>」の監督、 巨匠 @<hito9>が映画化。<br> さらに主演は昨年@<shokugyo9>から転身、ドラマ「@<title_a2>@<title_b2>」でデビューして以来、 若者たちから圧倒的な支持を得ている期待の新人 @<hito0>、共演にベテラン @<hito1>といった豪華キャスト陣が 出演している。<br> @<hito0>は初めて挑む@<shokugyo>役を熱演、新人とは思えない@<keiyo0>演技で、@<donna_shokugyo>@<shokugyo>を 見事に演じている。<br> 特に@<hito0>が「このシーンに備えて毎日@<suru0>していた」という、@<scene>シーンは必見。<br> <br> さらに映画本編以外でも、@<hyouka_group>など、さまざまな意味で注目されているこの作品、 映画評論家@<hito2>も「本年度最大の@<keiyo100>映画だ。@<hito0>の@<keiyo101>演技は必見。 もはや@<genre>映画の最高傑作といっても過言ではない」と大絶賛、早くも大ヒットが予想される。<br> <br> この「@<title_group>」は@<_YEAR>年@<kisetu>に全国@<_RND100>館でいっせいロードショウ予定。</td></tr> </table>
・単語定義ファイル
元の文の流れを変ずに中身のバリエーションを増やすため、単語定義の中から単語参照する、なんてことをやってます。
単語参照している単語は、tek_bun2editでユーザがいじれないように、単語名にコメントは付けていません。
[title_group] @<title_a0>@<title_b0> @<title_a0>@<title_b0> パート@<part> @<keiyo3>@<title_b0> @<part0> [genre] アニメ ポルノ SF 歴史 文芸 コメディ ホラー 教育 パニック 戦争 恋愛 料理 [kisetu] 春 夏 秋 冬 夏休み 冬休み 正月 週末 雨の日 俺の誕生日 [part] 2 3 4 5 6 7 8 9 [donna_shokugyo] いつも努力がから回りしている、ちょっぴりドジで@<keiyo30>新人 夏休みの間に素敵なカレを見つけようと頑張っている、@<keiyo30> 親友の@<keiyo30>恋人(@<hito1>)を愛してしまい、報われぬ愛に悩む、@<keiyo31> パートナーを殺害した@<shokugyo30>を探し求める、復讐鬼と化した ふたりの@<keiyo30>女性を愛してしまい、苦悩しながら@<suru30>する、@<keiyo31> @<basho30>という逃げ場のない場所に閉じ込められ、姿の見えない敵に恐怖しながら@<suru30>する@<keiyo30> 超能力に目覚め、自分の持つ@<keiyo30>能力に脅えつつも、やがてその力を@<suru30>のために使い始める@<keiyo31> 伝説の剣を求め、仲間の@<shokugyo31>や@<shokugyo32>達と協力して@<basho30>までの困難な旅に挑む、@<keiyo30> 現代科学では解明できない謎の事件に挑む、@<keiyo30> 夏休みに若者達が訪れたキャンプ場の地下に封印されていた、太古の呪われた 「@<serifu30>」という言葉を聞くと、@<keiyo30>@<shokugyo30>に変身してしまうという、哀しい宿命を背負った 政府の特殊機関に所属する、クールで@<keiyo30> 死んだ母の残した「@<serifu30>」という言葉だけを手がかりに、幼い頃に別れた父を探した日本中をあてもなくさまよう、@<keiyo30> 密室殺人事件の被害者の残したダイイングメッセージ「@<serifu30>」の謎を解くために奔走する、@<keiyo30> 現場に必ず「@<serifu30>」というメッセージを残しながら、次々と残忍な犯行を繰り返す謎の殺人犯を追い求める、@<keiyo30>新人 [hyouka_group] 映画の舞台となった@<basho20>は若者たちに人気のスポットとなり、週末には@<suru20>する@<keiyo20>若者たちでごったがえす @<hito>らが劇中で着ていた@<hito20>デザインの@<keiyo20>服に人気が集中、渋谷では@<keiyo20>服を着た@<keiyo21>若者たちが@<suru20>をするのが大流行する 劇中のシーンをまねて@<basho20>で@<keiyo20>@<suru20>をする人が続出し、死者まで出す騒ぎとなる 劇中で@<hito0>が@<suru20>するときのセリフ「@<serifu20>」はすでに今年の流行語となり、挨拶がわりに「@<serifu20>」と言うのが大流行する この映画をモチーフにした@<hito>のファースト写真集「@<serifu20>」は発売1週間で@<_RND100>万部を完売し、この写真集が入手できなかった事に腹をたてたファンらが、各地で@<suru20>するといった@<keiyo20>事件がある @<hito20>の歌うこの映画のテーマソング「愛の@<title_b> 〜@<keiyo20>@<title_b20>〜」がCD売上ランキングの1位を@<_RND10>週間独占する @<_MONTH>月に@<basho20>で行われた試写会には@<_RND100>万人もの人達が集まり、映画に熱狂したファンらが口々に「@<serifu20>」と叫びながら@<suru20>するという騒ぎがある [scene] 長い間引き裂かれていた恋人(@<hito1>)と再会し、@<keiyo10>@<suru10>をする 仲間の@<keiyo10>@<shokugyo>達と協力して、@<basho10>で@<suru10>する @<keiyo10>微笑みを浮かべながら@<suru10>する @<keiyo10>@<basho10>で@<suru10>する @<hito1>と二人で手をとりあって@<keiyo10>@<suru10>をする @<keiyo10>格好の@<hito0>が@<basho10>で泣きながら@<suru10>する 数十人の@<keiyo12>敵を相手に、@<keiyo10>拳法を駆使して、次々と敵を倒す@<keiyo11>アクション 単身で敵地に乗り込み、敵に取り囲まれた絶体絶命の状況で、@<suru10>しながら@<keiyo10>@<suru11>をする スタントマンなしで挑んだ、ビルの@<_RND100>階から落下しながら@<keiyo10>@<suru10>をする @<basho10>で@<keiyo10>カーチェイスを繰り広げる テレクラで出会った@<keiyo10>美少女(@<hito1>)との、@<basho10>での@<keiyo11>ラブ 今にも焼け落ちそうな@<basho10>の中で「@<serifu10>!」「@<serifu10>!」と叫びながら、恋人(@<hito1>)を探し求める [suru;さ変名詞:うしろに「する」をつけると動詞になる名詞] 援助交際 脱皮 興味本位で覚醒剤を使用 学級閉鎖 土俵入り [keiyo;形容詞。きれいな、とか名詞の前について修飾するやつ] 馬鹿みたいな 型にはまった 影の薄い いじましい さもしい 安上がりな [title_a;タイトルのパーツ:前半] 男と女の 宇宙の 少林 ワンス・アポン・タイム・イン [title_b;タイトルのパーツ:後半] 大捜査線 反抗 ロマンス 招待状 脱出 [hito;人名(男女共用)] 俺 松坂大輔の同級生 長嶋一茂 ジャッキー吉川とブルーコメッツ 孫正義(ソフトバンク社長) [shokugyo;職業] 巨人軍監督 プロのガチャピン 独裁者 相撲取り このページの管理人 [basho;場所、地名とか] 青山ブックセンター リングサイド 安っぽい民宿 富士山麓 陽当たりの良い縁側 [serifu;主人公に言わせたい名セリフ] こ、これはライオン!! おい! スティーブ!! オレは高木ブーだ! 月を見るたび思い出せ!!
こんな感じでどうでしょうか?
戻る