見出し画像

診断メーカー作成の手引き(変数編)

診断メーカーには診断結果を豊かにするためのツールがいくつか用意されています。
今回は変数編です。

診断メーカーには関数や変数の使い方をまとめたページがなく、実際に作成を始めてみて、作成ページのヘルプを開いて読むしかありません。
結構不便なので、公式でドキュメントを用意して欲しいと思っていますが、とりあえず自分で用意してみます。

なお、このノートでは、特筆しない限り、引用は診断メーカーの作成ページのヘルプ部分から引用しているものとします。

変数とは

変数というのは、プログラミングにおける概念なのですが、詳しく知りたい人には「変数」で検索してもらうことにします。
ここでは、診断結果やリストの入力欄に変数を記載しておくと、実際に診断する際にはルールに従って別の言葉に置き換わる仮置きブロックくらいの認識でいいと思います。

変数は[]を含め、全て半角で記入します。
また、アルファベット部分は大文字で記入する必要があります。

USER変数

最初に解説するのはUSER変数です。
診断メーカーでは以下のように説明されています。

[USER]をこの項目の中に設定すると、診断ページで実際に診断をする際に、ユーザーが入力した名前に変換されます。

特に補足はありません。実例を挙げます。

[USER]は神様です。

診断結果基本テキストを上記のように記入して公開し、名前欄に「お客様」と入力して診断すると、診断結果は
お客様は神様です。
となります。

診断をしに来た人が名前欄を空欄にして診断した場合には
は神様です。
となります。

LIST変数

診断メーカーの根幹を成す変数です。
[LIST1]のように[]内にLISTの四文字と1〜10の数字を記入します。

診断の作成ページには、1〜10までのリスト入力欄があり、改行区切りでLIST変数に代入したい言葉を格納しておけます。
[LIST1]と記入した場合には、リスト1の入力欄の中のランダムなひとつが代入されます。

診断結果基本テキスト欄に

汝は[LIST2]

リスト2欄に

男
女

と記入しておいた場合、診断結果は
「汝は男」「汝は女」
の2種類がそれぞれ50%の確率で出力されます。

LIST変数をここまで理解していれば、ひとまず診断の作成が可能です。
ここから先は複雑さが増していきます。

枝番

[LIST1]を複数設置しても同じ値が表示されます。
そこで[LIST1_1]、[LIST1_2]という形で枝番を付けると、同じリストから新たに異なる値を割り当てる事が出来ます。

と公式にある通りです。
診断結果基本テキストに[LIST1]という文字列を複数配置した場合、それらの[LIST1]には全て同じ要素が代入されます。

[LIST1_1]を配置した場合には[LIST1]とは別の要素が代入されることになります。[LIST1_1] を複数配置した場合には、それら全ての[LIST1_1]に同じ要素が代入されます。

[LIST1_2] [LIST1_3]のように枝番を増やせば、それぞれの枝番にそれぞれ異なる要素が代入されます。
枝番の数字は途中が抜けていても大丈夫です。
例えば、[LIST1_2] がないのに [LIST1_3] があっても問題なくはたらきます。

枝番の無い[LIST1]は枝番が0 = [LIST1_0]と見なされます。

枝番は、診断メーカーの挿入ツールという機能を使うことで、簡単に入力できます。
ちょっと複雑ですが、使いこなせると表現の幅が大きく広がります。

リストオプション

各リストの入力欄の直下には、リストオプション欄があります。
各リストごとに異なるリストオプションが選択可能です。

リストオプション欄。唐突に「どう処理しますか?」と聞かれても困る。

リストオプション欄の選択肢は以下の通りです。

  • 残す

  • 消す(1つだけ)

  • 消す(リストNの同じ値すべて)

  • 消す(全リストの同じ値すべて)

デフォルトの選択肢は「残す」です。
リストオプションは枝番とセットで運用します。

診断結果基本テキストに枝番を使用して

[LIST1]&[LIST1_1]

のように指定して診断を行うと、まず[LIST1]に代入する要素がランダムに選択され、その後[LIST1_1]に代入する要素がランダムに選択されます。

リストオプションに「残す」を選択している場合、[LIST1_1]に代入する要素がランダムに選ばれる際、最初の[LIST1]で選択された要素が選択肢に含まれます。
つまり、[LIST1]と[LIST1_1]には同じ要素が代入される可能性があります。

リストオプションに「消す(1つだけ)」を選択している場合、[LIST1_1]に代入する要素がランダムに選ばれる際、最初の[LIST1]で選択された要素は選択肢から取り除かれます。
つまり、リスト1の入力欄に同じ要素が複数登録されていない限り、[LIST1]と[LIST1_1]には同じ要素が代入されることはありません。

リスト1のリストオプションに「消す(リスト1の同じ値すべて)」を選択している場合、[LIST1_1]に代入する要素がランダムに選ばれる際、最初の[LIST1]で選択された要素及びそれと同じ内容の要素は選択肢から取り除かれます。
リスト1の入力欄に同じ要素が複数登録されていたとしても、[LIST1]と[LIST1_1]には同じ要素は代入されません。

リストオプションに「消す(全リストの同じ値すべて)」を選択している場合、[LIST1]に代入される要素が選択された時点で、その選択された要素と同じ内容の要素は1〜10の全リストから一時的に取り除かれます。
[LIST1]と[LIST1_1]だけでなく、[LIST2]や[LIST3]にも同じ要素が代入されなくなります。

「消す」「選択肢から除外される」「取り除かれる」というのはあくまでその診断1回の間の話であって、リストから物理的に削除されたりはしません。

要素の分割

診断メーカーではこの仕組みに明確な呼称を設けていないため、ここでは便宜上「要素の分割」と呼ぶことにします。枝番等とは異なり、公式の呼称でないことに注意してください。

要素の分割はかなり複雑な要素です。
リスト欄は通常、改行で区切られた各行がひとつの要素として扱われます。

AAA
BBB
CCC

要素の分割では、この各行をカンマで区切ります。

AAA,111,xxx
BBB,222,yyy
CCC,333,zzz

1行に1要素ではなく、1行に複数の要素を盛り込めるようになりました。

[LIST1-1]のように、
LIST + リストの番号 + そのリストの何番目の区切りか
を組み合わせて書きます。

上の例がリスト1だとすると、[LIST1-1]は各行のカンマで区切られた1番目の要素(AAA/BBB/CCC)から選択されます。
[LIST1-2]は各行のカンマで区切られた2番目の要素(111/222/333)から選択されます。

ちなみにカンマで区切ったのに、単に[LIST1]と書くと「AAA,111,xxx」のように区切りを無視して行全体が代入されます。

夏目,漱石
芥川,龍之介
二葉亭,四迷
森,鴎外

さらに、リスト1には上のように記入しておき、診断結果基本テキスト欄に下のように記入した場合には、

[LIST1-1]さんちの[LIST1-2]くん

「夏目さんちの漱石くん」「森さんちの鴎外くん」のように同じ行の要素がそれぞれ代入されます。
「芥川くんちの四迷くん」とはなりません。

「夏目さんちの龍之介くん」のようなバラバラの出力が欲しい場合には、枝番を使用して以下のように記入する必要があります。

[LIST1-1]さんちの[LIST1_1-2]くん

枝番のアンダーバー(_)の方が、要素の分割のハイフン(-)よりも前に書かなければいけません。

リストのネスト

診断メーカーで使用できる変数は以上です。
たった2種類なのに、LIST変数が複雑なせいで記事書くのにめちゃくちゃ時間かかっています。

これらの変数は診断結果基本テキスト欄だけでなく、リスト欄でも使用できます。
ただし、リスト1では[LIST1]や[LIST1_1]のように、自身が記入されているリスト自体を指定することはできません。そういう指定をすると、その行は存在しないものとして扱われます。

診断メーカー作成の手引き(変数編)でした。
次は関数編もやりたいですが、関数の方が種類が豊富で、今回の変数の知識を踏まえた解説が必要なため、大変そうで尻込みしています。
やる気が出るまでお待ちください。

この記事が気に入ったらサポートをしてみませんか?