スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
このエントリーをはてなブックマークに追加

ジムノペディとC#と藤井システムと

- 1 -
私の一番好きなピアノ曲は、エリック・サティの「ジムノペディ」である。

サティをインターネットで調べると、「音楽界の異端児」とか「変人」とか出てくるが、私はこのジムノペディの旋律に、堅固な理論と計算、そして独創性の中に潜む常識的な一面を感じずにはいられない。
この曲、斬新で現代的でありながらも、どことなく古めかしさを感じはしないだろうか?
というのも、「ジムノペディ」は古代の祭典を表す言葉であり、サティがこの曲に取り入れたのは300年も前に廃れた「教会旋法」と呼ばれる旧式の音楽理論なのである。
サティがこれを作曲した当時、音楽は長調・短調の全盛期であり、音楽家たちはむしろ余りにも使い込まれ馴染みすぎたそれらから脱却しようとしていた。
その結果、(後になって)十二音技法やらひたすら転調する音楽やら読めない楽譜やら、かの有名な4分33秒のような現代音楽と呼ばれるジャンルが発展していくわけなのだが、サティのこの「ジムノペディ」はむしろ長調や短調が発展する前の古代音楽にこそ解を求めた。

ただし、教会旋法はずっと前に廃れた旋法だ。廃れたのには廃れたなりの理由がある
それは、「解決感」が足りないということだ。ドレミファソラシドと来て、最後のシ→ドに至る「終わった!」という感じが、どうしても教会旋法だと薄い。これにはシ→ドが「半音差」であることが深く関係している。(短調についてはややこしいので深く触れないが、本来長調しか所有していないこの「半音差」を裏技的に獲得できたのが、短調の生き残った理由のひとつである。)
他にも和音的な理由などもあるが、とにかくこの「廃れていったなりの理由」を無視して単に古代音楽を復活させただけでは、ジムノペディの凄さは無かった。

サティは教会旋法を復活させるにあたって、現代のジャズやポップスにも通じる「セブンスコード」を混ぜ合わせたのだ。
セブンスコードとは、最も一般的で綺麗な和音であるドミソに、ドからみて七番目の音であるシ(またはシ♭)を加えたドミソシ(またはドミソシ♭)のようなコードのこと。(厳密にはドミソシのほうをメジャーセブンスといい、ドミソシ♭のほうをマイナーセブンスという。ジムノペディで主に使われているのはメジャーセブンス。)
このセブンスコードは、シとドが(オクターブ越しに)ぶつかり不協和音となるため、独特の不安感、緊張感、浮遊感と言える感覚をもたらす。この緊張感が「早く次の和音を聞かせてくれ!」という進行力を生み出すのだ。

セブンスコードを混ぜ合わせることで、教会旋法に足りなかった解決感が補強される。ジムノペディの冒頭では「ソシレファ#→レファ#ラド#」が繰り返されるが、これは互いが互いに相手の和音を解決している関係になっている。セブンスコードは緊張をもたらすが、その解決をしたと思ったら、解決している和音自身が即座に次の緊張を生み、また次の解決を求める。永久に緊張と解決の連鎖が繰り返されるのだ。一音引いてから和音の全体を弾くという曲構成も、この意図を増幅していると読み取れる。
これにプラスして、教会旋法の持つ独特の「収まりのつかなさ」、きっちりと着地して終わらない感じが見事に組み合わさり、曲全体がどこかふわふわとした雰囲気に包まれる。
つまり、セブンスコードは単に教会旋法の弱点を補ったにはとどまらず、その性質をむしろ長所に作り変える最高の相棒となったのだ。

セブンスコードは古典的なクラシック音楽の中でそれほど使われてきた和音ではなかった。しかし、シャンソンなどの庶民的な音楽では頻繁に使われていた。サティはシャンソンの伴奏をして生計を立てていたから、この発想に行き着いたのかもしれない。
主流の音楽からの脱却を目指すために、古代音楽に最新の庶民音楽を混ぜ合わせて復活させる。決して滅茶苦茶にするわけではなく、また無闇に過去を賛美するわけでもなく、離れすぎず、すがりすぎず。「現在」を打ち破ってたどり着いた、この「過去」と「未来」との繊細なバランスこそが、ジムノペディの一番の魅力だと思うのだ。



- 2 -
C#を知っているだろうか。
最も新しいプログラミング言語のひとつであり、様々な便利な機能を持つことで知られる。
その中でも特に新しく画期的な機能だともてはやされているのが「LINQ」だ。
コード中でSQLが書ける!などと言われているが、私はLINQの本質はそこにあるのではないと思っている。

話をわかりやすくする為に、xの5乗に2倍して1を足さなければいけないとする。
+や*(かける)の記号が使えれば簡単に書けるだろうが、それらは使えないものとしよう。かわりに足し算はAdd、掛け算はMultiply、累乗はPowという関数を使う。
まず、xを5乗するのは、

a = Pow(x, 5)


この結果を2倍するので、

b = Multiply(a, 2)


最後に1を足すと、

c = Add(b, 1)


となる。
3行も書いてしまった上に、aとbという完全に無駄な変数(途中経過のためだけにある変数)を用意する羽目になった。これを防ぐためには、上記の3行を1つにまとめて、

c = Add(Multiply(Pow(x, 5), 2), 1)


とすればよいが、これでは余りにもわかりにくい。クソコードだ。
これを、C#に用意されてる「拡張メソッド」という書き方を採用すると、次のように書ける。

c = x.Pow(5).Multiply(2).Add(1)


解説すると、x.Pow(5)というのは「xを5乗する」という意味で、Pow(x, 5)を変形しただけに過ぎない。これを次のMultiplyへ渡すことで、左から右へと滑らかに処理が書ける。最初に日本語で書いた要件と見比べてみてほしい。「xの5乗に2倍して1を足す」。上記の命令はこれをそのまま書いたに等しいということが直感的にわかるだろう。
このように、処理を左から右へ繋げていく書き方をメソッドチェインという。LINQが便利な機能であるのは、このメソッドチェインを利用できることが大きい。

ところで、今少し誤解を招きそうな説明をしてしまった。
拡張メソッドを用いたメソッドチェインがLINQなのかというと、実はそういうわけではない。確かに拡張メソッドはLINQの重要なパーツではある。しかしそれ以外に、インターフェイス、ジェネリック、デリゲート、ラムダ式というC#の機能があって、5つのパーツが合体ロボットのように組み合わさってLINQはできている。
これらの機能がC#のどのバージョンで出現したのか、表にまとめてみた。
バージョン機能参考にされた他言語
ver.1インターフェイスJavaなど
デリゲートC++(関数ポインタ)、Haskellなど
ver.2ジェネリックC++(テンプレート)、Javaなど
ver.3ラムダ式LISP、Schemeなど
拡張メソッド-
LINQ-


最後の行にLINQとあるが、これは新機能というより、5つのパーツを定義した結果として勝手に完成したと言った方が正確だろう。
このLINQ完成に向けて、C#は機能を積み上げてきたのではないかとすら思えるほどだ。

注目して欲しいのが、「参考にされた他言語」の欄である。
拡張メソッド以外のパーツは、特にC#に独自の機能と言うわけでもない。それぞれのパーツを少しずつ他言語から拝借し、融合させることによってC#独自の機能である「LINQ」が完成したのだ。
私にとってLINQの功績は、これらの機能ひとつひとつが持つ魅力を最大限に高めたことにあると思う。それらの魅力が、ひいてはLINQの魅力になっているのだ。斬新で独自的で何にも似ていない機能ではなく、むしろ過去の様々な機能を上手く未来の機能に仕立て上げたからこそ、C#はすごいと思う。



- 3 -
将棋のプロ棋士である藤井猛九段をご存知だろうか。
将棋には序盤の攻め方・守り方によって様々な戦法があるのだが、その中でも特に四間飛車という戦法を愛したのが藤井九段である。
彼は愛する四間飛車のために、「四間飛車藤井システム」と呼ばれる戦法を編み出した。

簡単に説明すると、戦法には相性がある。四間飛車は相手より先に王様を守れるので、相手からの速攻に強い。しかし、逆に攻め手には欠けるため、相手が攻撃を捨てて延々と防御に徹すれば、こちらからすることがない。そこで相手が穴熊と呼ばれる完全防御体勢を組んでから、余裕を持って攻めてくると、さすがに防御力の差で負けてしまう。四間飛車は速攻に強く、穴熊に弱い」。この先を読むに当たってこれだけは頭の片隅において欲しい。
藤井システムとは、穴熊戦法によって衰退しかけていた四間飛車を復活させる為に藤井九段が編み出した、「穴熊に対して積極的に攻撃していく」戦法である。

これが従来の四間飛車。
藤井システム1

これが藤井システム。
藤井システム2

藤井システムは、やはり「独創的」「画期的」「全く新しい考え方」との評価を受けている。
私は、「違う。いや、違わないけど、評価すべき部分はそこじゃない」といつも思う。
藤井システムは、四間飛車の「本来あるべきだった真の姿」を見つけ出したシステムだ。実際、ここが一番肝心だと思うのだが、従来の四間飛車と藤井システムは手の順番が入れ替わったに過ぎない。

両者とも、
角道を開ける→飛車を左に動かす→角道を止める
藤井システム3
の流れから始まり、

①王将を右に動かす→②金銀を配置する→③右端の歩を突く→
藤井システム4
④左辺の攻撃陣を整える→⑤右辺の歩を突く
藤井システム5
の順番におおむね進むのが従来の四間飛車で、この後は相手の攻めにカウンターしたり、防御陣を進化させたりする。

一方藤井システムの一例としては、
①右端の歩を突く→②金銀を配置する→
藤井システム6
③左辺の攻撃陣を整える→④右辺の歩を突く
藤井システム7
とした後で、⑤ようやく王将を右へ動かして従来の四間飛車に合流する。

元々四間飛車は、「相手の手を見ずに組める」というのが売りの戦法でもあった。相手がどんな手を指していても、基本的には淡々と自分の手を進めてよい。それなら、別に途中の順番を入れ替えたって構わないはずだ。
そもそも、相手と一手ずつ交互に指す将棋というゲームにおいて、相手の手を見なくてもよいなんて組み方は、自ら「相手の手」という情報量を捨てているに等しい。居飛車など他の戦法が相手の手を見ながら慎重に駒組みしている中、四間飛車だけが情報量を捨てていては、戦法としての力はその分落ちる。
藤井システムの真髄は、「相手の手を見ずに組める」四間飛車を、巧みに順番を入れ替えることによって「相手の手を見ながら組む」戦法に変化させたことだ。
先ほどの、「①端歩を突く→②金銀を配置する→③左辺の攻撃陣を整える→④右辺の歩を突く→⑤王将を右に動かす」という流れは、あくまで藤井システムの一例にすぎない。
もし、②までの段階で相手が速攻を仕掛けてくれば、③④を中止して即座に⑤を実行する。攻撃よりも防御を優先し従来通りのカウンター狙いに着地するわけだ。
そしてもし、相手が穴熊に組みかけていたら、⑤を中止し、藤井システムは攻撃フォームに移る。
これが、いわゆる藤井システムの有名な形だ。
藤井システム2

相手の穴熊はこちらから見て右のほうにあるので、右辺の(本来防御用の)駒を使って次々と攻めかかっていく。王将はむしろ戦場に近づかないよう、初期位置のまま動かさない。二枚の金と飛車の配置がその周りを硬く守る。
この独特な姿が見る者に鮮烈な印象を与え、「これが藤井システムか!」と感嘆させてしまうのだが、実はこれは四間飛車の「アタックモード」に過ぎない、と私は思う。

もし藤井システムが単に穴熊を崩すだけのシステムなら、今度は速攻に潰されて終わりだっただろう。そうなれば、速攻、従来の四間飛車、穴熊、藤井システムで4すくみになるだけだ。
藤井九段は従来の四間飛車を否定したわけではない。ただ、従来の四間飛車は、「ガードモード」しか使われてこなかったところに、彼が序盤の手順を見直すことによって「アタックモード」を掘り起こした。そうして従来の「ガードモード」と「アタックモード」を常に使い分けられるようにしたシステムこそが、藤井システムなのだ。

しかも、このアタックモードも、よく評されるような「防御をかなぐり捨てて攻撃力全振りにした姿」、というわけではない。右方向に攻めかかるに当たっては、この位置の王将に金と飛車はむしろ最高の防御陣と言える。
ガードモードとアタックモードのバランスにしても、アタックモードの中での攻撃と防御のバランスにしても、非常に繊細な綱渡りのような見事さがある。
自由自在な発想力、と評されることが多い藤井九段だが、むしろ繊細な計算と膨大な研究に裏打ちされたこのバランス感覚が、彼の何より偉大な才能ではないだろうか。



- 4 -
さて、ここまで全く関係の無い三つもの事柄をわざわざひとつの記事にした意味が、皆さんにはわかってもらえただろうか。
三つの発明には、共通点がある。それをネットなどでよく言われるような、「独創性」「突飛な発想力」と言う言葉で私は評したくはない。
私の言いたいことは、「温故知新」とか、「枯れた技術の水平思考」といった言葉で、巷には知られている。私はそれを、「過去思考と未来志向のバランス」と言う言葉で語りたい。
散々それぞれの例で語ってきたので、もう詳しくは説明しないが、「新しいものを生み出すっていうのは、こういうことなんだよ!」という心の叫びを受け取ってもらえたらなあと思う。
関連記事
スポンサーサイト
このエントリーをはてなブックマークに追加

コメントの投稿

管理者にだけ表示を許可する
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。