2008年2月

入門

文系研究者のためのSubversion入門という記事を誰かが書くのを待っているのだが、誰も書かないので自分で書こうかな。調べてないのですでにあるかもしれないが。




新刊とか

via murayama.

チキタ★GUGU 8 (コミック)




理論とは何か

他分野にわたる概念なので「どこ」と言ってよいかわからないが、主に分析哲学などでの語用。社会学の「理論」みたいなイメージで捉えていると裏切られる場合が多いので気をつけて語用を見るようにしている。


「理論」はしばしば「論理と理論」と言われるように、対象を選ばずに成り立つような「論理」から区別され、個別分野のみで成り立つような命題の集合を指す(たとえば「物理学理論」)。しかし「心の理論」などという語用に見られるように、科学理論以外のもの指すこともある。これについては以下のように考えればよいだろうと思っている。

自然数の演算の場合を考えればわかりやすい。まず、自然数の演算のような実践の領域があり、もう一方でそれを形式化したペアノ算術* のようなものがあり、その両方を「理論」と呼ぶ。しかし形式的なシステムとして表現できるものは、科学理論に限られるわけではない (自然数の演算だって、そもそもそれを「科学理論」だと思う人はあまりいないだろう) ので、しだいにさまざまな実践の領域に対して理論という語を使うようになった。あまり厳密でない用語の使い方をするときは、形式化がすでに為されているかどうかにかぎらず、とりあえず1つのシステムとして形式化できそうなもの全般に対して「理論」という語を使う。


どう見ても理論ではなさそうなものに対しても「理論」という語を使うことがあるので多少気持ち悪いが、「理論」という語を使うのは単に科学理論の形式化にそのルーツがあるからで実際には「システム」や「言語」と同じくらいの意味なのだと思う。


そして、ちょっと今日アレと思った記述。

「専門的な用語を使えば、理論とは、論理的帰結に関して閉じている文の集合として特徴づけられる。」


哲学の歴史 11 20世紀 2 (11)

p625


何が意外だったかというと、文を取り出したときに「それがどの理論に属するかどうかを決定できる」という条件が必要なのかと思っていたから。

(誰かがそう言っていた気がするんだが、気のせいだったかもしれない)。

しかし改めて考えるとそんなことできるわけ無いな。

1+2=3

という文を見たときわれわれはそれを自然数の加法だと思うわけだが、「+」という記号や中置記法が加法の表現に利用されるのは単に歴史的偶然の結果でしかない。実際には他の記号でもかまわないし、逆ポーランド記法* の方が合理的なくらいのものなのだから。実際、文脈によっては上の文は自然数の加法ではなくクワス算の計算として解釈されるべきかもしれない。


上のような文が自然数の加法として理解されるのは、特筆すべき文脈的な条件が無いかぎり、「+」「=」「01234567890」という記号が、共同体のなかで自然数の計算のために用いられることをわれわれが知っているからだ。ということはつまり、ある文がどの理論に属するかの解釈は歴史的偶然に左右される問題であり、経験的な仕方で解決されるしかないということなのだろう、と思った。




原理主義について

昨日のエントリよりもこっちの方がわたしの言いたかったことに近いと思われるのでtwitterから転載。


  • 「東京は人の住むとこじゃない」などというような人に対し、「東京は人の住むところである。なぜならば
  • わたしは人であり、かつ東京に住んでいるからだ」という反論をしたい。
  • おれのなかでは↑こういうのも原理主義に入る。原理主義最高。
  • 昔増田で「セックスはスポーツだ」と言っている人に対し、
  • 「でもスポーツを列挙しなければならなくなったとき、セックスを入れたりしないだろう。だからスポーツじゃないよ」と反論した人がいて、
  • えらいなあと思った。



素朴な疑問

「ゲーム理論」と「合理的選択理論」と「意思決定理論」ってどういう関係にあるんだろう。

論文発表

社会言語研究会というところで論文の発表をしました。

たぶん論文を読むよりは楽なので、興味があれば資料をどうぞ。「口頭で補足する」かつ「論文を読んでいる」前提でつくられた資料なので説明不足な箇所も多々ありますが。

http://www.at-akada.org/docs/sola-080224/


↓プレゼン用にamachangさんのs6.jsというツールをお借りしました。ありがとうございます。

http://amachang.art-code.org/pr/


あとわたしの論文についてですが、もし読みたければ現在のところ↓ここからmaster-thesis.pdfを右クリックでダウンロードするのが一番良いですね。

(ブラウザで開こうとするとブラウザが落ちたりするのでダウンロードするのが良い)。

いずれ正式公開するつもりでその作業をさぼっています。

http://www.at-akada.org/websvn/listing.php?repname=master_thesis&path=%2Ftrunk%2F#_trunk_




読書

生成文法の企て

ノーム・チョムスキー (著), 福井 直樹 (翻訳), 辻子 美保子 (翻訳)

岩波書店、2003


おもしろい。知らなかったんだけどチョムスキーってグッドマンの学生だったことがあるんだな。デビュー作にグッドマンの影響があったって自分で言ってる。



プールサイド小景・静物 (新潮文庫)

庄野 潤三 (著)

新潮社、1965


について何か書こうと思ったがまた今度にしよう。




なぜ原理主義的にふるまうのは楽しいのか。

最近原理主義的にふるまうのが楽しくてチャンスがあればついつい原理主義的な発言をしてしまう。

原理主義的な発言とは何かと言うと、「世界には悪が存在する」「これこれは悪である」「悪はただちに止めなければならない」といったような発言のこと。

自分のなかでは、さまざまな理由からして最近はこれがしっくりくるみたいな部分があるのだが、なんとなくその理由を考えてみる。


なぜ楽しいのか考えてみると、まずわたしはインテリの人がするリベラルな発言とか相対主義的な発言が嫌いだという理由があげられるだろう。「ある意味どっちも正しいし世界にはさまざまな真理があるよね」みたいなことを言われると腹がたち、「いや、これは間違っているから虚偽は直ちに捨てなければならない」みたいなことを言いたくなる。まあ近親憎悪なんだが、人文系インテリに対する反感みたいなところがあると。あとわたしは性根が下品なので、リベラルの上品さに耐えられず、ときどき下品なことを言いたくなるんだ。

それに、わたしのなかでは構造主義もポストモダンも相対主義もとっくに終わって今は実在論の時代だという感覚があるので、時代に乗ろうとしている部分もあるかな。今はXXの時代とか言われてもよくわからんが、雰囲気としてはそういうことを感じている。まあ、「これこれの理由で、素朴実在論はまちがっている」という論理的な立場からする立論なら何も感じないのだが、「何となく世間的に見て、実在論はよくないよねー。おれの周りの人もみんなソウ思っている」みたいな単なる習慣的発想とか仲間内の常識に乗っかってそういうことを言うのはカッコ悪いと思っており、その手の仲間内の常識を台無しにしながら原理主義的な正論を言うのはかっこいいなあと感じる感性があるのだが、よく考えるとこれは時代とは何の関係もなかった。

もう1つ、懐疑主義とか相対主義って、どうも自分の正しさを何とか保証したくてそのための逃げ道を確保するみたいな部分があって、そういう逃げ道確保的な所作を見ると、わたしのなかの嗜虐心が刺激される。たぶん世間の大半の人は懐疑主義や相対主義のことなどどうでもよいと思っているので、「健全な相対主義もたまにはいいよねー」みたいな寛容な態度を取るのだが、わたしはその手のアレに反感があるので、「甘やかすからつけあがる!」「ひとりひとり順番にツブしていく!」みたいな気焔を吐きながら、相対主義者懐疑主義者をひとりひとり炙り出してプチプチつぶしていきたいナアといった衝動に襲われることがある。

回転について

テトリスブロックを↓のように、配列の配列で表現している。

block = [
    [0,0,1],
    [1,1,1]
]

つまり、点(x,y)の状態を調べたければ、block[y][x]を調べればよいわけなのである。

しかし、これを回転させるにはどうすればよいかがはじめよくわからなくて困った。



試行錯誤している内に以下が一般解であることがわかった。以下は左に90度回転した場合。

* yLengthはy方向の長さ、xLengthはx方向の長さとする

for(var y=0;y<yLength;y++){
    for(var x=0;x<xLength;x++){
        /*
         * x,y座標のそれぞれに対し、新しいブロック中の点(x, y)に
         * (yLength-1-y, x)を代入。
         */
        newBlock[y][x] = oldBlock[x][yLength-1-y];
    }
}

「yLength-1-y」は、後ろから数えた順番。

(yLength-1が最大値だから、最大値-y で後ろから数えた順番にしているのだ)。

つまりx座標とy座標を入れ替えて、さらにy座標の方を逆転させると左90度回転になるらしい。同様に、x座標y座標を入れ替えたあと、x座標の方を逆転させると右90度回転になるらしい。


ここまでは試行錯誤しているうちに何とかわかったんだけど、なんでそうなるのかがわからなかった。どうやらこれが噂に聞く行列とか三角関数の問題なのだろうと思った。


今日M川に会ったら、M川が線形代数の勉強をしていたので、いろいろ聞きながら考えた。

まず結論から言うと、これは行列の問題で、以下のような公式が使える。

原点を中心に点(x,y)をθ回転させた座標は、

(x*cosθ - y*sinθ, x*sinθ+y*cosθ)

となる。

θ = 90度の場合、

cosθ=0, sinθ=1より、

(-y,x)となる。

やっぱり、xとyを入れ替えてyを逆転させるのでよいらしい。


行列の計算はよくわからないのだが、自分としては以下のように考えると、この公式が出てくる理由がわかりやすいように思った。

まず点(x,y)を(x,0)と(0,y)の2つに分解する。

点(x,0)をθ回転させると、(x*cosθ, x*sinθ)になる。これはcos, sinの定義より自明。

同様に

点(0,y)をθ回転させると、(-y*sinθ, y*cosθ)になる。


turn.gif

あとは(x*cosθ, x*sinθ), (-y*sinθ, y*cosθ)の2つの点を再び合成すれば、(x,y)をθ度回転した点が得られ、公式通りとなる。

(x*cosθ - y*sinθ, x*sinθ+y*cosθ).

自然言語に非形式的意味は存在するか

「形式的意味」ではなく。

自然言語にかぎらず、そもそも非形式的意味なるものが存在するかどうか確信できないでいる。


自然言語というのは非形式的な意味に満ちたものであり、それを形式的手法で扱うことはそもそも不可能なのであり云々という議論がある。わたしはこの手の議論は眉にツバをつけて聞くことにしており、むしろ疑われてしかるべきものは非形式的な意味の存在なのではないかと考えている。


形式的意味の存在については疑いを持っていない。

たとえば、

  • 誰某の父
  • 誰某の父の父
  • ...
  • 誰某の父の父の...の父

という表現の無限の系列について、適切な解釈器を実装し、任意の表現が与えられた場合にデータベースを検索し、該当する人物を返すようなプログラムを実装することができる。この際、当のプログラムが、「の父」という語句が果す役割(意味)の適切な分析でもあることは疑わない (もちろんプログラムではなく、述語論理など、さまざまな形式言語を使うこともできる)。


しかし非形式的意味についてはどうだろう。

そもそも「非形式的意味」って何だ。

形式的手法で扱うことができない意味?


非形式的意味という概念にその程度の意味しかないならば、いかにも心もとない。

「扱うことができない」というのは2つ解釈の可能性がある。

「現在のところ扱えない」か「永遠に扱えない」かどちらかである。


たとえば「形式的手法では現在のところ扱うことのできない意味」を非形式的意味と呼ぶのだとしよう。この場合、「非形式的意味」が存在することは確かである。

しかしそれは「まだ会ったことがない親戚の人」というくらいのものであり、イミのある単位ですらないし、いずれ無くなるかもしれない。

一方それが「形式的手法では永遠に扱うことのできない意味」を指すのだとしよう。この場合、「非形式的意味」が存在するかどうかは疑わしい。なぜならば非形式的な意味が存在すると確信できるのは、

  • われわれが「意味」と呼んでいる現象のなかにある領域が存在し
  • その領域に存在するものは、形式的手法がどれだけ発達しても扱うことができない

という2つのことが証明された場合にかぎられるからだ。


しかしそんなことが証明されることなんてあるだろうか。

あってもおかしくないが、それが説得力のある仕方で示されるまでは自然言語が非形式的だなどというのはただの謬見である。


...と書いたあと、「こんな当り前のこと、わざわざ書いても仕方ないな」と思った。

しかし以下のブログ記事を見たため気が変わって公開することにした。


そうした一連の違いを、「どれでも」「何でも」の二語の違いに畳み込むのは土台無理である。言いかえるなら、自然言語・日常言語の文の力能を、単語を基本要素とする形式論理文法の力能に還元するのは無理である


http://d.hatena.ne.jp/desdel/20080220

これはひどい文章だ。まず「単語を基本要素とする形式論理文法」というのははじめて聞いた。量化子や関数記号って「単語」だろうか。それともわたしの知らないところに「単語を基本要素とする形式論理文法」というものがあって、それについて述べているのだろうか。

大体「どれでも」「何でも」というのは自然言語上の単語である。自然言語上の単語を必ず有意味な単位として考えなければならないと主張するならば、「論理文法」などという概念はまったく必要がない。自然言語の文法にまどわされることなく、論理文法を析出するようにしなければならないというのが、------論理文法を云々する人たちにとって------ここ百年ばかりの主潮流だった。「単語を基本要素とする形式論理文法の力能に還元するのは無理である」というのは、一見ある立場の人々に向けられた批判のようだが、そもそも存在しない立場の人を批判しているのではないかと思う。

最高の悪徳は嘘をつくこと

最高の悪徳は嘘をつくことだと思う。

たとえ人を殺しても何をしでかしても、嘘さえつかなければまだ話しようがある。

しかし嘘をつく人はもうどうにもならない。


...というようなことをちょっと前から思っている。

これまでの人生でさまざまな困った人を見たが、とりわけ質の悪い困った人というのはのきなみ平気で嘘をつく人だった。もちろん困った人の困った部分は嘘をつくことだけではないのだが、嘘をつくことによって困った人の困った部分が全体的に倍加していくように思う。


しかし平気で嘘をつく人というのは、しばしば「自分が嘘をついていること」をあまり認識していないのではないかと思われる行動をとることがある。あれはいったい何なのだろう。

あきらかに自分が言ったことを「言っていない」と言いはるし、言っていることも支離滅裂なのだが、どうも見ていると自分のしたことを嘘でごまかそうとしているというより、その場その場でうまいことをメッキをつくろうために嘘をつき (すぐバレるような嘘しかつけないので他人から見るとさっぱりつくろえていないのだが)、しかもあまり自分の言ったことを反省しないので嘘をついていることをあまり自覚していないように見える。


ああいう精神の構造は (遠くで見る分には) 興味深い。あの人たちが自分の邪悪さに気がつく (または自分の邪悪さを少なくとも表向きに認める) ような決定的瞬間はいついかなる場合に訪れるのか。そもそも訪れることがあるのか。


自己欺瞞と自己犠牲 (双書エニグマ)

柏端達也(著)

勁草書房、2007


改めてこの本でも読むか。そう言えば論文の締め切り前に中途半端に読んでそのままになっていた。




MSWordで文書ファイルがバイナリになるのキンモー☆、Wordで書いた論文十年後絶対開けないだろ、と思っていたのだが、MSゲイツさまはちゃんとそのことを気にしていたことがわかったので反省した。docxファイルってXMLだったんだ。


http://ja.wikipedia.org/wiki/Microsoft_Office_Open_XML

http://ja.wikipedia.org/wiki/OpenDocument


反省したついでにWord Tipsを披露する。Wordマニアにとっては当然の常識だろうが、意外に機能を知らずにWordを使っている人が多いのではないかと推測する。

まずWordにおける段落の概念について。MSWordには実は「改行記号」と「段落区切り記号」が存在する。Wordの改行位置をよく見ると改行の記号が入っている(表示されていない場合は、メニューの「ツール > オプション」ダイアログで「編集記号の表示 > すべて」にチェックを入れる)。下矢印だけの記号は改行記号であり、単なる改行を表示する記号である(HTMLにおけるBRに相当する)。一方Enterキーのような曲った矢印は段落区切り記号であり、段落の境界を意味する(HTMLにおけるPタグに相当する)。

Wordにおける段落は、改行だけではなく、文章の意味論的なまとまりを表現する概念であり、見た目を表現するプロパティの多くは段落を単位として設定される。たとえば「インデント」「ぶら下がり」「行頭インデント」などは段落を単位として設定されるため、(テキストのコピーアンドペーストなどで) 段落区切りが適切になされていない場合、意図通りの動作をしない場合がある。段落区切りを挿入するためにはEnterキーを押し、改行を挿入するためにはShift+Enterを押す。

また段落の「スタイル」を設定することで、見た目と文書の論理的構造を分離することが可能である。たとえば文書各セクションの見出しを「見出し2」スタイルに設定しておくことにより、各セクションのタイトルの見た目 (フォントサイズ、フォントの太さ、フォントの種類) を一斉に変更することが可能になる。スタイルを変更するためには当該の段落をフォーカスした状態でメニューの「書式 > スタイルと書式」から設定するか、書式メニューを利用する。ショートカットはShift+Ctrl+Sである。


Wordで構造化された文書を作成するためには、見出しの設定に加え「セクション」を適切に利用することが望ましい。文書のセクションを分けるには、メニューの「挿入 > 改ページ」を選択し、「セクション区切り」項目の「次のページから開始」などをチェックする。編集記号を表示する設定にしておけば「セクション区切り」記号が表示されるはずだ。

以上のように見出しとセクションを適切に設定することで、文書の全体を俯瞰することが容易になる。MSWordで文書の全体を俯瞰するにはアウトラインモードを利用するのが簡便である。「アウトライン」モードに切り替えるには、メニューの「表示 > アウトライン」を選択する。ショートカットはCtrl+Alt+Oである(デフォルトの「印刷レイアウト」表示に戻す場合はCtrl+Alt+P)。この状態でShift+Alt+Aを押すと、すべての項目が折りたたまれ、見出しのみを表示させることができる。あとは編集したいセクションを選びShift+Alt+"+"で開いたり、Shift+Alt+"-"で閉じたりする。Wordのバージョンによっては、表示メニューの「見出しマップ」機能を利用することにより、見出しの一覧をサイドバーに表示し、構造化テキストエディタのような使い方をすることができる。10ページを越える文書を作成・編集する場合、アウトラインモードをうまく利用することで編集効率が大いにあがるはずである。




ActionScript で Class.create()

prototype.jsなどで用いられているjs用の疑似クラス作成用関数Class.create()をasで動かしてみる。

package {
    Object.extend = function(destination:Object,source:Object):Object{
        for(var i:Object in source)
            destination[i] = source[i]
        return destination;
    };
    Class.create = function():Function{
        var klass:Function;
        klass = function():*{
            this.constructor = klass;
            if(this.initialize)
                this.initialize.apply(this,arguments);
        };
        return klass;
    };
    
    public var C1:Function = Class.create();
    Object.extend(C1.prototype,{
        hello:function():void{
            show("hello");
        }
    });
}
var i1:* = new C1();
i1.hello();

*showは表示用の関数ということにする。

(なぜか手元の環境でtraceがうまく動かない)。

試したところ上記コードは動くようだ。

ちなみに、

var C1:Class = new Class();

とやると怒られた。Classをコンストラクターとして使うことはできないらしい。

しかもこの場合、C1は単なるパッケージレベルの変数になるので(型とは見なされないので)、

var i1:C1 = new C1();

は動かない。


ついでに実験。

    Object.extend(C1.prototype,{
        showThis:function():void{
            show(this);
            mx.core.Application.application.show("\n");
        },
        test:function():void{
            mx.core.Application.application.show("test\n");
            var ar:Array = [];
            ar.push(this.showThis);
            ar[0]();
            mx.core.Application.application.show("\n");
            flash.utils.setTimeout(this.showThis,1000);  
        }
    });
var i1:* = new C1();
i1.test();

の場合、

  • ar[0]()

=>thisはar

  • setTimeout(this.showThis,1000);

=>thisは[object global]


ECMAScriptのthisは呼び出し時に決定されるので、ar[0]()という仕方で呼び出すとarがthisの指示先になる。

これは期待通り。


一方、ActionScript3のclass構文をつかってみる。

    public class C2
    {
        public function showThis():void{
            show(this);
        }
        public function test():void{
            show(this);
            var ar:Array = [];
            ar.push(this.showThis);
            ar[0]();
            flash.utils.setTimeout(showThis,1000);
        }
    }

var i2:C2 = new C2();
i2.test();

の結果は、

[object C2]
[object C2]
[object C2]

ちょっとわかってきた。

class構文でメソッドを登録した場合、thisの参照先が固定されるんだ。まあふつうそれを期待するよなあ。

逆に言うとActionScript3の場合、class構文などでは独自の文法仕様が適用されるが、それ以外の部分ではほぼECMAScriptの文法に従っているように見える。

つまりActionScript3の文法は、ECMAScriptの文法に型情報とclass, package構文を足したものだと考えてよいのだろうか。

買った本

コンピュータのなかの人工社会―マルチエージェントシミュレーションモデルと複雑系

山影進(編), 服部正太(編)

構造計画研究所、2002



言外の意味 上 新版 (1) (開拓社言語・文化選書 1)

(株)開拓社、2007



法解釈の言語哲学―クリプキから根元的規約主義へ

大屋雄裕(著)

勁草書房、2006


あとJavaScriptでアルゴリズムの本とかも買った。

最近また本を買いすぎだ。



論文審査おわた

「おまえ社会学に興味ないだろ」と(いう趣旨のことを)言われる。

そうかもしれない。「社会に興味があるか」と聞かれればイエスと答えるが、そこを離れた部分で「社会学」に興味があるかと問われれば難しいところだ。

何しろ前日の夜中までテトリスをつくるのに夢中になっており、社会学のことなどまるで念頭になかったのだから反論できない部分がある。

(朝「9時からだったのになぜこないのだ」と電話をもらうまで審査の日程さえ知らなかった)。


しかし、たとえば経済学で用いられている手法の方が社会を記述するにあたって適切なものだと判明したならば、即座に経済学に乗りかえるのが正しい研究者の姿だと思うけどな。学問的方法論や派閥に対する愛着って何の意味があるんだ。



あと人文系の人は二項対立にこだわりすぎじゃないか。「AとBの二項対立に陥っているのではないか」とか「これはすべてのAはBであるという意味なのか、すべてのBはAであるという意味なのか」などという質問をされたが、そもそもなぜそんな質問がくるのかまるでわからない (前者への答え「この論文のなかにBはでてこない」。後者への答え「どっちでもない。BでないAもあるしAでないBもある」)。

ああいう人はテトリスのプログラムをレビューさせても「このプログラムはクラスとインスタンスの二項対立にとらわれているのではないか」とか「このプログラムは、FieldクラスはすべてBlockクラスだという意味なのか、それともBlockクラスはすべてFieldクラスだという意味なのか」とか聞くんじゃないか (前者への答え「だから何だ」。後者への答え「その2つのクラスは継承関係にはない」)。



しかしSOLAでも発表しなければならないのでちょっとしばらくの間は研究のことを思い出すようにしなければならない。


一応裏テーマは「省略」とか「解釈」のあたりにあるのかなあという気がするので、その辺を思い出しつつ考えてみようと思った。

しかしあんまり時間ないな。

  • 下を押している間だけ加速
  • 回転の中心軸を真ん中に
  • ボタンは無くした
  • ブロックが落ちてから固定されるまでの間隔を長くした
  • 消した行を表示することで作業っぽさを出すことに成功

ソース

http://www.at-akada.org/download/tetris2.zip

ActionScript + Flexビルダー体験版でつくりました。Flash9が動く環境で動く。

FlexのMXMLとActionScriptでつくるのはHTML+JSを多少豪華にした感じなので、もっと慣れれば楽しそうだと思った。




操作

本体についてるボタンでも操作できますが、カーソルキーでも操作できます。

回転は「↑」か「スペース」。


段々落ちるのがはやくなったり得点をつけてくれたり、下からブロックがでてきたりはしません。次のブロックを表示させるのも忘れてた。

落ちてきたブロックを横一列にそろえて消すだけの簡単なお仕事です。




実物





ソースコード

http://www.at-akada.org/download/tetris.zip




↓仕様書っぽいもの。

全体の構造

Model

##データ構造の定義

  • Block

##落ちてくるテトリスブロック

    • 固定パラメーター
      • type - int[4] * int[4]
    • パラメーター
      • direction(方向) - int #ユーザーの操作によって変化
      • fallingSpeed(落下速度) - int #ユーザーの操作によって変化
      • position(位置) - int * int #ブロックの左上を基準点とする。positionはその点の座標を[x,y]の配列で表現する。

  • Field

##テトリスのゲームが展開されるフィールド

    • 固定パラメーター
      • SIZE int * int
      • DIR.LEFT
      • DIR.RIGHT
      • DIR.DOWN
      • DIR.TURN
    • パラメーター
      • 「Currentブロック」Block #現在落ちてくる途中のブロック
      • 「state」int[] * int[] #fieldの状態。0=>何もないスペース, 1=>落ちてくる途中のブロック, 2=>積ったブロック。
    • Method
      • pushToBlockSpace(n:int)
      • pushToAllSpace(n:int) #CurrentBlockの場所、またはすべての場所に0,1,2のいずれかをpushする
      • canMove(dir:uint) #Field.DIRのいずれかの項目をわたす。
      • eachLine(fn:Function)
      • updateState() #Blockの位置などをstateに反映


View

##見た目を表現する部分

基本的にはField#state を描画するだけ。


Controller

##ユーザーの操作やゲームの進行を処理する部分

  • TaskManager

##ユーザーの操作および背景操作をスタックに積み、一定時間ごとにFieldに反映する

  • push
  • execAll

#ユーザー操作

    • turn

Currentブロックを回転させる

    • speedUp

Currentブロックの落下速度を上昇させる

    • moveLeft
    • moveRight

Currentブロックを移動させる


#背景操作。ユーザーが直接呼びださない操作

  • nextBlock

次のブロックを出現させる操作

  • adjustLine

ブロックが一列揃った場合の操作

  • falling

ブロックを下げていく処理




処理の流れ

基本はメインループの繰り返し。


開始

メインループ

終了: 得点など?




メインループの内容

  • ユーザーの操作を受けつける
  • ブロックが落ちる処理など背景操作を実行
  • Fieldの状態を変化させる(Field#updateState)
  • ゲームオーバーの判定。Fieldの一番上の行に2(積ったブロック)があればゲーム終了
  • 変化した状態を描画に反映する
    • #すべての操作はTaskManagerに積まれる
    • #ループの最後にTaskManagerに積んである操作をまとめて実行する

すごい

今さらの発見だが、iPodのシャッフル再生が楽しい。フランスの子供の歌のコンピ(タイトル忘れた)→MOSAIC.WAV→マサ子さん→うる星やつら→Free Design(なんか渋谷系っぽい何かだった気がする)と流れたりする。おもしろいし、次何を聴くか考えなくていいのが楽なのでずっとシャッフル再生で流しっぱなしにしている。


昔はわりと物にこだわりがあって、CDを所有していたいという欲望もあったが、最近音楽についてはさっぱりその手の欲望が無くなってきているので、もう音楽とか全部MP3にしたいなーと思っている。わたしは自分の部屋のなかで自分の本を見つけられないという悩みに悩むことがしばしばあるので、本もすべて電子化したい。虫のような形をしたクローラーが寝ている間に部屋をさまよい歩き、本をどんどん電子化してくれるガジェットをやがてGoogleが発明するので、それが発明されたら本をすべて売ってしまって部屋が片付くのでうれしいなあという妄想を抱いた。あと部屋とか自分とかもすべて電子化すれば、全部Googleで検索できるので、ものが見つからないという問題に悩むこともなくなるし、必要な記憶もすべてGoogleが見つけてくれる。一方改めて考えてみると、(イーガンの) 塵理論的にはすでに電子化された自分が宇宙の塵のどこかの上で表現されており、電子化されたGoogleを活用しているはずなので、すでに問題は解決しているのではないかと思った。しかしさらに考えると、電子化されたもののやはり電子化された部屋のなかからものを見つけられず困っている自分や、電子化されながら地獄のような責め苦を受けている自分なども平等の資格で (塵理論的に) 存在するはずなので、問題は解決していないとも言えた。

わたしの思うに塵理論とは以下のような理論である。

  • 電子化された人格のすべての感情や思考は有限のパターンの順列組み合わせによって表現される
  • 有限のパターンの可能な組み合わせは、宇宙のどこかの断片によってすでに表現されている
  • したがって電子化された人格にとってハードウェアなど必要ない。すべての可能な思考や感情はすでに宇宙のどこかで再生されている

よくよく考えるとこれは様相実在論的な「可能な出来事はすべて実際に(異世界なり平行世界なりで)起っている」という発想に近いのかもしれない。

おら順列都市さいくだ。




もよおし

コミティアに行った。今回は自分が気をつけて見るようになっただけかもしれないが、同人音楽CDがそこかしこで売っているように見受けられた。しかも漫画や小説の横で音楽CDも売っているというパターンが多かった気がする。




いみじく

良い意味でも悪い意味でも「ヤバい」という言葉を使ってしまうので、良い意味で「ヤベー」という言葉を使った後に正確な意味を伝えるためいちいち「良い意味で」と付け足さねばならないことがある。これは冗長なので、最初から「良い」「悪い」と言えばよいのではないかと思いついた。




名前が似ているけど関係ないもの

名前が似ているけど関係のないものについて、関係があると思っていた人に、「いや、その2つは名前が似ているだけで関係ないんだ」って説明しても「いや、でもなんか関係はあるでしょ」という反応が返ってくることがある気がした。

たとえばSFとSMはまったく関係ないしハードSFという言葉にはまったく性的なニュアンスは無いのだが、そのことを知らなかった・勘違いしていた人にスマートに納得させるのは難しいかもしれない。

「いや、でもSFマガジンにそういう描写が載ることもあるでしょ」とか。

「ハードSFとソフトSMはいわば対偶の関係にあるんでしょ」とか。

なんかそういう感じの会話を脳内で妄想していた。


何を言っているのかわからないが、そういう現象の周辺にひょっとしたらおもしろい部分があるのかもしれない的なことを思った。

LD

http://www.itmedia.co.jp/news/articles/0802/07/news032.html


Livedoor Readerの英語版がオープンソース化したという話。

しかし、LDRってPerlのAPIとJavaScriptだけでできたアプリなので、実はこれまでも中身はほとんど丸見えだったのではないかと思った。あ、なるほどRailsで書き直したという話なのか。

というかむしろこのニュースのもっとも注目すべき点は、名高いLDRのJSがMITライセンスで提供されたという点だな。それはすごいや。


まるごとPerl! Vol.1

を最近購入したら、苦労して解読しようとしていたLivedoorReaderのJSの中身が詳しく解説されていて、最初にこれを読めばよかったと思った。

わたしはPerlユーザーではないが、このまるごとPerlはなかなかよい号だと思う。


最近個人的には、Ajaxってやっぱ結局は流行らないんじゃないかなーという気がしてきている。

だってGoogleとかLivedoorクラスの企業じゃないと大規模なAjaxアプリケーションをつくるのはむずかしいんじゃないか。


最近自分がJSを好きな理由について考えていたら3つ結論がでてきて、

  • マゾだから

IEがまともなエラーメッセージも出さずに動作しないときなど心がおどる


  • 厨だから

こんにちは!こんにちは!

あとネットランナー的な何か。


  • 抽象概念萌えだから

( ゚∀゚)o彡゜ラムダ!ラムダ!


と思った。


しかし大抵の人はたぶんマゾでも厨でも抽象概念萌えでもないので、ガリガリJSを書いていると「こんな効率が悪くて頭がねじれそうな作業はふつうの人はやりたがらないかもしれないなー」と思うことがある。いや、おそらく人数は必要ないので、厨ひとりとサーバーサイドの優秀な技術者ひとりとあとデザイナーだけいればモノだけはできる気がするのだが、問題は厨で変態のやつに思いきってまかせるアレが必要だということかもしれない。


特にオチはない。




めも

合理性ってなんだろうなあとふと思った。

現代では「もっと合理的に考えよう」などと言ってるとコンサルっぽいかな?かな?俗物ぽいかな?かな?という感じがするが、昔の人の考える合理性というのはなんかもっと根本的に変なもののような感じがしていて、その辺なんかあるんだろうなあという感覚がある。

感覚があるっつっても曖昧すぎて何だかわからんが、モダニズムとか表現主義の芸術家とか思想家が考えていた合理性と今われわれが思う合理性はだいぶんずれたとこにありそうだ。モダニズム建築が合理的だっつっても、あれはあれで変な合理性だしなあ。

端的に言うと、昔の人の考える合理主義はどっか神秘主義に近く見える。それはおそらく求めている合理性がもともと人間には不可能なレベルのものであって、なんでそんなものを目指さなければならないのかよくわからないがただひたすら高みを目指さなければならないという確信だけがあるという感じか。あとそのような合理性はひとりで目指すものではなく、最終的には人類そのものが新たなステージに立つことを目指しているというのも神秘主義っぽいか。合理主義をつきつめるとどこかで神秘主義につながっていくのだろうとは思う。




最近したいこと

洋楽好きのマセた友達の影響で洋楽を聴きだし、教室でロッキンオンを回し読みして悦に入るような、そんなことがしたい。

あとイキがった大学生のサークルでクラブをかりてハウスのイベントとかして、たどたどしい手つきでDJを終えたあと女の子が集ってきて思わずニヤニヤしてしまうとか、そんな感じのことがしたい。


もうずっとそんな感じのことしかしていないような気もするし、そんな感じの青春にはさっぱり縁がなかったような気もどちらもする。




キープ厨ズマインドオンヤーハー

最近人と話していたら、ニコニコ動画は観ているのだが、下品なものや厨なものが多く、あまりおおっぴらに好きとは言いづらいコンテンツばかりで人に薦めにくいと言われた。

また別の人と話していたら、ラノベを読んでいるのだが、厨二病っぽい心で好んでいるので人に言いづらいと言われた。


わたしはぜひそういう情報を得、そういうコンテンツを紹介してほしいと思っているので、こういった精神的障碍が存在することは世界の幸福の総和を減少させるよくない傾向ではないかと思われた。

何とかしてうまいことその手の心理的障壁を乗り越え、厨的なコンテンツの情報を厨的に(P2Pとかzipとかで)共有するうまい手段を考えるべきではないか。まだ名案は無いが、とりあえずこの課題を認識することで、よい年をした大人が厨的にふるまい厨的な情報を交換しあうことのできるアーキテクトを設計し、厨的ネットワーキングシステムを軌道にのせるべく考えを深めたい。




最近

寒いせいか内向的だ。ブログを更新しようとしてもつい後ろ向きになってしまう。

(更新してるけど)。

仮定の話

仮定の話だと思って聞いてほしいのだが、もし万が一わたしの手元に、twitterがあたかもサイボウズOffice6の個人フォルダ画面のような見た目になる不思議なProxomitronフィルタがあった場合、ほしい人はいるかな。

現状ではオミトロンユーザーじゃないとつかえないし、遠目にごまかせるくらいのクォリティなのだが。あと主にFirefox限定(Operaでも見れないことはないが、ちょっとまずい。IEでは全然ダメ)。


GreaseMonkeyスクリプトなどの形にすればもっと使いやすいかなと思うのだが、画像とCSSファイルの扱いが難しい。

画像を全部base64エンコーディングにしてスクリプト中に埋め込み、GM_addStyleとかいう関数を使ってCSSを定義すればよいのはわかるのだが、ちょっと大変なので、できればローカルの画像とCSSを読み込む方法がほしいところだ(誰かその方法を知ってたら教えてください)。

ただし自鯖がある人だったら、CSSと画像を自鯖にあげて、CSSのURLを変え (て文書のタイトルとfaviconだけ変え) るところだけGreaseMonkeyでやればよい。


pseud-cybozu-ss.png

pseud-cybozu-ss2.png

イメージ画像です。よく見ると「what are you doing?」と書いてあるので update もできるのでしょう。


無論すべて仮定の話なのであまり真に受けないでほしいのだが、希望者はメールアドレスを教えてください。




コメントについて

スパムコメントの判定基準を厳しくしたら、自分でコメントできなかったのでまた緩くした。「コメントは現在承認待ちです」ってでるけど、あれわたしのところに通知こないんだよ。というわけではじかれてしまった皆様今後はお気軽にコメントをどうぞ。

厳しくしてスパムコメントも減らないし、もう諦めぎみです。




ActionScriptやろうかな

就職までにいくつかプログラミング系の課題を自分で設定しているのだが、次は画像をあやつったりビジュアルな感じのことがしたいと思っている。

あと動的言語はもういいかなと思わないでもないので「次の言語」は静的言語をやりたい。


そこで画像を操ると言えばゲームなので、勉強のためにゲームをつくろうかと思っている。

具体的にはテトリスかブロック崩し。


しかしWin32APIとかDXで、Windowsでしか動かないプログラムを書くのはあまり楽しくないので、JavaアプレットかFlashしか選択肢がない。

Flash + Action Script だと、ま た E C M A S c r i p t か って感じになってしまうし、Flashも高いので、Javaアプレットにしようかと思っていたのだが、「あまり難しすぎる課題をたてるより、やりやすい方からやろう」と今日思った。Flash (ないしFlex) は体験版を使えばよいので次はActionScriptでテトリスでもつくろうかと思っている。

JavaScript 第5版

のフラナガンさんも、「ActionScriptはJavaScriptの方言」って断言してた。

最近jsに慣れすぎてもはやクロージャがないと全然プログラムが書けなくなっているのでActionScriptならとっつきやすそう。




JavaScriptでS式&遅延評価

ちょっと前に思いついたのだけれど、こういう風にすればわりと便利なんじゃないか。

あんまり真面目に調べてないので、本当にこれでよいのかどうかは知らん。

var quote = function(){
    /** 引数を配列にして返すだけ */
    var r = [];
    return r.push.apply(r,arguments);
};
var list = function(){
    var nArgs = [];
    for(var i=0,l=arguments.length;i<l;i++){
        if(arguments[i].constructor == Array)
            /* 引数のなかに再び配列があれば先に評価する */ 
            nArgs[i] = SForm(arguments[i]);
        else
            nArgs[i] = arguments[i];
    }
    return nArgs;
};
var SForm = function(args){
    /**
     * 疑似S式
     * argsは関数と疑似引数、objは関数のリスナー
     */
    if(args[0].constructor != Function)
        return null;
    if(args[0] == quote)
        /* 先頭がquoteだったら引数の配列をそのまま返す */
        return (args.shift()).apply(null,args);
    else{
        var fn = args.shift();
        var nArgs = list.apply(null,args);
        /* 疑似引数を先頭の関数にわたす */
        return fn.apply(null,nArgs);
    }
};

これなら遅延評価系のあれこれもすぐ実現できそう。

いまいちまだquoteとdelayがどう違うのかよくわからないのでアレだが。

SForm(
[plus, 1,
    [plus, 3,4]]
)

こうやって、SFormの引数のなかで入れ子の配列を使ってS式を書くのだ。

shimに関し最近気がついた2つのこと

すごくどうでもいい話題です。


  • 以前ブログに書いてあった「絶対故障だ てゆうかありえない」というのはPerfumeからの引用である。

最近Perfumeのベスト盤を借りたので気がついた。今書いてある「世界を売り飛ばせ」の元ネタはまだわからない。

  • 以前「ふたりのもじぴったん」の話をしたら「ぴったんぴったん文字ぴったん♪」と唄いだしたので、「そんな歌じゃない」と言った。メロディーがおかしいのはともかくそもそもそんな歌詞は無い。しかしあとあと振り返って考えるに、あれは「つるぺったん」と混同していたのだろうと気がついた。



右翼とか左翼とか

ネットで「ウヨ」とか「サヨ」とか書いてあるのを見るたびに違和感を覚える。「本当にそれは左翼なのか? 右翼なのか?」と思ってしまう。

まず一番気になるのは、個別の政策単位で右翼とか左翼を判定しようとすること。

個々の政策を提案したり、反対したり、賛成したりというのはさまざまな立場を理由として為されるものなので、それを主義信条と結びつけるのはすごい変な感じがする。たとえば単純に「イラク戦争には反対」という主張をとってみても、そういう結論にいたった理由は「天皇陛下に危機がおよぶ可能性があるから」かもしれないし、「地球上から戦争を根絶すべきだと考えているから」かもしれないし、「なんとなく悪いことっぽいから」かもしれない。だから政策単位で主義信条を判断しようとするのは基本的に間違っていると思う。


なんだろうなあ。しばしば適当なニュアンスで「左翼」とか「右翼」って言う人は、「オタク」とか「DQN」などを認定するような感じで「こういうことを言いがち」とか「こういう本を読みがち」とか「こういう政策に反対しがち」、「あと周りの人も似たような感じ」という理由で、あたかも当人のトライブを認定するような形で、どっち翼であるかを判断しているのではないかと思う。そしてへたをすれば本人たちもそういうノリで自分たちの政治信条を把握しているのではないかと思う。

しかしそれも変だなあと感じる。じゃあどうすべきかという話を書こうと思ったが大変なのでもっと大雑把な話をする。

(最近ブログを更新してなかったので何はともあれ更新したいのである)。


とりあえず簡単ながら思うこととしてはだな。「右翼左翼」というのは「フランス革命をとめたい派/フランス革命を進めたい派」という意味なのだからフランス革命と関係のないケースでは使わない方がいいんじゃないか。

一応マルクス主義者などは「これこれこういう理由で、おれらこそフランス革命派の最先端」という理屈をつけていたわけじゃないか。そのような感じで、どうしても右翼左翼をなのりたい (または右翼左翼を認定したい) 場合は「フランス革命から現在にいたるまでにこれこれの展開があり、まさにわれわれ(ないし彼ら)こそフランス革命反対派、推進派の末裔なのである」という説明を用意すべきじゃないか。


もちろんトライブを認定するために「右翼左翼」ということばを使ってもいいのだけど、問題はトライブと関係のない「右翼左翼」とまざって話がややこしくなることだ。

たとえば「プロレタリアートによる暴力革命こそフランス革命以来の歴史的展開から導きだされる必然的な戦略なのである」という主義信条と「なんとなく暴力とかはいやなので戦争反対」というのはまったく関係のない (どころかときに相反する) 立場じゃないか。それを一緒にして「左翼」とか呼ぶのはやっぱよくないよなあと思うのであった。「いわゆる右翼左翼とはまったく関係ない」ということを広く周知したうえで、サヨ、アンチサヨ、ウヨ、アンチウヨくらいのことばを使うことにしとけばいいのかな。


しかしこういうことを考えていると、現代は政治思想が少ない時代なのだなあとしみじみ思う。よしあしはともかく、昔の人達 (19世紀から20世紀中盤くらいまで?) は「これこれこういう方法で政権をとり、こういうしくみの新しい国家をつくろう」ということを具体的に考え、議論し、ときに革命に成功したりもしていたわけじゃないか。

一方現代をふりかえってみるに、そういった具体的な戦略を構想する議論はきわめて少ないし、革命をおこせるほどの人気もない。

  • マイノリティの視点からは学ぶべきものがたくさんあるよね
  • マイノリティを大切にした方がいいよね
  • 福祉を充実させるべきだよね
  • 国家とかあまり信用できないよね

という主張をのぞくと現代の左翼っぽい人たちって他に何か主張してたっけ?という感じ。

(あまり右翼に詳しくないので------左翼にもさほど詳しくないけど------右翼の例が少なくて申しわけない)。


ということはつまり、現代は新しい政治的なアイデアが枯渇した状態だということなのかもしれない。

まあわたしが知らないだけですごく新しくすごく刺激的なアイデアを考えている人たちがどこかにいるのかもしれないが。

個人的には「これは新しいなあ」と感じたのは動物の権利運動くらいだなあ。




エディタがおまえに合わせるのではない。おまえがエディタに合わせるのだ

道具が人間に合わせていくだけなら人間は退化していくばかりだが、道具に合わせる自ら修練をつむことで人間はさらなる進化をとげる。

ということを最近考えた*。

* 進化退化という言葉の使い方がまちがっている例。実際には、退化は進化の対義語ではなくサブカテゴリだそうだ。


そういう意味では「軍服に合わせろ」メソッドにも一理あるように思わないでもない。

わたしは秀丸を愛してやまない人間だが、泣いて馬謖を斬る思いで*、emacsを使うことにしようかと思っている。

* この慣用句はじめて使った。


わたしは軽いソフトこそ善という派閥なので、Meadowに関しては起動が重いことが気になっていたが、site-lispを整理したらすごく軽くなった。ので今後積極的に使おうかなー、と思っている。

あと最近気がついたがGNU EmacsのWindows版ってふつうにWindows上で動くし日本語も通るんだな。だからこっちを使ってもいいかもしれない。




タブローを描くプログラム: 反省

反省をメモすることで、忘れないようにする。


  • 表示部分とタブロー構築のロジックが分離できてないのはいかがなものか。

本当は表示部分をすぐFlashに切りかえられるくらい分離すべきだったなあ。HTMLを変更しただけでコア部分に変更が必要になる実装はよくないな。


  • もっとライブラリに頼ってもいいんじゃないか

なんかあるとすぐ「じゃあ自分で (ゼロから) つくってみよう」と思ってしまう。勉強という意味ではそれでいいんだが、利用する人からするとそんな頑張りには意味がない (これは勉強を目的とした企画だったのでそれでいいけど)。たとえば、今回は「論理式パーサを自分で実装する」というのが個人的なチャレンジだったのだが、その部分で既存のライブラリを利用していたとしても、「タブローを描くプログラム」そのものの価値には代わりはないわけで。「勉強志向」と「完成品志向」はときに対立するなあと思った。


  • タブローを描くプログラムより、「矛盾を判定するプログラム」の方がすごそうじゃないか

もう少しエンジン部分を分離し、「矛盾を判定できる」「ついでにタブローも描ける」という風にプレゼンすればよかった。


言ってもしかたない (というか人に聞かせてもしかたない) ことばかりだが、「ブログに書く」のがものを忘れないための一番よい方法だと思っているのでやむをえずここに書くのである。




読書

レイモンド スマリヤン (著), 長尾 確 (翻訳), 田中 朋之 (翻訳)

白揚社、1990


を読んでいる(というか解いている)。おもしろい。

  • >>ゲーデルを読もう
    • >> ゲーデルを理解するためにこの本を読もう
    • >> 真理値表書くのめんどうだなあ タブローの描き方忘れちゃった
      • >> せっかくだから思いだすついでにタブローを描くプログラムを書こう
      • >> 結構時間かかる
    • >> できた
    • >> 早くこれ読みおわらないと

という感じでスタックがつみかさなり、なかなかゲーデルにもどれないという罠。

タブローを描くプログラム

http://www.at-akada.org/works/tableau/

手がかかったわりに、まったく一般性が無いネタですが、タブローを描くプログラムをつくりました。

これでもう、「あれ? この式って恒真かな? 矛盾式かな?」という理由で悩まなくてもすみますね!



タブローについて

タブローというのは、論理式 (の集合) が矛盾しているかどうかを確かめる手法の1つです。

大まかに言うと、タブローは論理式を見ながらルールに従って図を描くという手法です。論理式 (の集合) が矛盾していた場合、タブローは閉じたタブローになります。これによって矛盾した式であるかどうかを判定できます。一方恒真式 (絶対正しい式) の否定は矛盾した式になるので、これを利用して恒真式 (トートロジー) であるかどうかも判定できます。

タブローについて、詳しくは以下の本などに載っています。

(わたしは論理学をつくるしか読んでないけど)。

論理学をつくる



タブローの方法による論理学入門


ちゃんと説明する自身は無いですが、一応簡単にルールの説明も。

  • 「AかつB」があればAとBを縦に並べる
  • 縦に並べたなかにPとPの否定があれば、矛盾しているので×をつける
  • 「AまたはB」があれば経路を分岐させ、Aが正しい場合とBが正しい場合に分ける
  • 2つに分けた経路の両方に×がつくならば、矛盾している
  • 「否定」、「または」、「かつ」以外の演算子は「否定」、「または」、「かつ」を使って書き直す

大まかに言うと、タブローはこういう方法です。この説明じゃ絶対にわからないと思いますが、これ以上口で説明するのはわたしには無理なので詳しく知りたい場合は上の本などを読んで下さい。


ちなみに命題論理にしか対応してません。



描いてみた感想

やりたかったのは、

  • JavaScriptで論理式の構文解析
  • HTMLでちょっとずつタブローを描く

の2つなので、わたしは大体満足しました。完全な自己満足プログラムです。


パーサ部分などは、以下の記事などを参考にしました。


タブローはHTML + CSS で無理して描いているのですが、IEの表示がさっぱり直らなくて泣きました。いまだにIEでの表示はちょっとおかしいですが、もういいです。IEをつかってるやつを一人一人つかまえて止めるように説得したい気分です。なるべくFirefoxかOperaで見てください。

(Safariはwindows版しか見てないが一応動くらしい)。



使い方の例

あとは適当に使い方の例を示してみます。

以下は『論理学をつくる』のp100にあった練習問題です。

次の4つのことを同時に信じている人がいる。その人の信念は矛盾しているかそれとも整合的か。

  • 神は存在する
  • 神が存在するならば神が造り給いしこの世は最善の世界である
  • 神が造り給いしこの世が最善の世界であるならば悪はこの世にない
  • この世には悪がある

E: 神が存在する

W: 神が造り給いしこの世は最善の世界である

B: この世には悪がある

と置くと、題意の命題はそれぞれ

E
E⊃W
W⊃¬B
B

となる。あとはこの4式からタブローを描いてみて、矛盾しているかどうかをチェックすればよい。

↓結果。

http://www.at-akada.org/works/tableau/?E%0AE%E2%8A%83W%0AW%E2%8A%83%EF%BF%A2B%0AB


また、A,B,Cなどの前提からDを導く論証が適切であった場合、集合「A,B,C,¬D」は全体として矛盾する。

(A,B,Cの前提の下でさらに¬Dを認めると、矛盾する。だから前提A,B,Cを認めるなら必ずDも認めなきゃならねえんだよ!ということ)。

つまりタブローをうまく使えば論証が適切であるかどうかも確かめられるので、お、これは便利!かもしれない。



ソース

http://www.at-akada.org/download/tableau.zip

オープンソースです。

(大部分JavaScriptなので元々オープンだが)。

index.cgiはrubyが動く環境で動く。

ただしindex.cgiは単に式をURLでわたせるようにしただけなので通常はindex.htmlをブラウザで開くだけで十分だと思われる。

|

著者について

赤田敦

nightly[at]at-akada.org

紹介: about

ホーム: at-akada.org

-> 携帯電話用

なかなか更新されないときは...

-> 赤田ブログ生成器

2008年7月

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

このページについて

2008年2月に書かれたエントリ

前のアーカイブ: 2008年1月

次のアーカイブ: 2008年3月

インデックスページ

アーカイブページ