2010年05月24日

2010.05.23 文学フリマレポート

初めての文学フリマ

 文学フリマに初めて行ってきました。

文学フリマの印象

 文学フリマとはコミケの文学版みたいな位置づけだと思うのですが、半ば商業化したコミケと違い、自分たちの作品を手にとって見て欲しい!という思いが伝わってくるようなサークルさんばかりでした。
 というのは、コミケでは1冊1000円とか原価割れしないような価格設定が普通になってきているのに対して、文学フリマでは「無料」だったり、原価1400円の小説装丁の同人誌を500円で頒布していたりするのです。
 すげーよ!
 文学フリマ舐めてたよ。最初から金儲けしか考えていないようなコミケサークルとは意気込みが違うよ(※一応フォローしておくとコミケの中でもマイナーなジャンルやサークルさんは文学フリマの雰囲気に近いです)

当日の行動

単独侵入を試みる……スネーク

 会場について入り口から侵入。会場の狭さに驚きつつも、人口密度はコミケのマイナージャンルよりは高い感じを受けました。
 ラ研で知り合った玖乃さん、エルナインさんと待ち合わせをしていたのですが、その前にちょろっと偵察。
 入り口で配っていたカタログを受け取らずうろうろしてみたのですが、よくわからない。そして、サークルの前で立ち止まったりすると少し恥ずかしい気がする(たまたま立ち止まったところが「百合」とか「BL」だったりすると目も当てられない、という妄想の)ため、ぐるぐる回ることは断念して玖乃さんに連絡を取ることに。
 先に見て回っていた人たちにアドバイスを貰えば何か分かるかも?と着いた途端に他力本願なり。

作戦隊長と合流

 玖乃さんは「見本誌」のところに居たらしく、電話をすると来てくれるとのこと。しかしながら「見本誌」とはなんぞ?と疑問が。
 色々考えていると玖乃さん登場。事前に(女子高生)と聞いていたのですが、うん。(女子高生)でした。たぶん。
 簡単に挨拶を済ませると、(美人OLの)エルナインさんと合流することに。
 エルナインさんはどうやら「見本誌」のところにいるらしく、連れて行ってもらうことに。

エースも合流

 見本誌の部屋は別にあって、そこには全サークルの見本が1冊ずつおいてありました。なるほど、コミケでも見本誌として1冊提出していたけど、こういう使い方がされていたんだ。とすっかり感心モード。コミケに参加していたときは、なにも分かっていなかったことがバレバレです。
 玖乃さんのお勧めで入り口で配っていたカタログを貰うことに。あ、それって貰わないとダメだったのか……お手数おかけします。ぺこり。

作戦会議(半年後の……)

 おふたりは見本誌のチェックは終わっていたそうなので作戦を立てるために一度喫茶店に。「会場のすぐ隣にあるのに空いている!」と内心びっくりしながら席を取りました。
 そこからは雑談モード。
 事前に次回はサークル参加されることを聞いていたのですが、この場で作戦立案です。なんかワクワクしますね。自分のことじゃないのに。「恋は戦争」ならぬ「文学は戦争」みたいな妄想がモクモクと私の中に生まれてきます。
 やっぱり、こういう自分の出したい本について話すというのは楽しいですよね。

未来の自分

 どういう流れを追ってか「目指す方向性」がテーマに。
 こういうのは中々苦手です。
 というのも目指す方向性を語るほど文学について考えたことはなく、読んだ小説も圧倒的に少ない。お二人が名前を挙げる小説家を誰一人としてわからなかったのは内緒です。
 とりあえず、「自分が読んで面白いものを書きたい」と当たり障りのない返答。うーむ、お二人とも「いやいやいや、そういうことが聞きたいんじゃなくてね」という感じです。
 とりあえず、小一時間ほどお話していたら、サークルを回ってみましょうということになりました。
 お二人が見本誌を見て目をつけていた本があるようなので、まずはそれについていくことに。

戦場にかける心意気

「流星ラジヲ」という小説でした。装丁も中の作りも凝っています。一緒においてあった簡単なサークル紹介の名刺を見てみると1冊の原価は「1400円」、頒布価格は500円……。本は赤くないのに、そこに血の幻影を見ました。
 価格のお得感もあって2冊の上下巻だったのですが、さっそく購入。
「すごいですねー」とちょっとだけ話して次のサークルを見ることにしました。
 ここからは自然と各自バラバラに。
 1冊買うと弾みがついたのか、サークルの前をゆっくり歩きながら物色です。
 事前に仕入れていた情報は少ないのですが、見知った題名の本を購入したり、声をかけられて無料の本をもらったり、本を買ったおまけにベビースターをもらったり(コミケだと禁止だったりしますが、概ねコミケでもやってますw)、1冊買ったおまけに新刊(!)もらったりと、ホクホクでした。
 何よりも無料で配っているものの質が圧倒的に高い!
 コミケはフリーペーパー程度ですが、オフセットの本を無料で配っているのはカルチャーショックでした。「FREE」読もうかな……。

作戦終了

 玖乃さんの作戦終了コールがあり、作戦を終わりにして移動。
 私は別の用事がありましたので、駅にて失礼させていただきました。

戦果発表

 総額3000円ぐらい購入。
 でも、貰った本を含めると紙袋いっぱい。だいたい10冊強はあるでしょうか。
 これから寝る前に読んでいこうと思いますが、血反吐を吐いてまで作った流星ラジヲが特に楽しみです。
 感想は別途どこかに書いていこうと思います。

次回予告

 2010年12月にも文学フリマがあるらしいのです。それは名古屋なのかもしれませんが、できたらそれにも参加したいなぁ……。
(ゴスロリにした)玖乃さんが文学作品を売るらしいので、非常に楽しみです。

ご注意

* ()内の単語は個人情報保護のため意図的に異なる単語に変更されております。

2010年05月21日

世の中の1年以上職についていない「失業者」は本当に「150万人」もいるのだろうか?

 日本で1年以上就職できない失業者は150万人に登るそうです。
「日本は一旦離職すると再就職が難しい」という論調の記事を読みましたが、この論調が正しいかどうかはさておき、就職できない人たちをどうやったら就職できるようになるか考えてみたいと思います。

 まず上記の150万人をざっくり分けると「内容問わず」でも就職できない人は50万人程度、「希望する職種につけない」人は100万人程度だそうです。

「内容問わず」でも就職できない人は、とりあえず置いておきましょう。
「内容問わず」で頑張っていても就職できないんじゃ、仕方がない。
 ……頑張っていない人がいるんじゃないか?って。そんなの論外。それって「失業者」じゃないでしょ。頑張ってない人は支援したり保護する理由がない。
「勤労」は日本国民の三大義務です。働けるのに働かない20歳以上の人は選挙権なくていいと思う。各種サービスも制限されてしかるべき。日本国民でいたいならば義務を果たすべきです。


 それはそうと「希望する職種につけない」人をどうしたらいいのか考えて見ましょう。だって、税収が減少する昨今、こういう人を放っておいていいはずがありません。
 なぜ就職できないか、理由を推測してみます。

1)環境的な問題で職業を選ばなければならない

 この中でも「先祖代々の土地を離れなれない」とか「両親の面倒を見なければならない」とか、自分さえ納得すれば解決策のある「気持ちの問題」というものと、「まわりに希望する職種の求人がない」とか、「環境的な問題」というものに分けられます。  どちらも客観的な意見としては「何とかなるなら、何とかすれば?」としか言いようがありません。

2)身体的な問題で職業を選ばなければならない

 これも2つに分けられます。「生まれつき身体的な問題がある人」と「自分で身体を壊した人」の2つです。  生まれつきで身体的な問題があるのなら、仕方ないと思います。救済対象だと思うし、そういう人は「職業」の選択の幅も狭いから高いレベルを目指して欲しいとも思います。  でも、自分で身体を壊した人は自業自得だと思います。お酒飲みすぎて、甘いもの食べ過ぎて、運動しなくて、成人病になったから、たばこのすいすぎで肺を壊したから、健康的な人が働ける職業につけなくなりました。  まったく持って「腹立たしい」と思います。  節制していればならなかった病気で、失業し、あまつさえ保険をばっかばっか使うなんて「ひどい」以外言いようがありません。  そういう人は「失業者」の中に混ぜないでほしいと思います。

3)なりたい職業がある(けどレベルが足りない)

「私、女優になりたいの! でも、女優になってないから失業者なの」とか論外かと存じますが、これってもう少し目線を下げてみれば「時給換算で2000円超えないと嫌だ」という話もあります。  まー、どっちも同じようなもので、本人のレベルが閾値に達していないだけだろと思うわけです。  こういう人も「失業者」に混ぜるな!と思います。

4)その他、いたし方のない理由があるんです

 という人もいると思います。  じゃあ、その理由はなんなの? 本当に何を変えても働けないの?  場所変えても、人変えても、自分のスキル上げても、働けないの?  そうやって問い詰めていくと、きっと「あなたは私じゃないのだから分かるはずない!」と切れ始めるかもしれません。  そりゃ、そうだ。  分かる分けない。その通りだ。  でも、日本国民であるならば「勤労」は義務だ。  1年以上も働いていないという状態は「異常」だ。それを解決したいのなら、時間をかけて自分と向き合うべきだ。 「色々大変でしょうね。1年も失業しているなんて」とやさしい言葉をかけてくれる人は沢山いるかもしれない。でも、そういう人は何にも考えていない。同情して「あげて」感謝してもらうことで、ささやかな満足を得る。更に言えば自分より下の存在を作り上げて自尊心を満足させるのだけなのだ。  本当にあなたのことを考えてくれるのならば、日本国民の最低限の義務ぐらい果たさせて胸を張って生きれるようにしてくれるはずだ。

「人が何をしても自由だろ?」という人がいますが、「働かない人」はそれだけで害悪だということを認識すべきです。ここでいう「働かない人」というのは給料を貰っていない人というわけではありません。
 職種を選ばなければ働ける能力を持っているのに「働かない人」という意味です。専業主婦でも夫のパフォーマンスを最大にできるのであれば十分に存在価値がありますし(あ、夫のパフォーマンス下げる専業主婦なんて論外です。それは主婦じゃありません)、ボランティア活動で身体的な問題のある方の就職を支援している人も「働いている人」という認識です。

 要は社会的に少しでも貢献していればいいのです。

 言ってみれば簡単なことですが、色々な理由をつけて自分に甘えて、それが出来ていない、もしくはそれが出来ない環境に自分でしてしまった、という人たちは100万人の中に少なからずいると思います。
 そういう人たちに甘い社会を望んでいるというのなら、あなたは私とレイヤーを異にするみたいです。個人的には日本国民から外れて欲しいと思うぐらい嫌いなタイプです。

 あと余談ですが、「立ち上がれ日本」で「私たちみたいなじじいが動かなければならない世の中なんだよ!」と言った都知事がいました。
「そういう世の中にしたのはその【じじい】だよ! 自分のケツぐらい自分でふけや!」と汚い言葉で突っ込みを入れたのは言うまでもありません。

2010年05月18日

WEB情報ハンドリングの基本はHTMLスクレイピング!

 WEB情報を取り込んで加工してデータベースにしたり、APIの提供されていないサービスをプログラムから自動で使用したりする場合、HTMLのスクレイピングは必須になります。
 とは言ってもHTMLのスクレイピングを自分で実装するのは非常に難しく、閉じていないタグの処理とか、解釈できないタグとか、属性情報とか、そういうのの細かな扱いはコードを足しても足しても足りません。
 そこで何か良いライブラリがないかと探してみると、ありました!
 取得したHTMLをSQL文で解析できるPHPライブラリです。
 
 これを使うと簡単にリンクリストを抽出したりできます。 
 
SQL のように HTML を解析できる htmlSQL
htmlSQL

 proxyに対応していたり、ライブラリを覗くとパラメータを変更するだけで、様々な環境に対応できるようです。

2010年05月07日

うわさのtogetter.com

うわさのtoggeter.comを使ってみました。
日ごろから「空目」だけ集めて見れたら面白いなぁと思っていたので、それを纏めてみました。
超使いやすかったです。このツールは単純ながらも操作性がすごいなぁと感心しました。

2010年05月06日

Retweetシンクロ率判定機(仮)の開発 第一歩 OAuthドキュメントの翻訳

 Twitterでリツイートを見ていて思ったのですが、同じものをリツイートする人なら相性がいいはず! と新たな出会いを支援するための機能を思いつきました。
 実際に作ってみることに。

 色々検討した結果、OAuth認証を取らないとツイートとリツイートを取得できないことが分かったので、OAuth認証が必須に。Google App Engineを使おうと思ったけど、Java以外にストレージの使い方が特殊なことが分かる。今回は別にすっごいユーザー数を見込んでいるわけでもないし、GAEは諦め。
 そこで使い慣れたPHPを使おうと思ったけど、OAuth認証のライブラリが英語の説明しかない。
 じゃあ、と思ってまずは下記のドキュメントを翻訳することにしました。

PHP OAuthドキュメント

以下翻訳
TwitterOAuth documentation.
ツイッターOAuth認証ドキュメント

GET THE CODE
コードの取得
====================
You can pull the latest development version using git:
gitを使って最終開発版を取得することができます。
git clone git://github.com/abraham/twitteroauth.git

Or you can download the latest release by visiting:
または、下記のページで最終リリース版をダウンロードできます。
http://github.com/abraham/twitteroauth/downloads


FLOW OVERVIEW
TwitterAPIが使えるようになるまでの流れ(概要)
====================
1) Build TwitterOAuth object using client credentials.
1) クライアント証明書を使ってTwitterOAuthオブジェクトを構築します。

2) Request temporary credentials from Twitter.
2) Twitterから一時的な証明書を取得します。

3) Build authorize URL for Twitter.
3) Twitterへ移動させるための認証URLを構築します。

4) Redirect user to authorize URL.
4) ユーザーを認証URLへ転送します。

5) User authorizes access and returns from Twitter.
5) ユーザーはアクセスを認証(許可)し、Twitterから戻ります。

6) Rebuild TwitterOAuth object with client credentials and temporary credentials.
6) クライアント証明書と一時的な証明書を使ってTwitterOAuthオブジェクトを再構築します。

7) Get token credentials from Twitter.
7) トークン証明書をTwitterから取得します。

8) Rebuild TwitterOAuth object with client credentials and token credentials.
8) クライアント証明書とトークン証明書を使ってTwitterOAuthオブジェクトを再構築します。

9) Query Twitter API.
9) Twitter APIにクエリーを発行します(使えるようになったぜ!)

TERMINOLOGY
用語
====================
The terminology has changed since 0.1.x to better match the draft-hammer-oauth IETF RFC.
用語は、0.1.xからドラフト・ハンマー・認証 IETF RECへよりマッチするように変更されています。

You can read that at http://tools.ietf.org/html/draft-hammer-oauth. Some of the terms will differ from those Twitter uses as well.
http://tools.ietf.org/html/draft-hammer-oauthで確認できます。用語のいくつかがTwitter用途と異なります。

client credentials - Consumer key/secret you get when registering an app with Twitter.
クライアント証明書 - あなたがTwitterにアプリを登録するときに得る「公開鍵/秘密鍵」

temporary credentials - Previously known as the request token.
一時的証明書 - 以前は要求トークンと呼ばれていました。

token credentials - Previously known as the access token.
トークン証明書 - 以前はアクセストークンと呼ばれていました。


PARAMETERS
パラメーター
====================
There are a number of parameters you can modify after creating a TwitterOAuth object.
TwitterOAuthオブジェクトを構築する前に、修正できるパラメータを紹介します。

Switch to XML instead of JSON.
JSONの代わりにXMLを使う場合、以下のようにします。

$connection->format = 'xml';


Stop auto decoding JSON.
JSONの自動デコードをやめる場合、以下のようにします。

$connection->decode_json = FALSE;


Custom useragent.
ユーザーエージェントを変更する場合、以下のようにします。

$connection->useragent = 'Custom useragent string';


Verify Twitters SSL certificate.
TwitterのSSL証明書を確認する場合、以下のようにします。

$connection->ssl_verifypeer = TRUE;


There are several more you can find in TwitterOAuth.php.
他にもいくつかありますが、TwitterOAuth.phpをご覧ください。


EXTENDED FLOW USING EXAMPLE CODE
例のコードを使用した詳細なフロー
====================
To use TwitterOAuth with the Twitter API you need TwitterOAuth.php, OAuth.php and client credentials. You can get client credentials by registering your application at
https://twitter.com/apps.

 Twitter APIを使ってTwitterOAuthを使用するために、あなたはTwitterOAuth.php、OAuth.php、およびクライアント証明書を必要とします。あなたのアプリを「https://twitter.com/apps.」で登録することにより、クライアント証明書を取得できます。

The example files are explained below.
例に使用したファイルは下記で説明されています。

0) Users start out on connect.php which displays the "Sign in with Twitter" image hyperlinked to redirect.php. This button should be displayed on your homepage in your login section. The client credentials are saved in config.php as CONSUMER_KEY and CONSUMER_SECRET. You can save a static callback URL in the app settings page, in the config file or use a dynamic callback URL later in step 2. In example use http://example.com/callback.php.

0) ユーザーは「Sign in with Twitter」と書かれた画像に付けられた「redirect.php」へのハイパーリンクを表示するconnnect.phpから開始します。ログインページにこのボタンを配置します。クライアント証明書は「CONSUMER_KEY」「CONSUMER_SECRET」としてconfig.phpへ保存します。アプリ設定ページに、コンフィグファイルに固定のコールバックURLを保存します。または動的なコールバックURLを使うには後述のステップ2を見てください。例では固定のコールバックURL「http://example.com/callback.php.」を扱います。


1) When a user lands on redirect.php we build a new TwitterOAuth object using the client credentials. If you have your own configuration method feel free to use it instead of config.php.
1) ユーザーがredirect.phpに来たら、クライアント証明書を使って新しいTwitterOAuthオブジェクトを構築します。もしあなたが自分の環境を使いたいと感じたら、config.phpの代わりにそれを使ってください。

これを
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);// Use config.php client credentials

こういう風に変更
$connection = new TwitterOAuth('abc890', '123xyz');

2) Using the built $connection object you will ask Twitter for temporary credentials. If you wish to have a dynamic callback URL for each user you can do pass a URL as a parameter.

2) $connectionオブジェクトを構築するにあたり、Twitterへ一時的な証明書を問い合わせてください。もしユーザーごとに変更される動的なコールバックURLを使いたいと思ったら、URLをパラメータとして渡すこともできます。

これを
$temporary_credentials = $connection->getRequestToken(); // Use applications registered callback.

こういう風に変更
$temporary_credentials = $connection->getRequestToken('http://example.com/callback.php?');


3) Now that we have temporary credentials the user has to go to Twitter and authorize the app to access and updates their data. You can also pass a second parameter of FALSE to not use Sign in with Twitter: http://apiwiki.twitter.com/Sign-in-with-Twitter.

3) 一時的な証明書を手に入れたら、ユーザーをTwitterへ移動させます。そして、アプリがアクセスしたり、更新したりするのを許可してもらいます。2番目のパラメータを「FALSE」にすることで、Twitterへサインインすることなしに使えます。

これを
$redirect_url = $connection->getAuthorizeURL($temporary_credentials); // Use Sign in with Twitter

こういう風に修正
$redirect_url = $connection->getAuthorizeURL($temporary_credentials, FALSE);


4) You will now have a Twitter URL that you must send the user to. You can add parameters and they will return with the user in step 5.

4) ユーザーを送り込むTwitter URLを手に入れました。パラメータを追加すると、ユーザーはそのパラメータと共にTwitterでステップ5を行います。

これを
https://twitter.com/oauth/authenticate?oauth_token=xyz123

こういう風に変更
https://twitter.com/oauth/authenticate?oauth_token=xyz123&info=abc // info will return with user


5) The user is now on twitter.com and may have to login. Once authenticated with Twitter they will will either have to click on allow/deny, or will be automatically redirected back to the callback.

5) ユーザーはTwitter.comでログインします。Twitterで許可か、拒否のどちらかをクリックして認証を行います。その後、自動的にコールバックされてきます。


6) Now that the user has returned to callback.php and allowed access we need to build a new TwitterOAuth object using the temporary credentials.

6) callback.phpにユーザーが戻ってきて、かつ必要なアクセスが許可されていたら、一時的な証明書を使って新しいTwitterOAuthオブジェクトを構築します。

$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $_SESSION['oauth_token'],
$_SESSION['oauth_token_secret']);


7) Now we ask Twitter for long lasting token credentials. These are specific to the application and user and will act like password to make future requests. If a dynamic callback URL was used you will also have to pass the oauth_varifier parameter. Normally the token credentials would get saved in your database but for this example we are just using sessions.

7) 次はTwitterに長く使えるトークン証明書を問い合わせます。アプリとユーザーを特定し、パスワードを使ってリクエストしたかのように振舞います。もし動的なコールバックURLを使われていたら、oauth_varifierパラメータも渡さなければなりません。

$token_credentials = $connection->getAccessToken(); // Used applications registered callback URL
$token_credentials = $connection->getAccessToken($_REQUEST['oauth_verifier']);

7a) After getting the token credentials we redirect the user to index.php.

7a) トークン証明書を取得した後に、ユーザーをindex.phpへ転送します。


8) With the token credentials we build a new TwitterOAuth object.

8) トークン証明書を使って新しいTwitterOAuthオブジェクトを構築します。

$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $token_credentials['oauth_token'],$token_credentials['oauth_token_secret']);


9) And finally we can make requests authenticated as the user. You can GET, POST, and DELETE API methods. Directly copy the path from the API documentation and add an array of any parameter you wish to include for the API method such as curser or in_reply_to_status_id.

9) 最後に、ユーザーとして認証されたリクエストを作成します。GET,POST,DELETE APIメソッドを使えます。直接APIドキュメントからパスをコピーして、APIメソッドのためのカーソルやin_reply_to_status_idなどのパラメータ配列を加えて使います。

$content = $connection->get('account/verify_credentials');
$connection->post('statuses/update', array('status' => 'Text of status here',
'in_reply_to_status_id' => 123456));
$content = $connection->delete('statuses/destroy/12345');


2010年05月05日

数学は宝の宝庫

数学のネタ

 数学の世界と哲学の世界は親和性が高いです。
 さらに哲学の世界と小説の世界は同じく親和性が高いです。
 すると以下のような関係式が成り立ちます。


 数学 ∽ 哲学 ∽ 小説

 ならば、


 数学 ∽ 小説

 も成り立ちそうですね。

 ということで、ここでは数学のネタをためていくことにします。


■ガリレオの躊躇い

 ガリレオと言えば天動説を唱えて死刑にまでなってしまった数学者・物理学者です。詳しくはWikipediaでも見ていただければと思います。

 そのガリレオがためらったこととは何か?
 数学ガールから引用します。


 ガリレオは、自然数(n)から平方数(n*n)の全単射(簡単に言えば、まったく同じモノに戻すことが可能な変換)が作れることを知っていた。

   1→1、2→4、3→9、4→16、……

 《全単射が存在すれば個数が等しい》というのなら、自然数と平方数の個数は等しいと言えるのだろうか……いや、おかしい。とガリレオは考えた。

 この部分こそがガリレオの躊躇いなのです。
 ガリレオはこの性質を「おかしい」「間違っている」と考えてしまったが、19世紀カントールやデデキントは、これを正しいこと、「無限の定義」と感じた。
 これが出来ると何が起きるかと言えば、「無限」の状態にある集合の数を数えることはできませんが、他の「無限」の集合と比較して個数が同じかどうかを調べることができるのです。
 今まで雲をつかむような存在であった「無限」がハンドリングできるようになったんですね。

 これを哲学的に考えると、「無限」とは人類に認識できない高次元の存在ではあるけれど、他の「無限」の存在と比較することで「ある性質」が同じかどうか認識できる方法があるということになります。
 小説的には「神様の力を使う」際の裏付けや、異世界の物質(または人物)と交信できる手段とかに使えそうです。


■ライプニッツの夢

 ライプニッツという人は、人間の思考をすべて数式や記号で表そうとした人です。詳しくはWikipediaでも見ていただければと思います。

 ライプニッツは「思考を計算」に見立てました。
 人間の思考を機械的な計算で行おうと思ったのです。
 以下は数学ガールにあったライプニッツの言葉の引用です。


……人は誰でも計算だけで、
現に最も困難な真理すら判断することになるであろう。
以後、人々はすでに手中にしているものについて、
もはや論争することなく、新たな発見に向かうことになろう。

 これは、思考の過程が機械的になることによって、そこに感情などの不確実性を挟むことなく、誰でも同じ結論に達することができるということです。
 この夢は非常に哲学的で、数学を研究する意味として心に残る言葉だと思います。

 ライプニッツの夢が実現した世界を小説として書くのも楽しそうです。誰でも同じ結論に達することができる世界では本当に争いごとがなくなっていないのかどうか。人類のリソースは有限ですから、計算を進めて自分たちに都合の悪い結果が出たらやり方を変えて計算を進める……一方相手はその結果を計算ではじき出して、それに対抗する……永遠と計算だけしている世界になりそうですね。平和ではあると思いますが。


■ラッセルのパラドックス

 ラッセルと言う人は『算術の基本法則』にパラドックスを発見した人です。
 ラッセルのパラドックスは、「いかなる命題でも集合を定義できる」と定義すると矛盾が生じるということを指しています。
 これは基本法則が曖昧で不確かな基盤に立っていることを示すこととして、ちょっとした事件になりました。
 このパラドックスは、ゲーデルの不完全性定理につながってきたと思います。


■停止性問題

 チューリングは、チューリングマシンという人工知能、もしくはパソコンの元になる機械を考えた人として有名ですが、そのチューリングマシンが解けない問題があることを自分自身で証明しています。
 これは「ライプニッツの夢」を崩す証明になります。

 停止性問題を簡単に、かつ乱暴に解釈すると「プログラムAは、あるプログラムが有限時間内に停止するか判定できない」となります。
 普通に考えると、プログラムが有限時間内で停止するかどうかは、「無限ループ」が論理的に存在するかどうかで判別できますが、この問題はプログラムAに自分自身を扱わせることで、ラッセルのパラドックスと同じようなことが起きると示しています。
 Wikipediaに書いてあることを読んでもさっぱりわからない問題の1つです。


■ゲーデルの不完全性定理

 ゲーデルの不完全性定理は2つあります。


ゲーデルの第一不完全性定理

ある条件を満たす形式的体系には、
以下の両方が成り立つ文Aが存在する。

・その形式的体系には、Aの形式的証明は存在しない。
・その形式的体系には、(not)Aの形式的証明は存在しない。

ゲーデルの第二不完全性定理

ある条件を満たす形式的体系には、
自己の無矛盾性を表現する文の形式的証明は存在しない。

 ここで面白いのは、「ある条件を満たす形式的体系」というのに「数学」を当てはめることができることです。
 つまり、ゲーデルの第二不完全性定理を適用すれば「数学は矛盾している」と読み取ることが(曲解ではありますが)できます。
 ただし、逆に言えば他の形式的体系から「数学」は完全であると証明することが可能だとも言っているのです。
 ここから思い起こされるのは、デカルトの「我思う、故に我あり」という文章です。この文は「考えている自分がいるのだから、自分は存在している」という意味合いですが、ゲーデルの第二不完全性定理を適用すると、自己に言及して証明することは不可能なわけで、どうしても他の形式的体系(つまり他人)からの承認が必要になるはずなのです。
 この2つは相反する結論ではありますが、ともに「自己に言及する」というところを取り扱っており、結局のところ、数学と哲学の根本は同じ問題なのではないかと考えさせる事案だと思います。