tek_bun2用定義ファイルの書き方

※このページはtek_bun2.zipに入っている「定義ファイルの書き方.html」とほぼ同じです。


目次
  1. はじめに
  2. 文定義ファイル
    1. 文定義ファイルの中身
    2. 文の書き方
    3. 特殊単語
    4. 文定義の始まりマーク
  3. 単語定義ファイル
  4. サンプル

  1. はじめに

    「文定義ファイル」「単語定義ファイル」を作り、それをtek_bun2.cgiに読み込ませることによってテキトーな文を作ります。
    「文定義」の中の単語を「単語定義」にある単語でランダムに入れ替えて、同じ流れの文でも違った感じにさせることができるのがウリです。

    まずはいきなり文定義、単語定義ファイルの中身を見てみましょう。

    例えばこんな感じの文を作りたいな、と思ったとしましょう。

    ぼくはラーメンが好きです。ラーメン細長いから好きです。
    ぼくはおにぎりが好きです。おにぎり丸いから好きです。
    赤字の部分がランダムに入れ替えたい部分です。

    こんな文を作るための文定義、単語定義ファイルは以下のような感じになります。

    文定義ファイル
    [sample]
    ぼくは@<tabemono>が好きです。@<tabemono>は@<keiyo>から好きです。


    単語定義ファイル
    [tabemono;食べ物]
    ラーメン
    おにぎり

    [keiyo;形容詞]
    細長い
    丸い

    文定義ファイルは最終的に作りたい文全体を、単語定義ファイルは文定義ファイルで使われている単語の中身を定義するわけです。



  2. 文定義ファイル


    文定義ファイルの文字コードは、シフトJISで作成してください。

    1. 文定義ファイルの中身

      「文定義ファイル」は、まあその名の通り、最終的に表示される文全体を記述したものです。

      先ほどの例の文定義ファイルを見てみましょう。
      [sample]
      ぼくは@<tabemono>が好きです。@<tabemono>は@<keiyo>から好きです。

      ここに書いてある内容は以下のような感じになっています。

      [sample](←文定義の始まりマーク)
      ぼくは@<tabemono> (←単語定義ファイルで定義されている単語の参照)が好きです。 @<tabemono>@<keiyo> から好きです。

    2. 文の書き方

      ここが文定義ファイルをいじる上での一番重要な点です。

      基本的には、文定義にある文をそのまま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>と同じになります。

    3. 特殊単語
      単語参照@<単語名>は、基本的には単語ファイルで定義されている単語から ランダムに引っ張ってきますが、特別な単語名を指定することで、特別な内容に 置き換えられるものがあります。
      • @<_TODAY>
        今日の日付を「○年○月○日」の形式で表示します
      • @<_YEAR>
        今年の年(西暦)を半角数字で表示します。
      • @<_MONTH>
        今月の月を半角数字で表示します。
      • @<_DAY>
        今日の日を半角数字で表示します。
      • @<_SEASON>
        今の季節を表示します。
      • @<_RND10>
        1〜10でのランダムな数字を、半角数字で表示します。
      • @<_RND100>
        1〜100でのランダムな数字を、半角数字で表示します。

    4. 文定義の始まりマーク

      「ここから文定義が始まりますよ」という印です。
      文定義ファイルには、必ず一つ以上の文定義がなければいけません。

      文の定義は、次の文定義の始まりマークまでが、一つの文として扱われます。
      つまり文定義は何行にわたっていてもかまいません。
      「はじめに」の文定義は、以下のような書き方をしても大丈夫です。
      [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からランダムに選んだ文を表示します。
      その結果表示される文字列は以下のような感じになるはずです。

      ぼくはラーメンが好きです。ラーメンは細長いから好きです。
      ラーメンを食べながら、ぼくは窓の外の細長い風景を眺めていた。




  3. 単語定義ファイル


    文定義ファイルの文字コードは、シフトJISで作成してください。

    単語定義ファイルは、文定義から参照する単語を列挙しまくったものです。
    書き方は「はじめに」の例で見てもらったまんまです。

    [単語名;コメント]
    単語の内容1
    単語の内容2
    単語の内容3
      :

    または

    [単語名]
    単語の内容1
    単語の内容2
    単語の内容3
      :

    単語定義ファイルには、1つ以上の単語定義がなければいけません。
    また、単語名の宣言のあとには、1つ以上の単語が定義されていないといけません。

    「単語名」は、文定義から参照する単語名になります。
    例えば単語の定義を[tabemono]とすると、 文定義から@<tabemono>で参照できます。

    単語名に使用できる文字は、文の名前と同じです。
    • 半角アルファベット
    • 半角数字
    • 半角アンダーバー(_)
    ただし、以下の制限があります。
    • 先頭に半角アンダーバーは使用できません
    • 末尾に数字は使用できません

    単語は1行につき1つしか定義できません。
    また、タグは使用できません。

    コメントをつけた単語定義は、tek_bun2edit.cgiで単語の追加/削除ができます。
    逆に言うと、tek_bun2edit.cgiで単語を追加して欲しくない単語定義には、単語名に コメントをつけずに[単語名]の形式で記述してください。

  4. サンプル

    それでは私が作ったものの中では一番ややこしい、「新作映画紹介」の定義ファイルを見てみましょう。

    ・文定義ファイル
    定義されている文は1つだけです。


    ・単語定義ファイル
    元の文の流れを変ずに中身のバリエーションを増やすため、単語定義の中から単語参照する、なんてことをやってます。
    単語参照している単語は、tek_bun2editでユーザがいじれないように、単語名にコメントは付けていません。

こんな感じでどうでしょうか?
戻る