July 15, 2017

SFのアイデア

E311先日、酒を飲みながら、ちょっとしたSFのアイデアを考えてみた。
前半くらい迄のプロットを書いてみるので、誰か小説にしてくれないかなあ・・

== ここからプロット ==
ほぼ、我々と同じような世界。
17世紀にガリレオ、ケプラー、ニュートンが天体観測から力学をはじめ科学を作り上げる。
18世紀、ジェームズ・ブラッドリーが光行差を発見するのだが、方向性による微妙な違いがあることに気が付く(この辺から我々の歴史と異なり始める)。
19世紀後半、マイケルソンとモーリーは干渉計を使い、光の速度を測定する。この時、地球の公転速度に依存せず、光速が一定であることを発見する。しかし、公転速度方向とは関係のない方向に光速の微妙なずれも発見する。そのずれはブラッドリーの観測とほぼ一致するも、ごくわずかの時間的変異があることも観測する。

20世紀初頭、アインシュタインはマイケルソン・モーリーの観測からローレンツ変換の考えを経て、特殊相対性理論を構築する。それから10年後、理論を拡大した一般相対性理論を発表。この中で、空間の伸び縮みが伝達する重力波を予言し、ブラッドリーとマイケルソンが観測したずれが重力波の可能性であることも示唆する。

残念ながら第一次世界大戦は起こるのだが、大戦後、ハッブルは遠くの銀河ほど、速い速度で地球から離れていく事いわゆるハッブルの法則を発見する。
この時、同時に天の川銀河とアンドロメダ星雲が衝突しつつあること観測する。

ハッブルの観測は高い精度ではなく、予想の幅が大きかったが、最短の場合、50年で2つの銀河の中心同士が衝突し、その衝撃で地球が滅びる可能性すらあることが判った。

急速に迫りつつあった二番目の世界大戦は回避された。
地球と人類の滅びる可能性は、戦争どころではないことが全人類に伝えられたからである。

世界初の巨大プロジェクトであるペルセウス計画(マンハッタン計画でもアポロ計画でもなく)が始まった(鎖に繋がれたアンドロメダ姫を開放するのはペルセウスしかいないと言う意味)。
ペルセウス計画は(マンハッタン計画=原爆開発でもアポロ計画=月着陸でもなく)、2つの銀河の衝突の正確な時間とその影響を予測し、人類の滅亡を避けることが目的であり、アインシュタインを中心に、オッペンハイマーをリーダーとして、ノイマン、チューリング、ゲーデルを始め、チャンドラセカール、フェルミ、ガモフ、湯川など、連合国・同盟国・資本主義・共産主義の壁を越えて、世界中から最高の知性が集められた。

宇宙空間からの観測は、オーベルト、ゴダード、フォン・ブラウンを中心としたロケット開発班が担当した(平和目的のロケット開発であれば、オーベルトが離脱する理由はない)。 (ツィオルコフスキーは1935年に亡くなったので、残念ながら間に合わなかった) ロケット開発班には、のちにコロリョフや糸川も加わる。

宇宙空間からの観測が早期に行われ、世界中の超A級の知性が(戦争などに無駄遣いされることもなく)集結したため、銀河の衝突のメカニズムの解明は急速にすすむ。(宇宙論やブラックホールなどの科学に関しては数十年先行し、1960年代時点で現在の科学レベルに到達している。逆に原子爆弾・原子力発電など、原子力関係の応用技術分野は遅れている)

1969年7月、ついにペルセウス計画は、銀河の衝突のメカニズムを解き明かした。
・2つの銀河の中心にある巨大ブラックホールは既に衝突している。
・巨大ブラックホールの衝突の結果、太陽の数万倍の質量分が失われ、それがエネルギーとして、重力波・ガンマ線・エックス線・高エネルギー粒子の形で一瞬に放出される(以降、このエネルギー群をフラッシュと呼ぶ)。
・ブラックホールから2万光年ほど離れている地球には、光速で進むフラッシュは未だ届いていない。
・ブラッドリーとマイケルソンが観測した重力波は、衝突以前に渦巻状に互いを回るブラックホールから放射されたものである。
・フラッシュが地球に届くと、その強力なエネルギーのため、海は沸騰し、空気は吹き飛ばされ、ガンマ線とエックス線の放射線により全ての生命が一瞬で滅亡する。
・フラッシュが地球に届くまで、1000年プラスマイナス100年と予想される。

この話の舞台は、実は『我々の地球』ではない。
今から40億年ほど未来、天の川銀河とアンドロメダ星雲が衝突するときに、『我々の地球』と同じように独自進化した星の物語である。

残された時間は、1000年。
彼らは生き残ることができるであろうか??
== ここまでプロット ==

ね。イーガンとかバクスターばりのSFになりそうでしょ

ちなみに、舞台となる世界での科学・技術は、我々に比べ
・1940年までは、ほぼ同じ。
・ブラックホールなどの宇宙論は、1960年時点では50年程度進んでいる。
・逆に原子爆弾・原子力発電など、原子力関係の応用技術分野は大きく遅れている。
・航空機技術も遅れている。1970年でもプロペラが主流で、音速は超えていない。21世紀に入って初めてジェット旅客機が実用化された。
・ロケット・人工衛星などの宇宙技術は進んでいる。
・電子技術は宇宙技術の余波で進んでいる。
・ジェット機が遅れた分、通信技術が進んで、インターネットは、20年早く出現した。
・日本においては、第二次大戦が無かったため、軍は残っている。が、そもそも戦争が激減している。国同士の戦いよりも、ブラックホール衝突での人類滅亡を防ぐことが共通の目標になっているため。
・環境保護の思想は、ほぼない。温暖化は進んでいるが、どうせ先の無い世界だから保護する必要も無いと考える。21世紀になってもハイブリッド車もEVも出現せず、化石燃料を使ったエンジンが主流。
・資源保護の観点もない。残された時間で資源を使い切ることはあり得ないと考えている。
・したがって、粛清や節約の思想もない。資源を使いきろうとするので、物質的には、むしろ贅沢。
・逆に最も価値が高いのは「時間」。残された限りある時間を無駄にすることは、最大の悪と考える。無駄な会議や残業は皆無。
などなど・・・

実は、「じゃあ、1000年で、どうやって滅亡を避けるのか」は、未だ考えていない。

誰か、イーガンとかバクスターばりのSFを書かないか?
滅亡から逃れる方法は、一緒に考えるから・・・・

(なんかあったら、Twitterの @madnoda に)

| | Comments (0) | TrackBack (0)

July 08, 2017

2 in 1 タブレットPC ECS LIVA TE10EA3

E310_1メインで使っているノート/タブレットPCを更新した。
新規購入した 2 in 1 モバイル・ノート/タブレットPCが自宅に届いたのが5月31日。
それから、1か月。だいたい使い方が定まって来たので、このパソコンの使用報告をしよう。

今回、購入したのは、10.1インチの 2 in 1 モバイル・ノート/タブレットPC ECS LIVA TE10EA3 のストレージ容量128GBタイプである。最大の特徴は、WACOMによる電磁誘導デジタイザ・ペン入力を持つことだ。

今まで使っていたPCは、8インチタブレット lenovo Miix 2 8 128GBであるが、2つ大きな問題があって、今回更新した

・私の老眼が進んでいて、8インチ画面だと小さすぎて読めない
・絵を描こうにも静電容量型のタッチスクリーンでは、まともに描けない
特に2つ目は深刻で、タッチペンを色々購入しても一向に改善しない。自己静電発生式 スタイラスペンも試してみたが、ダメだった。
ソフトウエア側の問題かとも思い、CLIP STUDIO PAINT PROも購入したが、これでも改善しない。やはり、原因はハード側だ。

Zaurus SL-C860・FMV-BIBLO LOOX U/C30と、電車の中などで絵を描いてブログにアップしていたのが、Miix 2 8にしてからは、家の中でUSB接続の外部デジタイザを使ってのお絵描きになった。ブログの更新が極端に少なくなったのは、このせいもある。

さて、新規パソコンの候補に挙がったのは、下記の3機種だ。いずれもペン入力付き。
・ECS LIVA TE10EA3 32GB:約4万5千円 128GB:約6万円
・ASUS TransBook Mini T102HA 64GB:約4万8千円 128GB:約6万円
・lenovo YOGA BOOK with Windows 64GB:約5万円
話題のドスパラのraytrektabが入っていないのは、前述のように8インチでは老眼のため画面が良く見えないからだ。
そうは言っても、前述の3機種、いずれも中国/台湾製で、国産が入っていないのは残念。国産のパソコンって、高価なんだよねえ。

さて、前述3機種は、10.1インチの 2 in 1 、Cherry Trail ATOM CPU、メモリ容量 4GB、64ビット版 Windows10と、かなり性格の近いものである。

違いはペン等の入力方式だ。LIVAが電磁誘導方式、TransBookが静電発生式、YOGA BOOKは(おそらく)電磁誘導式。
電磁誘導式の方が歴史がある分書き味が良い。静電式は最近進歩し書き味向上しているが、電池が必須なのが大きな欠点。
世の中は、電磁誘導から静電式に移りつつあると言うのが、客観的な見方だろう。
今回は、書き味とペン内部に電池を必要としない電磁誘導を選択した。

こうなると、LIVAとYOGA BOOKの二択になる。
YOGA BOOKは、きわめて個性的なPCで、ディスプレイ部とキーボード部が360度回転するヒンジで繋がっている。そのうえ、キーボード部は完全な平坦で、タッチスクリーン的センサーで入力を行い、ペン入力の時は鍵盤の表示が消えると言うものである。

このように興味深い YOGA BOOKを選ばなかったのは、特徴的なキーボードやペン入力のせいではなく、単にストレージ容量が64GBのモデルしかなかったためである。
一般的な使い方なら、64GBのストレージで足りるであろう。もし足りなくても、大容量MicroSDを入れれば良いだけだ。
しかし、私の場合、Visual STUDIOを始め、Android Studio、STM32、ESP-WROOM-32などのプログラム・クロス開発環境を入れることを考えている。これらは、MicroSDに入れるとアクセス速度が遅くて使い物にならないと言うのが、経験的に判っている。MicroSDは単なるデータストレージなら良いのだが、クロスコンパイラなどのアプリをインストするには向いていない。

このような理由で、ECS LIVA TE10EA3 の 128GBモデルを選択した。
しかし、「ECS」ってメーカー聞いたこともない。
一応、調べると、台湾のメーカーで、マザーボードは有名らしい。最近、超小型PCも出している。日本では殆ど知られていないが、ノートPCも以前から作っていたようだ。私の購入した TE10EA3 は、ECSにとって、珍しい日本に対応したノートPCのようだ。キーボードはちゃんと日本語化してあったし。

さて、購入して、実際に使ってみた感想が、最初の絵だ。
まず、一見して格好悪い。これはベゼル(枠)が大きすぎるからだろう。同じ画面のiPadと比べると、一回り大きいと思えるくらいベゼルが大きくスマートじゃない。その上厚さも厚いので、まるでスマートさに欠ける。
次にキーボード部。これが、ペコペコで感触が悪い。その上、キーボード部についているタッチパッドが誤動作しまくりで、使い物にならない。

ディスプレイの付いた本体側は、ケースも兼ねたキーボード部の「布」を折ったようなところに吸盤で付ける。本体とキーボード部は結線されておらず、Bluetoothで通信されている。要は、キーボード部は、単なるタッチバッド付きのBluetoothキーボードだ。

とにかく、キーボード部に付いているタッチパッドの誤動作が多くてストレスが溜まるので、ポインティングデバイスは、別途、家で余っていたBluetoothマウスを接続することにし、タッチパッドを無効化した。キーボードは生かしたまま、タッチパッドのみを無効化し、その上、別のマウスを使えるようにできるか心配したが、やってみたら何の問題もなかった。

キーボード部は、ペコペコで打ちにくく、肩が凝る。Miix 2 8用に買った Bluetoothキーボードは、マルチペアリングできる上に、パンタグラフ型キーを使った優れもの。これも接続すると、さすがに使い良い。

Bluetoothのキーボードとマウスは、使い心地は良いが、モバイルには向いていないので、出先では、ECS LIVA TE10EA3 付属のキーボードを使おうと、ケース代わりにもなるので、ECS LIVA TE10EA3 をキーボード(ケースも兼ねている)に挟んでリュックやカバンに入れて持ち歩いていた。しかし、重い。本体が500グラムに対して、キーボード部が400グラム以上ある。

E310_2思い知ったのが、6月中旬に会津地方に観光旅行に行った時だ。大内宿と言う茅葺屋根の建物の並ぶ宿場街が保存されているのだが、キーボードが重くて、本体ごと、駐車場の車の中に置いて来てしまった。しかし、大内宿には、絵の題材になりそうな建物が多くある。タブレットPC持ってきてたら、ササッと絵の一枚くらい描いたのにと反省しきりだ。

帰宅後、持ち歩きの方針を変えたのが、2枚目の絵だ。
百均で買ったクッションケースに、同じく百均で買ったカラーボードを切って大きさを合わせた板を画面の保護用に入れたものをケースとして使うことにした。安い上に軽い。
この場合、出先では、キーボードは使えないのだが、そもそも電車の中などで付属のキーボードは使えなかった。これはECS LIVAに限った話ではなく、Surfaceを含め、分離型の 2 in 1 モバイル全般に言えることだと思うが、キーボードとディスプレイ部をつなぐヒンジがないため、電車やバスのシートに座った状態で膝の上にパソコンを乗せてキーボードを打つことができない。新幹線や特急列車のようにお弁当を食べるためのテーブルでもあれば話は別なのだが・・(つくばエクスプレスのボックスシートにはテーブルが付いているが、混雑時は使いにくい上に、今後ボックスシート自体が順次廃止されるらしい)

キーボードが無くても、ペンさえあれば、絵を描くのには問題がない。文字入力はタッチキーボードが使えるのは勿論のこと、ペンの場合、手書き文字の認識が非常に良いので、これも問題なし。

電車の中で絵を描いていて気が付いたのだが、前に書いた「ベゼル(枠)が大きくて格好悪い」が、そんなに悪くないことに気付いた。右手にペンを持って、左手でタブレット本体を支えるとき、ベゼルが大きいので持ちやすいのだ。今よりベゼルが細かったら、画面に指があたりタッチスクリーンが反応するから、持ちにくかったと思われる。
Miix 2 8時代に買った CLIP STUDIO を、LIVAに移したら、絵を描くのが楽しいくらいだ。なお、LIVAに使っている Cherry Trail CPUは非力なため、CLIP STUDIOには向かないとネット上で紹介されているところもある。しかし、私はCPUの力不足は感じなかった。まあ、私の使い方では、CLIP STUDIOを十分使い込んでいないからかもしれない。
なお、バッテリーの持ちは連続使用で8時間くらいだと思われる。実は未だ8時間連続で使ったことはなく、6時間連続で使った後、バッテリーの残りが2時間分と表示されたので、そう推定している。まあ、8時間程度使えれば、十分である。

家では、またまた百均で買ったスマホ・タブレットスタンドで立てて、Bluetooth キーボードとマウスを付けて使っている。

気が付いたと思うが、ECS LIVA TE10EA3 付属のキーボードは殆ど使わなくなってしまった。

1か月使った感想としては、
・タブレット部分本体は、満足度95点 足りないのは、タッチスクリーンの感度が少し悪いこと。
・キーボード部は、満足度40点。まあ、付録だと思えば良いだろう。もともと、ペン付きで、このスペックで約6万円は破格に安いのだから・・

さて、お絵描きタブレットとして、ECS LIVA TE10EA3は十分満足できるものだ。ブログにLIVAで描いた絵を使うことこそ、今回が初めてだが、電車の中で思いついたアイデアをササッと描くなど、すでに色々な効果が出ている。
多分、ASUS TransBook Mini T102HAを選んだとしても同じようなものだっただろう。

気になるのは、YOGA BOOKだ。この変態キーボード、いったい役に立つのだろうか?
私の場合、ストレージ容量が64GBしかないので、選択から外したが、一般の使い方なら十分かもしれない。
誰か、YOGA BOOKを買った人が居たら、その感想を教えてほしい。


| | Comments (0) | TrackBack (0)

June 07, 2017

ESP-WROOM-32のBluetooth Classic SPP接続 Windowsも大丈夫!

ESP-WROOM-32のBluetooth Classic SPP接続だが、前回は、Windowsだと SPP 接続できないと書いた。が、この10日ほどの間に、GitHub の btstack が何回かアップデートされており、今日試したら、Windowsとも問題なく接続できたので、報告する。

要は、GitHub の btstack が良くなっただけで、私は何もしていない。
前回と全く同じ「patch.patch.gz」をダウンロードして、作業は次の通りする。

$ cd ~/
$ 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 と接続できるだけではなく、Ubuntu も GUIでペアリングできるようになったし、Windows も接続できる。
私は、Windows 10で試したが、普通にWindows設定・デバイスの Bluetooth でペアリングした後、デバイスマネージャーで、どの COM番号に割り当てられたか確認し、Putty や TeraTerm でオープンすると「BTstack counter (数字)」が送られてくる。
(MACでの動作確認していないのは、単にMAC環境が手元にないだけのことなのは前回と同じ)

Bluetooth SPP を使ったプログラムのやり方

と、これだけでは、寂しいので、Bluetooth SPP を使ったプログラムのやり方を説明しよう。

$ cd ~/
$ git clone https://github.com/bluekitchen/btstack.git
$ patch -p1 -d btstack < patch.patch
$ cd btstack/port/esp32/
$ ./create_examples.py
<< ここまでは上と同じ >>
$ cd ~/
$ cp -rp btstack/port/esp32/spp_counter ./spp_test

さて、必要なファイルは以下の通り

spp_test
├── Makefile
├── components
│   └── btstack
│   ├── component.mk
│   ├── include
│   │   └── btstack_config.h
│   └── main.c
├── main
│   ├── component.mk
│   └── spp_counter.c <= spp_test.c にファイル名変更
└── sdkconfig

・ spp_test/Makefile に2箇所ある「spp_counter」を「spp_test」に変更
・ spp_test/main/spp_test.c に2箇所ある「spp_counter」を「spp_test」に変更
・ spp_test/components/btstack/component.mkの「BTSTACK_ROOT := ../../../btstack」に

本当は、BTSTACK_ROOTを絶対パスで指定したいのだけど、何故か相対パスでしか動かなかった。絶対パスで設定する方法を知っている人がいたら、教えてください。

後は、make して、書き込むだけ。

$ cd spp_test/
$ make all
$ make flash << ESP-WROOM-32をUSB接続していれば、書き込まれる >>

さて、プログラム本体は、spp_test/main/spp_counter.c で、データを送信している部分は、 rfcomm_send(rfcomm_channel_id, (uint8_t*) lineBuffer, strlen(lineBuffer)); だ。

まあ、想像が付くと思うが、rfcomm_channel_id がSPPドライバ番号で、続いてバッファのポインタと送信バイト数だ。戻り値が「0」なら正常に送信できた事になる。
試してみたら、バッファの中はテキストだけではなく、バイナリーでも問題なく、rfcomm_send() の戻り値が「0」以外のときは、バッファの中身が一切送られていないだけだ。
送る時間間隔を短くし、バンバン連続して送ったら、最大25kバイト/秒で送ることができた。

受信の方は、「case RFCOMM_DATA_PACKET:」あたりらしいのだが、まだ試したことはない。
誰か、確認したら、教えてください。

と言うわけで、ESP-WROOM-32 の Bluetooth Classic SPP接続も使えそうになってきた。
これからが楽しみである。

| | Comments (0) | TrackBack (0)

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)

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