May 28, 2017

ESP-WROOM-32のBluetooth Classic SPP接続に成功

GitHubのbtstackが進んでいて、ESP-WROOM-32のBluetooth Classic SPP接続に成功したので、報告する。
前回(4月25日)の時点では、接続後わずか数秒でアボートしていたが、今回は、200kpbs (もしくは250kpbs)と言う高速で安定して通信できるようになった。

ESP-WROOM-32には、3つの無線通信機能がある
・Wifi
・Bluetooth Classic
・Bluetooth Low Energy (BLE)

この内、Wifiは、無線LANそのものなので判りやすいが、Bluetooth Classic と BLE の違いが判り難い。
Bluetooth Classic は、Bluetooth 3.0以前から存在するプロトコルで、どちらかと言えば高速性を目指したもので、BLEは、Bluetooth 4.0で新設されたプロトコルで、高速性よりも低消費電力性を目指したものだ。
Bluetooth 4.0以降は、Bluetooth ClassicもBLEも包含した規格なので、ややこしい。

Wifi、Bluetooth Classic、BLEの特徴を整理すると、おおよそ、次のようになる。
・Wifi:無線LAN 周辺機と言うよりネットワークとしての接続方法。伝送速度は数Mbps以上と高速
・Bluetooth Classic 周辺機器用プロトコル。特にSPPは接続が簡単。速度は実効的に200kpbs程度
・BLE 低消費電力。周辺機器用。速度は実効的に5kbsp程度で遅い。親機専用に個別アプリを作る必要がある。

Bluetooth Classic SPP は、昔からあるプロトコルで、親機のターミナルソフトからシリアル通信できるように接続が簡単なため、良く使われてきた。ただし速度が早い分、消費電力も大きい。
一方、BLEは、新しい規格のため、Androidなら4.3以降、Windowsなら8以降でないと使えないし、親機側にいちいち専用個別アプリを作る必要があって、面倒。その代わり、低速だけど低消費電力のためボタン電池で何ヶ月も使えると言うメリットもある。

私も含めて、自作派としては、馴染みのある Bluetooth ClassicのSPP が、ESP-WROOM-32の無線通信機能の中で、最も使うことができずにいたのが、今回のbtstackで使えるようになったのが、嬉しいところだ。

さて、肝心の使い方だが、、Ubuntu 16.04 上でesp-idfが既にインストールされてるものとして、説明する。
(この辺、前回前々回の記事を参考して欲しい)
また、パッチも作った。「patch.patch.gz」をダウンロード
作業は次の通り

$ git clone https://github.com/bluekitchen/btstack.git
$ patch -p1 -d btstack < patch.patch
$ cd btstack/port/esp32/
$ ./create_examples.py
$ cd spp_counter/
$ make all
$ make flash << ESP-WROOM-32をUSB接続していれば、書き込まれる >>

これで、例えば Android なら、普通にBluetoothペアリングした後、「BT Simple Terminal」などでオープンすれば、一秒ごとに「BTstack counter (数字)」が送られてくる。(私が試したのは、Android7.0 スマホだが、Android4.2以前のスマホでも接続できるはずだ)

Ubuntuなら、前回と同じようにCUIでペアリングする(GUIでペアリングしていけないのは前回と同じ)
$ sudo rfcomm bind 0 XX:XX:XX:XX:XX:XX
$ sudo chnod 666 /dev/rfcomm0
$ kermit
> set line /dev/rfcomm0
> c
とやると、「BTstack counter (数字)」が送られてくる。(今回は安定して長時間送られてくる)

Windows10の場合、ペアリングまでうまく行くのだが、ターミナルソフトで仮想COMポートを開くとエラーになると言う不具合が残っている。

Ubuntuを親機として、「BTstack counter (数字)」の代わりに大量にデータを送るプログラムを作ったら、毎秒約25kバイトの安定した通信に成功した。毎秒25kバイトは、1バイトは8ビットなので、200kbpsなのか、仮想的なシリアル通信とすると、スタートビットとストップビットを足して1バイトを10ビットとして250kpbsと計算するのかは、わからないが、とにかく、「毎秒約25kバイトの安定した通信」を確認できたことは間違いない。200kbpsだろうが、250kpbsだろうが、Bluetooth Classic SPP接続としては、ほぼ上限値なので、大成功と言えよう。

WindowsでのSPP通信が未だできていなので、完全ではないが、AndroidとUbuntuとの通信実験に成功したので、報告した次第である。
(MACと実験していないのは、単にMAC環境が手元にないだけのことである)

| | Comments (0) | TrackBack (0)

April 25, 2017

ESP-WROOM-32のBluetooth Classic接続に一部成功

E309ESP-WROOM-32のBluetooth Classic接続に一部成功したので報告する。
GitHubのbtstackにESP32対応のブランチがある事を発見した。

やり方だが、まず、Ubuntu 16.04 上でesp-idfが既にインストールされてるものとして、説明する。
もちろん、Ubuntu 16.04 は、Bluetooth内蔵、またはBluetooth USBドングルを持っているものとする。

適当なディレクトリで下記を実行する。
$ git clone https://github.com/bluekitchen/btstack.git
$ cd btstack
$ git checkout -b esp32-freertos origin/esp32-freertos
$ cd port/esp32/
$ ./create_examples.py
$ cd spp_counter
ここで sdkconfig を下記の diff を参考に変更する
$ diff sdkconfig sdkconfig.org
32,33c32,33
< CONFIG_ESPTOOLPY_PORT="/dev/ttyUSB0"
< CONFIG_ESPTOOLPY_BAUD_115200B=y
---
> CONFIG_ESPTOOLPY_PORT="/dev/tty.usbserial-DN02B3PF"
> # CONFIG_ESPTOOLPY_BAUD_115200B is not set
37,40c37,40
< # CONFIG_ESPTOOLPY_BAUD_OTHER is not set
< CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200
< CONFIG_ESPTOOLPY_BAUD=115200
< CONFIG_ESPTOOLPY_COMPRESSED=y
---
> CONFIG_ESPTOOLPY_BAUD_OTHER=y
> CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=1000000
> CONFIG_ESPTOOLPY_BAUD=1000000
> # CONFIG_ESPTOOLPY_COMPRESSED is not set
ここで、EPS-WROOM-32をUSB接続し、BOOTボタンを押しながら、リセットボタン(ENボタン)を押す
$ make all
$ make flash
プログラムを書き込んだ後、kermit等のターミナルソフトで/dev/ttyUSB0 を速度 115200 で接続して、もう一度リセットボタンを押す

注意すべきは、ここでデスクトップ右上のBluetoothマークをクリックすると、EPS-WROOM-32 が見えるのだが、GUIではペアリングしない事だ。GUIでペアリングすると、以降の接続とテキスト伝送ができないので、GUIでペアリングしてしまった場合はペアリングを解除する。GUIからは、ESP-WROOM-32のBluetoothのBDアドレスを記録するにとどめる。

次にCUIでペアリングする
$ sudo rfcomm bind 0 XX:XX:XX:XX:XX:XX
$ sudo chnod 666 /dev/rfcomm0
もう一つ kermit を起動する
$ kermit
> set line /dev/rfcomm0
> c
とやると、上手くすると、
BTstack counter 0001
BTstack counter 0002
と言うように、SPP 接続してテキストが送られてくる
残念ながら、上手く行っても2行か3行で、ESP-WROOM-32側のプログラムはコアダンプしてしまう。運が悪ければ、接続する以前にコアダンプする。
コアダンプした様子は、/dev/ttyUSB0に接続したKermitでモニターできる。
諦めずに何度も試すと、上手く行くこともあるだろう。

このように、まだまだ、ESP-WROOM-32の Blutooth Classic の SPP 接続は不完全かつ不安定な状態で実用には程遠い。
しかし、少なくとも ESP-WROOM-32が短時間であっても曲がりなりにも Blutooth Classic 接続ができたことが重要であると思ったので、ここに報告した。
GitHubのbtstackも進歩が速いので、放っておいてもいずれは解決するかもしれないが、この書き込みが何かの役に立って解決の糸口が見つかるようになれば、幸いである。


| | Comments (2) | TrackBack (0)

April 15, 2017

IoTはぢめました ESP-WROOM-32 BluetoothでLEDチカ

E3081年以上、ブログの更新をサボっていて申し訳ない。

ESP-WROOM-32でBluetooth BLEでLEDチカに成功したので、報告する。
AndroidスマホとBLEで接続し、ESP32に付けたLEDをスマホからON/OFFコントロールできると共に、ESP32に付けたプッシュボタンのON/OFFをスマホ側からモニターできるようになった。

ESP-WROOM-32は、秋月電子でも僅か700円で売っている 240MHz デュアルコア 520kB RAM のマイコンの入った Wifi Bluetooth BLE 内蔵のモジュールである。
USBシリアルインターフェースまで付いた開発ボードが同じく秋月電子で1480円で販売しているので、半田付けの苦手な方は、こちらの方が良いかも知れない。

さて、今回の開発環境は、ハード的には 写真のようにユニバーサルボードに配線した ESP-WROOM-32 と Android 7.0、プログラム開発用として、Ubuntu 16.04 のパソコンを使っている。
なお、ESP-WROOM-32のプログラム開発環境は esp-idf 、Android のアプリ開発環境は Android Studio を使っている。WindowsやMAC その他の環境でも同様に開発できると思うが、確認を取っていないので、各自工夫をして欲しい。

ESP-WROOM-32の配線だが、ネット上に一般的にアップされているプログラム書き込み用にシリアルインターフェースを半田付け接続しただけのものだ。ただし、IO26に 5.1kΩ経由で LED に接続し、その先を GNDに落としている。
確認はしていないが、秋月電子で1480円で販売している開発ボードでも、IO26にLEDを配線したら、同様の事ができるであろう。

私が作ったプログラムだが、パッチにしている。
「patch_20170415.gz」をダウンロード

さて、まずは、ESP-WROOM-32のプログラムだが、 Ubuntu 16.04上での esp-idf 開発環境は下記を参考にして欲しい。
ubuntuからESP32にbluetooth接続して信号を送受信する方法
上記リンク先では、 esp-idf に含まれる サンプルの gatt_server のビルド方法を説明しているが、このプログラムを改良する。なお、上記リンク先と現在の esp-idf とはディレクトリ構成が異なっているので注意して欲しい。
(esp-idf は日々進歩しており、今回は 2017年4月15日 朝に git clone したesp-idfに対応しているが、いつまで使えるかは定かではない)

$ git clone --recursive https://github.com/espressif/esp-idf.git
$ patch -p1 -d esp-idf < esp32_ble_led.patch
$ cd esp-idf/examples//bluetooth/gatt_server/
$ make all

青い選択ダイアログが表示されたら、左右カーソルで「Exit」を選択し、エンター押すこと
次に、ESP-WROOM-32をUSB接続し、BOOT0ボタンを押しながら、リセットして、

$ make flash

でプログラムを書きこめる。
リセットすると、LEDが0.4秒毎に点滅する。
ここまでだと単なるLEDチカだが、次はスマホからBluetooth 経由でコントロールする。

スマホのプログラムは、Android Studio を使ったが、Android Studio のインストールの仕方は、ネット上に沢山あるので、それを参考にして欲しい。

プログラムは android-BluetoothLeGatt からを android-BluetoothLeGatt-master.zip をダウンロードして使う。
このサンプル・プログラムは古く、Android 6.0以降では動かない。そこで、私の作ったパッチは、Android6.0以降でも動くように改良し、さらにLEDのコントロール部分を入れている。

$ unzip android-BluetoothLeGatt-master.zip
$ patch -p1 -d android-BluetoothLeGatt-master < esp32_ble_led_android.patch

これを Android Studio でインポートして、「Build」「Build APK」
android-BluetoothLeGatt-master/Application/build/outputs/apk/Application-debug.apk が生成物で、これをAndroidのスマホのSDなどに入れる
スマホで、ファイル閲覧アプリで、APKをクリックして、インストールする。場合によっては「提供元不明のアプリ」のインストールを許可する必要がある
インストしたアプリ「BLE」を開くと、位置情報へのアクセスを許可する。(Android 6.0より古い場合は位置情報アクセス許可する必要は無い)

スマホで「BLE」を起動すると、スキャンモードになる。近距離で ESP-WROOM-32を動かしておくと、画面に「ESP_LED_BUTTON」と表示される。
「ESP_LED_BUTTON」をクリックすると、接続され、別画面が表示される(冒頭の写真)

一番下の「LED Control」をクリックすると「LED ON/OFF」が表示されるので、更に、これをクリックすると、ESP-WROOM-32のLEDがクリックするたびに交互に ON/OFF する。
10秒以上「LED ON/OFF」をクリックしないと、再び 0.4秒毎にLEDが点滅するモードに戻る。

下から2番目の「Push Button Sate」をクリックすると「get Push Button Sate」が表示される。これをクリックすると、ESP-WROOM-32のIO0に接続した押しボタン(いわゆるBOOTボタン、開発ボードにも付いている)が押されているかが、スマホの上の方に表示される。
ESP-WROOM-32のボタンを押すと直ぐにスマホ上の表示に反映される訳ではなく、「get Push Button Sate」を押すときにだけ、情報を取りに行くだけなので、注意して欲しい。

Androidのプログラムは、一定間隔毎にESP-WROOM-32のボタンのON/OFF情報を取りに行くように改造することもできたのだが、むしろ、余計な飾り付けをしない方がプログラミングする人の役に立つと思ったので、必要最低限のプログラムに留めた。

正直、Bluetooth BLEのプログラミングは初めてなので、BLEの流儀的に今回のプログラムが正しいか全く自信がない。
が、何かの役に立てれば、幸いである。

追記
E3082秋月電子で1480円で販売している開発ボードでも試してみた。ブレッドボードに挿して、IO26に LED を接続し、5.1kΩ経由でGNDに落とせば、全く同じプログラムが実行できる。これなら、半田付けは要らない。


| | Comments (0) | TrackBack (0)

December 06, 2015

読書の冬

E307読書の「秋」も過ぎてしまって、今や読書の「冬」だが、超お薦めの必読書をリストアップする。全て私が読んだ上で選んだ本である。
なお、いずれも科学的解説書かノンフィクションで、フィクションは入っていないので、SF小説などはない。

ジャンル特A「義務教育の必読書にすべき本」
・「暗号解読」 サイモン・シン著
文句なしの最優良図書。私が生涯読んだ中でベスト1。
冗談じゃなくて、「暗号解読」は義務教育で知っていれば、日本の将来がより良くなる暗号の知識が詰まっている。
例えば、マイナンバー。
現在のマイナンバーでは、ナンバーが漏れたら悪用されてしまう。
もし、マイナンバーの仕組みを変え、暗号化し本人にすら本物の番号が判らず、給料支払い用に毎回ナンバーを作り、漏えいしても被害を受けないようにできる。
簡単ではないが、良~く考えたらできそう。
しかし、現状では国民の大半が暗号技術を理解してないから、暗号を使うやり方は選ばれないだろう。
義務教育で「暗号解読」読み、国民の過半数が暗号技術を理解いれば、暗号技術を使ったマイナンバーも使えるのに。
要は、暗号技術は、算数や昔のソロバンと同じ。交換則とか結合則とか、細かい理論は知らなくても、足し算引き算掛け算割り算のやり方や性質を知っているかどうかで社会や経済の回り方が違う。それと同じ。
サイモン・シンは、他に「フェルマーの最終定理」「ビッグバン宇宙論」などがあり、いずれも素晴らしい書籍だが、その中でも「暗号解読」は一番素晴らしい。

・「伽藍とバザール」 エリック・レイモンド著
この本は、普通に出版されているのではなく、ネット上でオープンでフリー(無料)で公開されているもの。
科学技術は一人で考えては駄目で、多くのアイデアが融合し新しいアイデアへと広がる。己のアイデアを秘密にすると短期的には得だけど、長期的にはアイデアをオープンにした方が自分も含め皆が得になる。
秘密や競争はゼロサムで、オープンはプラスサムなので究極的に皆が豊かになると言う事を「伽藍とバザール」は教えている。

ジャンルA「絶対に読むべき本」
・「銃・病原菌・鉄」 ジャレド・ダイアモンド著
私の生涯のベスト2の優良書。
なぜ、義務教育の必読書にしなかったかと言うと、中学生には少し難しいかと思ったから。年号覚えるだけの学校の歴史より、よほど勉強になる。
人の社会が、どのように進歩してきたかを伝える。

・「暴力の人類史」 スティーヴン・ピンカー著
殺人や戦争と言った暴力のデータの変遷から科学的な検証の元に、国家の成立とか、国同士の抗争・戦争の歴史を書いている。
選挙に行く前に読みたい本。

・「経度への挑戦」 デーヴァ・ソベル著
科学と技術を志す者は、必ず読むべき本。
下手なハードSFより、ずっとセンス・オブ・ワンダーを感じる。
時計と言う技術で不可能に挑戦し、社会を豊かに豊かにする。
技術者ならジョン・ハリソン、科学者ならエドモンド・ハレーを見習いたい。

・「暗号技術入門 第3版 秘密の国のアリス」 結城浩著
他の書籍は外国の人の著作だが、この本だけは例外的に日本人の作。
もう一つ例外があって、この本だけ私は読んでいない。正確には第2版は読んだが、今年の9月に出た第3版は読んでいないと言うもの。
暗号技術をちゃんに勉強するには最適の本。
結城浩には、他に「数学ガール」と言う名シリーズがある。


これら以外に、必読書と言うものがあったら、推薦して欲しい。
このブログのコメントでも、Twitterで @madnoda 宛てでも良い。
ただ、私が読み通し、優良書と思うまで、このリストには追加しないので、遅くなっても勘弁してもらいたい。

| | Comments (2) | TrackBack (0)

August 08, 2015

クラウド+完全準同型暗号+ビットコイン=?

E3061最近、知ったのだが、ガートナー、「先進テクノロジのハイプ・サイクル: 2014年」を発表によると、クラウド・コンピューティングは既に『幻滅期』に入っているらしい。(この情報は昨年9月のものだが、今年の分は未だ発表されていないので、一応最新版だ)
なぜ、クラウド・コンピューティングが『幻滅期』なのかを想像するに、やはりセキュリティの問題だと思われる。

クラウド・コンピューティングとして、普通考えられるのは、1つ目のイラストのように、サーバー側でワープロや表計算ソフト等のアプリを動かし、端末側とはネットワークを介して暗号化した情報をやり取りする方法だ。
この方法だと、サーバーの内部では暗号を解読した平文になっており、サーバーを管理する企業が信頼できないと情報が漏洩してしまう。
従って本当に秘密にしなければならない情報を扱うのはクラウド・コンピューティングは使えない。
もしサーバーの管理企業が十分に信頼できる場合、そこのサーバーに処理が集中してしまうと言う問題が発生する。
E3062一方、2つ目のイラストのように世界中にある暇にしているコンピューターを使って分散処理をしようとすると、各コンピュータの中の処理は平文であり、ほとんどの人が善意でも、たった一人でも悪意を持つものが居れば、そこから情報が漏洩してしまうことになる。

結局、クラウド・コンピューティングは、少数の『信頼できるサーバー』に処理が集中し、世界中に分散するコンピュータ処理能力の有効利用にならない。
このことが、クラウド・コンピューティングに対する『幻滅』だと思われる。

ところが、最近になって『完全準同型暗号』と言うものがあることを知った。詳しくは、MITが分散型クラウドコンピューティング『Enigma』プロジェクトを始動に書いてあるが、要は『暗号化したままアプリでも何でも処理ができる』と言う技術である。
E3063『完全準同型暗号』なら、暗号化したまま『整数の加法と乗法』を行い、最後の結果のみを『解読』すれば、計算の結果を知ることができる。つまり、暗号を解読する『鍵』を持っている者以外は、何を処理したか、全く中身が判らないまま、処理ができるのである。
と言っても、処理が『整数の加法と乗法』じゃあ、大した事はできないと思うかも知れない。しかし、『整数の加法と乗法』ができれば、『チューリングマシン』が構成できるのである。『チューリングマシン』が構成できるのであれば、ワープロであろうが、表計算ソフトであろうが、どんなアプリの処理もできるのである。

『完全準同型暗号』の技術を使えば、セキュリティを守ったまま、クラウド・コンピューティングで分散処理ができるようになるのである。

と言っても、『暇なコンピュータの処理能力』を提供してくれる人が居るかが、キーポイントだ。

そこで思い付いたのが、『ビットコイン』だ。
現状のビットコインは、『マイニング』と言うブロックチェーンを作るだけのために大きな計算能力を使っているが、それだけでは電力の浪費のような気がする。
そこで、『暇なコンピュータの処理能力』を『完全準同型暗号』の『クラウド・コンピューティング』に提供してくれた人には、ビットコインのような『仮想通貨』を作って、それを使って『報酬』を得られるようにすれば良いだろう。

と、思い付いたのは良いけど、どうやれば『仮想通貨』と『完全準同型暗号のクラウド・コンピューティング』を結びつけるかと言う課題の解決は、これからだ。

| | Comments (0) | TrackBack (0)

May 24, 2015

ベイマックス 野田篤司の勝手な解釈

E305ディズニーのアニメ映画「ベイマックス」は極めて素晴らしい作品だ。私ロードショー公開中の2月頭に映画館で観て感動してしまった。その時に映画「ベイマックス」に込められたメッセージを私なりに解釈したのが、本文章である。

なお、この文章は、その性格上、映画「ベイマックス」のネタバレを含むので、注意してもらいたい。ネタバレによる被害(?)を可能な限り避けるため、この文章を書いてから何カ月も寝かしておいたくらいだ。ロードショー公開も終わり、4月24日にDVDやブルーレイの販売やレンタルも開始してから、1カ月も経っているので、もう良いだろうとブログでの公開に踏み切った。

以下、ネタバレを含むので注意!!









ベイマックスは「兄タダシを亡くしたヒロの立ち直り」を描いたような単純なアニメではない。と、2014年11月24日放映された NHK「魔法の映画はこうして生まれる~ジョン・ラセターとディズニー・アニメーション」の中でも言っている。隠された多くのメッセージが込められているのだろう。それについて、私なりの解釈を話そう。

映画「ベイマックス」は、少なくとも5つの階層に折り重なったメッセージが含まれている・と私は解釈している。
5つの階層のうち、第1と第2の階層は表面的なものなので、映画を見たら誰でも直ぐに判るだろう。第3以降の階層は良く良く考えないと判らないようになっている。まあ、私の深読みのし過ぎかもしれないが。
また、私が見逃している第6層以降の階層もあるかもしれないが。

【第1階層 日本アニメーションへの挑発】
最も日本アニメーションが輝いていた1970年代~80年代を彷彿させる『楽しい』アニメーション映像が連続している。例をあげると、乗用車によるカーチェイスシーンだが、これは、ルパン三世カリオストロの城のクラリスの2CVとルパンのフィアットのカーチェイスシーンを彷彿させる。
いまや暗くなってしまった日本アニメーション界に対して、現代アメリカアニメーション界はこんなに明るく輝くアニメーションを作れるんだよと言う事を示し、日本アニメーション界も楽しいアニメを作れと『挑発』している。

【第2階層 日本アニメーションへの愛】
明らかにエグゼクティブ・プロデューサーであるジョン・ラセター氏は、日本アニメーションを愛している。(第1階層 の『挑発』も『愛』の裏返しである)
そこここに、日本アニメーションへの愛、パロディ・オマージュが感じられる。
最も典型的な例が『ロケットパンチ』だ。ロケットパンチは、オリジナルであるマジンガーZ以降、幾多のアニメ・映画でパロディやオマージュが作られている。
しかし、未だかつて、ベイマックスのロケットパンチほど、愛が込められたロケットパンチは見たことが無い。これは、単なるパロディを超えており、日本アニメーションへの愛がなければ成し得なかったレベルに到達していると言わざるを得ない。

なお、第1階層 と第2階層 は、その性格上、1970年代~80年代の日本アニメで似たようなシーンを見た覚えがあるのは当然である。似たようなシーンがあるのはわざとであって、それでなおベイマックスのアニメ技術が遥かに上を行く状態であることに注意すべきだ。1970年代~80年代の日本アニメに同様のシーンがあることで、ベイマックスを、単なるパロディ映画と思ってはいけない。そんな薄っぺらい内容ではない。

【第3階層 未来を担う若者へのエール】
映画ベイマックスには、魔法はない。呪文も魔法のアイテムも無い。それどころか、修行も精神鍛錬も無い。妖精も妖怪も怪獣も出ない。
最近の映画にしては珍しく、未来科学技術を肯定的に表現している。
悪人も出ない(キャラハン教授は愛娘を失った悲しみのあまりの凶行で、根っからの悪人ではないだろう)。戦争も海賊も出ない。

戦争や海賊や魔法が無くても人生は楽しい。
訳の分からない魔法ではなく、人生は自分の創意工夫で切り開くことができる。ヒロは、空手の修行なんてせず、空手動画から、身体の動きを読み取ってベイマックスに書き込んだだけだ。

主人公が何かをなすとき、従来のアニメでは、魔法や修行など、実際には手に入らないものを手に入れることが必要だった。これは裏返すと、アニメを見ている観客に対し「あなたが何かをなそうとしても、何もできないんだよ。魔法なんて無いんだからな」と言っているのに等しい。
これに対し、ベイマックスでは、主人公ヒロは何も不可思議なものを手に入れていない。必要な知識は全てネットから手に入る(先の空手の動画や、キャラハン教授の論文などだ)。その知識に、自分の創意工夫を付け加えることで、自分がやりたいことを実現する。これは、アニメを見ている観客、特に若者に対して。「君たちはやりたいことを実現できる。必要な知識は、探す気になれば見つかる。それに創意工夫を付け加えれば良いのだ。」
この考え方は、科学技術の基本だ。その基本を踏まえて、映画「ベイマックス」は若者にエールを送っている。
(私は元々、人間ドラマとやらが大嫌いなのだが、ベイマックスのような形で極力「人間ドラマ」を排することができるとは、予想できなかった)

【第4階層 現代日本へのエール】
タダシ ハマダ。漢字名は「浜田正」だと思ったら、「浜田義」の様だ。つまり「正義」なのだ。

タダシの行動原理は、一分のブレもない。終始一貫して「他人を助ける」それに徹している。文字通り我が身に変えても他人を助け守る。それがタダシの正義なのだ。
タダシは、登場人物中、最も精神的に成熟している。

それに対し、技術的・知識的な面ではどうだ?
サンフランソウキョウ工科大学のキャラハン教授に学び、ロボットを作っているくらいだから、一般人よりは技術レベルは高い。しかし、弟ヒロとは比べると遥かにレベルが低い。それは、ベイマックスの開発記録を見ても明らかだ。何十回もバグを出し続け、やっと正常に動き始める。開発完了したベイマックスの、ヨチヨチ歩きを見ても、それほど高い技術力があるとは思えない。
精神的は大人、技術力や知識は子供、それがタダシだ。

弟ヒロ ハマダ。ヒロは弘か? 英語の HERO(英雄)か? もしかすると、ヒロはニックネームで、本名は英雄(ひでお)かもしれない。
ヒロの技術力は高い。映画作品中、最初から最後まで頂点だ。他の登場人物、キャラハン教授やクレイに至るまで、ヒロの技術力には及ばない。
その開発力は驚異的で、一切バグを出さない。ヒロに渡った後のベイマックスの驚異的な進化を見ただけで、ヒロとタダシの技術力の差は明らかだろう。

しかし、精神的には未熟だ。有り余る才能・技術力・知識を何に使った良いか判らない。ロードファイトに時間を潰し、ベイマックスを強化した後も、時には暴力に走るなど、精神的に不安定だ。
精神は子供、技術力は大人、それがヒロだ。

タダシとヒロ。
この二人が意味するのは何だろう。
映画を見た後しばらく考えた。数日経って判った。

ヒロは、現代日本の象徴だ。
バブル崩壊後、自信を喪失し、何をすれば良いのか迷い続けている。
技術も知識も才能もある。しかし、何が正しいのかわからない。

タダシは、過去の偉大なる日本の象徴だ。
タダシは「サムライ」の精神を持つ。
常に理想を高く、己の正義を貫く。
自分の知識・技術・才能が不足していることも自覚しており、それを改善すべく、勉学に励み、研鑽を怠らない。

タダシと言う「正義の精神」を失った、現代日本の「ヒロ」は何をすれば良いのか判らない。ロボットファイトに無駄に才能を使ったり、時には感情的に暴力をふるおうともする。

それをただすのは、タダシの学友たちだ。
学友には白人も黒人も黄色人種も居る。
若い彼らはアメリカの象徴だ。(年上の執事は、英国などヨーロッパの象徴だろう)

アメリカと言う国が、迷っている日本に対し、「君には才能も技術も知識もある。何を迷うことがあるか。正しい道へ進むんだ」とエールを送っているのが、この映画の4つ目のテーマだ。

【第5階層 現代アメリカの自戒】
ベイマックスの本編が終わり、エンドロールの後、フレッドが自宅に帰り、父親の部屋に向かって「俺は正しいことをしたよね」とつぶやき、部屋から出てきた父親が「息子よ、語ろうではないか」と言ったラストシーンがある。

多くの人は、このシーンを「なんのこっちゃ」と思ったかも知れない。
それもそのはず、このシーンは我々日本人に向けられたものではないから。このシーンはアメリカ人の観客に向けられたメッセージなのだ。

フレッドとは、何だろう?
彼は学生ですらない。陽気でおちゃらけていて、親が金持ちで生活に困らない。
彼は現代アメリカ、特にベトナム戦争の後のアメリカの象徴だ。過去のアメリカの遺産で豊かで、表面的には陽気で楽しい生活を送っている。
日本のような遅れた国に対して、正義とは何かを教える指導をする。
しかし、その「正義」が本当に正しいのか?
自分たちのしたことが正しいことなのか?
そう言った自信が無くなっている。

フレッドの父親は、1960年代以前の強いアメリカの象徴だ。
(この父親スパイダーマンなどの原作者スタン・リーなので、フレッドの独白を50年代のアメリカンコミックヒーローを、21世紀風にアレンジして作ったベイマックスを、これで正しかったのかと尋ねているようにも取れるが、私は親子を過去と現代のアメリカの象徴と考えた)
第二次世界大戦を勝ち、人類を月に送ったアメリカ。自信に満ち、正義を世界に示したアメリカ。それがフレッドの父親だ。

その過去の栄光に対し、現在のアメリカは迷いがある。
ベトナム戦争以降、湾岸戦争など、本当の正義は何なのか?自分たちのしていることは正しいことなのか?
この問いに答えはない。だから「息子よ、語ろうではないか」で終わっているのだ。

以上が、映画に込められた5つの階層のメッセージだが、それ以外にもトピックがある。

【番外その1 伽藍とバザール】
「伽藍とバザール」を知っているだろうか?
もし読んでいないなら、ネット上にあるので是非読んで欲しい。
http://cruel.org/freeware/cathedral.html
「伽藍とバザール」は Linuxなどオープンソースの開発の方法の基本的思想である。
簡単に言えば、「バザール」はオープンソースを示し、「情報を公開して、大勢でワイワイと意見と知恵を出し合えば、ずっと良い物を作れる」と言う思想だ。
一方「伽藍」は従来式の開発方式で、管理主義・秘密主義・権威主義などを示す。

ジョン・ラセターは、オープンソースの人であることは間違いない。
オープンソースUNIXの草分け、BSDのマスコットのデーモン君の初代イラストはラセター氏自身の筆によるものだし、Linuxのディストリビューションの雄、Debianの代々のコードネームはラセター監督のトイストーリーのキャラクターから取られている。(Debian Linux リリース初代 V1.1はバズでありV3.0はウッディだ。その上、全世代のDebianを通してのDebianのロゴは、バズ・ライトイヤーのあご鬚を上下さかさまにしたものだ。ちなみに、バズ・ライトイヤーは、ラセター自身をモデルにしている)

映画「ベイマックス」は、2つの意味で「伽藍とバザール」を示している。

一つは、ベイマックスと言う映画自体の作り方だ。これは、NHK「魔法の映画はこうして生まれる~ジョン・ラセターとディズニー・アニメーション」を見て判ったのだが、一つの映画を、ほぼ完成状態で、他の作品の映画監督に見せて、ワイワイと意見を出すこと、それが「バザール方式」だ。ラセター氏にとって、旧来のディズニーが「伽藍」、ピクサーと新生ディズニーが「バザール」なのだろう。

もう一つは、作中に現れる。
ヒロの開発方式が「バザール方式」だ。情報を公開し、色々な人が創意工夫を付け加えることでより良い物が作れる。
実は科学技術は、本来「バザール方式」なのだ。現在の秘密主義は科学者や技術者自身が望んでいることではない。政治家とか経営者とか、そう言う管理をしたい人が秘密主義を望んでいる。
そう言った意味で、軍がクレイに依頼して開発していた物質転送装置は「伽藍」の象徴。秘密主義と官僚主義、見栄と欲望の「伽藍」は崩壊していく。

【番外その2 東工大】
サンフランソウキョウ工科大学のモデルは、東工大(東京工業大学)だ。
キャンパスの芝生の雰囲気も似ているし、キャラハン教授のマークも東工大の校章も「つばめ」で非常に似ている。

ヒロが「マイクロボット」を見せる発表会は、東工大で毎年行われる技術公開会にそっくりなのだ(映画の中ほど派手ではないが)。

また、東工大にはロボットの日本の権威 広瀬茂男教授が居る。残念ながら、広瀬先生は2年前に東工大を定年で退職されたが、広瀬先生やその師の森政弘先生など、常に東工大は日本のロボット技術のトップである(高専ロボコンも森先生が始めたことだ)。

つまり、サンフランソウキョウ工科大学は東工大がモデルで、キャラハン教授は広瀬先生がモデル、そして、タダシたちは、広瀬先生の研究室でロボットを作っている学生たちがモデルなのだ。

ラセター氏が、東工大に来たことなんかあるのか・・・と考えていたら、思いついた。

ハードウエア界のオープンソースである Maker Faire Tokyo は、現在は国際展示場や科学未来館で開催されているが、4年前まで毎年、東工大の体育館で開催されいた。
東工大の体育館は、キャンパスの小高い芝生のその先、まさにヒロがマイクロボットを見せる発表会を行った会場と同じ場所にある(ちなみに東工大の体育館は、あんなに近代的な建物ではない。東工大では図書館が近代的な建築物だ)

オープンソースに興味のあるラセター氏が日本に来た時、Maker Faire Tokyo が開催されていたら、東工大に来ていてもおかしくない。東工大に来たなら、ロボットの権威である広瀬先生に会っていてもおかしくない。
その時の東工大の雰囲気が、映画作品中のサンフランソウキョウ工科大学に反映されていると考えてもいいだろう。
(ちなみに、私自身、東工大の非常勤とは言え准教授なのだが、広瀬先生の引退された現在の東工大には、サンフランソウキョウ工科大学ほど面白そうに思えないが)


とまあ、好き勝手に、私の憶測を書いたが、どこまで本当なのかは、何の保証もない。

| | Comments (0) | TrackBack (0)

April 02, 2015

御免なさい

E304昨日の「仮想通貨(Bitcoin)は、銀河を駆けるか?」は、もちろんエープリルフールのネタである。御免なさい。
でも、エープリルフールのネタとは言え、嘘ははいっていないだが。

ところで、「惑星間通貨 InterPlanetary Coin : IPC」や「恒星間通貨 InterStellar Coin : ISC」を考えていたら、同じような仕組みが地球上でも役に立たないかって思い始めた。それが、「分散通貨 Distributed Coin : DBC」だ。(最初 Regional Coinと考えていたけど、「地域通貨」の意味になるので、ごく限定された地域でしか通用しない通貨のようなイメージなので、やめた)

例えば、山登りを考えよう。携帯電話などの電波の届かないくらいの山奥だ。
そこで、二人の登山者が出会った。一人は水も食料も無くし、もう一人は水と食料を持っている。水と食料の無い登山者は金銭的に裕福で、水と食料を千円で買うことにした。(こう言う場合、人道的には無料で水と食料を分け与えるべきだ・・と言うツッコミはなし。道徳の話をしているのではなく、経済活動の事例なのだ)

従来型通貨、つまり紙幣なら、千円札を渡せば、それで商談成立。めでたしめでたしである。

ところが、Bitcoinが従来型通貨に取って代わってしまうと、この商談は成立しなくなる。前回も話したように Bitcoin は 10分間の間に通信ができるところに居ないと成立しないシステムなので、携帯電話などの電波の届かない山奥では使えないことになる。

前回も書いたが、公式ソフトである Bitcoin Core は、ノートパソコンにもインストできる。たぶん最小限の構成は、Windows 8.1 の 8インチのタブレットPCだろう。実際、私のタブレットPCにもインストしてある。今や 35GB にも膨れ上がったブロックチェーンも含めて、たった 350グラムのタブレットPCで立派に動いている。

ブロックチェーンが 35GB もあるので、iPhoneやAndroidなどのスマホでは無理だが、最低限が私の8インチ タブレットPCで、それ以上のストレージに余裕のあるノートPCなら、Windowsマシンだろうが、MACだろうが、Linuxだろうが、Bitcoin Core を走らせることは可能だ。(スマホでも使える Bitcoin Wallet があるだろう・・と言われそうだが、それらは、SPVクライアントと言い、ブロックチェーンの全てをダウンロードするのではなく、ダイジェストだけをダウンロードしている。全てのブロックチェーンを持っていないため、マイニングなど本来 Bitooin ノードが持つべき機能を全て持ってはいない)

仮に、登山者2人が、2人ともノートパソコンもしくはタブレットPCを持っていて、その2台のPCに Bitcoin Core がインストしてあり、ブロックチェーンもダウンロード済みで、その2台のPCが無線LANであろうが、有線LANであろうが、ネット接続できれば、最低限の環境が整う(無線LANで、2台のPCを接続するのは、意外と簡単で、ちょっと込み入った操作が必要だが、少なくとも Windows 8.1 なら無料でできる)

マイニングの難しさを、2台のコンピュータで平均10分で行えるように調整したら、二人の間での取引はでき、マイニングして、決済することができる。これは、前回、IPCやISCのところで説明した通りだ。

ところが、山を下り、インターネットに接続した途端、2人の間の取引(トランザクション)は消えてしまう。ブロックチェーンは、最も長い物が正当と見なされ、短いブロックチェーンは捨てられてしまうからだ。こでも前回説明した通りだ。

Bitcoin は、ノートPCが2台あれば構成できるシステムなんだが、その2台だけのローカルな環境で決済した取引(トランザクション)は、グローバルな環境に接続した途端、消えてしまうと言う仕組みであることを理解してもらえただろうか?

CVSに対して、Gitが行うように、一旦分離したブランチを再びマージする方法は無い物だろうか?
少なくとも、現状の Bitcoin では、1つの長いブロックチェーンだけしか正当なものと見なさない仕組みなので、ブランチは許されない。

どうやれば、複数のブロックチェーンを分散して、なおかつ正当性を確保することができるのか?
これは一朝一夕で解決するほど簡単な問題ではない。2人の登山者のような短いブロックチェーンの正当性を、如何に担保するかが最大の問題になる。

もし、短いブロックチェーンの正当性を担保できる方法があれば、スマホにも正式なノードを入れることができる。現状のSPVクライアントのようにマイニングができない Wallet ではなく、フルシステムのノードがスマホで動くようになる。

そもそも、何故あんな巨大なブロックチェーンが必要なんだ?
自分の財布に千円札が入っていた場合、その千円札の前の所有者が誰だったのか、さらにその前の所有者が誰だったのか、気にする人が居るだろうか?
巨大なブロックチェーンは、その全てが記録されている。それどころか、自分が持っていも居ない、見たこともない人が、Bitcoin が始まって以来の6年間、誰が何時どう使ったの全ての記録が入っている。

自分に必要な ブロックチェーン だけを切り出せば、コンパクトになるに違いない。スマホで十分に扱える程度の大きさになるだろう。

先ほどの例なら、登山者の2人はノートPCではなく、それぞれ、スマホを持っていれば十分になる。
二人の間での取引は、2台のスマホでマイニングできるだろう。そうすれば、取引完了だ。

もちろん、山を下りた後、二人の間の取引が、それを記録したブロックチェーンが正当であることを担保し、グローバルなブロックチェーンに取り込まれなければならない。それは、「Proof of Work 」や「マイニング=ナンス付きハッシュ」と言ったBitcoinの根幹自体をひっくり返すことになるかもしれない。

このためには、「小集団の取引(トランザクション)を記録した短いブロックチェーンの正当性を如何に担保する」か、それが最大にして、唯一の課題だ。


それを解決することが、「分散通貨 Distributed Coin : DBC」の目標である。

(余談:山奥であろうが、太平洋の真ん中であろうが、人工衛星を使って通信できるようにすれば、現状の Bitcoin の仕組みでも、そのまま使えると言う意見もあるだろう。しかし、そのためには多数の衛星を打ち上げる必要があり、巨額の設備投資が必要になる。そのために必要な衛星は、衛星高度にもよるけど数千基必要であり、衛星とロケットのコストから考えて数千億から数兆円の初期投資が必要になる・・・って、これってGoogleがSpaceXに融資した内容だよね。って言うか、そのものズバリだと私は睨んでいる)

| | Comments (0) | TrackBack (0)

April 01, 2015

仮想通貨(Bitcoin)は、銀河を駆けるか?

E303これから始めたいなあと思っている事を書く。
仮想通貨だ。つまり、Bitcoinのようなものだ。
『Bitcoinのようなもの』と持って回った言い方をしたのは、Bitcoinのようであっても、Bitcoinそのものではないからだ。

賛否両論あるだろうが、Bitcoinをはじめとする仮想通貨は大きな可能性を秘めている。もちろん、生まれて6年しかたたないBitcoinは、まだまだ未熟なところがあり、プログラム的にも運用上も課題が残っている。現状のBitcoinそのものが未来永劫普及し標準となることは、むしろ最もあり得ない将来像で、多々ある問題点を克服したBitcoinの改良バージョンか、Bitcoinにとって代わる新たな仮想通貨が標準になるか、そのどちらかになりそうな気がする。いずれにしろ、Bitcoinの改良型もしくは、その子孫の仮想通貨が、従来型通貨に代わることは間違いないだろう。

さて、ここからが本題なのだが、Bitcoinの仕組みを調べていくうちに、私が思い描いている将来のシチュエーションでは使えないことが分かった。それは『宇宙での生活』である。

ご存知かも知れないが、Bitcoinの仕組みは、取引(トランザクション)を採掘(マイニング)と言う作業を経て、記録(ブロックチェーン)に追加することで成立する。この時、従来型通貨のように集中的に管理する中央銀行が存在せず、Bitcoinに参加する人々が皆公平に分散的にマイニング作業を共同して行っていることが仮想通貨の大きな特徴である(「共同」と言うより「競争」に近いが)

「採掘(マイニング)」と言うネーミングを使っているので、何やら地面に穴を掘って金の鉱脈を探しているような怪しげな雰囲気がするが、実際はそうではない。約10分間に世界中で行われた取引(トランザクション)を集めて、それに「ナンス付きのハッシュ」を計算しているだけだ。通常の「ハッシュ」は作成するのも簡単だし、それが改竄されていないか検証するのも簡単。それに対し、「ナンス付きのハッシュ」は、作成するのは大変だが、検証するのは簡単になっている。作成するのが大変な「ナンス付きのハッシュ」を使っているのは偽造を防ぐためだ。
世界中のマイニングをしているコンピューターが平均して、10分間で作成できるようにナンスの大きさを変えて、「ナンス付きのハッシュ」の作成難易度を調整している。そして、最も早くマイニングに成功したノードが、報酬として25ビットコイン(1ビットコイン=3万円とすると報酬は75万円となる)が支払われる。この報酬のために、世界中で競い合ってマイニングが行われているのだ。

公式ソフトである Bitcoin Core は、ノートパソコンにもインストできる程度のものであるが、同じソフトが世界中で動いて、それらがネット上で協力しあって、Bitcoin ができている。Bitcoin Core トランザクションの記録であるブロックチェーンの管理を行ったり、送金や受け取り、秘密鍵や公開鍵であるアドレスなどの管理を行う。もちろん、Bitcoin Core でマイニングもできる。まあ、ノートパソコン程度では、計算能力が小さすぎて、報酬を得ることは事実上不可能だろう。だが、可能性はゼロではない。宝くじよりも低い確率だが、ノートパソコンでのマイニングで報酬を得る可能性も全くないわけではない。
良くテレビなどで超大型のコンピューターでマイニングしているところが報道されるが、これは単に Bitcoin Core を入れたパソコンを並べていたり、計算速度の必要な割には単純な処理のハッシュ計算のところだけ特殊なプロセッサを並べて並行計算するシステムに過ぎない。もっとも Bitcoin Core は、ソースコードがオープンなので、マイニングに向いたように改良したプログラムを使っている場合の方が多いだろうが。

取引(トランザクション)は、マイニングされて「ナンス付きのハッシュ」が付き、ブロックチェーンに追加された時点で正式なものになる。つまり、マイニングされるまでは、「仮」の状態であり、マイニングが終わった時点で「正式決済」になるのだ。

ここまでの説明で判ったと思うが、Bitcoin は、 Bitcoin Core もしくは、その改良型のプログラムを走らせた多数のノードが 10分間隔でマイニングを繰り返すことで成立している。つまり、全てのノードは、「10分間」と言う時間より十分短い時間で通信できることを前提にしているのだ。インターネットの通信は、ほとんど光の速度で進む。1秒間に30万キロ進む光の速度から見れば、赤道一周で4万キロの地球など、ものの数ではない。地球の裏側だって、わずか15分の1秒だ。途中で、ルーター間での誤伝送・再送があって遅れても、遅れが数分以内に済めば構わない。要は、10分間よりも短い時間で通信できれば良いのだ。

Bitcoinは、地球の上なら、インターネットに接続できさえすれば、問題ない。
しかし、宇宙ならどうか?

月なら問題はない。光の速度で、1秒は超えるが、往復しても3秒以内だ。10分間には、まだまだ余裕がある。

しかし、他の惑星は?
火星は、地球と近い時には片道4分半、遠い時には21分かかる。
木星なら35分~51分程度。土星なら1時間11分~1時間27分くらいになる。小惑星帯は、火星と木星の間だ。

つまり、最接近した時の火星だけは、何とか往復で8分で10分間よりも短いが、それ以外の時期の火星と、小惑星を含めた ほとんどの惑星は Bitcoin が使えなくなってしまうのだ。そこで、宇宙でも使えるように Bitcoin を改良しようと考えた。

【惑星間通貨 InterPlanetary Coin : IPC】
太陽系内で仮想通貨を使えるように改良する、それが、惑星間通貨 = InterPlanetary Coin(インタープナレタリー・コイン) : IPCだ。

例えば、土星の衛星タイタンとハイペリオンに宇宙基地やコロニーを作ったとしよう。タイタンとハイペリオンが最も離れても光の速度で9秒だ。
従って、タイタンとハイペリオンに、それぞれ幾つか Bitcoin のノードを置いても、その間なら、ちゃんと同期が取れ、Bitcoin が使える。
しかし、それはあくまで土星の衛星同士の間だけでの話だ。この場合、土星衛星系の Bitcoin と 地球の Bitcoin が互いに同期を取ることは無い。現状の Bitcoin の仕組みでは、遠く離れた二つのブロックチェーンを同期することはできない。現状のままでは、地球の方が遥かにノードが多いため、地球のブロックチェーンだけが残り、土星の衛星系の Bitcoin のブロックチェーンは消えてしまうでしょう。

しかし、上手く改良すれば、複数に分散したブロックチェーンを、正しく同期が取れるようになるかもしれない。ここで、「二つに分散したブロックチェーン」と言わず「複数に分散したブロックチェーン」と言ったのは、土星の衛星系だけではなく、木星の衛星ガニメデとエウロパにも宇宙基地やコロニーができるかもしれないからだ。
それどころか、小惑星帯に宇宙基地ができるかもしれない。土星や木星の衛星系と異なり、小惑星は常に同じところに固まっているわけではない。現在、60万以上見つかっている小惑星は、ある時は、数秒で通信できる距離に近づいたかと思えば、ある時は通信に数時間かかる距離まで離れる。

太陽系内に無数にあるノード、それが近づいたり離れたり、その間で分散するブロックチェーンが同期が取れる。それが IPC だ。

Bitcoin のブロックチェーン分散同期させる方法は、まだ思いついていない。しかし、CVSがGitに進化したように、一つの集合が、幾つものブランチに分かれ、再び集め(マージす)れば良い。
Gitの場合でも、分かれたブランチをマージする時にコンフリクト(競合)が問題だ。Gitでは、手動でコンフリクト部分を修正していた。IPC の場合、手動でコンフリクトするわけにはいかないだろう。いかにして、分散したブロックチェーンのコンフリクトを回避するか、それが最大の問題だが、それを克服する。それが IPC を作るプロジェクトの大きな目標である。

【恒星間通貨 InterStellar Coin : ISC】
太陽系内の場合、最も遠い海王星でも地球から最大4時間20分で通信できる。
それに対して、恒星は桁違いに遠い。最も近い近いアルファ・ケンタウリでも4.39光年離れている。

正直に言って、IPC は最悪の場合、Bitcoin のノードを木星や土星の衛星系に置くことをあきらめ、信頼できる人が管理する地球に置いたノードを、タイタンやハイペリオンから、SSHなど暗号化された通信方式でリモートで操作することもできる。この場合、正式な決済が届くまで、土星まで往復の通信時間である3時間待たされることになるが、それさえ我慢すれば、何とかなる。

しかし、恒星間では、そうはいかない。
最も近い恒星でさえ通信に往復9年くらいかかるのでは、正式な決済が終わるまで10年近く待たされては、商取引が干上がってしまう。
何が何でも、アルファ・ケンタウリなどの恒星系にBitcoin のノードを置く必要がある。しかし、Bitcoin の仕組みでは、地球とアルファ・ケンタウリなどの恒星系のブロックチェーンが同期を取ることは無い。
太陽系内より、遥かに通信遅れのある恒星間で、如何に分散したブロックチェーンの同期を取るか。それが ISC の課題であり、目標だ。


未だ、宇宙に出ても、最遠でも月しか行くことができていない人類が、IPC も ISC も必要ないだろう・・・と言われそうだが、そんなことは無い。
我々ロケット団は宇宙進出を目指している。いつ何時、太陽系内いや恒星間に人類が広がっても良いように、今から、IPC と ISC の開発を始めるのだ。

【異知性間通貨 Inter Intelligence Coin : IIC】
IPC や ISC よりも凄いのが、IICだ。「Intelligence」は「SETI : Search for Extra-Terrestrial Intelligence」の「Intelligence」と同じで、異星の知的生命の事だ。いや、「生命」とは限らない。知的な「機械」かも知れない。

Bitcoin など仮想通貨は、暗号理論を使っている。この場合、暗号とは、素数とかべき乗計算など、要は数学の仕組みで作られている。

数学が人類の知性を超えた 宇宙普遍のものであるなら、その数学自体を通貨とした貨幣が作れるだろう。
現状の Bitcoin には、地球の商取引習慣など、数学以外の要素が含まれている。そこで、Bitcoin から数学以外の要素を取り除き、普遍的な数学だけで再構成し、地球外のどんな知的生命体(知的機械も含む)の間で取引に使えるようにする。それが、IIC だ。

ところで、さらっと「数学が人類の知性を超えた 宇宙普遍のもの」と書いたが、本当に「数学は宇宙普遍のもの」であろうか?

このことについては、2014年に出版された「ノイマン・ゲーデル・チューリング」(ISBN978-4-480-01603-4)と言う書籍に、20世紀を代表する3人の天才の考えが書いてある。

簡単に言うと、3人の天才は次のように言っている。
ジョン・フォン・ノイマン:「数学は人間精神の産物であり、人間精神を離れた数学は存在しない」として「数学的厳密性を不動の前提として受け取ることに警告」している。直接的には書いてはいないが、「地球人類以外の知性だと、別の数学が生まれる可能性がある」と言っていると思われる。
クルト・ゲーデル:「数学は人間精神と独立して存在する。しかし、人間の知性・精神は、数学を超越した存在である」。この場合、地球人類以外の知性が数学を作っても、数学は絶対的なので、地球人と同じ数学になる。
アラン・チューリング:「数学は人類に依存しない。それどころか、逆に人間の知性・精神すら数学の範疇で示される」。この場合、やはり地球人類以外の知性が数学を作っても、地球人と同じ数学になる。

つまり、20世紀最高の天才と言われる3人ですら、意見が分かれるのだ。この3人ですら、判らないようなことが、凡人たる私に判るわけがない。とは言え、ここで迷っていると先にすすまないので、とりあえず「数学が宇宙普遍のもの」と言うゲーデルとチューリングが、ノイマンに対して、2対1で勝って正しいと言う前提で話を進めよう。まあ、こう言うものは多数決で、正しいか間違っているか判断するものでは無いことは重々承知してはいるのだが。

恒星間はおろか、太陽系内ですら、自由に航行できない現在の人類からは、異星の知的生命体に会うことなど、夢のまた夢かもしれない。しかし、やはり、IIC を今から準備しておけば、いつ異星人と会うことがあって、共通の貨幣として使うことができるのだ。

いや、人類が恒星間飛行や惑星間飛行ができなくても、異星の知的生命体が向こうから地球にやってくるかもしれない。
その時にこそ、IIC が役に立つのだ。

とは言え、もし万一、クルト・ゲーデルとアラン・チューリングが間違っていて、ジョン・フォン・ノイマンだけが正しかったら、数学は宇宙普遍のものではなく、IIC の異星人との間で使えなくなってしまうのだけどね。

| | Comments (0) | TrackBack (0)

February 01, 2015

Windows 8.1 ディープな Tips

E302Windows8.1のタブレットPCを購入して、もうすぐ1年。
その間に雑誌や入門書に載っていない使い方を幾つか見つけたので紹介する。
なお、私のタブレットPCは、レノボ Miix 2 8 で有償版Windows8.1でMS Office付き、加速度センサ、GPSセンサの他、ジャイロセンサ、磁気コンパス等は全て付いている。以下のTipsは、私のタブレットPCで全て正常動作しているが、搭載OS・Officeやセンサ等で違いがあるかもしれないので、ご承知おきを。

【Tips その1 パノラマ写真 レベル:初級】
スマホなどのようにパノラマ写真が撮れる。
何の準備も設定も必要ない。
モダンUIのスタート画面から「カメラ」アイコンをタッチして、カメラをスタート。
カメラアプリの画面で、多くのWindows8.1入門書には、右端に「動画・静止画」を二つのアイコンが並ぶと書いてあるが、Miix 2 8の場合、「動画・静止画・パノラマ写真」の三つが並ぶ。
パノラマ写真を撮るときには、この「パノラマ写真」アイコンを押すだけ。少し撮影速度が遅いのが気になるが、タブレットPCをゆっくりと振るとパノラマ写真が撮れる。
パノラマ写真は、ピクチャフォルダーのカメラロールの中に入っている。見たいパノラマ写真を選ぶとパノラマ写真が見れるのだが、タッチやマウスで左右・上下にスクロールできるだけではなく、右端のアイコンをオンにすると、タブレットPC自体を振って、それに連動してスクロールすることもできる。

パノラマ写真撮影時と再生時の動作からみるにジャイロセンサを使っているようだ。同じWindows8.1 タブレットPCであるデル Venue 8 Proは、ジャイロセンサが非搭載なのだが、デル Venue 8 Proでは、パノラマ写真を撮るためのアイコンは表示されなかった。

【Tips その2 数式入力パネル+Microsoft Mathematics レベル:中級】
手書きで入力した数式が微分積分、グラフ表示など、数式処理してくれる。それも無料。
「数式入力パネル」は Windows8.1に標準装備だが、Microsoft Mathematicsは、ダウンロード・インストする必要がある。と言ってもMicrosoft Mathematicsは無料だが。
Microsoft Mathematics のインストや使い方は、、算数、数学の宿題を爆速で終わらせる「Microsoft Mathematics」を紹介するで紹介されているので、ご参考に。
ポイントは、 、Microsoft Mathematics 4.0 (英語)から、「英語」とあるけど構わずインストールすると日本語で使えることだ。

上記リンク先では、「クソ」と酷評されたUIだが、Windows8.1に標準装備されている「数式入力パネル」を使えば、数式を手書きで入力できるので、極めて便利だ。数式を手書き入力する時は、このコンテンツで紹介したタッチペンが役に立つ。

定積分とか、楽々やってくれるので、とても良い。

【Tips その3 IIS + CGI レベル:上級】
タブレットPCなのに、その中でWebサーバーを動かし、CGIアプリを使うことができる。私は日記とWikiを動かしている。
IIS自体は、Windows8.1標準装備だが、CGI用のアプリとかスクリプト言語は追加インストが必要。Apacheなどでの実装経験が無いと難しいだろう。
特にファイアウォールやセキュリティの知識・経験のない人には薦められない。

以下、日記CGIであるtdiaryを例に説明。

・Webサーバーを動かすまで
 ・「コントロールパネル」「プログラム」「Windows の機能の有効化または無効化」
  ・管理者アカウントの確認ダイアログが出たら「続行」
 ・「インターネット インフォメーションサービス」チェックボックスをクリック
 ・「インターネット インフォメーションサービス」の左側の+ボタンを押して展開。
  ・「インターネット インフォメーションサービス」「World Wide Web サービス」「アプリケーション開発機能」「CGI」 を有効にして、「OK」
 ・http://localhost/ にアクセスして確認。
  ・ルート・フォルダは、デフォルトで C:\inetpub\wwwroot
・ruby
 ・CGI としては、 ruby を主に使うので、これをインストール
 ・、RubyInstaller for Windows の Download に Rubyのインストールファイルがあるのでダウンロードして、実行。
・tdiary
 ・C:\inetpub\wwwroot\tdiary 以下に tdiary のファイルをコピー
 ・日記データのディレクトリは C:\forLocalWeb\diary とする。(C:\inetpub\wwwrootの下層にしたり、ユーザーディレクトリーの下層にすると失敗する)
 ・「インターネット インフォメーション サービス(IIS) マネージャー」を起動
 ・左欄の「接続」の「HOGE」「サイト」「Default Web Site」「tdiary」を選択(HOGEは、タブレットPCのPC名)
  ・中の欄の「ハンドラーマッピング」をダブりクリックし、右の欄の「スクリプトマップの追加」をクリック。
  ・「要求パス」:「*.rb」
  ・「実行可能ファイル」:「C:\RubyXXX\bin\ruby.exe "%s" %s」(RubyXXXの部分はインストしたRubyのバージョンに依存)
  ・「名前」:「Ruby」
 ・以下の2つを修正(この部分は、tdiaryの説明を参照のこと)
  ・C:\inetpub\wwwroot\tdiary\tdiary.rb
  ・C:\inetpub\wwwroot\tdiary\tdiary.conf
 ・「インターネット インフォメーション サービス(IIS) マネージャー」の左欄の「接続」の「HOGE」を選択
  ・右欄の「サーバーの管理」「再起動」
 ・http://localhost/tdiary/index.rb をアクセスして確認。
・注意:「Windowsファイアウォール」を有効にしておかないと他のPCから日記の内容を覗かれてしまうので、注意が必要。

【考察】
最初にも書いたが、上記のTipsはいずれも、Windows8.1入門書やパソコン雑誌に載っていない。もちろん、大量に出版されているWindows8.1入門書やパソコン雑誌を全て完全に網羅したわけではないが、大型書店で立ち読みした限り、これらのTipsを見つけることはできなかった。試しに、今、市立図書館から、Windows8.1入門書を6冊借りているが、どれにも載っていない。
また、IISについては「入門書」に載っていないのは当たり前だが、「Windows Server」の設定書にもほとんど載っていない。私が調べた限りでは、IISのWebサーバー機能の有効化までは載っていたが、CGIの設定方法は載っていなかった。

従って、「Microsoft Mathematics」も「IIS」もネットの情報頼り(パノラマ写真は自力解決した)。どういうこと?

ここからは、私の憶測。
沢山出版されている「Windows8.1入門書」も「パソコン雑誌のWindows8.1紹介記事」も、どれも同じような内容。思うにマイクロソフトが「こう言う使い方をして欲しい」と言うことしか書かれていないと思う。
逆に言えば、上記のTipsはマイクロソフトが望んでいない使い方だってこと。
例えば、パノラマ写真。これは別にマイクロソフトに困らないようにも思う。しかし、前述したように、レノボのタブレットPCでは使えるけど、デルでは使えない機能だ。
マイクロソフトに「なんで私のタブレットでパノラマ写真が撮れないんだ」とクレームが来るのを恐れているからかも知れない。
また、「Microsoft Mathematics」も「IIS」も比較的古いソフト。マイクロソフトとしては、近い将来、フェーズアウトを考えているのかもしれない。だから、新規のユーザーが増えるのを嫌っているのかも知れない。

とは言え、「Windows8.1入門書」も「パソコン雑誌のWindows8.1紹介記事」も右に倣えで、同じことばかり書いていたんじゃダメだよね。たとえマイクロソフトが眉をしかめようと「こんな意外なことがWindows8.1でもできる」と言う記事も書いてくれないと面白くない。上記のTipsの中は、いずれも「iPhoneやAndroidだったらパノラマ写真撮れるのに」とか「Linuxだったら、ApacheでWebサーバーとCGI使えるのに」と、Windows8.1だとできないと思い込んでガッカリとだったので、できてビックリと言うもの。(同じことが、最近のLinuxやUbuntuにも言えて、LINUX関係の雑誌が、みんな同じ内容でつまらない)

なぜ、雑誌や書籍が、マイクロソフトが望んでいることしか書かないか。それこそ憶測でしかないが、広告収入のせいなのか、著作権を盾にした押しつけなのか、それとも出版社側が過剰に臆病になっているのか、それは判らない。

実は、マイクロソフトは嫌がるだろうけど、一番欲しいのは、マイクロソフトアカウントだろうが、ローカルアカウントだろうが、マイクロソフトでも他の誰でも、絶対アクセスして欲しくないファイルを、何処にどうやって置けば安全かと言う情報。LINEがメールアドレスを読むようなことがあって以来、プライベートキー(秘密鍵)などを何処に格納すれば良いのか、判らなくなってるんだよね。マイクロソフトアカウントを使うとWebブラウザの「お気に入り」とかの設定が同一アカウントで共有されるってことは個人情報がネット上に流れているってことだよね?そういうことが一切できない場所にプライベートキー(秘密鍵)を入れておきたい。一方、モダンUIを使うアプリは事実上ストアから購入するしかないのだが、ストアを使うにはマイクロソフトアカウントを使うしかない。本当に秘密にしたいファイルは、何処に入れたら良いんだろう?

マイクロソフトが嫌がろうがなんだろうが、私のようなギークがWindows8.1を積極的に使うには、こう言う情報が一番欲しいんだ。

| | Comments (0) | TrackBack (0)

January 26, 2015

『新』アリアドネの糸

E301野口悠紀雄氏の著作に『「超」整理法』と言う本がある。
1993年出版で私が購入したのが94年なので、もう20年以上前である。
この本の傑作なところは、「情報は、分類し整理すること自体、不可能であり、無駄である」とバッサリと切り捨てているところだ。図書館のように専門のスタッフが居る所以外、情報を分類し、索引を作り、検索する整理は事実上不可能であり、個人等での情報管理を図書館方式を理想とする整理を行ったところで必ず破綻すると言うのだ。
だからと言って、情報を無秩序に収集すると、それもまた破綻する。

野口氏は、情報整理の唯一の解決策『アリアドネの糸』として時間軸を提案している。
具体的には、紙の情報は入手or作成した日付を書いた封を開けた封筒に入れて並べる『押出しファイリング』、当時普及し始めたパソコンに関しては年月をフォルダー名にして電子的な情報ファイルを保存する方法を提案している。一方、スケジュール管理とノートについてはパソコンよりも従来通りの紙の手帳・紙のノートが良いと結論付けている。

この本に感化された私は、早速実行してみた。紙の情報は押出しファイリングに、電子情報は年月をフォルダー名に入れた。スケジュール管理は紙の手帳に、ノートはA5サイズの大学ノートにした。

20年を経て、どうなっているか。

『押出しファイリング』は早々に破綻した。早々と言っても5~6年はもったが。
今となっては『押出しファイリング』は悪名が高い。「封を開けた封筒に埃が入る」とか「古封筒を並べるのはみすぼらしい」と言ったものだ。
しかし、私の『押出しファイリング』が破綻したのは、埃のせいでも見た目でもない。野口氏が『押出しファイリング』で扱うと想定していた情報と私の情報では、質・量・保存期間が違っていたためだと推定される。
「超整理法」の中で明言されてはいないが、野口氏の扱う情報は主に他の人が作った情報で、また平均的な保存期間も3~5年程度を想定していたように思える。これなら『押出しファイリング』の長さで160センチほど、仮に8センチに入れたなら20冊ほどになる。この程度の量であるなら、『押出しファイリング』は機能する。
問題は私の扱う情報は、私自身が作ったものが主体であり、その保存期間はずっと長いことだ。
誤解の無いように断わっておくが、私だって扱う情報量の9割9分は他の人が作った情報を受け取ったものだ。しかし、量で言えば1%、個数で言えば、その10倍は自分で作った情報があり、その上、保存期間が長い。
他の人が作った情報は、多くの場合、その人が良く推敲し整理まとめてから発表する。そのため、紙にして10ページ以上になるのが普通だ。しかし自分で作った情報はまとまっておらず、整理もされていない。量的にも少なく、極端な場合、紙一枚に数行の数式を書いただけのものまである。一つの情報あたりの紙の量が少ないが、その代わり数はある。
これらの紙の情報は思い付きを書きなぐったものが大半で、ほとんどが何の役にも立たない。ところがだ、数年とか時には10年以上経って再び必要になる時が来る。もちろん、思い付きの書きなぐりの全てが数年から10年後に再び役に立つのではなく、逆に大半は20年過ぎても再び見られることもないものだ。ごく一部のみが再び役に立つことがあるのだが、この場合の平均は7年くらいではないかと思っている。私の場合、未来を予想してアイデアを考え、それを書きなぐっておくのだが、時代が早すぎて受け入れられないことが多い。その後、何年か経ち、環境が変わり私のアイデアが受け入れられる素地ができると、そのアイデアの情報が再び役に立つ。つまり私のアイデアは平均して7年ほど時代を先取りしているわけだね。
『押出しファイリング』が有効なのは、保存期間が3~5年程度だと既に述べたが、私のアイデアは平均7年、最長20年の保存期間が必要だとすると、まるで足りない。じゃあ、情報の99%を占める他人が作った情報を捨てれば良いじゃないかと言われそうだし、実際にやってもみた。しかし、やってみると自分の作った情報と他人の作った情報を分類するのも意外に大変だ。結局、自分と他人の情報を分ける作業の2回目くらいで『押出しファイリング』自体を止めてしまった。

年月をフォルダー名に入れた電子情報はどうなったか?
実は仕事上の電子ファイルは、いまだに年月をフォルダー名に入れている。
調べてみると、1998年12月から現在まで、ファイル数にして1万8千、容量19.8GBになっている。(98年11月以前のファイルは、PC換装の時にCD-Rにバックアップしたままになっている。CD-Rにバックアップしているくらいだから、容量的には大したことない)
では、プライベートの電子ファイルは?
実は、仕事上の電子ファイルは、ほぼ強制的にMS-WORDやEXCEL、PowerPointを使うことになっている。しかし、プライベートの情報は、LaTeXで作っているし、その他、CやRubyのプログラムなど、自分で作る情報のほとんどはテキストファイルだ。例外は写真・動画と絵くらいのものだ。
テキストファイル形式に限るなら年月をフォルダー名にして管理するよりも良い方法がある。CVSやGitだ。2000年頃にCVSを使うようになり、数年前にGitに切り替えてから、ほぼ全ての自作電子情報は、CVS・Gitで管理している。
他人が作った情報や、自作でも写真・動画・絵の電子ファイルは、困ったことに自宅のファイルサーバーに無秩序に取り込んでいるだけだ。ファイルサーバーを調べてみると、その総量は1TB、ファイル数にして400万を超えていた。

一方、『超整理法』ではパソコンには向かないと書かれていたスケジュール管理だが、これは、逆にパソコン等での電子的な管理に成功している。
2003年にザウルスと言うPDAを購入したことを切っ掛けに電子的なスケジュール管理を始めた。この時はザウルスだけで集中管理していた。2009年にノートPCを購入した際に、スケジュール管理プログラムを自作した。Rubyを使うことで、LinuxでもWindowsでもクロスプラットフォームで使えるようにし、携帯電話も含めて、スケジュール情報が同期できるように作っている。現在、Windows8.1のタブレットPC上でも全く同じプログラムでスケジュール管理している。

最後のノートが最大の問題。
A5サイズの大学ノートは、50冊を超える頃に破綻。
2005年以降、システム手帳に切り替えたが、これも同じくらいの量に膨れ上がり、破綻状態。特に『押出しファイリング』が破綻して以降、自作情報の多くが、システム手帳に書かれるようになってから、情報量の爆発的増加が酷い。
前半の大学ノートは必然的に時系列に並んでおり、後半のシステム手帳の情報はバックアップファイルに分類してファイリングしているが、結局、検索が難しくて再利用ができない状態になっている。その大半は、私の考えたアイデア。多くは「アイデア倒れ」なんだが、検索さえ上手くできれば、再び役立つ時が来るかも知れないのに・と言う状態だ(野田司令の20年以上にわたるアイデアノート・・誰か整理してくれないかな)

『新』アリアドネの糸
ここでやっと本題に戻る。
超整理法は、時間軸をアリアドネの糸にしていた。しかし、時間軸のアリアドネの糸は、せいぜい3~5年の情報管理にしか有効でない。分類は、システム手帳のバックアップファイルで再挑戦したが、やはり機能しないことを再確認しただけだ。

それでは、アリアドネの糸として、時間軸に代わるものは何だろうか?
もっと長い期間、もっと大量の情報を扱える、そんなアリアドネの糸は何だろうか?
前述したスケジュール管理プログラムを自作している時に気が付いた。
新しいアリアドネの糸、それは『乱数』だ。

自作したスケジュール管理プログラムは、複数のパソコンで使えるようにしている。また、電車通勤している最中にスケジュール管理する私のライフスタイルに合わせて、それぞれがスタンドアロンで動くようにしている(今でこそ、電車内でのネット接続は難しくないが、当時は不可能に近かった)

Aと言うパソコンで入力したスケジュール情報が、Bと言うモバイル端末に反映される。電車の中のネット非接続状態でB端末で修正したスケジュール情報が、次にインターネット接続されたときに同期される仕組みだ。

プログラムを作り始めた当初、スケジュール情報の識別つまりアリアドネの糸として、やはり時間軸を使っていた。たとえば、2015年1月30日10時開始の会議なら、2015013010と言う識別子IDとした。しかし、この場合だと、2つの会議がダブったような場合、区別がつかなくなる。たとえば、PC Aから「1月30日10時にA衛星の会議」、端末 Bから「1月30日10時にBロケットの会議」と入力するとコンフリクトが発生する。また、会議の開始時間を変更するとIDまで変わって、元の時間と変更後の時間の2つの会議情報ができてしまう。
そこで、会議の開始時間ではなく、入力した時間を秒単位で表した数字をIDとした。しかし、不都合が起きた。秒単位での時刻ではIDが重なってしまう可能性があるのだ。人間がキーボードやマウスでスケジュールを一つずつ入力するなら、秒単位でIDが重なることはまずない。しかし、「毎週月曜日の10時から定例会議」のようなスケジュールの場合、同時に複数のスケジュールが発生するのだ。「毎週月曜日の10時から定例会議」のような場合、一連のスケジュールを同一としてIDを一つだけ割り振るという方法も考えたが、「2月2日の月曜日だけ、10時30分からに変更」などがあり、それも駄目だ。

考えた挙句、3年ほど前に、IDとして『乱数』を使うことにした。厳密には、『SHA-1と言う暗号的ハッシュ関数を使った疑似乱数』だ。入力した時刻(1000分の1秒刻み)と乱数などなどを元にSHA-1でハッシュを作って、それをIDにする。SHA-1を使ったのは、3年前には今ほどSHA-1の脆弱性が取り出さされていなかったからで、今だったらSHA-256を使ったかもしれない。まあ、個人的な使い方でSHA-1で問題になることもなかろうけど。

スケジュール・プログラムの管理IDにSHA-1ハッシュを使い始めて3年、問題が起きていないから、それなりに有効なんだろう。そこで、スケジュール以外の情報つまり『押出しファイリングに入れていたもの』『電子情報』『CVSやGitで管理しているテキストファイル』『紙のノートに書いているメモ』をSHA-1ハッシュを使おうと思い始めた。(Gitは元々SHA-1で内部管理しているけどね、と言うかSHA-1ハッシュを使おうと思ったのはGitからヒントを得たんだけど)

情報の整理で、大きな問題は、次の2つである。
・保管場所
・検索
保管場所も検索も、情報を再利用する時に必要なものである。と言うか、再利用しないのなら、情報は全て捨てちまうのが最善の方法だ。
すなわち、再利用しやすい様に情報を保管し、検索するようにしておくことが、情報整理に重要なわけだ。

例えば、私が20年以上に渡ってアイデアなどをメモった紙のノートは、本棚の2段を占める。仕事上の電子情報、1万8千のファイル総容量19.8GBを全て印刷するとたぶん大変な量になるであろう。A4コピー用紙は、1枚4グラムらしいので、1つのファイルを印刷すると平均10枚(両面印刷で20ページ)になると仮定すると、680㎏になる。
ファイルサーバーの400万のファイルは、同じ仮定だと160トン(!!)になる。

当たり前だが、こんな量の情報を紙の状態で保存するのは困難だし、ましてや持ち歩くことなど不可能だ。唯一「本棚の2段を占める紙のノート」だけは保存可能な量だが、それでも持って歩くことは不可能だ。
「別に持って歩く必要ないだろう」と言われそうだが、そんなことはない。いつ何時、昔の情報を再利用することになるか判らない。だから、常に持って歩くことができれば、それが本当にベストなのだ。

紙のノートの場合、スキャンすると1ページあたり20kバイト程度なので、ざっと計算しても総容量200MB程度にしかならない。仕事上の電子情報19.8GBなど、最近のノートパソコンなら十分に入る。USBメモリも64GBで2千円強だ。暗号化しておけば、仮に紛失してもセキュリティ上の問題はないだろう。
流石に400万個で1TBの情報は多い。しかし、ファイルが重複している部分を除くと、200万のファイルで800GBに減る。さらに、まず使わないであろう巨大な動画を除くと、350GBになった。これなら、大きめのHDD内蔵のノートPCなら入るだろうし、SSDのように小さなストレージの少ないPCやタブレットでも、500GBのUSB HDDが6000円程度で売っているので問題はない。128GBのUSBメモリが5000円程度なので、それを3つと言う方法もある。要は全ファイルを持ち歩こうと思っても不可能ではないのだ。1TGBのUSB HDDが7000円なので、本当に全て持ち歩いても良いかも知れない。
とにかく、電子ファイルなら全てのファイルを保存することも、持ち歩くことも可能だということだ。

さて、保管する方法があるなら、残った問題は検索だ。どうすれば、再利用する情報を効率良く検索することができるかだ。情報の整理は、検索を効率的に行うかが鍵だと言っても過言ではない。

情報を分類するのも検索を効率的に行うためのものだ。野口氏は、頭から分類整理することを否定しているのではなく、図書館のように専門のスタッフが居れば分類し索引を作ることも有効であることを認めている。個人の情報の場合、分類することも不可能に近いくらい難しい上に、索引を作ることは非効率で非現実的だと言っているだけだ。

では、個人の情報の場合、どうやって検索するか?
全く無秩序で並んでいる情報から目的の情報を探すには、一つ一つ情報を取り出し探している情報かどうかを調べる必要がある。情報の総数が10個なら、最大10回調べれば、目的の情報を取り出せる。運が良ければ、1回目で見つけることができるし、運が悪ければ9回だ(9回目に調べて、それまで全て違う情報なら10個目の情報が目的の情報である)。平均すれば、(1+9)÷2=5回で見つけられる。1000個情報が保管されていれば、平均500回だ。
野口氏の提案のように、時間軸をアリアドネの糸としている場合、1000個の情報の中から見つけるのは、もっと少なくてすむ。
例えば、時間順に左から右に並んだ1000個の情報から2001年1月1日に書いた資料を見つけ出すには、まず、1000個の情報の真ん中の情報の日付を見る。1996年8月17日だ、つまり目的の資料は、もっと左にある。次に真ん中と右端の半分、つまり全体では4分の3のところの日付を調べる。2009年9月20日だ・・・
この方法だと、n回調べると2のn乗の情報の中から目的の情報の資料が取り出せる。10回調べれば、1024の情報から目的の資料が取り出せる。
情報の総量が100万個なら、一つ一つ調べると平均50万回かかるのが、アリアドネの糸を使えば、20回で済む。

アリアドネの糸としてのIDは、時間軸に限る必要はない。
検索に必要な回数を少なくするには、IDを比較した時の前後関係が崩れないことが重要だ。A<B でB<Cならば、必ずA<Cになる必要がある。時間軸なら、Aの日付がBより前、Bの日付はCより前なら、Aの日付はCより前なので、この関係は明らかだ。 グー・チョキ・パーのように グー>チョキ、チョキ>パーなのに、グー<パーのような関係はIDに向かない。

SHA-1ハッシュは160ビットの2進数であり、実体は0から1461501637330902918203684832716283019655932542975までの整数だ。だから、SHA-1ハッシュは、比較した時の前後関係が崩れることは有り得なく、従って、アリアドネの糸としてのIDとしての要件を、少なくとも一つは満たしていることになる。

ここで問題は明らかだ。「そんな大きな数をIDとしても、数自体を覚えられない。資料の内容とIDを対応付けるためには索引が必要で、索引を作ることは、図書館のように専用のスタッフが必要だと野口氏も言っている」と。

まさに野口氏は、この点を付いて、アリアドネの糸としてのIDに時間軸を提案している。資料を作ったり受け取ったりした日時なら索引を作らなくても判るであろうと。

しかし、『押出しファイリング』だけでも5~6年、電子情報を年月をフォルダー名にして保存する方法なら20年も試した結果、野口氏は意図してかしまいかは別として、言外に「資料を作ったり受け取ったりした日時を覚えている」と言う「記憶」を「索引」として使うことを示唆していることに気付いた。

あなたなら、資料を作ったり受け取ったりした日時を正確に覚えているだろうか?
私の経験から言うと正確に日付を覚えているのは、せいぜい数カ月から1年くらいだ。それも超整理法を始めた30代前半の頃の話で、50代の現在では記憶力はずっと落ちている。正確な日付ではなく、年月程度に精度を緩めても、覚えていられるのは、3~5年が限界だ。

今一度、あなたに聞こう。
「10年前の今日、あなたは何をしていたか?」
覚えていないだろう。

私は?
私だって、10年前の今日、何をしたか何て覚えていない。
しかし、10年前の今日、何をしたかは判る。何故なら、私は日記を付けているからだ。

私は、超整理法に関わらず、30年以上日記を付けている。その間に一部抜けもあるが、それを引いても都合25年以上日記を付けている。
私は、もう習慣になったので苦痛ではないが、一般的に日記を付け続けるのは相当きついことらしい。

「アリアドネの糸としてのIDに時間軸を使う」と言うことは、言外に「記憶か日記を索引代わりにする」ことを示唆し、そのためには「記憶の限界ないにするか、多くの人が付けることをためらう日記を付けるか」が必要となることだ。つまり、野口氏自身が言う「索引を作ることは不可能だ」と言う状態に、ある程度以上の期間の情報を扱う場合には、なってしまう。

そもそも、索引を人間が作ること自体間違いなのだ。1万を超える情報、もしかしたら、200万を超える数の情報の索引を人間が作ることは不可能に近い。コンピュータに索引を作らすべきだ。全文検索機能などを使ってコンピュータが索引を作るなら、アリアドネの糸として、時間軸を使おうがSHA-1ハッシュを使おうが変わらない。

SHA-1ハッシュには次のように3つの長所がある。
(1) 分類などを行わずに情報を整理できる。
(2) IDが重複しない。
(3) 情報の重複を防げる。

(1)については、SHA-1ハッシュは時間軸と同等である。しかし、時間軸を除く分類などに比べると、SHA-1ハッシュの方が(少なくとも図書館など専門スタッフが居る場所以外は)優れている。

(2)は、既に述べたように、同時に作っても、また、複数の人が同時に入力しても、(確率的に)IDが重なる可能性は、考慮に当たらないほど低い。

(3)については、少し詳しい説明が必要だろう。
私の自宅のファイルサーバーにある情報は、400万個の総量1TBのファイルが重複を除くと、200万個の総量800GBのファイルになると既に書いている。逆に言うと、200万個の総量200GB、一つあたり平均100KBのファイルが重複していたってことだ。(一つのファイルが重複するのは2つまでとして計算。実際は3つ以上重複する可能性もある)
ハッシュについて知識のある人には常識だが、ハッシュを作成するときに入力が異なれば違うハッシュを生成し、入力が同じであれば同一のハッシュを生成すると言う性質を持つ。入力は文字列であっても数字であってもファイルの中身全体であっても構わない。
私のファイルサーバーの中に重複して存在したファイルは「同じファイル名だが違うフォルダーに入っていた」か「違うファイル名でも中身は同じ」状態だろう。逆に「同じファイル名でサイズ・日付ともに同一でも内容の異なるファイル」もあり得る。
一つ一つファイルの内容を比較すると非現実的な時間がかかる。ファイル毎にハッシュを作って、ハッシュ同士を比較した方が速い。実際、私のファイルサーバーの内容調査した時もハッシュを用いた。
それならいっそ、ハッシュをIDとして管理すれば、重複したファイルでも一元的に管理できるのでは?と言う発想が源流にある。

前述したように、既にスケジュール・プログラムの管理IDに『新アリアドネの糸』SHA-1ハッシュを使う試みには成功している。
次は、『新アリアドネの糸』SHA-1ハッシュを「ファイルサーバーにためこんだ大量の電子情報」と「紙のノートの置き換え」の管理に拡張しようと考えている。

うまく行くかな?

| | Comments (0) | TrackBack (0)

«タッチペン