ネストされた Spintax
ネストがフラットなスピニングを強力なテンプレートエンジンに変える仕組み — そして Spintax.Net のアプローチが標準である理由。
ネストされた Spintax とは?
通常の spintax はリストからランダムに1つを選びます:{red|blue|green} は3色のうち1つを生成します。ネストされた spintax は spintax の中に spintax を配置します — マトリョーシカ人形のように、各層がさらなるバリエーションを内包しています。
エンジンがネスト構造に遭遇すると、最も内側の式から外側へ解決します。内側の波括弧が最初に評価され、その結果が外側の式の一部になります。
{red|{dark|light} blue} car
Here {dark|light} resolves first (e.g. dark), producing {red|dark blue}. Then the outer enumeration picks one option: red or dark blue.
ネストが重要な理由
ネストがなければ、選択肢はフラットです。3つのオプションを持つ3つの列挙で 3 + 3 + 3 = 9 フラグメント。ネストありでは、同じ要素が乗算的に組み合わさります:3 × 3 × 3 = 27のユニークなバリアントが1つのコンパクトなテンプレートから生まれます。
この指数関数的な増加が、真にユニークなコンテンツを生成する鍵です。ネストされた列挙と順列を含む適度に複雑なテンプレートは、1つの丁寧に作られたソースから数千から数百万の異なる出力を生成できます。
他のツールの一般的な制限
ほとんどの spintax ツールは基本的な機能しか扱えません。一般的に問題となる点を示します:
- 列挙内列挙のみ —
{a|{b|c}}はサポートしますが、それ以外は対応しません。順列、変数、他の要素内のインクルードは不可。 - 深度制限 — 多くのパーサーは2–3レベルのネストで破綻し、無言で破損した出力を生成します。
- クリーンアップなし — ネスト構造を解決した後、スペースが崩壊し、句読点が重複し、大文字化が壊れます。結果は手動編集が必要です。
- 構成可能性なし — 変数とインクルードがなければ、すべてのテンプレートは孤島です。共通ブロックの再利用はコピー&ペーストを意味します。
Spintax.Net のアプローチ
Spintax.Net はネストを後付けではなく、ファーストクラスの機能として実装しています。5つの設計方針がそれを可能にします:
- 任意の深さ — ネスト制限はありません。10レベルの深さも2レベルと同じように動作します。
- 要素間ネスト — 順列内の列挙、列挙内の順列、ネスト構造を含む変数、ネストされたテンプレート全体を埋め込むインクルード。任意の要素を他の任意の要素の中に配置可能。
- 最内部優先の解決 — エンジンは常に最も深いレベルから外側へ解決します。これにより評価が予測可能でデバッグしやすくなります。
- スマートな後処理 — すべてのネストが解決された後、エンジンは自動的に大文字化を修正し、重複スペースを削除し、句読点の間隔を修正し、文の境界を処理します。出力は生の連結ではなく、クリーンなテキストです。
- 安全性 —
#includeの循環参照検出が無限ループを防止します。変数スコープルール(ランタイム > ローカル > グローバル)が意図しない上書きを防ぎます。
シンプルからアドバンスドまで
1. Enum inside enum
{{premium|luxury} sedan|{compact|mid-size} SUV}
Inner enumerations resolve first, then the outer one picks a result. Possible outputs: premium sedan, luxury sedan, compact SUV, mid-size SUV.
2. Enum inside permutation
[<minsize=2;maxsize=3;sep=", ";lastsep=" and "> {red|blue} apples|{big|small} oranges|bananas]
Each permutation element contains its own enumeration. The engine resolves inner enumerations first, then shuffles and joins. Example output: blue apples, bananas and small oranges.
3. Variables with nested spintax
#set %product% = {{premium|budget} {laptop|tablet}|{smart|classic} phone}
#set %action% = {Buy|Get|Order}
%action% your new %product% today!
Variables store nested spintax and resolve each time they are referenced. Combined with multiple variables, the variant count multiplies rapidly.
4. Includes with nesting
/# main template #/
#include "hero-text"
{Check out|Discover|Explore} our [<, > features|plans|pricing].
The included template can itself contain enumerations, permutations, variables, and even further includes. Circular reference detection keeps everything safe.
AI + ネストされた Spintax
大規模言語モデルは複雑なネストテンプレートの作成に優れています。1つのプロンプトで、複数のネストレベル、変数による条件ブロック、インクルードによる再利用可能なセクションを持つテンプレートを生成できます。
ワークフローはシンプルです:AI を使ってテンプレートを一度作成し、Spintax を使ってユニークなバリアントを永遠に安価に生成する。テンプレート作成に1回のAPIコール。各バリアント生成にAPIコールはゼロ。ネストされた spintax がこれを経済的に実現可能にします — ネストが深いほど、テンプレートあたりのユニーク出力が増えます。
はじめに
プロジェクトでネストされた spintax を使う準備はできましたか?完全な仕様については構文リファレンスをご覧ください。またはSpintax WordPress プラグインで実際のネストを体験してください。