機械学習でFXの聖杯を見つけたと思ったら勘違いだった話

初心者がFXで機械学習をする

私は株価のスクレイピングの記事でも書いたように、まったくプログラミングの経験がありません。しかしながら、機械学習に対する漠然と憧れていました。そこで今回はFXで機械学習を行って、上がるか下がるかを予測できるようにしたいと思います。値動きやテクニカル指標を見て取引し、勝っている人がいるということはそのデータをいれてやれば私のような凡人でも聖杯を見つけることができるのではと考えました。初めての機械学習なので、比較的理解しやすいランダムフォレスト法を用いています。

プログラミング前の下準備

今回はGoogleのColaboratryを用いて行いました。Colaboratryは無料で12GBのメモリが使用できます。これは私が使用しいるPCのスペックより高いので、嬉しいのか悲しいのか複雑な気持ちですが、ありがたく使わせていただきます。Colaboratry用のデータの読み込みコード等も省かずにのせていきたいと思います。

まずはFXのデータをダウンロード
FXのデータはHistData.comよりGeneric ASCII形式でダウンロードすることができます。2016年のEURUSD1分足をダウンロードしました。

実際に機械学習

まずは必要なライブラリを読み込みます。

次に先程ダウンロードしたファイルをアップロードします。
ここで、参照をクリックして、ダウンロードした場所をひらいてファイルを選択します。

データフレームとして読み込みます。

特に意味はないのですが、プロットして確認したりするのも楽しいです!

次に終値の差分を取っていきます。diff1は一日前からどれだけ値段が変わったか。diff5とdiff10はそれぞれ5日前、10日前から終値がどれだけ変化したかです。ランダムフォレストは一行のデータだけでモデルを調整するので、始値や終値よりも差分の方が大事なデータになると考えています。

次に列の名前をそれぞれ整え、空の行を削除します。
今回は5分先の終値がどうなっているかを予測したいので、diff5を前方に5つ分ずらすことで、正解のデータを作成します。

ここで、そもそも5分でどれくらい価格が動くのか確認します。ヒストグラムを作成することで5分後の価格の動きの分布をみることができます。
本当はここで、統計的に目標を定めるべきなのでしょうが、なんとなく0.0005動くかどうかを予想したいと思います。ちなみにこれはFXでいう5pipsに相当するので、予想できれば十分に利益が出ると考えられます。

そこで、+5pips以上なら2、0~5pipsなら1、0~-5pipsなら-1、-5pips以下なら-2のラベルを振ります。

いよいよ実際に機械学習していきます。まずは、データをトレーニング用とテスト用にわけます。トレーニング用にはデータの80%を使い、そこで学習した内容を残りの20%のテストデータで検証します。

まずは、トレーニングデータで分類器を作成します。

実際にトレーニングデータとテストデータがどれくらいの正解率か確認すると、トレーニングデータでは当然ながハイスコアですが、テストデータでは正解率が50%をきっています。しかし、ここで考えなくてはいけないのは4種類に分類する問題なので、それぞれの正解率が大事てあること、また、5pips動かないと予想して動いた分には単なる機会損失なので実際にお金はなくなりませんが、5pips動くと思ってトレードして逆に行ってしまうと損が出てしまいます。つまり、適合率の高さが重要になってきます。

そこで混合行列を確認します。
5pips以上または-5pips以下だと予想して反対に大きく動かず正解する確率は60%であり、動かないとしても若干予想方向に動くことが多いことが分かります。また取引数もあるので、優位性のあるトレードが行えると考えられます。
こんなに簡単なデータセットで勝てそうな予想ができるなんて!!!!!!と、興奮しましたが、現実はそんなに甘くありませんでした。

幻に消えた聖杯

このシステムを実装しようと考えたとき、ふとトレーニングデータとテストデータの分割の仕方がよくないことに気づきました。予測ためには過去のトレーニングデータによって未来の予想をしなくてはいけません。しかし、私の分割方法ではランダムに抽出しているため、未来のデータから過去のデータを予想してしまうことになります。

そこで、shuffle=Falseを追加することでランダムに抽出するのではなく、データを前後で分割します。

そして、混合行列を表示すると、完全に優位性を失っていることが分かりました。適合率もほぼ50%であり、これではまず勝てないでしょう。
やはり、テクニカル要素の追加や、パラメータの最適化を行わないとだめなようです。

自作キーボードの親指シフトレイアウト説明【仮:Octopus配列】

なぜこのレイアウトか

前回までは、自作キーボードを作製し、自作キーボードの親指シフト対応のキー配列設定方法について書きました。今回はどうしてその配列(仮称:octopus配列)にしたか書こうと思います。今回はBaseのレイヤーしか変えていませんが、追々はLowとRiseのレイヤーもカスタムできればと考えています。

キーごとの説明


まずは一番オーソドックスなQWERTY配列の部分です。ここはDvorakで親指シフトを行うため、なにも変更を加えていません。


ただし、この2つに関しては、省略せずにいれることにしました。なぜかというと、日本語表現でよく使う読点「、」が@にアサインされるためです。「-」にアサインされるアンダーバーは必要ない気がしたのですか、なんとなくいれています。濁点、半濁点は親指シフトではそもそも後からつける必要がなく、¥記号も使わないと考え省略しました。


次に肝心な親指シフト用には、無変換とスペースを割り当てています。左親指にスペース、右親指に変換も考えられたのですが、利き手が右なので頻用するスペースは右のほうがいいだろうということと、漢字はスペース変換ですぐでてきますが、F7キーを削っているので直接カタカナ変換ができないため、無変換でカタカナ変換ができるほうが便利だろうと考えこの組み合わせにしました。


バックスペースとデリートは親指の方が小指を伸ばさなくても簡単に消せていいなと思ったからです。


この部分は特に何も考えず、通常の配列と公式の配列をもとにあてはめました。ただしctrlに関しては通常のキーボードを使っている人もCaps位置に入れ替えている人が多いと聞いたのでそのようにしています。


アルファベットを使うときは、基本的に半角文字を使うので、全角半角の変換が行いやすいように、全角半角キーをBaseレイヤーに残しました。また、日本語あるあるだと思うのですが、半角で英数を打ったつもりが、カナ打ちで意味のわからない文字列を打っていということが頻繁に発生します。その時はいつもF10キーでカナから英数に変換しているので配置しました。

今後も変更していきます


今後実際に使ってみて、不都合を感じたり、もっと便利なキーレイアウトを見つけたら積極的に変更していこうと思います。

自作キーボードで親指シフトを設定する方法【Helix】

自作キーボードでカナ打ち

私は今どき珍しくローマ字入力ではなく、カナ入力を使用しています。そこに大きなこだわりがあるかといえば、ただ小学生のころに覚えたのがカナ入力だったからというだけの理由です。タッチタイピングを覚えているわけでもないので、入力速度は遅いほうだと思います。そこで、自作キーボード作製を機に、親指シフトを覚えます。

自作キーボードと親指シフトの親和性

親指シフトは通常のキーボードを用いて行われることがほとんどです。親指シフト専用のキーボードもありますが、普及しているとは言い難く使っている人はほとんどいないのではないでしょうか。いま親指シフトをされている人は通常のキーボードとキーリマップソフトを用いて親指シフト環境を構築しているはずです。しかしながら、当然通常のキーボードは親指シフト用に作られているわけではないので、親指シフトに割り当てるスペースや変換キーの大きさが違い、キーボード自体の配列も非対称なため、手首を少しひねる必要があり快適な環境ではありませんでした。
一方で自作キーボード、特にHelixではシンメトリーかつ格子状にキーが配置されています。また、親指シフトのためかと思わせるように親指部分だけキーが2つ追加されています。これを見て親指シフトを習得する時が来たのだと思わされました。

キーボードのマップをUS配列からJIS配列にする

まず、qmk.toolboxで動作を確認しただけの状態では、キーボードはUS配列で親指シフトにそのまま移行することができません。そこで、ファームウェアの書き込みを行います。ここからqmk_firmwareをダウンロードし、解凍します。次にqmk_firmware_master/keybords/helix/rev2/keymapsをひらきます。five_row_jisをコピーして新しくフォルダを作って名前をつけてください。私はここで仮にoctopus配列と命名します。five_row_jisはhelixでjis配列を使える素晴らしいファイルなのですが、そのままでは親指シフトを使用することができません。そこで、新しくコピーしたフォルダを開き、keymap.cをエディタで開きます。


77行目からのこの部分で基本となるBASEのキーマップを設定しているので切り取り次の設定に変更します。

書き換えられたら、保存します。
次にmsys2をここからダウンロードしましょう。Msys2の64bit版はmsys2-x86_64です。Msys2を起動後、先程解凍したqmk_firmwareのディレクトリに移動してください。”cd フォルダのパス”を打ちこんでください。ディレクトリを移動するという意味がわからない場合はここを見ればよいでしょう。

ディレクトリ移動後、上記のように打ち込みインストールします。インストール時はすべてyesを選択すれば大丈夫です。

次に作製したファイルをキーボードに書き込みます。私はファイル名をoctopusにしましたが、自分の作製したフォルダ名をうちこんでください。


実行して、この画像の最終行にあるようにresetボタンを押すように表示されたら、キーボードのリセットボタンを押して完了です。この作業を左右両方さしかえてすることでキーボードにJIS配列を書き込むことができます。

Windowsの設定変更

次にWindowsのキーボード設定をUS配列からJIS配列に変更します。HelixはUS配列を想定して作られているため、接続しただけではUS配列として認識されてしまいます。コントロールパネルから時刻と言語→地域と言語→日本語→オプション→レイアウトを変更する→日本語キーボードを選び再起動しましょう。これで、今後Helixを接続した際JIS配列のキーボードとして認識されます。

DvorakJのインストール

次にDvorakJをインストールします。これは、キーリマップソフトなのですが、簡単設定などもあり、とても使いやすいです。インストール後簡単設定より以下の設定にします。


この通りに設定した後、反映することで自作キーボードのHelixで親指シフトができるようになっていると思います。

うまくJIS配列になっていない人は

キーに不具合がある人は以下を確認してみてください
・Helixの入力がWindowsになっているか
  Adjustを押しながらWindowsモードをおすことでWindowsになります。また、OLEDをonにしている人は、左手側のOLEDにMacモードならリンゴが、Windowsモードなら窓の絵柄が表示されます。
・LayerDriver KORがはいっていないか
  こちらに大変わかりやすく説明されています。私も散々悩んだのですが、これを削除することで「全角/半角」が「ろ」と認識されてしまう問題を解消できました。

電子工作初心者がおくる自作キーボード制作ガイド【Helix】 後編

前回からの続き

前回はソケットの実装まで行いました。今回は、OLEDにピンを挿すところから始めます。


この四本脚のピンをOLEDの裏側から挿し、表側をはんだづけします。


このような感じではんだ付けできましたか?


さきほどの足の部分をソケットに差し込むことでOLEDを取り付けることができます。


次にアクリル板をPCBにのせ、キースイッチを実装します。アクリル板は傷がつかないように保護シールが貼ってあるのでめくります。


少し見えづらいですが、PCBの上にアクリル板をのせたところです。


アクリル板とPCBにキースイッチをはめていきます。向きは凸の部分が下にくるようにはめていきます。キースイッチのサイドに有るツメをカチッとなるまでしっかりとめます。


このように全てはめることができたら、裏返してはんだ付けをします。


一つのキースイッチにつきこの二箇所をそれぞれはんだ付けしていきます。


次ははんだ付けがうまくいっているか動作確認を行います。左右のキーボードをつなぐためにステレオミニプラグを買いました。両手幅あればいいだろうと思い0.5mにしました。


実際に左右を接続し、USBをPCに接続します。動作確認はここのページを参考に行いました。


ここからQMK Toolboxを落とします。色々とファイルがありますが、実行ファイルであるqmk_toolbox.exeを落とせば良いと思います。
ここで説明されているようにloadボタンを押してもエラーがでるので、hexファイルをダウンロードしました。しかしながら、私の環境ではダウンロード後もエラーが出ましたが無視して続行しても無事動作確認できました。
Helixのリセットボタンを押してQMK toolboxのFlashをクリックするのですか、うまくいきませんでした。リセットボタンを連打するといいということだったので、連打しながらFlashを押すことで私もうまくいきました。右手のインストール後左手も同様にインストールしました。動作確認に移る前に注意してほしいのですが、USBは左手に挿すということです。最初右手に挿していたのですが、キーボードが反転してしまい大変悩んでしまいました。
検索窓でどんどんキーを押していくと、反応しないキーができます。そのキーははんだ付けうまく行っていないということなので、ハンダが他の部分にはみ出していないか、また、少なすぎないか確認し、適宜調整してください。ちなみに私は右手に2個、左手に3個反応しないキーがありました。。。。。
すべてのキーが反応することを確認したらスペーサーの取り付けに移ります。


OLEDのスペーサーはサイドが滑らかな円柱です。
これを表に置き、裏からネジで止めます。


このように両手側を裏からネジ止めできましたか?


次に保護用のアクリル板をとめます。この時に、OLEDを保護しているシートをとってしまうといいと思います。青いところからきれいにはがれます。ネジは黒い頭がフラットなものを使用して上から止めてください。右が保護プレート装着前、左が保護プレート装着後です。


次に裏面にスペーサーを置いていきます。ロープロファイルを選択したので、六角形の背の低いスペーサーを穴においていってください。この時、片手側には6個しかスペーサーがないのですが、穴は9個あります。赤色で囲った上と下に置き、青色で囲った中段は無視しましょう。


その上からアクリル板を置き、ネジで止めます。スペーサーごとネジが回ってしまっては意味がないので軽く押し付けながらまわすといいと思います。


表側をひっくり返すと先ほどのスペーサーが図の赤い部分に見えていると思うので、ここをまた上下六ケ所ねじでとめます。


裏表止め終わったら、足シールをはります。


最後にキーキャップをはめて完成です。ここで初めて気づいたのですが、キーキャップにもどうやら上下があります。上と下の斜面の長さが違います。いまはめている右のキャップは長い斜面が下で左のキャップは長い斜面が上になっています。私はすべて長い斜面が下に来るようにキャップをはめました。


これで完成です!!!!!!!!
下段を白と黒のまだらにしたのはなんとなくおしゃれな気がしたからです!
今後はOLEDを使えるようにするため、ファームウェアを書き込んだりしていきます!
とりあえずキーボードとして使える形になりました。
初心者でも使えるキーボードを作ることはできます。ぜひかっこいいキーボード作りましょう!

電子工作初心者がおくる自作キーボード制作ガイド【Helix】 前編

自作キーボードへの憧れ

自作キーボードってかっこいいですよね。縦横に整然と並んだシンメトリックなキーにやられてしまいました。欲しいと思ってから、分割型でオルソリニアなキーボードの完成品を探したのですが、「自作キーボード」というだけあって、自分で作るタイプのものしか見つけられませんでした。そこで、一念発起して作ってみることにしました。
キーボードを打つのがものすごく早かったり、こだわりがあったりするわけでもなく(キーボードを買ったのもこれが初めてです)、電子工作も中学生の時にはんだ付けをしたことがあるくらいの私がお送りする自作キーボート「Helix」の作製記録です。電子工作初心者で購入に踏み出せない方はぜひ参考にしてください。また公式推奨のビルドガイドがこちらにあります。大変丁寧なのですが、一部初心者には難しい部分もあるので、本記事と読み合わせながら作っていただくとスムーズに作製できると思います。

用意するもの


みなさん自分でダイオードを買ったり、アクリル板をくり抜いたりしているようですが、そこは初心者なのですべて揃ったキットを購入しました。遊舎工房さんのアクリル五行版の両手キットです。また、キーボードを光らせることに魅力を感じなかったので、Underglowタイプにしました。このキットにはキースイッチとキーキャップが含まれていないため、別途Kailhロープロファイルスイッチ(赤)とKailhロープロ無刻印キーキャップを購入しました。それぞれ7セット購入すれば5行を埋めることができます。また、左右のキーボードをつなぐためのステレオミニプラグとPCと本体をつなぐmicro USBケーブルが必要です。


また、はんだ付けに必要な工作器具を持っていなかったので、Amazonで購入しました。はんだゴテからピンセット、テスターまで揃っているので、これひとつで自作キーボード製作に関しては十分でした。

電子工作初心者による製作


では、まずはじめにOLEDのを使用するためのジャンパを行います。ジャンパって意味わらないですよね?赤枠で囲った部分の上下ををそれぞれはんだでつなぐことをジャンパというらしいです。


写真のようにそれぞれ独立してつなぐことはできましたか?


ジャンパができたらPCBを裏返し、ダイオードを実装していきます。赤枠に囲まれた部分を五段すべて行います。ここで問題が生じます。人間には腕が二本しかありませんが、ダイオードをつまんだピンセット、はんだ、はんだゴテを持つために腕が三本必要になってきます。


そこで上の写真のように下部に少しだけはんだを溶かしてのせておきます。その後ピンセットでダイオードをつかみ、のせてあるはんだを溶かしながらダイオードを実装します。ちなみに私は実装としいう言葉をはんだ付けするという意味で解釈しています!


ダイオードの向きに注意してください。ダイオードの線が書かれている方が下側になります。ダイオードを片側つけることができたら、ピンセットをハンダに持ち替えてもう片側もしっかりはんだ付けしていきましょう。


ひたすらこの作業を五段、左右続けましたか?この時できるだけ他の金属部分にはんだがもれないようにしてください。はんだづけがうまくできているか動作確認後に修正することも可能です。


次にTRRSジャックを実装します。スター・ウォーズにでてくるAT-ATのような見た目をしています。


これをPCBの表面から挿し、裏面をはんだづけします。この時それぞれ穴が外を向くようにしてください。また、左右で上下の位置が少しずれます。


足の部分をこのようにはんだ付けします。


次にリセットスイッチを表面から挿し同様に裏面からはんだ付けを行います。公式のビルドガイドではリセットスイッチのボタン部分が白でしたが、私に届いたのは黒色でした。


裏面には分かりやすくResetと書かれているのでここに挿さっているか確認してはんだ付けを行ってください。


スプリングピンヘッダをpro microにはんだ付けしていきます。ここで注意してください!一緒にはいっている棒はスプリングピンヘッダではありません!!!!!!!!!! 私はここで失敗してしまいました。私の失敗は後ほどまとめるので続けます。


スプリングピンヘッダは横から見ると棒のようですが、正面から見ると三角形の形にワイヤがなっていることがわかると思います。


金のドットが下にくるようにpro microに差し込み、逆側からはんだ付けをほどこします。


はんだ付けを行うとこのような感じです。


このような形でPCBに差し込みます。この時はんだ付けは行わないことに注意してください。


次にこのソケットをPCBに差し込み裏面よりはんだ付けを行います。


この部分に差し込みます。


そしてこの部分をはんだ付けするのですが、この時pro microやTRRSジャックの方が背が高いため、単に裏返してしまうと穴から脱落してしまい、上手にはんだ付けができません。私は下にちょうどおさまるようにアルミホイルを丸めて支えにしましたが、pro microやジャックを取り付ける前に取り付けてしまうのがよいかもしれません。

ひとまずここまでお疲れ様でした。次はOLEDの実装やキーキャップの実装について説明します。→後編へ

Pythonで証券会社からスクレイピング(例外を取り除く)

前回のおさらい。今回したいこと。

前回までで、自動で証券会社にログインしてスクリーニングを行い、合致したものをpandasで取り込み整形することができました。証券会社のスクリーニング機能は無料で公開されているものよりもはるかに多くの設定が可能です。しかしながら、すべての要素を含んでいるわけではありません。そのため、会社の不祥事でニュースに取り上げられるなど、非定量的なデータに弱くなります。そこで、今回はスクリーニングにかかったとしても買いたくない銘柄をグーグルのスプレッドシートと連携して除外する方法を考えます。

グーグルスプレッドシートで例外を登録

まずは、スプレッドシートにもしスクリーニングにかかったとしても買いたくない銘柄を記入していきましょう。グーグルスプレッドシート(https://www.google.com/intl/ja_jp/sheets/about/)はエクセルと似た機能を持っており、オンラインで使用できることから、どこからでも容易にアクセスすることができます。シートに銘柄コードを打ち終わったらファイルの共有ボタンからリンクを発行し、リンクを知っている全員が閲覧可能な状態にします。

python上のスクリーニング結果から除外

まず、おなじみのpandasでグーグルスプレッドシートのスクレイピングを行います。”google spread sheet link”にはさきほど取得したURLリンクを打ち込んでください。

次に、不要な空白行を消去します。

まず最初の行では列要素の空白行を削除しています。axis=1は列方向をhow=’all’はその列がすべて空白であった際に列を削除することを指定しています。二行目は空白を含む行すべてをhow=’any’で指定しています。この作業で除外したい銘柄コードを抽出できました。

銘柄コードは抽出できましたが、グーグルスプレッドシートからスクレイピングしたコードはなぜか小数になっています。そこで、整数に直します。その後文字列に変換して(なぜか分かっていないのですが、文字列にしないと最後のスクリーニング結果との比較ができませんでした。。。)、スクリーニング結果から、除外したいコードと一致するものを除くことで、スクリーニング設定に含められない判断を反映することができました。

Pythonで証券会社からスクレイピング(データ整形編)

前回のおさらい。今回したいこと。

前回はスクリーニング結果をスクレイピングによって取得するところまで行ないました(スクレイピング編)。しかし、このままでは必要なデータと不要なデータが同じセルにはいっていたりとデータを上手に扱うことが出来ません。そこで、pandasの基本的な機能を使いながらデータの整形を行ないます。

必要な要素の確認

まず、取得したデータにはいくつかのデータフレームがはいっていますが、目的のデータは2つ目にはいっているので、その部分を取り出します。
中身を見てみると、

  連番 銘柄 現在値
0 1 *東16773パイオニア 174 15:00+2.0 (+1.16%)

上記のようなデータになっていると思います。銘柄には取引市場と銘柄コード、銘柄名が一緒に入ってしまっています。また、現在地の部分には、現在地の他に取得時間と騰落率がはいっています。実際にスクリーニング結果にもこれらの要素は同一セルにはいっているため、分離する必要があります。

銘柄コードと銘柄名の取り出し

銘柄コードと銘柄名を取り出していきます。取引市場はすべて*〇〇の形式で表示されており、東証一部なら*東1、JASDAQなら*JQといった具合になっています。

そこで、まず銘柄コードはセル内の4文字目から7文字目に表示される部分であることが分かるので、その部分をnumberとして取り出します。次に7文字目以降の文字列が銘柄名になっているため、nameとして取り出します。また、現在値のセルはそれぞれスペースによっと区切られているため、スペースで別々のセルに区切ります。 最後にそれらをあわせて一つのデータフレームとし、それぞれの列に名前をつけると自分がスクリーニングをかけた株の銘柄コードと名前、現在値のはいったデータフレームを得ることができます。

Pythonで証券会社からスクレイピング(スクレイピング編)

前回のおさらい。今回したいこと。

前回はseleniumを使ってカブドットコム証券にログインする方法を書きました。seleniumを使えば簡単にログイン処理をすることができます。
今回は、ログイン後に実際にスクレイピングによって、必要なデータをpythonまで持ってくる方法を考えます。

kabuナビでスクリーニングする

カブドットコム証券にログインすると以下のようなページがでてくると思います。
スクリーニングには赤い矢印の部分にある、kabuナビを用いるので、kabuナビのエレメントをクリックします。

kabuナビをクリックすると新しいウインドウが表示されるので、操作するウインドウを切り替えます。その後詳細設定をクリックするのですが、ウインドウ変更後に要素を探しても、見つからない旨のエラーが返ってきます。私はここでつまずきました。HTMLにはインラインフレーム要素というものがあり、要素を入れ子状に埋め込むことができます。このインラインフレーム要素にフレームを切り替えないとインラインフレーム要素を探してクリックすることはできません。

また、新しいウインドウを開いた際に表示される前に操作を行ってしまうと要素が見つからずエラーが返ってきてしまいます。そのため、読み込みのために操作を一時停止するsleepをいれ、その後、スクリーニングのための詳細検索のページに移動します。

次にお気に入りから自分の設定したフィルタを適用します。このお気に入りの設定は事前に自分でしておく必要があります。PERやPBRなどの基本的な指標から、有利子負債比率や売上高変化率など細かな設定を行っておくことが出来ます。この細かい設定が可能なところが証券会社のスクリーニング機能を使うメリットです。
マウスオーバーによってひらくメニューは、通常状態でエレメントとして探すことが出来ないため、seleniumで擬似的にマウスオーバーする必要があります。その時に使えるのがActionChainsです。

最後に検索ボタンを押すことで、スクリーニング条件に合致する株式の一覧が表示されます。

表示された株式の一覧は以前に株価データサイトから取得する記事に書いた株価のスクレイピングと同様の方法でpandasを使ってテーブル形式でそのままスクレイピングを行ないます。

AIは新人類となるのか『エレクトリック・ドリームズ-自動工場-』

あらすじ

世界大戦によってほとんどの人類が滅びた後、自動工場だけが生産を続ける世界では消費と生産のバランスが崩壊し、自動工場による生産によって水質汚染や空気汚染などの公害が引き起こされている世界が舞台です。
主人公であるエミリーは自動工場での生産を中止するように、工場のAIロボットと対話を試みますが、却下されてしまいます。そこで、工場を破壊するためにAIロボットを脅迫して乗り込み、衝撃の真実が…..

ネタバレ-AIは人になれるか-

本作に出てくるAIは、人の脳を模倣して作られたAIでした。脳の記憶をデータ化するというのは、SFではよくある話ですが、神経の回路やパルスまで模倣できた時、そのAIの思考は単なる論理演算の結果として扱っていいのでしょうか。もし、人が同じ思考過程で思考結果を出した時、人を人たらしめているものはなにになるのか考えさせられました。
哲学者のパスカルは「人は考える葦である」と、人の持つ思考の偉大さと尊厳について説きました。つまり、思考こそが人を人たらしめていると言っても過言ではないでしょう。思考が神経の電気活動として模倣できるようになった暁には、エミリーのようにAIも一種の人類であると考える日が来るかもしれれません。

それは夢か現か幻か『エレクトリック・ドリームズ-真生活-』

ちょっとした暇時間におすすめの一話完結

ドラマでもアニメでも1シーズンを通してやめ時が分からないということが多々あり、徹夜で観てしまって翌日フラフラということは誰しも経験があると思います。また、映画は一話完結であるものの、2時間確保する必要があり、映画を楽しむ時間をしっかりと準備しなくてはなりません。一方で、この『エレクトリック・ドリームズ』は一話完結型であり、どのストーリーも50分ほどの長さなので、ちょっとした暇時間に観ることができ、またしっかりオチがついているためにスパッと一話でやめることができます。

胡蝶の夢と真生活

とても有名な物語に「胡蝶の夢」があります。これは、荘周が蝶になって自由に楽しく飛びまわる夢を見て、目覚めた時にこれは夢から目覚めたのではなく、蝶である自分が夢を見ているのではないかと考えるお話です。この「真生活」ではまさに現代版の胡蝶の夢と言ってもさしつかえないかもしれません。同僚を喪いながらも愛する妻と順風満帆の生活を送るサラと巨万の富を得ながらも愛する妻を喪ったジョージ。サラとジョージ果たしてどちらが蝶の夢を見ているのか。。。いろいろな物語に焼き直されながらも語られる夢と現の物語をぜひ一度観てみてください。

ネタバレ-夢か現か幻か-

サラがマフィアと戦って気絶させられた時にジョージに入れ替わります。一方でジョージはマシーンを用いてしかサラに戻ることができず、そのことについて作中でも指摘されています。つまり、マシーンを介したサラである現とジョージである夢との行き来の他に、サラがジョージになったという気絶による別経路での入れ替わり、「幻」を挟むことで、この物語を最後までどちらが現でどちらが夢か判断できないようになっているのが面白いと感じました。

ネタバレ-納得感のある人生-

なぜサラは愛する人を喪ったジョージの人生を選んだのでしょうか。それは、サラの妻が指摘するように、自分の人生はできすぎている、こんな生活を送って良いわけがないという自罰的な感情によって愛する人を喪った世界を作り出しますが、そこには自分ふさわしいしっくり感、納得感があったのだと思います。「自分はこの程度の人間じゃない、もっとふさわしい人生があるはずだ」というような上向きの納得感のなさを目にすることは頻繁にありますが、もしかすると下向きの納得感のなさを感じている人たちもいるのかもしれませんね。

おまけ-未来の生活-

真生活の随所に出てくるデバイス、例えば棒状のデバイスから空間にディスプレイが飛び出す携帯電話やハンバーガーショップでの精算のためにでてくる支払い装置、音声による入力が可能な完全自動運転カーなど、こんな未来が来てほしいという理想を形にしたようなデバイスたちに心躍りました。