« 2008年6月 | トップページ | 2008年8月 »

Maxima メモ

 Maxima のバグっぽいの見つけた。しかもかなり重大。

(%i1) m:matrix([2,7],[0,7]); 

 untitled_0.png

(%i2) r:matrix([1,1],[0,5/7]); 

 untitled_1.png

というふうに行列を定義しておいて、その積を計算すると、

(%i3) m.r; 

 untitled_2.png

と正しく計算するんだけど、その後でベクトル解析用のパッケージをロードして、

(%i4) load("vect"); 

 untitled_3.png

もう一度、まったく同じ計算をすると、

(%i5) m.r; 

 untitled_4.png

なぜか全然違う結果になる(^^)。

 マニュアルを見ると、一応、

Warning: the vect package declares the dot operator . to be a commutative operator.

警告:vect パッケージは、ドット演算子を可換演算子として宣言し直します。

と書いてはあるんだけど、でも、転置行列で計算したって 14 なんて要素は出てこないよなあ。。。(^^)

 このパッケージをロードしないと、外積やベクトル積の演算子が使えないのでちょっと困るんだけど、線形代数パッケージとコンフリクトしちゃうのかなあ。よくわかりませんね(^^)。バグレポート出した方がいいのかな。

 あ、わかった。じゃなくて可換演算子だからと思って左右ひっくり返して掛けちゃうのか。こりゃ困ったね(^^)。

 とすると、これは一応バグじゃなくて仕様なのかもしれないけど、ベクトル解析パッケージをロードしたら、事実上、線形代数の計算はできないってことだよなあ。。。そんな仕様でいいんか(^^)。

 あと、こんな現象も見つけた。

 r の逆行列を計算すると、ベクトル解析パッケージをロードする前は、

(%i3) invert(r); 

 untitled_2.png

(%i4) r^^-1; 

 untitled_3.png

このように正しく計算するのに、ベクトル解析パッケージをロードすると、

(%i6) invert(r); 

untitled_5.png

このようにエラーになってしまう。なぜか、

(%i7) r^^-1; 

untitled_6.png

こっちはそのまま正しく計算できるのも不思議(^^)。

| | トラックバック (0)

ベジエ曲線を整数の加減算だけで描画する方法

 だいぶ前にちらっと書いたことがあるのだが、かれこれ 20 年ほど前に、ベジエ曲線を整数の加減算だけで描画する方法を考えたことがある。こういう会社員時代の仕事を紹介するためには、いろいろと制約があったりするのだが、このアルゴリズムは多分守秘義務には含まれていないし、技術自体がいい加減時代遅れの技術で、多分今はもっといい方法が開発されているはずなので、公開してもどこからも文句は来ないと思う。だから、機会があればいつか紹介したいと思っていた。

 だだ、このアルゴリズムを説明するには、ややこしい数式を並べる必要があって、それが面倒で避けていたところもあった。しかし、今回 Maxima を使って計算したら、わりと簡単に再現できたので、せっかくだから記録にとどめておくことにする。

 ベジエ曲線というのは、空間からいくつかの点を選択したときに、その点との関係で定義される。たとえば、2次のベジエ曲線だったら、P0、P1、P2 の 3 つの点から、以下のように定義される。

2.png

この t は 0 <= t <= 1 の範囲にある実数で、この t が 0 から 1 に変化するにしたがって、Bezier2(t) の表す座標はある曲線に沿って空間中を移動する。その曲線が P0、P1、P2 によって定義される 2 次のベジエ曲線ということになる。ちなみに、このようにパラメータによって定義される曲線を、一般にパラメトリック曲線という。

 普通、ベジエ曲線を描画するには、t を 0 から 1 まで少しずつ変化させながら Bezier2(t) の座標を計算するのだが、t が実数のままでは、明らかに浮動小数点計算が必要だ。だからまず、パラメータを整数に変換する方法を考える。

 具体的には、区間 [0, 1] を N 等分し、t がそのうちの何番目まで進んだかをパラメータにする。言い換えれば t = i/N (i、N は整数、i=0..N)という変換をほどこすことにする。すると、上の式は以下のようになる。

4.png

12.png

 これで、P0、P1、P2 が整数座標であれば、この式に出てくる項はすべて整数になるので、iBezier2(i) は一応整数の加減乗除だけで計算できる。ただ、これではまだまだ計算量が多すぎるので、ここからさらに計算量を減らすことを考えよう。

 ここで発想のヒントになったのは、直線描画のためのブレゼンハムのアルゴリズムである。ブレゼンハムのアルゴリズムでは、直線上の各点を最初から計算する代わりに、隣の点の座標との差を計算し、その差を加算していくことにより、計算量を減らしている。

 同じように、iBezier2(i) も、隣の点同士の差を計算すれば簡単になるのかもしれない。この iBezier2(i) のように、整数に対して定義される関数(数列とも言う)の隣り合った点同士の差を計算することを、差分をとると言うが、ここでまず、iBezier2(i) の差分を計算してみる。

14.png

18.png

 さっきよりは大分すっきりしたが、まだまだ計算量が多い。そこで、もう一回差分をとってみる。

24.png

26.png

 この式の右辺を見ると、なんと、変数の i がなくなって定数項だけになっていることがわかる。これは実は偶然ではまったくない。元の式が i の 2 次関数だったことを思い出してほしい。2 次関数を 2 回微分すると定数項だけになるのと同じ原理で、2 回差分をとってもやはり定数項だけになるのである。ただし、微分のときほど単純にはならないが。

 さて、このことを利用すると、かなり計算量を減らすことができる。実際に描画する際には、i を 1 ずつ増やしながら iBezier(i) を計算していくことになるわけだが、まず i=0 のときの初期値として iBezier2(0)、dBezier2(0)、d2Bezier2(0) を計算しておく。すると、その次の i=1 の場合、iBezier2(1) は iBezier2(0) に dBezier2(0) を足せば計算できるし、dBezier2(1) は dBezier2(0) に d2Bezier2(0) を足せば計算できる。そして、d2Bezier2(i) は上の通り i に依存しない定数なのだから、d2Bezier2(1) は d2Bezier2(0) と同じである。これを i=2,3,…と続けていけば、定数をどんどん足していくだけで iBezier(i) のすべての点が計算できるはずである。

(実はこの方法は、オイラー法やルンゲクッタ法のような微分方程式の数値解法にも似たところがある。ただ違うのは、あっちは未知関数を微分で近似的に計算しているのにたいし、こっちは既知関数を差分で厳密に計算しているという点である。)

 ただ、ここで気になるのは、d2Bezier2(i) の分母に N の 2 乗があって値が有理数になっていることである。もし、この割り算の結果を切り捨てて整数にして、それを加算していったら、打切り誤差が集積するのでとても実用にならない。

 ところが、上の式をよく見ると、iBezier2(i)、dBezier2(i)、d2Bezier2(i) の分母はすべてが同じ N の 2 乗である。ということは、全体に N の 2 乗を掛けておけば、整数の加減算だけで計算できそうである。そこで、あらためて以下のように定義し直す。

28.png

32.png

36.png

38.png

42.png

46.png

 これで、NBezier2(i) の各点は、整数の加減算だけで計算できる。そしてそれを N の 2 乗で割れば、iBezier2(i)、つまりベジエ曲線上の各点の座標になる。この方法なら、打切り誤差が出るのは最後の割り算のときだけで、誤差が集積することはない。

 また、この N は勝手に決めた定数であるから、誤差が出ないだけの十分な細かさがあれば、どんな整数でもよい。したがって、N が 2 の整数乗になるようにすれば、最後の割り算も、より計算量の少ないビットシフトで計算できる。通常、画面の解像度は 1000~2000 ドット程度であるから、N = 2^10 = 1024 とか N = 2^11 = 2048 ぐらいにしておけば十分であろう。

 改めてアルゴリズムとしてまとめると、NBezier2(i)、dNBezier2(i)、d2NBezier2(i) の初期値が、

52.png

56.png

58.png

で、NBezier2(i)、dNBezier2(i)、d2NBezier2(i) の間の関係が、

48.png

50.png

であることを利用すれば、NBezier2(i) が逐次的に計算できる。それを ビットシフトすれば各点の座標が求まるというわけだ。

 一応、C++ 風の擬似コードで書くと、こんな感じになる。

(Point クラスの演算子関数は適宜インラインで定義されているものとする。ちなみに、このコードは Point の次元数に依存していないので、Point が何次元でもかまわないし、テンプレート化して任意の次元数に対応することすら可能である。)

void drawBezier2( const Point& p0, const Point& p1, const Point& p2)

{

const int nbit = 10;

const int n2bit = nbit + nbit;

const int N = 1 << nbit;

const int N2 = 1 << n2bit;

Point NBezier2 = p0 * N2;

Point dNBezier2 = p2 + ( 2 * N - 2 ) * p1 + ( 1 - 2 * N ) * p0;

Point d2NBezier2 = 2 * p2 - 4 * p1 + 2 * p0;

for( int i = 0; i <= N; i++ )

{

draw( NBezier2 >> n2bit );

NBezier2 += dNBezier2;

dNBezier2 += d2NBezier2;

}

}

 ループの中が足し算とシフトだけになっているのがおわかりいただけると思う。

 注意してほしいのは、このアルゴリズムは、決して大雑把な近似値を計算しているわけではなく、少なくとも、浮動小数点を使ったアルゴリズムと同等の精度を持っているということである。数値計算にうとい人はピンと来ないかもしれないが、浮動小数点というのは、決して「実数」ではなくあくまで「有理数」に過ぎない。つまり、整数/整数という形式の一つの表現に過ぎないので、整数演算だけでも同等の精度を出すことは可能なのである。

 まあ、今みたいに CPU の速度が速くなってコプロセッサや GPU が進化した時代には無用の技術だろうが、ぼくがこれを開発したのは、8086 とか 80286 とかの時代だったので、このアルゴリズムで描画速度は劇的に速くなった。少なくとも当時ぼくが読んだどの文献にも出ていなかった、オリジナルのアルゴリズムでもある(^^)。また、このアルゴリズムは、2 次のベジエだけではなく、3 次のベジエや B スプラインにも応用できるので、物好きな人は考えてみてほしい。

 ぼくが当時このアイデアを思いついてから、実際に描画処理をインプリメントするまでには相当時間がかかった。特に、ぼくは計算が下手なので、上のゴチャゴチャした差分計算をするのに、紙を何枚も使って何時間も掛けて計算したものだ。

 それが今 Maxima を使えば一瞬で計算できるのだから、隔世の感がある。もし当時こんなソフトがあったら、ぼくももっと斬新なアルゴリズムをバンバン開発できていたに違いないと思うとちょっとくやしい(^^)。そういう意味でも、今のエンジニアは恵まれていると思う。

追記: 今、自分で読み直してみて気づいたけど、このビットシフトで割り算を回避しているところは、もっとスマートな方法があるし、そうすればさらに高速化できますね(^^)。今度ヒマがあったら試してみようと思います。ぼくも 20 年たって少しは頭がよくなってるようで、安心しましたね。みなさんは気づきましたか?

| | トラックバック (1)

Dippin' Dots

 最近ちょっとハマっているお菓子 Dippin' Dots。一種のシャーベットらしいんだけど、形が仁丹みたいな丸い粒状になっているのが特徴。また、シャーベットのように水っぽくなくてサラサラした感じなのも変わっている。

 味そのものはシャーベットと大差ないんだけど、この冷たくて、つぶつぶしていて、サラサラしているという不思議な食感が面白くてちょっと病み付きになっている。

 先日偶然コンビニで見つけて買って帰ったのがきっかけ。それ以来、コンビニに行くたびに探すのだが、サンクスには売っているがセブンイレブンにはない。そのせいで、最近はセブンイレブンには寄らずにサンクスに行くぐらい。それはちょっと言いすぎか(^^)。

 値段がちょっとお高いのが玉に瑕。なにせ、ハーゲンダッツのようなやや高級なアイスクリームよりも高い。でも、食べたことない人は、一度は試してみる価値あると思うよ(^^)。

| | トラックバック (0)

imaxima のインストールメモ

 フリーウェアの数式処理ソフトの Maxima は割と有名だが、その中の数式の表示は、

 Maxima数式例.jpg

こんな感じであまり美しくない(^^)。

 実は、このような Maxima の数式を、Tex や Emacs を駆使して、

iMaxima数式例.jpg

のように美しく表示してくれる iMaxima というソフトがある。

 これを今回インストールしてみたのだが、この配布サイト上の Windows XP 向けのインストールの説明通りにやったのではうまくいかないところがいくつかあった。しかし、最終的には問題を回避して無事インストールできたので、どうすれば回避できたかを参考のためにメモしておく。

 まず、「4) imaxima imath files」というところを見ると、imaxima の構成ファイルを

d:/Program-Files/imaxima-imath

というフォルダに保存しろと書いてある。しかし、ウチの PC は d: ドライブが DVD という構成だし、c: ドライブにあるのは "Program-Files" (ハイフン入り)ではなく "Program Files" (ハイフンなし)というフォルダである。おそらく、ウチ以外にもこういう構成で使っている人は珍しくありまい。仕方がないので、

c:/Program Files/imaxima-imath

に保存することにした。

  もちろん、それでも最終的には動いたのだが、そのために何箇所か書き換えなくてはならないファイルがでてきた。

 まず、「6) Meadow 2.10」には、".emacs" というファイルに

(load "d:/Program-Files/imaxima-imath/setup-imaxima-imath")

と書き込めとある。これも、

(load "c:/Program Files/imaxima-imath/setup-imaxima-imath")

に書き直す必要がある。

 さらに、この setup-imaxima-imath.el というファイル自体も書き直す必要がある。このファイルは、Lisp のソースファイルなのだが、何箇所か絶対パスでファイルを参照しているところがあるのだ。

 だから、テキストエディタで setup-imaxima-imath.el を開いて、文字列の置換機能を利用して "d:" を "c:"、"Program-Files" を "Program Files" に置換すればよい。

 ウチの環境では、一応これで動いた。どなたかのご参考になれば幸いである。

| | トラックバック (0)

統計学の有名教科書の誤りに気づく

 今は亡き小針あき宏氏の「確率・統計入門」という本は、この分野の教科書の中でも名著として知られている。ぼくもウン十年前の学生時代から愛読しているのだが、最近読み直していて、単なる誤植ではすまない、わりと重大な誤りがあることに気がついた。

 誤りを見つけたのは、いわゆる「確率変数の変換」についての記述。確率分布 p(x) を y = f(x) で変換した結果 q(y) は、f(x) の逆関数を x = φ(y) としたとき、

統計学の教科書の誤り-1.jpg

になるという命題(命題 2.6)においてである。これは、正規分布の一次結合が正規分布になるという定理や、χ2乗分布の導出などにも使われる重要な命題なのだが、よく考えるとおかしいのだ。

 この命題には、f(x) の条件として、単調で導関数が連続としか書かれていないのだが、もし f(x) が単調増加でなく単調減少だったら、φ(y) の導関数は常に負である。一方、p(φ(y)) は確率分布の定義上常に正であるから、この式のままだと、q(y) は常に負ということになってしまうのだ。これは明らかに矛盾である。

 この式の本来の意味から考えると、右辺に φ(y) の導関数をかけるのは、変数変換による区間の幅の拡大・縮小を補正するためなので、重要なのは絶対値であって符号は無視できるはずである。したがって、この式には、絶対値記号をつけて、

統計学の教科書の誤り-2.jpg

にしなければならないはずである。

 現に、「実用 統計用語事典」の「変数変換」の項目には、ちゃんと絶対値記号のついた式が書かれている。だから、ど素人のぼくの勝手な妄想に過ぎない、ということはないと思う(^^)。

 次のページには、この命題を多価関数に拡張した命題(命題 2.7)が出てくるが、もちろん、この式も、

統計学の教科書の誤り-3.jpg

でなければおかしいということになる。連続な多価関数なら、極値が一つはあるはずだから、単調増加の関数のみから構成されるということはあり得ない。少なくとも一つは単調減少の関数もあるはずだ。したがって、この絶対値の問題は、多価関数ではより重要になってくる。




 なぜかインターネット上には、このことを書いた記事があまり見当たらないのだが、やっと 1 つだけ見つけた(念のため魚拓)。書いたのは Stanislav Sykora という物理学者・物理化学者で、工学博士・学術博士号をお持ちの方らしいので、ぼくの駄文よりは権威があるだろう(^^)。 引用する。

The above analysis can be extended to monotonously decreasing transformations functions f(x) such that -f(x) is a legitimate Borel function (e.g., f(x) = e-x). In such a case, the differentials dx and dz in Eg.(5) are of opposite sign so that, in order to keep the pdf's positive, one needs to replace them by their absolute values. Consequently, Eq.(7) becomes

(摂訳)上の分析は、-f(x) が正しいボレル関数であるような単調減少の変換関数 f(x) (f(x)=e-x など)に拡張できる。その場合、式 (5) の微分 dx と dz は符号が異なるので、確率密度関数を正にするためには、これを絶対値に置き換える必要がある。したがって、式 (7) は、

確率密度関数の変換式.gif

となる。

ね、単調減少なら絶対値をとらなくてはいけないと。ぼくが書いたのとほとんど同じですね(式が割り算になっているのは、逆関数の微分を利用しているだけで、実質的には上の式と同じこと)。

 もっとちゃんと書いた日本語の資料も見つけた。こちらは日本女子大学の今野良彦先生が書いた講義資料の pdf ファイル

 こちらは、逆に累積分布関数を計算してそれを微分するという形をとっているので、論理的に明快になってますね。

これで信じてもらえたかな(^^)?




 もっとも、これだけならまだ誤植で済む話で、ぼくも大人気なく騒いだりはしない(^^)。実は、この後の例題で、正規分布を y = x^2 で変換することにより自由度 1 のχ2乗分布に変換するという話が出てくる。x^2 の逆関数は二価関数だから、当然のことながら負の導関数が出てくるはずなのだが、この本はここで思いっきりゴマカシをしているのである。

 この証明では、まず、

統計学の教科書の誤り-4.jpg

という式を提示し、これに dy = 2xdx という関係を代入することにより q(y) を求めている。これは、標準正規分布の確率密度関数が偶関数であるため、p(x) = p(-x) になっているという関係を利用したもので、一見すると問題なさそうに見えるが、実は、この式にウソがある。

 この式は微分形式で書かれているのでわかり難いのだが、実は、p(x) にかかっている dx と、p(-x) にかかっている dx は同じではない。y = x^2 の逆関数は二価関数だから、実際には、x1 = φ1(y) と x2 = φ2(y) という二つの関数に分かれているはずなのである。したがって、この式は本来なら、

統計学の教科書の誤り-5.jpg

 でなければいけないはずだ。つまり、上の式のように dx 同士足すことなどできないのである。

 実際には、この x1、x2 は、

統計学の教科書の誤り-6.jpg

であり、これを微分すると、

統計学の教科書の誤り-7.jpg

となる(この二つの導関数は、絶対値は同じで符号だけが違うということに注意されたい)。従って、上の式の dy を移項して導関数を作ったときには、

統計学の教科書の誤り-8.jpg

となるはずである。ここに、先に述べた p(x) = p(-x) という関係を代入すると、あら不思議(というか当然なのだが(^^))、

統計学の教科書の誤り-9.jpg

になってしまうのだ(^^)。

 つまり、この例題を、絶対値記号のないこの本の命題 2.7 に忠実に計算すれば、q(y) はゼロにならなくてはおかしいのであって、この本の証明でそうなっていないのは、微分形式の dx1、dx2 を同一視することにより、暗黙のうちに絶対値演算と同じことをして、二つの導関数の符号の違いを打ち消しているからなのである。にもかかわらず、命題 2.7 や 2.6 の式に絶対値記号を入れていないのは、単なる誤植とは言えないかなり重大な問題だと思う。

 この隠蔽操作が意図的なのか意図的でないのかはわからないが、初学者にとっては十分混乱の元になると思う。まあ、他人の間違いをあげつらうのが楽しいという感情がまったくないわけではないが(^^)、そういう初学者が運良く検索でこのページにたどりついてくれれば、少しは役に立つのではないかとも思うので、あえてここに明記しておく。

 ちなみに、薩摩順吉氏の「確率・統計」でも、やっぱり絶対値記号のない式(3.38)が記載されていて、その後に出てくる多価関数の応用例では、微妙に表現は違うが、やっぱりそこのところをゴマカシてある(^^)。

 もっとも、ウチにある小針本は 1991 年 1 月 16 日、薩摩本は1992 年 9 月 5 日発行なので、その後の増刷では訂正されているかもしれないし、そう信じたい(^^)。でも、その時点ですでに、薩摩本は第 8 刷、小針本は第 19 刷なのだから、それまでこんな間違いに誰も気づかないなんて、世の中どうなってるのか、みんな本当にちゃんと読んでるのかと思う。あれ? それを言うならオレもか(^^)。

| | トラックバック (0)

NHK に「マイロンサムカウボーイ」が(^^)

 「爆笑問題の日本の教養」を見ていたら、村上隆の「マイロンサムカウボーイ」が画面に出てきて驚いた。もちろん、例の下半身もばっちり映ってたよ(^^)。え、NHK がそんなことしていいの、と思ったけど、芸術だからいいという判断なのかなあ。よくわかりません(^^)。

 ゲストは芸大学長の宮田亮平氏だったんだけど、逆に太田光に喧嘩売ってるところがちょっと面白かった(^^)。来週も同じ宮田氏で続きをやるらしいよ。

| | トラックバック (0)

イロモネアの統計学

 イロモネアってけっこう運不運があるんじゃないかと思って、いろいろ計算してみた結果。解説はまたいずれ。

イロモネアの確率密度.jpg

イロモネアの累積分布.jpg

 3 人だと平均が 80%。もっとも運のよい 1 割は 50% 弱、もっとも運の悪い 1 割は 95% 以上。

(言い換えれば、会場全体の半分を笑わせればクリアできる人が 10 人に 1 人、会場全体の 9 割以上を笑わせないとクリアできない人も  10 人に 1 人はいるということ。)

 5 人だと平均が 85%。もっとも運のよい 1 割は 65%、もっとも運の悪い 1 割は 98% 以上。

 ざっとそのぐらいの幅があるらしい。

 上では正規分布を仮定しているが、実はこの最後の関係は分布に依存しない。つまり、面白さをどう数量化しようともこの結論には影響はない。その一般的な関係はこうなる。

イロモネアの運.jpg

| | トラックバック (0)

涼宮ハルヒは叙述トリックだった

 たまたまなんだけど、仕事しながら「涼宮ハルヒの憂鬱」のアニメを観てて、これこそ「個性の承認」より「個別性の承認」という話じゃないかと思ったですよ(^^)。

 いや、観る前は、もっとパロディとかいっぱい入ってたりして、ヲタクっぽいアニメなんだろな、と勝手に想像してちょっと敬遠してたんですよ。でも実際に観てみると、確かにツンデレ美少女とか巨乳とかメガネっ子とかメイド服とかヲタク受けする要素が確信犯的に散りばめられているし、ヤマトやガンダムのパロディっぽいシーンとかもあるんだけど、でもそれは作者の釣りにすぎなくてね。むしろ、もののよくわかったオトナが、ちょっとヲタクっぽい中高生に向けて書いてあげた、良心的なジュブナイルという感じがした。

 それでちょっと興味を持って検索してみると、「メタ萌え」と呼ばれる作品系列があって、エヴァンゲリオンとかうる星やつらのビューティフル・ドリーマーとかも似たようなモチーフになってるらしいのね。ぼくは実は、エヴァもビューティフル・ドリーマーも観てないので(^^)、そのへんまったく知らなかったんだけど、ライトノベル界もいつの間にか進化しているなあと思って、ちょっと感心した。

(でも、考えてみると、新井素子の「…絶句」とかもちょっとそんな感じだったよね。と思って検索してみたら、やっぱり同じような感想があった(^^)。でも、「絶句」は「ハルヒ」ほど「萌え」の相対化に自覚的ではなかったような気がするなあ。なにしろ読んだのがウン十年前なので(^^)、よく覚えてないですけど。ヒマがあったら読み直してみよう。)

 「ハルヒ」には、宇宙人や未来人や超能力者が平気で出てくるので、一見 SF っぽいんだけど、むしろ作品の核になってるのはミステリ的な発想だよね。だってよく考えると、あの作品の中で一番おかしな人間はハルヒじゃなくてキョンでしょ(^^)。身の回りであんなムチャクチャが起こっているのに、警察に訴えるでもなく親に相談するでもなく平然とやりすごすだけ。いつまでたっても朝比奈さんをくどくわけでもない。そんな人間が「常識人」のわきゃない(^^)。

 でも、この作品全体がキョンの一人称視点で語られていて、語り手自身が自分は常識人だ常識人だと言いながら、周囲のおかしな人間につっこみを入れまくっているから、観てる側からすると、キョンの非常識さに気づき難いしくみになってるんだよね。それが最終回になって、実はキョン自身も「不思議、大好き」だったと告白するというのは、完全にミステリの叙述トリックと一緒だなと思った。

 叙述トリックっていうのは、単に読者を騙すためのテクニックというだけではなくて、読者自身の深層心理や偏見や世界観を暴き本人に自覚させるための道具としても使える。そのことをぼくに教えてくれたのは、筒井康隆氏の「ロートレック荘事件」という作品なんだけど、この作品にもちょっとそういうところがあるんだよね。

 この作品はキョンに甘いと宇野常寛氏が言ってたけど、宇野氏自身も言うように、キョンが「信頼できない語り手」である可能性もあると思う。だって、超常現象を目撃してるのは、宇宙人や未来人や超能力者を自称する連中を除けばキョンだけだもんね。だから、最後になって、あれは全部夢でした、宇宙人も未来人も超能力者もいませんでした、って完全にちゃぶ台返しをする可能性もあると思う。「さあさあ、遊びの時間は終わりですよ。みんなおうちに帰りましょう」ってね。なんか、この作品の作者はそういう人のような気がする(^^)。

 だからまあ、同じ流行現象でも、前に読んだケータイ小説とは作品としての格が違うと思った。アニメとしての映像や演出のクオリティも高いしね。もっとも、上で書いたように、これはあくまでオトナがコドモに向けて作った作品だと思うので、一般のオトナが観て面白いと思うかどうかは多少疑問なのだけれども(^^)。

| | トラックバック (0)

個性とはおおむね平凡なものです

 秋葉原の事件がらみで、はてな界隈では「承認欲求」の議論が盛り上がっていた。まあ、あの事件の犯人が本当に承認欲求に飢えていて、それが理由で事件を起こしたのかどうかはさておき、現代社会において承認欲求の問題が重要なことは間違いないと思う。でも、議論をちらちら横目で見ていると、ぼくなんかにはどうもいろいろと違和感を感じる部分があった。

 そもそも、承認という概念自体の定義がはっきりしないことが問題で、多くの人はマズローの欲求段階説を下敷きにしてるみたいなんだけど、この説自体が経験知を図式的に整理しただけで、それほど実存哲学的な深みがあるわけではない。だから、承認の欲求と呼べるものが人間にあるのは確かだと思うが、その細かい心理的なメカニズムや行動への現れ方については、必ずしもマズローが正しいとは思っていない。

 承認の欲求というのが、個として認められたい欲求だというのはその通りだと思うが、問題は、その「個」とは何かということ。ここで思ったのは、厳密には個性と個別性は別物なのに、その区別がついてないことが混乱の元になっているのではないかということである。

 個性という日本語は、現在では、他の人と比べて「変わって」いるとか、統計的な平均値からの偏差が大きいというニュアンスで使われることが多い。しかし、人間は一人一人みな違うというときの「個性」は、かならずしもそのような偏差が大きいことを意味しない。

 たとえば、真っ白い紙にランダムに点を打ち、それを碁盤目状に切り分けて、正方形の紙片をたくさん作ったとしよう。この紙片を1枚1枚仔細に比較すれば、おそらく、どれ1枚としてまったく同じ模様の紙はないだろう。しかし、遠くからぱっと見ただけだったら、どの紙片もほとんど同じように見えるはずである。

 この例でもわかるように、日常用語としての「個性」は、「個」の性質ではない。黒い紙片は白い背景の上に置けば目立つが、黒い背景の上に置けばまったく目立たなくなる。そういう意味で、黒い紙片が「個性的」なのは、白い背景という「全体性」に依存しているのであって、それ単体ではちっとも「個性的」ではない。しかし、後者の意味での「個性」は、全体がどうであろうと「個性」でありつづけるのである。

 実は、心理学用語としての個性(individuality)は、必ずしも日本語の日常用語のようなニュアンスではなく、むしろぼくが例で説明した意味に近いらしいのだが、ここでは混乱を避けるために、前者を「個性」、後者を「個別性」と呼ぶことにしよう。

 この分け方を前提としたとき、ぼくが考える承認欲求の承認の対象は、個性ではなく個別性なのである。言い換えれば、ほとんどの人は平凡な人間にすぎないのだが、にもかかわらず、まったく同じ人間は一人もおらず、一人一人が個別性を持っている。その個別性を愛でることが「承認」なのである。

 わかりやすい例で言えば、昔からよい家族を形容する「苦楽をともにする」という表現がある。最近では、「共に笑い共に誓い共に感じ共に選び共に泣き…」なんてヒット曲もありましたね。

 言うまでもないが、別に誰かが共に笑ったり泣いたりしてくれたからといって、経済的利益があるわけでもなければ、生理的欲求が満たされるわけでもない。しかし、多くの人は、自分が悲しんでいるときに一緒に悲しんでいくれ、喜んでいるときに一緒に喜んでくれる人がいるだけで、ある種の充実感を感じるのである。それはおそらく、自分の感情が「承認」されたと感じ、ひいては、ある意味自分の存在自体が「承認」されたと感じるからであろう。そしてそのためには、「個性的」に泣いたり笑ったりする必要などこれっぽっちもないのだ。

 あるいは、赤ん坊をかわいがるというのもそうだ。赤ん坊なんてのは、育てたからといって経済的な利益があるわけでもなければ、生理的な欲求が満たされるわけでもない。にもかかわらず、多くの親は赤ん坊の一挙手一投足を見て大喜びする。笑ったと言っては騒ぎ、泣いたと言っては騒ぐ。それはこれっぽっちも「個性的」なことではない。むしろ平凡極まりないことだ。にもかかわらず、人はそれを見て幸福感を味わうのである。これもある意味、親と子供が互いに「承認」し合うということであろう。

 「苦楽をともにする」という言い方に先人の知恵を感じるのは、「共通の目的のために協力する」というようなニュアンスとは微妙にずれた言い方をしているところである。実際、婚姻関係や家族関係は、わかりやすい目的を持ち目的合理的に行動するような機能集団ではない。もちろん、家族の「幸福」が目的だと言えないこともないのだが、じゃあ「幸福」ってなんだと言われたら、その正体は必ずしもはっきりしない。その正体が互いの「承認」にあることを見抜いた先人の知恵が「苦楽をともにする」という表現に現れているのではないだろうか。

 ぼくが最も違和感を感じたのは、結局、多くの人が市場価値や狭い意味での功利主義の枠組みで考えていて、承認される対象には市場価値に還元できるような価値がなければならないと思っているらしいことである。確かに、市場というのは本質的に普遍性を指向するので、一般に市場価値を生み出すのは「個性」であるか、そうでなければむしろ画一的な平凡さである。しかし、ある種の関係においては、「個性」ではなくむしろ平凡な「個別性」同士の共振が価値を生み出すことがあるのだ。

 逆に言うと、市場がこういう個別性の承認を提供するのは、おそらく原理的に難しいのではないかと思う。たとえば、金を払うとその人といっしょに泣いたり笑ったりして承認してくれる「有料承認サービス」みたいなものを作ったとしよう。でもよく考えると、そのサービスの「承認」は、金という普遍的価値に対してなされているだけなので、ちっとも個別性の承認にはなっていないのだ。もちろん、擬似的にそういう体験を提供する風俗店のようなものは星の数ほどあるが、ホステスに本気で惚れてしまえば幻滅するのは世の常だろう。逆に言えば、そのこと自体が人間にとっていかに個別性の承認が重要なものであるかを示しているとも言える。

 だから、市場で承認を得ようとすれば、むしろ個の方が普遍性に近づかなくてはならない。もちろん、それに挑戦して名声や権力を得ている人もたくさんいるわけで、そのこと自体を否定する気はない。しかし、それが可能なのは一部の人だけで、万人に心の平安をもたらす仕組みにはなり得ないと思う。現在の日本社会では、そういう「個性尊重」という名の下で行われる普遍化だけが「承認」だと思われすぎたために、本来の個別性の承認が軽視されすぎているのではないだろうか。

 ぼくは、市場経済を否定する気はまったくないが、個人がそういう個別性の承認をえる場は、市場以外の場所に確保すべきであると考える。もちろん、そういう「個別性」が価値を生み出す場というのは、家族関係や婚姻関係だけではないだろう。学生時代の利害関係のない友人関係などもそうだろうし、「あぶさん」的な飲み屋の人間関係だってそうだろうし、おそらく、「社交」と呼ばれるような関係の多くがそうなのではないだろうか。ただ、婚姻関係や家族関係には、そういう場を作るための仕掛けが伝統的に用意されているが、それ以外の場所では、そういう場を作る作法がひょっとしたら失われつつあるのかもしれない。

 実は、ぼくがこういうことを考える際に最も参考にしているのは、前にも言ったような気がするが、山崎正和氏の「社交する人間」である。山崎氏はなぜか一般に保守派と思われてるようなので、この本についても、どうせ伝統的な共同体に回帰することを勧めているんだろうと思う人もいるかもしれないが、まったく違う。むしろ、権力によって支配される組織でもなく、伝統的・情緒的な共同体でもない、第三の人間関係原理として「社交」というものを位置づけることにより、そういう反動を防ごうとしているとさえ言える。

 また、保守派の論客にありがちなひとりよがりなオレ様議論をしているわけでもなく、ちゃんとゲオルグ・ジンメル、フランシス・フクヤマ、マルセル・モース、ヨハン・ホイジンガ、クリフォード・ギアツ、ジェイン・ジェイコブス、アルバート・ハーシュマンなどの著作に依拠した議論をしているので、こういう問題に興味のある方には、ぜひ一読をお勧めする次第。その方が、ぼくの駄文なんかを読んでるより、よっぽど参考になるでしょう(^^)。

| | トラックバック (0)

« 2008年6月 | トップページ | 2008年8月 »