読者です 読者をやめる 読者になる 読者になる

現在の世界観と世界平和戦略

いま世の中はなかなか大変なことになりかけている真っただ中。ISの台頭、イギリスのEU離脱問題、トランプ大統領問題など。世界全体が革命前夜の様相を呈していますね。

日本での炎上騒動みていたりしても、そろそろ民主主義を根本的に見直さないといけないのではなかろうかと思ったり思わなかったりするわけですが、まあどうなろうが世界的な「戦争」と「飢餓」を回避できれば御の字ではなかろうかと思うのです。

中東がまったく平定される気配がなかったり、アフリカでも武装勢力なんかがけっこう活発であったりして局所的には平和とは言い切れない状況ではあるのですが、全体的にみれば何百万何千万単位の人々が武装して殺しあうみたいな大規模な戦闘が明日明後日に起こる気配はないので、歴史的にみればかなり平和な時代と言えると思います。


いまこの平和な時代を作っているのは、アメリカでしょう。中東への対応なので色々と評判が悪かったりもするアメリカですが、さりとて真向からアメリカに刃向かって勝てるほどの武力を持っている勢力はなく、仮に勝てるとしても甚大な損害を被ることは明らかなので、アメリカが世界の警察のような立ち振る舞いをしている今の世界において、ちょっとやんちゃしてみようと思う合理的な理由がありません。

そのためアメリカが健全なうちは第3次世界大戦のようなものは起こらないでしょう。

これは逆に言うと、アメリカこそが現在の世界平和における最大のリスク要因ということになります。上述したような今の構造では、アメリカが機能不全に陥っただけで均衡が破れてしまいます。

いままでの歴史をふりかえってみると、一国がトップに君臨しつづけたためしなどないので、アメリカもいつかダメになる可能性はかなり高いです。そのため、アメリカ一国の下に世界平和がぶらさがっているような状態はかなり危険な状態であるといえます。たとえばトランプ氏が大統領になっただけでアメリカの戦略が変わってしまうかもしれませんし、アメリカが大恐慌に突入して軍事予算が捻出できなくなってしまったりするかもしれません。

そのため、この構造は変えていく必要があります。それも永久に持続可能なモデルにするべきです。


さて、アメリカによる世界警察モデルの代わりになるものですが、「自由経済により国家間の相互依存関係を密にする」というのが、世界平和のための一番現実的な戦略としてあげられます。継続的に戦争を抑止する構造として、今のところこれ以外はちょっと思いつかない。

戦争に勝っても負けても結果として経済状況が悪化する、という仕組みが作り上げられれば、戦争に対してのネガティブ要因が常に働くことになるので、戦争を行う合理的な理由が少なくなるはずです。


この国家間での自由経済を進めていく枠組みとしては、TPPなどはじめ、大まかにはグローバリゼーションという呼び名ですでに昨今話題ですが、先進国に住む人々にとっては雇用の流出など直接的には不利な要素が多いため、批判的な声もかなり大きいです。

特にこのモデルを昔から推進してきたEUですが、イギリスで国民投票にかけた結果離脱派多数という結果になってしまいました。


世界平和のために全世界を巻き込んだ自由経済を構築するためには、それによって不利な面が大きい先進国の譲歩が必要不可欠です。自分たちの富を後進国に与えなければなりません。

アニメ「東のエデン」でも有名な「ノブレスオブリージュ」というフランスの言葉があります。富を持つには相応の責任が伴う、という感じの言葉です。この考え方を現代に適用しようとすると、「階級のなくなった今の社会で何を言ってるんだ」という批判的な反応が多いようなのですが、世界に目を向けてみれば先進国と発展途上国との間には大きな経済格差がありますし、「みんな平等だし階級なんてないです」といってしまうのは現実に即していないというか、単に現状認識として間違ってるでしょう。

このノブレスオブリージュ自体は、そう立ち振る舞わなければならないといったものではなく、富める者に自然発生してくるものだと思います。今の文脈で言えば、自分の富を保持し続けるために、世界平和を維持していくには発展途上国への投資が必要そうだというのは、難しい発想ではないです。



さて、ここまではいいと思うのですが、ここからが困ってしまいます。話が国単位の関係になってくると、どうもこのノブレスオブリージュが上手く働かないようなのです。

イギリスのEU離脱問題をみてみると、どうも裕福層は残留を支持し、そうでない人は離脱を支持すた、という傾向のようです。すごくシンプルに考えると、裕福層にはノブレスオブリージュが働いて、貧困層には働いていない、というように見えます。

これは、本来裕福層であるはずの先進国の中で、さらに裕福層と貧困層が存在するという二重構造になってしまっているのが原因だと思います。現実には、先進国内の貧困層の生活レベルは発展途上国の平均よりかなり高いはずなのですが、経済格差というものは社会内部で相対的に認知されるため、生活レベルが高いけど社会的立場は貧困層という状況が生まれてしまい、このためにノブレスオブリージュが働かないと考えられます。


格差というものが相対的な価値判断でしかない以上、国家内部での格差問題を解消するのは容易なことではありません。経済が良くなってみんなでお金持ちになったとしても、そこには必ず格差が存在するからです。この国家内部での格差を解消するには国がお給料を全労働者に一律支給するしかないですが、そのモデルで経済を発展させていくのはさらに困難です。


さらに悪いことに、テレビやインターネットなどのメディアの登場により、民主主義が本来の意味で正しく機能し始めてしまいました。もともと直接的には一部の裕福層によって啓蒙・運営されていた政治に対して、一般的な国民が自分たちで考え、そして政策に対して直接的に影響を及ぼしてしまうことが可能になってきました。今回のイギリスの国民投票の例でいえば、EUが主導した難民受け入れは先進国としての責任を果たそうという行為ですが、それに対する反発の声がEU離脱という形でダイレクトに反映されてしまいました。(いまのところまだ政策として確定はしていないですが)


というところで、じゃあどうするのかというと手詰まり感がありますね。やっぱり戦争とかになったらマジ大変そうですし、食べ物も少なくなりますし、人同士が殺しあってありえない単位でばったばったと死んでしまいますし、なんとか戦争が起こらない仕組みが出来上がってほしいのですがね。

個人的には、東浩紀さんの一般意思2.0に書かれていた、「国民同士がコミュニケーションをとらなければ投票によって正しい結論が導かれる」というところに一抹の可能性はありそうな感じはします。「自分たち」で考えるのではなく、あらゆる雑音をシャットアウトして皆が「自分」で考えて結論を出すことが出来れば、戦争のない世界に向かっていくことができるのかもしれません。




驚きの長文になりました

この世界はただのView層なのかも

量子力学は定期的に話題になるので、わりと認知度はあがっていそうです。


d.hatena.ne.jp


あらゆる物質の最小単位である素粒子は確率(波)として存在していて、人に観測された時にその存在が確定して粒子として振る舞う、という二重スリット実験とコペンハーゲン解釈はロマンしかないですし、実際に素粒子のあらゆる状態を確率として同時に持つことができる性質を利用した量子コンピューターの研究も盛んなようです。

素粒子は物質の最小単位ですが、その素粒子の存在が観測されるまで確定していないというのはなかなか受け入れ難い何とも不思議な話ですね。


それとは別に、今の理論物理学にはホログラフィック原理という理論があったりするようです。ホログラフィック原理というのは、「僕らがいつも生活しているこの3次元空間の実態は、実は全て宇宙の地平面に記述された二次元の情報だ」という感じのようなものです。

これもまた随分と突拍子のない話なのですが、

  • ある空間の内側の情報量は、空間の体積ではなく表面積で決まっていることが分かっている
  • ホログラフィック原理をベースにすると、重力などのいままで記述が難解だったこの世界の物理現象が簡潔に記述できるようになる

という感じでわりと信憑性が高まってきているようです。

そして個人的には、このホログラフィック原理を前提にすると、前述した素粒子は確率として存在していて観測された時に初めて粒子として確定するという性質がとてもしっくりきます。


この世界が何か別の情報の写像であるというのは、TVゲームの画面の中の空間にとてもよく似ています。TVゲームの画面に映る色鮮やかな世界は単なるViewにすぎず、そこに映し出される世界のもととなっているものは、メモリやディスクにひたすら0と1とだけで記述されている情報です。

このTVゲームの世界観はホログラフィック原理の世界観にとてもよく似ていますよね。

そんなTVゲームの世界では基本的にプレイヤーが観測した場所だけが画像として出力されます。プレイヤーが観測している外側の世界は画像としては確定しておらず、0と1との状態の情報としてのみ存在しています。ホログラフィック原理に従って、僕らのこの現実世界もまたただのViewであると考えるのであれば、僕らが観測していない場所にある物質の存在が確定しないというのもうなずける話ではないでしょうか。

観測範囲外にある物質をどんな状態でも取りうる確率という形で待機させておくというのは、Viewの実装としてはとても効率的に思えます。

そう考えると素粒子物理学の進歩により人類がたどり着こうとしているところは、ゲーム内のキャラクターが画面外の世界が存在していないことに気が付いてしまったという、そんな世界なのかもしれません。

帰ってきたウルトラマンの美的感覚

僕は著作権法などの知財関連の法律はまじで悪だと思って久しいのですが、そんな風に思い始めたのは創作を始めた頃で、ボカロの暴走Pさんもアンチザファンタスティックガーデンの歌詞で言っていますが「よくできた 着せ替え人形の 細部いじって 自分を主張する 歪んだカタチの器 偽者と知って コレしかないと 自分に嘘をつく」というのを肌感覚で覚えたところからでしょうか。


その後色々あってフランス現代思想にすこしふれる機会があって、「よくできた着せ替え人形説」が研究されて体系化されているのを知ってすごい感銘をうけたのですよね。特に間テクスト性(ハイパーテクスト性)とか作者の死とかはほんと面白いのですけど、そういうのに触れていくとオリジナリティという概念を再考する必要にせまられますし、著作権というのは本当いびつな形をしているし弊害が大きいなぁと思わないわけにはいかなくなってくるのですよね。
 

それはさておき、みんな著作権正しいオリジナリティあるやつがすごいっていいますが、しかし自分のことを思い返してみると、子供の頃ウルトラマン好きだったのですが一番好きだったのは「帰ってきたウルトラマン」だったのですよね。

帰ってきたウルトラマン - Google 検索


帰ってきたウルトラマンって、見た目がウルトラマンほぼそのままで、なんか胸のところのマークが2重になってるくらいの違いしかない感じなのですが、そのまさに「着せ替え人形の細部いじっただけ」な感じが子供の頃の僕にとってはすごくクールに見えたんですよ。だって他のやつらとか、やる気出しすぎてトサカ生えちゃったり角生えちゃったりでなんか大変そうじゃないですか。その点、帰ってきたウルトラマンはオリジナルの細部をすこし変えただけというシンプルさがクールなんですよ。和食もそうじゃないですか、いろいろごちゃごちゃするより素材をそのまま生かした薄い味付けの方が美味しいのです。そしてこれが重要なのですが、帰ってきたウルトラマンはオリジナルのウルトラマンよりもクールなのですよね。
 

まあつまり僕は物心つくくらいの頃からオリジナリティあふれるものよりも、優れたものに+αしてみたものをかっこいいと思っていたようだと最近気が付いたので、生まれながらこれじゃもう今更変わるのはあきらめるしかないですし、そういう着せ替え人形を上手に仕上げたものを好きでいくしかないようです。

でも大変困ったことに、著作権があると、帰ってきたウルトラマンってアウトなのが確定的に明らかじゃないですか。ウルトラセブンはもしかしたらセーフかもしれない。でも帰ってきたウルトラマンはどうみてもあかんのです。でもそれじゃ困ってしまうので著作権なくならんかな、みたいなことを思うのでした。

いじめがあった時に、いじめられっ子にも原因があるのかという

雑記

とうとつに、いじめがあった時に、いじめられっ子にも原因があるのかという話。
僕はいじめというのはイスとりゲームのようなものだと思うのです。
他の人と比べて反応が遅かったり要領が悪かったりして座れなかった人がいじめられるのです。

したがって、A君がいじめられっ子として選ばれた原因は他の人に比べてイスとりゲームが苦手だったA君にあります。
一方で、いじめが発生した原因はA君にはありません。
いじめがまず先に存在し、イスとりゲームが行われ、その結果としてA君はいじめっ子という役割に選ばれただけなのです。


いじめ問題などが起きるといじめられっ子にも原因があるだのないだのでなかなか白熱した議論になりますが、「A君がいじめられっ子として選ばれた原因」と「そこでいじめが発生した原因」とを一緒くたにしているのでカオスな感じになるので、分けて考えたほうがいいですし、前者は単に誰が選ばれるかというだけの問題ですので、本当の問題は後者なのです。

Elasticsearchのコードを読んでみる③ Bulk編

プログラミング

ほとんど更新と一緒だけど、運用する時はBulkのがよく使うと思うので簡単に。


curl -XPOST localhost:9200/_bulk -d '
{ "index" : { "_index" : "test", "_type" : "type1", "_id" : "1" } }
{ "field1" : "value1" }
{ "delete" : { "_index" : "test", "_type" : "type1", "_id" : "2" } }
{ "create" : { "_index" : "test", "_type" : "type1", "_id" : "3" } }
{ "field1" : "value3" }
{ "update" : {"_id" : "1", "_type" : "type1", "_index" : "index1"} }
{ "doc" : {"field2" : "value2"} }
'
な感じのリクエスト。

Bulk処理

RestBulkAction : bulkリクエストを処理するクラス
- client#bulk()を実行。めぐりめぐってNodeClient#execute()が実行される。

NodeClient
- TransportBulkAction#execute()を実行。

TransportBulkAction
- Bulkリクエストに含まれるインデックス名を抜き出し、インデックス生成が必要な場合はインデックスを作成。(createIndexAction#executeをインデックス分実行。この辺りは更新編を参照。)
- インデックス生成が終わったらexecuteBulk()でBulk処理を行う。
- 対象シャードごとにbulkリクエストリストを作成し、そこにbulkのリクエストを一行ずつ分つめていく。
- 対象シャードが空ならここでレスポンスを返す。
- シャードごとにTransportShardBulkAction#execute()を実行して処理していく。

TransportShardBulkAction
- TransportShardBulkAction#execute()からTransportShardReplicationOperationAction.AsyncShardOperationAction#start()が実行される。
- 対象シャードがローカルであればbulkのThreadPool上で以降の処理を行う。他ノードであれば対象ノードにリクエストを送信する。
- shardOperationOnPrimary()にてプライマリシャードを対象にBulkリクエストを一つずつ順次処理。
- IndexShard#index()やIndexShard#delete()などで更新していく。
- プライマリの後はshardOperationOnReplicaでレプリカシャードに対して処理。
- 全てのシャードで処理が終わったらレスポンスを返却する。

Elasticsearchのコードを読んでみる② 更新編

プログラミング

備忘録第二だん更新処理

curl -XPUT localhost:9200/testindex/type1/_create -d '{"hogehoge" : "fugafuga"}'
という感じのリクエストをしてインデクスされるまでの更新処理。ざっくり

更新リクエスト処理

RestIndexAction : インデックスリクエストを処理するクラス
- client.index()を実行。めぐりめぐってNodeClient#execute()が実行される。


NodeClient : 各ノード内部のリクエストを実行するクライアントクラス
- TransportIndexAction#execute()を実行。


TransportIndexAction : インデックスリクエストをノード間で処理するクラス
- AutoCreateIndex#shouldAutoCreate()でインデックス作成有無を判定してインデックス作成処理を行う。
- インデックスを作成する場合はTransportCreateIndexAction#execute()を実行。
- ちなみにTransportActionクラスはexecute()のなかからdoExecute()を呼び出すようになっていて、TransportIndexActionなどの子クラスでdoExecute()に個別の処理を実装する感じの作りになっている


TransportCreateIndexAction : インデック生成スリクエストをノード間で処理するクラス
- 自ノードがマスターだったらMetaDataCreateIndexService#createIndex()を実行。
- 自ノードがマスターではなかったらマスターにインデックス生成リクエストを送信。マスターノードはTransportMasterNodeOperationAction.TransportHandlerでリクエストをうけ、リクエストをTransportIndexAction#execute()あたりから処理してMetaDataCreateIndexService#createIndex()が実行される。


MetaDataCreateIndexService : インデックスのメタ情報を設定するクラス
- 対象のIndexクラスやIndexServiceクラスを作成してMappingなどいろいろ設定する。
- アロケーションも行う。
- 一連の処理が完了したあたりでクラスターチェンジイベントを発行。各ノードがハンドルして対象シャードについてMetaDataCreateIndexServiceのcreateIndex()が呼ばれて同様に設定される。
- 成功したらListenerのonResponseを実行してTransportIndexActionまでもどる


TransportIndexAction
- 各シャードごとにドキュメント登録処理を行う。
- まずプライマリーシャードに対してshardOperationOnPrimary()が実行され、そこでInternalIndexShard#index()を実行。
- おわったらレプリカシャードに対してshardOperationOnReplica()が実行され、そこでもInternalIndexShard#index()を実行
- おわったらlistenerにレスポンスを渡す。


InternalIndexShard : シャードのインスタンスクラス
- InternalEngine#index()を実行


InternalEngine : 検索エンジンを操作する感じのクラス?
- LuceneのIndexWriter#addDocuments()を実行する。