ベルリンのITスタートアップで働くジャバ・ザ・ハットリの日記

日本→シンガポール→ベルリンへと流れ着いたソフトウェアエンジニアのブログ

Amazon Echoを買って「アレクサ!」と言ってから世界の見え方が変わった

Amazon Echoに的外れなコメントするヒマがあったら、今すぐ買って「アレクサ!」と言ってみるべし。私にとってAmazon Echoは単なる便利な商品という枠に留まることは無かった。大袈裟ではなく、世界の見え方を変えた製品だった。

我が家に英語版のAmazon Echoを置いて半年ほどになる。英語版が先行発売されていることから「ものは試し」という感じでなにげに買った。ミニマリストの私の家にはテレビや家具がほとんど無く、Amazon Echoだけが青い光のリングを照らしてぽつんと置いてある。

f:id:tango_ruby:20171109011935j:plain

最初にAmazon Echoを置いた日に私が子供たちに言ったのは、アレクサ(Amazon Echoのこと)は英語が分かるので、とにかくなんでもアレクサに向かってしゃべれ、と。子供は英語ネイティブなので話すことには問題無いはず。それでも最初は「一体この機械に向かって何を言えばいいの?」という感じだった。で、私が明日の天気は?とか、音楽かけろ、とか言って手本を示した。

ところがその後の数時間で子供達が「アレクサ!」「アレクサ!」と言ってガンガン使い出して、私は子供がアレクサを使う様子から逆に学ぶ立場となってしまった。

これは私の家に招いた友人のドイツ人家族にも同じ現象が起こった。その友人家族の両親は「おーこれが噂に聞いていたAmazon Echoか」という感じで眺めている。やはり大人は人が見ている前で機械に話かけるのにまだちょっとした抵抗があるようだった。しかしそこの子供が「アレクサ!」「アレクサ!」と言ってガンガン話し出す。そんな様子を見てようやく大人も面白くなってくる、という感じだ。

ある時、子供が唐突に英語で「アレクサ、なんか面白い話し聞かせて」と言い出した。私は「なんてことをAmazon Echoに要求するんだ」と思っていたが、Amazon Echoは普通に子供用の話をはじめたのだ。

一事が万事こんな風に子供からAmazon Echoの使い方を学んだ。

日本でも日本語版Amazon Echoの発売が発表された。そのニュースに対するユーザーのコメントをざっと読んだ。まだ発売前だからだろうがちょっと的外れなコメントが多いという印象を持った。

その中のひとつとしてこんなのがあった。

iPhoneのSiriもあんまり使わないし、必要性って無いだろう

実際に家にAmazon Echoを置いて生活すればSiriとAmazon Echoがどれほど異なるかが分かる。まずSiriを使うには手でiPhoneを取り出して、ボタンを押して、マイクに向かってしゃべる、という一連の動作が必要になる。
それに対してAmazon Echoは7つの指向性マイク内蔵で、どこからしゃべってもいい。いつどんな時でもあなたの命令を待っている状態なのだ。ボタンを押す必要は無い。思いついたその時に「アレクサ、音楽かけて」と言えば、音楽がかかるのだ。

この「いつでも聞いてくれる状態」がやたら気持ちいい。

近未来を描いた映画「ブレードランナー 2049」でも登場人物がメカ類を使う際に一切キーボードなんかは使わず、ほぼ全て音声で操作していた。これはAmazon Echoと暮らしている私の実感と一致する。細かい作業を要しない機器のインタフェースとして音声認識は最強に近い。「テレビを消して欲しい」と思って、リモコンに手を伸ばしてボタンを押すのは遅い。「テレビを消して欲しい」と思ったら、そのまま「テレビ消して」と言うと実行されるのだ。これそこが「思ってから実行」までの最短コース。

Amazon Echoと暮らして、普段の生活においても切符の販売機や自動車、家電製品のインタフェースを見るたびにその未来像が重なって見えて来た。音声認識の技術は今後、全ての製品に応用されるはず。

こんなブログ記事で「なんでも言ったら聞いてくれる機械です」と書いても、あの使用感は伝わりにくい。新しいテクノロジーを追いかける必要があるエンジニアならばAmazon Echoもしくはスマートスピーカーと呼ばれる他社製品は必ず「買い」だと断言できる。この未来感を実感できているのと、できてないのとでは大きく変わってくるからだ。

スティーブ・ジョブズが初めてiPhoneを発表した際に「あんな高価な電話は誰も必要としていない」とか「クソ商品を大袈裟に発表しているだけ」なんてコメントしてた人達が居た。ところがその後、iPhoneとスマートフォンが人の生活を劇的に変えてしまった。

今、Amazon Echoに対して的外れなコメントをしている人は、あの時iPhoneに冷ややかなコメントをしつつ、その後のスマートフォン革命がまったく理解できなかった人達と同じに思える。

もうひとつAmazon Echoに対する的外れコメントがこれ。

人が機械にしか話さなくなって悪影響ありそう

はっきり言う。そういう変な理由をこねくり回して新しいモノを寄せ付けない発想の方がよほど悪影響だ。
年食って感覚が劣化してしまった大人だったら、あきらめていただいても仕方ない。ただ子供は違う。もし未成年の子供が近くにいたらぜひAmazon Echoをそばに置いてあげて欲しい。間違いなく次の世代はこうしたAI技術と共に生活するはずで「機械に話すなんて照れくさい」なんて言ってるヤツはAI時代に取り残される。
「Amazon Echoに話しかけて命令するなんて誰でもできるだろ」などと思うことなかれ。すごい技術だと思うが完璧ではないし、Amazon Echoを使い込むにはちょっとしたコツが要る。コツとは英語の話し方や話す内容のことだ。スマートフォンが普及して10年以上になるがタッチスクリーンを指で操作することに関して、ひとそれぞれに違いがあるのと同じこと。フリック入力でちゃっちゃと文字入力ができる人がいる一方で、アプリの起動すらもたもたしている年配の人も居る。

Amazon Echoに代表される音声入力とAIを本当の意味で使いこなせる人と使いこなせない人の差は今後、劇的に拡がってしまうだろう。だからもしこれをお読みの方がいまいちピンと来なくても、子供にはあげて欲しい。今年の子供へのクリスマスプレゼントは一押しでAmazon Echoだ。子供が欲しがっているのはニンテンドーって?。子供はそんなとぼけたこと言ってないで「アレクサ!」って言ってAIと暮らせ、と。

Amazon Echoと暮らしていると、近い未来に音声認識の技術が現行の使われ方を超えたところに到達していることを毎日想像させてくれる。そこがまさに私にとって世界の見え方を変えてくれる製品だった。

Amazon Echo (Newモデル)、チャコール (ファブリック)

Amazon Echo (Newモデル)、チャコール (ファブリック)

Amazon Echo Dot (Newモデル)、ブラック

Amazon Echo Dot (Newモデル)、ブラック


tango-ruby.hatenablog.com
tango-ruby.hatenablog.com
tango-ruby.hatenablog.com
tango-ruby.hatenablog.com

海外移住を「カッコいい」なんて思ってたら勘違いかもしれませんよ、と言っておく

ある意味では海外移住なんてカッコ悪いことの連続でしかないな、という話。

以前は質問箱なるものを設置して海外移住をお考えの方から質問を受け付けたり、今でもメールなんかで同様の質問をよくいただく。ご質問者さんは海外移住を考えていて、そのこと自体はいい事だと思うのだが、たまに「?」と思う時がある。それは「海外移住=カッコいい」みたいな意識が見えた時だ。

私からすれば海外移住なんて根っからカッコ悪い事が好きな奴でもないと続かないと思っている。

初めて日本からシンガポールに渡り、日本人のまったくいない会社で英語だけ使って働き始めた時のこと。まだまだ全てが英語で運営される職場に慣れない私は人事担当のA嬢に呼ばれて、政府に提出する就労書類についての説明を受けていた。聞きなれない書類用語の英単語をがんばって聞きながら理解しようとしているのに、よく分からない言葉が何度か出てくるので会話を止めてこう聞いた。

「ちょっと待って。その『ラッフルズプレイス』ってなに?」

シンガポールをご存知ない方のために説明するとラッフルズプレイスとはシンガポールのシティエリアにある主要駅とその周辺の名前。東京で言えば「新宿」のような存在。

前述の私の素朴すぎる質問を受けた時のA嬢のキョトンとした表情が忘れられない。
いい年したオッサンが東京で働く際に真顔で「おい、君。その『新宿』というのはなんだね?」と聞いているところを想像して欲しい。

きっとA嬢は「こんな何も知らない奴に複雑なサーバーインフラやデータベース設計を任せて大丈夫かいな?」と思ったに違いない。

これが海外移住の現実だ。地元の小学生でも知っているようなことすら知らないオッサンが七転八倒しながら働き、生活を送ることになる。ラッフルズプレイスの例は何百とある私のカッコ悪い事例のひとつでしかない。

そんな私も5年も英語ばっかりの環境で暮せば慣れるし、英語もそれなりに達者になる。最初は失敗続きだった海外生活も違ってくる。
最初の頃とは異なり、オシャレな海外のITオフィスで多国籍なメンバー達とまーまー流暢な英語を使って仕事をしている姿はカッコよく映るのかもしれない。またITエンジニアの場合、英語がそれなりに使えるようになると情報量が格段に上がる。元々が英語が標準のITの世界で日本語で検索したり、情報を仕入れている時点でちょっと不利だったのが標準になっただけなのだが、本人にしてみればやはり情報量の差を感じずにはいられない。

さらにシンガポールというのはすごい都市でその地の利を活かしてあらゆる情報が集積されている。英語と中国語が標準であることから北米、ヨーロッパ、中国からの情報がいっきに集まる都市なのだ。
そんな都市でITエンジニアとして暮らしていると「オレはなんでも知っている気分」になってしまう。

実はそういう自分が気に入らなかった、というのがシンガポールからヨーロッパに移住した理由でもある。

だいたい現代の世の中では「オレはなんでも知っている」なんて思ってる奴が一番危ない。

ブラックスワンで有名なナシーム・タレブ氏の書籍にもあるように、情報革命で変化のスピードが未だかつてないほどに速くなった際に全ての出来事は「予想外の出来事」となった。政治情勢の変化も、天災も、金融危機も、創業数年でしかない会社が世界を変える影響力を持つのも、全て予想通りに予想外の出来事だ。そこで生き抜く方法は常に変化に備え、変化し続けること。

シンガポール勤務初日にA嬢に「こいつ大丈夫か?」という目線で見られている私はかっこ悪いが、そんな状況下で心に抱く「ちきしょー!」という反骨精神が変化への適応をドライブさせる。私はどんなに人からカッコ悪く見えたとしても、あの状況が妙に好きなのかもしれない。

つい先日はドイツの住所登録で役所の職員の人とかなりモメた。解決した今だから分かるが、ドイツ生まれのドイツ人だったら絶対にモメない内容だった。カッコ悪いことこの上ないが、これこそが私が求めていたことだ。慣れてなくて不器用にしかできないが、なにか新しいことに挑戦しているというドキドキ感がある。

そんな状況を切り抜けたからこそ「オレだったらアジアでもヨーロッパでもそれなりに暮らせるかな」といった根拠の無い自信が付いたのだと思う。

おそらく数年後、誰の目からも「カッコ悪いなアイツ」と思われないぐらいにヨーロッパ生活に順応したら、私はまた次の場所へ移住するような気がする。カッコ悪さとセットになった新しいことへの挑戦が好きなのだ。きっとこれは自ら選んで海外に出た人に共通してある感覚ではないだろうか。

という訳で海外移住を「カッコいい」と思ってたら大いなる勘違いかもしれませんよ、と。

タレブ氏の本はこれ。

反脆弱性[上]――不確実な世界を生き延びる唯一の考え方

反脆弱性[上]――不確実な世界を生き延びる唯一の考え方


tango-ruby.hatenablog.com
tango-ruby.hatenablog.com
tango-ruby.hatenablog.com
tango-ruby.hatenablog.com
tango-ruby.hatenablog.com

ReactをGoogle Cloud Platformにデプロイする

静的なReactをGoogle Cloud Platformにデプロイする方法。

いろいろググって出てきた方法で試したのに、これという解説が見つからなかった。Reactのデプロイに関してはGoogleの公式ドキュメントもStack Overflowのポストも全部イマイチという印象。

決してGoogle Cloud PlatformにReactが適さない訳ではない。GCPは無料でいろいろできるし、Reactとも相性がいいはず。なんでこの系統のドキュメントが充実していないのか、いまだに謎。
なのでここに書いた。

create-react-appを入れてサンプルのReactコードを作る。

$ npm install -g create-react-app

以下のコマンドでサンプルプロジェクトがスグにできあがる。

$ create-react-app my_test_app
  :
  :
 We suggest that you begin by typing:

   cd my_test_app
   yarn start

 Happy hacking!

$ cd my_test_app

$ npm start

npm startをした時点でhttp://localhost:3000/にアクセスすると以下のReactサンプル画面が見える。
f:id:tango_ruby:20171009052737p:plain:w300

buildをしてbuildフォルダを作る。

$ npm run build

GCPにログイン。Google Cloud Strageで新規バケットを作成する。Create Bucketボタンを押す。
f:id:tango_ruby:20171009053153p:plain

お好きな名前を付ける。
f:id:tango_ruby:20171009053352p:plain

上部のUpload Folderボタンを押して、先ほど作成したbuildフォルダを選択し、アップロードする。
f:id:tango_ruby:20171009053459p:plain


以下のapp.yamlを作成する。

runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /
  static_files: build/index.html
  upload: build/index.html
- url: /
  static_dir: build

作ったapp.yamlファイルをバケットにアップロードする。結果として以下の状態になる。
f:id:tango_ruby:20171009053800p:plain

上部のActive Google Cloud Shellボタンを押すと、シェル・コマンドの入力画面がChromeの下に出てくる。
f:id:tango_ruby:20171009053842p:plain

以下のコマンドをGoogle Cloud Shellで実行し、フォルダを作成、シンクロさせる。

 $ mkdir my-test-app123
 $ gsutil rsync -r gs://my-test-app123 ./my-test-app123

全てが正常に行われていると作成したフォルダ内にapp.yamlとbuildが転送される。

$ cd my-test-app123/
$ ls
app.yaml  build

Google Cloud Shellのプロジェクトフォルダ内で以下のコマンドを実行してデプロイする。

$ gcloud app deploy

 [1] europe-west2  (supports standard and flexible)
 [2] us-east1      (supports standard and flexible)
 [3] us-east4      (supports standard and flexible)
 [4] asia-northeast1 (supports standard and flexible)
 [5] australia-southeast1 (supports standard and flexible)
 [6] southamerica-east1 (supports standard and flexible)
 [7] us-central    (supports standard and flexible)
 [8] europe-west3  (supports standard and flexible)
 [9] europe-west   (supports standard and flexible)
 [10] cancel

Please enter your numeric choice:  7

target url:      [https://my-test-app-182318.appspot.com]
 :
 :
Deployed service [default] to [https://my-test-app-182318.appspot.com]
You can stream logs from the command line by running:

最後に出てきたhttps://<アプリの名前>.appspot.comにアクセスするとデプロイした内容が見える。

もっといい方法をご存知でしたらコメントください。

プログラマのためのGoogle Cloud Platform入門 サービスの全体像からクラウドネイティブアプリケーション構築まで

プログラマのためのGoogle Cloud Platform入門 サービスの全体像からクラウドネイティブアプリケーション構築まで

tango-ruby.hatenablog.com
tango-ruby.hatenablog.com
tango-ruby.hatenablog.com
tango-ruby.hatenablog.com
tango-ruby.hatenablog.com