正規表現詩と形式言語による詩的実践:Dan WaberからCOEMまで
現代の詩的実験の中には、プログラミング言語や形式言語(正規表現、BNF記法、構文規則、ドメイン固有言語など)の構造そのものを詩の素材として用いる動きがある。これらはコード詩や電子文学の一分野として位置付けられ、テキストの生成規則やコードのシンタックスによって詩情を生み出そうとする試みである。本稿では、Dan Waberの正規表現詩を起点に、形式言語を詩的実践として用いた代表的な事例を概観し、その技術的・詩的特徴を比較する。また、それらの試みがコード詩・電子文学・実験詩と接点を持ちながら、視覚的・構文的・意味論的な詩表現に開いた新たな地平について論じる。
Dan Waberの正規表現詩:概要と特徴
米国の電子詩人Dan Waber(ダン・ウェーバー)は、正規表現(Regular Expression)という計算機言語の記法に注目し、それを詩の記法として取り入れることを提唱した。正規表現はプログラミングやテキスト処理で用いられる文字列パターン記述であり、特殊記号(メタ文字)を使って文字列のパターン(語形変化や繰り返し、選択肢など)を表現できる。Waberは2011年のエッセイ「Regular Expressions as a System of Poetic Notation(詩的表記法としての正規表現)」において、正規表現を「言語に新たな可能性をもたらし真実を捉える網を編むための記法システム」として詩に取り込もうと論じている。彼は「正規表現の解説文において “matches” という単語を “means” に置き換えて読んでみると、そのテキストは詩学について述べたものになる」 と示唆し、検索パターンのマッチングを「意味生成」と捉え直すことでプログラム構文が詩的意味を帯びることを指摘した。
Waberの正規表現詩の特徴は、単一の表現で複数の詩を記述できる点にある。正規表現は「あるパターンに適合する文字列」を記述するものだが、詩的実践として用いる場合、それは「多様な詩的フレーズの可能性を内包した記述」になる。Waber自身、「正規表現で詩を構築するとき、実際に構築しているのは潜在的状態にある無数の詩の記述に他ならない」と述べている。例えばWaberは、自身の詩の一節「I need to right, to write, two rate, too wrought.」に含まれる同音異義の言葉遊びを、一つの正規表現I need /t(w?o{1,2}) w?r(i|a|ough)te?/で表現してみせた。この例ではt(w?o{1,2})の部分が「to/two」の揺れを、w?r(i|a|ough)te?の部分が「write/right/rite/wrought」の変化をそれぞれ包含しており、一つのパターンで複数の語句の組み合わせを表現している。正規表現詩において読者は、このようなメタ構文を読み解きながら、行間に潜む複数のテキストを想像することになる。文字どおり「パターンがパターンに適合する様」を読む体験は、詩の読みとして極めて特異であり、語そのものではなく語の構造や生成規則に詩的意味が宿る点が新しい。
Waberの正規表現詩は概念的な提案ではあるが、電子詩の分野に新風を吹き込み、その後のコード詩的プロジェクトに影響を与えた。彼の実践はテキストのリニアな固定性を崩し、無数のバリエーションを内包する詩という発想を示した点で意義深い。「正規表現」という計算記法を転用することで、言語表現の曖昧さや連想の広がりを巧みに表現できる可能性を切り開いたのである。
詩的プログラミング言語「COEM」の構造と詩的可能性
正規表現詩の思想を受け継ぎつつ、より発展的にプログラミング言語そのものを詩作のために設計した例に、Katherine Yang(キャサリン・ヤン)による「COEM」がある。COEM(「code」と「poem」を掛け合わせた名称)は、詩を書くためのエソテリック言語(遊戯的プログラミング言語)であり、プログラムコードの構文と詩的言語表現を融合させた実験的プロジェクトである。その目的は、詩にプログラム的な明確さや手続きを与える一方で、コードに曖昧さや感情といった詩的要素を吹き込むことにある。開発者のYangは、COEMを通じて「プログラミング、詩、言語学、タイポグラフィの領域を美しく興味深いかたちで結びつけ」ようとしたと述べており 、計算技術へのフェミニスト的批判(非人格的・効率至上主義への抵抗)として曖昧さや隠喩、個人的文脈をコードに導入する試みでもある。
COEMの言語構造は、従来のプログラミング言語から意図的に逸脱し、詩的表現に資するよう設計されている。特徴的な点を挙げると:
• 宣言的文法(Optativeムード):COEMには四則演算など通常の計算機能は無く、「~であれ(let)」という宣言によって変数に値(文字列)を割り当てる文だけが基本となる。このlet文は文法学で願望法 (optative) を示す言葉遣いであり、「~であってほしい」と願う詩的なニュアンスを持つ。すなわちプログラマではなく詩人が変数に想いを託すような書き方になっている。
• 正規表現の活用による曖昧性:変数名や値の中に正規表現の構文を直接書き込むことができ、一つの文で複数の語やフレーズを同時に定義できる。例えばlet se(e|a) be "blue"と書けば、「see」という変数名と「sea」という変数名の両方に“blue”という値を与えたことになる。同様にlet mis(t|sed) be "thick"は「mist」と「missed」を、let mou?rning be "dark"は「morning」と「mourning」の両方を定義している。このように一種の語遊び(see/sea, mist/missed, morning/mourning)をプログラム構文で表現し、単語の綴りの差異に潜む多重の意味を一行に凝縮している点が詩的である。
• 識別子を文字列として解釈:COEMでは事前に定義されていない識別子(変数名や関数名)が登場した場合、それをエラーとせず文字列リテラルとして扱う。通常の言語なら未定義変数はエラーになるが、COEMでは詩的文脈でいきなり現れる語(例えば物語の登場人物や詩的主語など)をそのまま受け入れてテキストとして出力できる。これによりコードがより自然言語に近い文脈で記述でき、詩的なフレーズを壊さずにプログラムに織り込める。
• 記号の再解釈(隠喩的プログラミング):いくつかの記号はプログラミングでの意味とは異なる文学的役割を与えられている点もユニークだ。例えば、ピリオド(.)は通常プログラムではオブジェクトのメンバ参照に使うが、COEMでは文の終止符として用いられる。アンパサンド(&)は論理ANDではなく関数の戻り値を示す句読点になり 、括弧()は正規表現用に予約して代わりに長いダッシュ(—)を関数引数の括弧の役割にするなど 、プログラミング記号に文学的・タイポグラフィ的意味を持たせている。
• 一枚画面のエディタと構文強調:COEMはウェブ上の専用エディタで実行・表示することを想定しており、コードの構文要素ごとに書体や色を変えたタイポグラフィによって、ソースコード自体が鑑賞対象となるよう工夫されている。例えば、キーワードはイタリックのセリフ体、変数名は等幅フォント、文字列はサンセリフ体、といった風に視覚的区別がなされ 、コードを読みやすくすると同時に美的効果も生んでいる。これはコードを単なる手段ではなく作品の一部として提示するという思想に基づく。
• 対話的ディレクティブ:さらに、コード冒頭に#usingディレクティブを書くことで、コンパイラ(処理系)に対し詩的な振る舞いのオプションを指定できる。例えば#using palimpsestは変数の履歴を保持して上書き前の値も記憶するモード、#be gentleはコンパイラに優しく振る舞わせる(おそらくエラーメッセージを抑制する等)モード、といった具合である。詩人が自分だけのコンパイラとの対話ルールをカスタマイズできる点も、他の言語にはない詩的遊びである。
COEMはTuring完全ではない非実用的な言語でありつつも、その制約ゆえに「主に宣言文から成る、真実と言語表現の実験」であると位置付けられている。実際にCOEMで書かれたコードは、プログラムの出力とソースが一体化した詩的テキストとして鑑賞できる。例えばCOEMのサンプルdocks.coemでは、正規表現で定義した変数see/seaやmist/missed等に値を割り当てた後、know関数(出力を行う関数)でそれらを表示すると、その結果が行末のコメント(ダガー記号†以降)に添えられる。つまりコードを実行した痕跡が注釈としてコード内に残り、ソースコード自体が完成した詩のページになるのである。COEMは2022年の電子文学協会 (ELO) のカンファレンスで発表され 、その言語的構造と詩的可能性はコード詩と電子文学の交差領域を象徴する先鋭的な例として注目された。
形式言語を用いたその他の詩的試み
正規表現やCOEM以外にも、プログラミング言語的な形式を詩に応用しようとする多様な試みが存在する。ここではいくつかの例を紹介する。
• BNFや文法規則による詩生成:プログラミング言語の構文定義に使われるBNF (Backus-Naur Form) のような文法記法を詩に応用する動きもある。文法規則を詩の構造に見立ててテキストを生成することで、潜在的に無限の詩編を作り出すことができる。 実際、デューク大学の学生だったZackary Schollは文法規則に基づく詩生成プログラムを作り、そこから生み出した詩を大学の文芸誌に投稿して掲載されることに成功した(編集者たちはそれがコンピュータ詩とは気付かなかった)。このプログラムは「詩をスタンザ(連)、行、句、単語といった要素に分解し、文法ルールに従ってランダムに選択・再帰生成する」仕組みで 、生成された詩は人間の書いたものと見分けがつかないほどだったという。こうした文法詩のアプローチでは、詩人は直接詩行を書く代わりに生成規則(プロダクションルール)を書くことになり、その規則自体が一種のメタ詩として機能する。文法記法そのものを鑑賞の対象とする例は多くないが、生成された結果のテキストはコンピュータと詩人の協働による作品と言える。
• コード詩とエソテリック言語:既存の汎用プログラミング言語をそのまま詩作に転用する、あるいは詩的効果を狙ったエソテリック言語(esolang)を創作する動きも盛んである。前者の例としては、プログラミングコードを人間が詩のように読める形で書く「コード詩」がある。例えばPerl詩(Perl Poetry)はPerl言語のソースコードで書かれた詩で、プログラムとして実行可能でありながら自然言語の詩のようにも読める作品を指す。またコード・ポエトリー・スラムと称して、プログラマー詩人たちが自作のコード詩を朗読・競技するイベントも2010年代に各地で開催された。
他方、詩的コンセプトを組み込んだ新たなプログラミング言語を作る試みもいくつか存在する。COEMもその一つだが、他にもSukanya Anejaによる「in:verse」 、William Hicksによる「Esopo」 、Zeb Burke-Conteによる「Shakespeare Programming Language」 などが知られる。in:verseは「詩・視覚・数学・コードの融合」を掲げた詩的プログラミング環境であり 、ウェブ上でインタラクティブに詩的コードを記述・実行できるように設計されている。Esopoは開発者自身が「文学的に興味深い一連のエソテリック言語を作るプロジェクト」と位置付けており 、実用性よりも実験性・遊戯性を重視した言語群から成る。Shakespeare Programming Language(SPL)はソースコードの見た目をシェイクスピア劇の台本のようにするジョーク言語で、変数を劇中人物に見立て、プログラムの制御構造を舞台の幕や場面になぞらえるというユニークな発想で知られる。これらのエソテリック言語は一見すると純粋なプログラムだが、人間の読者にとって馴染みのある文学様式や物語性を帯びており、コードと文学テキストの境界を遊撃的に往来する作品と言える。
• プロセス詩・インタラクティブ作品:形式言語を詩的に用いる試みは必ずしも文字テキストに限らず、メディアアート的な表現にも広がっている。例えば2014年のニューヨークで開催されたコード詩のイベントでは、「Regular Expressions」と題した詩的パフォーマンスが発表されている。これはデュオによるライブ作品で、あらかじめ用意された一連の正規表現パターンをリアルタイムにテキストへ適用し、そのマッチ結果から音響信号を生成するというものだった。伝統的な詩が押韻や韻律によって聴覚的効果を生むのに対し、この作品では文章中の隠れたパターンを電子的に響きに変換することで、書かれた言葉の中に潜む音楽性を引き出そうとしたのである。このように、形式言語のルールが詩的インターフェースとなり、読者(鑑賞者)の操作やプログラムの実行によって詩が生成・変容する作品も生まれている。
各手法の技術的・詩的特徴の比較
以上挙げたような形式言語詩の手法には、それぞれ異なる技術的基盤と詩的効果がある。それらを比較することで、形式言語を用いた詩作の多様性が浮かび上がる。
• 正規表現詩:技術的には形式言語の中でも比較的コンパクトなパターン記述であり、単一の文字列として完結する。実行すれば文字列マッチングという明快な処理が可能だが、詩としては潜在的な多義性を表現するために用いられる。読者は正規表現の記号(|, ?, 等)に慣れている必要があるが、その分読解という行為自体がパズル的遊びとなり、読む度に異なる解釈や具体的な文章例を思い浮かべるだろう。正規表現詩は視覚的には記号の配置による造形性を持ち、例えば括弧のネストや|の並びは詩のタイポグラフィとしても面白い。一方で音声的な要素はほぼ持たず、あくまで視認と論理構造の詩である。
• 文法生成詩:BNFや文法規則を用いる手法は、技術的にはコンテキストフリー文法の仕組みに乗っており、しばしば自動生成を前提とする。詩人は文法を書くだけでは直接テキストを得られないため、プログラムにその文法を解釈させて具体的な詩文を生成させる。生成過程では毎回異なる詩が得られるため、作品は無限に広がるテキスト空間として存在しうる。詩的には、作者が定めた語彙と言い回しの組合せから文体やテーマのゆらぎが生じ、読者はそこにアルゴリズムの作家性を見ることになる。文法そのものを鑑賞する場合、人間の言語をメタ的に分析したような記述(非終端記号や「::=」といった記号列)の味わいがあるが、一般には生成された詩文の方が鑑賞対象となることが多い。
• エソテリック詩的言語:COEMやin:verse、SPLのように言語全体を設計するアプローチは、技術的には新規のコンパイラ/インタプリタや実行環境の実装が必要でハードルが高い。しかしその分、言語仕様に詩的理念を染み込ませることができ、語彙から文法、実行時挙動に至るまで詩情を織り込むことが可能となる。COEMのように出力を画面上で美しく提示したり、SPLのように人間の物語理解をプログラム構造に対応させたりと、詩とプログラムの深いレベルでの融合が図れる。一方でこれらは往々にして計算的な万能性を犠牲にしており(例えばCOEMはチューリング完全ではない )、実用のプログラミングには向かない。その制約自体が詩的表現の制約(定型詩の韻律のようなもの)と捉えることもできる。読者にとっては、専用言語の文法や約束事を理解する必要があるため敷居は高いが、そのルールを理解したとき作品世界への没入感が増すだろう。技術的実装と芸術的コンセプトが直結している点で、この手法はメディアアートとしても評価される。
• コード詩(既存言語の転用):一般的なプログラミング言語を使った詩は、技術的にはその言語の文法に則っているため可読性と実行性のバランスが特徴だ。PythonやJavaScriptで書かれたコード詩は、そのままプログラムとして動作したり特定の出力を生成したりするものもある。一方で人間にはコードとしてだけでなく自然言語的な意味が読めるよう工夫されている(例えばコメントや関数名を駆使して物語を語るなど)。この二重読み取り可能性(二重コード化)は詩的効果を生み、コンピュータにとっての意味(計算論的意味)と人間にとっての意味(言語芸術的意味)が交錯する醍醐味がある。技術的には制約が少ないため自由度が高いが、その分プログラマ詩人の腕によって完成度が左右され、しばしば高度なプログラミング知識やユーモアが要求されるジャンルでもある。
コード詩・電子文学・実験詩との接点
形式言語を用いた詩的実践は、広い文脈で見るとコード詩や電子文学 (Electronic Literature)、さらには20世紀以来の実験詩の系譜と深く結びついている。まずコード詩とは、「プログラミング言語の構文規則を用いて書かれた詩」一般を指し、実行可能性を問わずコードの形態で文学表現を行うものだ。Dan Waberの正規表現詩やCOEMで書かれたテキストはまさにこの定義に当てはまり、コード(記号列)の持つ美や含意を読み解く営為である点でコード詩そのものと言える。また、それらはコンピュータ上で動作したり生成を行ったりするため、電子文学に含まれる。電子文学はデジタル環境で生まれる物語・詩の総称であり、インタラクティブフィクションやハイパーテキスト、詩的アプリケーションなど多様な形態を含む。正規表現詩やCOEMはインタラクティブ性こそ限定的だが、生まれながらに電子的(born-digital)なテキストであり、紙に固定された詩では実現し得ない動的・複層的表現を特徴とする点で電子文学の思想を体現している。
実験詩・前衛詩の歴史を顧みると、形式と言語遊戯への関心は以前から存在した。ダダイズムやシュルレアリスムの自動記述、ウィトゲンシュタイン以降の言語詩学、さらにはOulipo(ウリポ)のように数学的・組合せ的な制約を用いた詩作など、20世紀の詩人たちは既に言語のルールそのものを詩の道具として探求してきた。そうした流れの中で、コンピュータ言語という新たな形式を得た現代の詩人たちは、アルゴリズム的思考を取り入れた詩作に挑んでいるとも言える。例えば、Oulipo的な発想で「文法」を操ることで生まれる文芸としては、レーモン・クノーの『百兆の詩集』のように切り替え可能なテキストの走りがあったが、今日の文法生成詩はそれを電子的に実現・拡張したものと位置づけられるだろう。また、具体詩や視覚詩が言葉の視覚的配置に新機軸を打ち立てたように、コード詩や形式言語詩は言葉の論理構造や記号体系に美を見出す視点をもたらした。従来の詩が音韻やリズム、隠喩に美を求めたのに対し、コード詩はシンタックス(構文)や記法、プロセスに美を見出すのである。
さらに、批評的コードスタディーズ (Critical Code Studies) と呼ばれる分野では、プログラムコード自体を文学テクストのように読み解く試みが行われている。Mark C. Marinoにより提唱されたこのアプローチでは、ソフトウェアの機能ではなくコードの記述そのものに注目し、社会文化的含意や作者性を議論する。形式言語詩の実践は、まさに批評的コードスタディーズと詩作が交差する地点にあり、コードを批評的に読む行為とコードで詩を書く行為が表裏一体となっている。メディアアートや電子詩の研究者にとって、これらの作品はプログラムのリテラシーと詩のリテラシーの双方を要求する複雑なテクストであり、新たな分析枠組みを必要とする対象でもある。
視覚・構文・意味論の新たな詩表現の地平
形式言語を詩的実践に用いることは、詩の表現領域を視覚的・構造的・意味論的に拡張する意義を持つ。まず視覚的には、プログラミング言語の構文がもつ独特のレイアウトやタイポグラフィが新鮮な詩的効果を生む。正規表現の記号列やコードエディタ上の色分けは、テキストを絵画的・造形的に見せる要素となりうる。紙に書かれた詩では黒一色の文字であったものが、スクリーン上ではシンタックスハイライトにより色彩と言字体のニュアンスを帯びる。COEMの例に見るように、詩を書くこととプログラムを書くことが一体化した環境では、作品はまるで写経や書道のようにコードが美しく整形された「書」として提示される。これは視覚詩や具体詩の21世紀的な発展形とも言える。
構文的・構造的な次元では、形式言語詩は詩のマルチリニアリティ(多重線的構造)を実現する。伝統的な詩は一連の言葉が順序だって並ぶ線的芸術だが、正規表現や文法、コードによる詩は分岐や反復、再帰構造を内部に孕む。 読者はテキストをたどる際、一つの読み筋だけでなく複数の可能性を意識することになる。まるで迷宮の地図を見るように、詩の内部構造を探索する読みとなるのである。この意味で、形式言語詩はテキストの空間性・幾何学性を強調し、新しい読書体験を提供する。さらに、プログラムは実行時に時間軸に沿った振る舞いも示すため、詩が時間芸術として動的に展開する可能性も開かれている(例えば対話型に生成される詩や、ライブコーディングによる詩の即興生成など)。形式言語を用いることで、詩は空間的・時間的な構造を内包する複合芸術へと変容しつつある。
意味論的な面でも、形式言語詩は新たな挑戦をもたらす。通常の言語詩では語句の意味や文脈が中心だが、コード詩では記号の意味が二重化する。すなわち、プログラミング記号としての意味(システムに対する命令)と、人間の読む詩的意味(メタファーや寓意)が同居する。Dan Waberの指摘した「matchesをmeansに読み替える」ように、コードの語彙を詩に翻訳して読むことで初めて意味が立ち上がる場合もある。これは裏を返せば、詩の意味がプログラムの動作原理に依存することを意味する。例えば正規表現詩では、「このパターンは何を意味するか?」と問うことは「このパターンにマッチする具体的な言葉列は何か?」と同義であり、意味の解釈が計算的探索と不可分になる。文法詩では、文法規則という抽象的レベルでテーマやストーリーが語られ、生成された具体的文はその影を写す無数の例示に過ぎないかもしれない。コード詩では、詩行に見える一文が実はループや条件分岐の一部であり、その制御構造自体が寓意(アレゴリー)となりうる。例えば「もし〜ならば…」という条件分岐は詩的には選択の岐路や未確定な未来を象徴するかもしれず、ループは循環する季節や記憶の隠喩とも読めよう。このように、計算機的な意味論と詩的意味論の交錯によって生まれる含意の豊かさが、形式言語詩の醍醐味であり革新である。
結局のところ、形式言語による詩的実践は、詩とは何か・言語とは何かという根源的問いに対する挑発でもある。人間の言葉と計算機の言語が出会うところに、我々は新しい詩の地平を見ることになるだろう。それは単にコンピュータを道具として詩を自動生成するというだけではなく、コードという現代の記号体系そのものを詩の媒体に転化する行為である。メディアアートの領域では、このような試みにより詩が他の芸術(音楽、美術、パフォーマンス)とも結びつきやすくなっている点も重要だ。視覚・構文・意味の各レベルで異分野を横断する形式言語詩は、21世紀の詩表現におけるフロンティアであり、詩とテクノロジーの関係性を再定義する可能性を秘めている。
参考文献・出典:Dan Waber「Regular Expressions as a System of Poetic Notation」 (2011) ; Katherine Yang「Coem: a poetic programming language」(2022) ; その他、作品公式サイトおよび関連資料 。