僕は発展途上技術者

万華鏡でみるような模様が簡単に描ける Mirror Drawing を Scratch でつくりました


[追記] 最新版はこちら -> https://scratch.mit.edu/projects/117434761/
色もつけられるようにしてみました。

Mirror Drawing というプロジェクトを Scratch でつくってみました。



Scratch 上で60秒間の動画が撮れるようになったので、それを使って撮ってみた動画がこちら↓





こんな感じでマウスで描いた模様が縦横斜めにコピーされるので、適当に描いてもわりと綺麗な模様が描けるというプロジェクトです。

書いたコードは以下の通り。こんな短いコードでできてしまって Scratch やっぱり楽しい。



Scratch 上でいいねされたり、おまけにリミックスもされていて、naritaku くんの作った作品がこちら ↓



分割数が15まで増やせるようになっていて、適当に描いてもこんな万華鏡でみるような模様が描けて楽しい!せっかくなのでこちらもデモ動画をつくってみました。





自分の作品がリミックスされて、さらに面白く楽しいものになっているのを見るのはとても嬉しいですね。
みなさんもぜひいろいろ描いてみてください。

GitHub で日本国憲法を修正してみる - 第9条編

参院選で自民党が圧勝し、改憲の発議が可能になるかもしれないということで、いまのうちに憲法を勉強しようかなと思い立ちました。

もちろんまずは実際に読んでみるがいいのですが、エンジニアとしては、やはり自分なりに修正したくなってしまいます。そこで、ソースコードのように修正履歴を管理できないかなと思って探してみたら、ありました!

日本国憲法 - GitHub Pages

ちなみに、GitHub はプログラムのソースコード管理に使うエンジニアのためのツールですが、データの共有や文書管理にも威力を発揮する便利なツール。ホワイトハウスのアカウントをのぞいてみると、たとえば Petition Signature Form(嘆願書のフォーム)なんかあって、だいぶすすんでる。

The White House

とりあえず、冒頭の日本国憲法のレポジトリを自分のアカウントにフォーク(コピー)してみました。

champierre/NihonkokuKenpo

さて、憲法を読むのは、センター試験で「倫理・政経」を勉強したとき以来ではなかろうか。

普通読まないですよね。。結構長いし。全11章かあ。。

というわけで、とりあえず誰もが知っていて一番みんなが話題にし論争になる第9条から、臆せずとりかかることにします。

第9条は第2章にありました。

NihonkokuKenpo/src/chapter2.markdown

お、第2章には第9条しかない。わずか3行。これは最初にとりかかるにはちょうどいい長さです。

ざっと読んでみると、言い回しが古臭くて読みにくいです。

意味が変わらないように注意しながら、言い回しを変えたり、不要と思える部分を削除します。ソフトウェア開発の世界では、これをリファクタリングと言います。





これでちょっとは読みやすくなりました。

さて、いよいよセンシティブなところに切り込んでみます。

憲法9条第2項ですね。

小学生のときに初めて憲法を勉強し、第9条および自衛隊のことを勉強したとき、こどもながらに「おや?」と思ったことを良く覚えています。「戦争をしない」これはいいことだと思いましたが、「軍隊を持たない」は、え、じゃあ誰か攻めてきたときどうするんだろう?と。でも戦車も戦闘機も持っている自衛隊というものがある、と。。あれ?「軍隊を持たない」って宣言してるんじゃなかったっけ?さらにさらに、向こう側が攻めてこない限り、こちらは攻撃できない、と教わりました。それは、立派なことではあるけれど、こちら側が圧倒的な強さを持っていないとやられてしまうよ、と思いました。

それから大人になった僕は、震災のときなどの災害救助で活躍する自衛隊を見てきましたし、軍隊をまったく持たなくてもいいと潔く言えるほどの勇気は持ちあわせていません。もし家に泥棒が入ってきたら、観念したほうがいいときもあると思うけど、家族に危害が加えられそうなら木刀かゴルフドライバーで応戦するというオプションも持っておきたいです。

というわけで、戦争や侵略のためには使わないけれど、軍隊は持つ、というかすでに自衛隊という軍隊を持っているのでそれと矛盾しないように修正したのがこちらです。



わずか1文字の追加でバグを直してやりました。コードの修正はなるべく少ないほうがいいのはソフトウェアエンジニアには常識です。

国民投票にかけるときは、修正項目ごとに賛成・反対を問うそうなので、これくらい短い修正ならば判断しやすいのではないでしょうか?

というわけでこちらが9条修正に対するプルリクエストです。

Feature/fix 9 jou



だいぶすっきりしました。

コード量減りましたし、長年自分のなかでモヤモヤしていたバグをたった一文字の追加でやっつけてやりました。我ながら渾身のプルリクエストだと思っています。

いいね、と思ったら :+1 やリアクションをお願いしますね。

けしからんといったご批判もあるやもしれませんが、僕の人格を攻撃することなく Issue をオープンするなり対案の Pull Request を送るといった建設的なりアクションをお願いします。

自分だったらどう修正するかなと考えながら憲法を読むのは楽しいですし、とても勉強になるので、みなさんもやってみてはどうでしょう? Git 使ったことないって人には、いい勉強になりますし。

改憲とか重く考えてしまうものですが、もっと気楽にみんなでこうしたらいいんじゃないかとか意見を言い合える方が良いと思います。

また時間あるときに第2章以外もみていきたいと思います。




Raspberry Pi ではじめるどきどきプログラミング 増補改訂第2版が出版されます

共著で書かせていただいた Raspberry Pi ではじめるどきどきプログラミング 増補改訂第2版が 7/15 に出版されるということで、手許に見本紙が届きました。



担当している Scratch と Minecraft Pi でプログラミングの部分と、改訂版でどこが変わったのか、を中心にいくつかアピールポイントを挙げていきたいと思います。


  • ラズベリーパイ3と最新の Raspbian OS に完全対応、インストール方法や操作方法などはもちろん、メニューバーの色がちょっとだけ変わったというような細かな違いも漏らさずスクリーンショットを差し替えています。もし第1版をお持ちであればどこが変わったのかをみつけるのも楽しいかもしれません。

  • 謝辞にも書いていますが、ラズベリーパイをセットアップしていくときの説明写真に登場する手のモデルには、第1版のときとなるべく変わらないもにしたいということで、成長して大きくなってしまった長男の代わりに遺伝子が一番近いだろう次男に登場してもらっています。

  • 僕が担当している Scratch と Minecraft Pi でプログラミングの部分は、他の章に比べると説明やキャプチャの差し替えは少なかったのですが、Scratch と Minecraft Pi をつなげるソフトウェアの Scratch2MCPI を大幅に変更してバージョンアップ、出版とあわせて 2.0.0 をリリースします。

  • その Scratch2MCPI 2.0.0 の大きな目玉は、絶対座標を指定するのでなく、自分の視点でキャラクターを動かしながらブロックを積んでいける Minecraft Graphics Turtle に対応したことです。かねてよりこの対応をすすめてくださっていたなすラボの星野尚さんバージョンの Scratch2MCPI を取り込む形で対応させてもらい、そしてその解説も追記部分として執筆していただきました。

  • 星野さんのタートルグラフィックスに関するコラムは注目だと思いますが、Scratch 2.0 を Raspberry Pi で使えるようにする方法を解説したコラムも要注目です。セットアップ自動化スクリプトも作ってくださり、難しかった手順が格段に簡単になっています。

  • Minecraft Graphics Turtle への対応は、Scratch2MCPI をオープンソースソフトウェアとして公開していたからこそ実現したことだと思います。これは第1版から変更することなく残している部分ですが、オープンソースソフトウェアの意義やマナーを解説したコラムは、僕がかなりこだわりを持って書いた部分のひとつです。こどもたちにオープンソースソフトウェアの素晴らしさが少しでも伝わったらいいなと思います。



  • こんなところでしょうか。。

    お子様がいる方、甥っ子、姪っ子、親戚のなかにプログラミングに興味を持ちそうなこどもがいたら、一冊いかがでしょう?

    夏休みにも間に合ったことですし、自由研究にも良いかもしれません。

    Raspberry Piではじめるどきどきプログラミング増補改訂第2版
    阿部 和広 石原 淳也 塩野 禎隆 星野 尚
    日経BP社
    売り上げランキング: 4,789

スクラッチャーのためのScratchX入門 - その1 ScratchXとは?

(この投稿は大人のためのプログラミング勉強会でScratchXのことを紹介したときの内容をもとにして書いています。)

ScratchXで簡単な自作ブロックを作って動かすまでを、これから何回かにわけて、Scratchをやったことがあるこどもから大人までのスクラッチャーを対象に解説したいと思います。

まずはScratchXって何?というところから説明します。大人のためのプログラミング勉強会でも「ScratchXとScratchと何がちがうのですか?」と聞かれました。

実際に見てみるのが早いので、ブラウザで http://scratchx.org/#scratch にアクセスしてScratchXを開いてみましょう。



ScratchXは、ScratchをつくっているおなじMITが開発した、Scratchに自作ブロックを追加できる新機能がついたScratchの新型実験版だと思ってください。ロゴの横にBeta(ベータ)と書かれていますが、これが実験版ですよという意味を持っています。

見た目はほとんどScratchと変わりありません。ぱっと見てわかる違いと言えば、おなじみのスクラッチキャットがいないということくらいでしょうか。

自作ブロックが追加できるとはどういうことでしょう?

それをみてみるためにText to Speechのブロックが追加されたScratchXを開いてみます。

http://scratchx.org/?url=http://scratchx.org/tmp/TalkingGobo.sbx

をブラウザで開いてみましょう。しばらくすると、



という見慣れない画面が表示されます。

実はこれは警告画面で、「今から開くScratch画面では、拡張機能が使われているけれどスクラッチチームはその機能には責任を追わないで、自分で注意して使ってね」というようなことを言っています。実はScratchXに追加できる自作ブロックはいろんなことができるのだけれど、やろうと思えばブラウザに残されている情報を盗むみたいなかなり危険なこともできてしまうので、素性が怪しいブロックは使わないようにしましょうということなのです。

Text to SpeechはオフィシャルのScratchXのページからリンクされているものなので問題はありません。緑の[I understand, continue]のボタンを押して次に進みましょう。



ゴボ(gobo)をクリックしてみましょう。入力する欄が現れるので、試しに「こんにちは」と入れてリターンキーを押すと「こんにちは」としゃべります。(PCの音声をオンにしてください)

紫色の「その他」のグループの中のspeakというブロックが今回追加された拡張ブロックです。



このようにしゃべるというScratchにはない機能と、それ用のブロックを追加できるのがScratchXです。

次からは実際にこの追加できる自作ブロックをつくっていきたいと思います。

自立して二輪で走るロボットWowWee MiPをScratchXからプログラミングできるようにしたScratch2MiP

自立して二輪で走るロボットWowWee MiPをScratchXからプログラミングできるようにしました。

WowWee MiPはちょうど一輪車に乗っている人のようにうまくバランスをとりながら動くことができるロボット。おっとっとといった感じで倒れそうで倒れない。デモ動画を観てもらえばどんな感じかわかるかと思います。





» Scratch2MiP

を使うと、教育用プログラミング環境のScratchに拡張機能を追加できる仕組みを加えたScratchXから、ブロックを組むような感じでMiPの動きを自由にプログラミングすることができます。

たとえば、MiPに正方形を描くように動かすにはこんな感じでプログラミングします。



Scratch2MiPの開発をおこなったMac OS以外でも、WindowsやRaspberry 2/3でも動作することが確認されており、それぞれセットアップの方法が公開されています。

» Windowsでscratch2mipを使う

» Raspberry Pi 3でscratch2mipを使う

» Raspberry Pi 2でscratch2mipを使う

Amazonでも購入できるトイザらス版Meet MiPを僕は使っていますが、タカラトミー版Hello! MiPでもできると思います。

SpheroRomoなどこれまでいろいろなガジェットやロボットをScratchからプログラミングして操作できるようにしてきましたが、WowWee MiPはそのなかではかなり安価にモノが入手できるので、各所プログラミング学習の場でいろいろと使えそうで楽しみです。

無料でSSLが使える Amazon AWS Certificate Manager はまりどころ

Amazon Web Servicesの無料SSL/TLS証明書サービス「AWS Certificate Manager」が東京リージョンでも利用可能になったので、運用している Web サービスの「まちクエスト」と「モニュメント」の両方でSSLを導入しました。





ELB(Elastic Load Balancer)に設定するだけで楽勝だと思っていたのですが、なんやかんやいろいろはまったので書き留めておきます。

運用しているドメインに対して証明書の発行をリクエストすると、そのドメイン所有者として申請しているメールアドレスに確認のメールが送られてきます。そのメールに載っているリンクを踏まないとリクエストは完了しません。ところが「モニュメント」のドメインmonumen.toはトンガという国のドメインなのですが、ドメイン所有者のメールアドレスは伏せられている。「whois monumen.to」を実行してもほとんど何も表示されないのです。

調べてみると、所有者として登録しているメールアドレスの他に、そのドメインの頭にadmin@、administrator@、hostmaster@、webmaster@、およびpostmaster@を付けたメールにも確認メールが送られていることがわかったのですが、そのドメインではメールの送受信をできるようにしてはいませんでした。以前なら無料だったGoogle Appsを使うところなのですが、今は有料になってしまったので、独自ドメインでメールアドレスを発行できるサービスを探して見つけたのがZohoというサービス。これでサクッとwebmaster@monumen.toというメールアドレスを作り、確認メールを再送信したところ、無事届いて確認の手順を踏むことができました。



証明書を発行するとき、その証明書が有効となるドメインを指定するのですが、はじめ *.monumen.to のようにワイルドカードを使ったドメインだけを登録していました。

しかし、どうもうまく動かない。調べてみたらサブドメインのないmonumen.toも登録する必要があると知りました。

ワイルドカード付きも含めてドメインの数だけ証明書を発行し、証明書をひとつだけしか指定できないELBを証明書の数だけ立ち上げるのかと思ったのですが、証明書のAdditional namesという項目に追加のドメインを指定できることがわかりました。



結果的に発行する証明書はひとつだけで済み、対応するELBもひとつだけ起動すればいいことになりました。

いくつかはまる箇所はありましたが、自分で証明書発行の手続きをおこない、インスタンスに証明書を置いて使えるようにする作業よりは格段に簡単にSSLへの移行ができたと思います。

関連するブログ記事はこちらです↓

» まちクエストをSSL化しました

» モニュメントをSSL化しました

Hakuba International School のスプリングキャンプでプログラミングを教えてきました

先々週の話になってしまいましたが、長野県白馬村にインターナショナルスクールの創設を目指すための皮切りとなる活動で、春休みの期間スプリングスクールがおこなわれ、そこでこどもたちにプログラミングを教えてきました。

Connection(コネクション)こそがIntelligence(知性)



地元白馬中心に東京や京都からも参加してきた小学校高学年から高校生までの20人弱のこどもたちが5日間参加するクラスは Programming、Art、Robotics、Music。そして総まとめとして最終日にはこどもたち一人ひとりがプレゼンする機会が設けられ、毎日その準備のための時間があって、プリティッシュスクールイン東京の校長先生も務めていたクリス先生がその指導にあたっていました。

容赦なくイギリス英語でプレゼンのための心構えを説いていくのですが、その中で特に印象に残ったのは、正確な言い回しは忘れてしまったのですが、Connection(コネクション)こそがIntelligence(知性)という内容の言葉でした。こどもたちは Programming、Art、Robotics、Music と別々の事柄を学ぶのですが、そこに関連性、つまり Connection(コネクション)を見出すのがIntelligence(知性)なんだと。 あるいは自分のこれまでの経験だったり、好きなことだったりを関連付けて考えるようにしましょう、というように受け取りました。

始終、Do not be the same, be different. (みんなと同じじゃ駄目だ)や Be the best. (他の誰にも負けるな、一番になれ)といった内容の言葉がかけられ、素朴な環境で育ってきた日本人のこどもたちにそりゃキツすぎやしないかい、とも思ったのですが、最終日には、Power Point をつかったり、楽器をひいたり、動画や(Art の時間で学んだ)ストップモーションアニメで表現したり、(Programmingで学んだ)スクラッチの作品をデモしたり、あるいはテレビ番組で良くみるホワイトボードに貼ったシールをめくっていく形式や、スピーチのみで勝負、などなどそれぞれとても個性的で素晴らしいプレゼンを見せてくれたのです。

ConnectionとIntelligenceのことなど含め、ちょっと考え方を変えるヒントというかコツのようなものをうまく教えることで、こんなにも変わるものなんだなと。いや、こどもたち自身は始めから個性を持っていたので、そこが変わったわけではなく、うまくそれを発揮したり表現する手段を身につけたこどもたちの成長ぶりは立派だと思うし、なるほどうまい教え方だとも感心しました。

おもろい大人たち



こどもたちがおもしろいというのは言うまでもないことで、プログラミングをこどもたちに教えるということを続けている大きな理由の一つなのですが、今回はおもしろい大人たちもたくさんで大いに刺激をもらい楽しませてもらいました。

白馬にインターナショナルスクールを作ろうなんて突拍子もないことを考え実行にうつすなんて相当変わった人(いい意味で)に違いない草本さんがお知り合いのドットインストールを運営している田口さんに Programming のクラスを担当してくれないかと声をかけ、その田口さんに声をかけられて僕も参加することになったといういきさつだったのですが、草本さんが集めてきたほかのクラスの先生方もそれぞれ個性的でなかなかにおもしろい方々でした。

Music では日本の伝統的な楽器である篠笛を、日米野球でのアトラクションやミラノ万博などの各国で公演している篠笛奏者の狩野氏が教え、Robotics ではダンボールでできるロボットの手やそのベースとなる Tensegrity と呼ばれる構造を使った教育プログラムを東大先端研の紙ロボット研究室のメンバーの小仙・黒川氏が進めていました。Art ではストップモーションアニメを使った作品作りを、オーストラリアでオーストラリア先住民のこどもたちに先進的な教育をおこなったことで表彰されたCasey 先生が教えます。

スプリングスクールを支えるほかのスタッフの方々も、スキーがプロ級だったり、海外・国内いろいろなところを旅して写真を撮っていたりなどなど、それぞれに他と違ったユニークなキャリアをお持ちの方々ばかりでした。おもしろいと感じるかどうかはあくまで人それぞれの基準ですが、みんな好きなことを仕事にしているというところが共通していて、どうやらそこを僕はおもしろいと感じたのだと思います。

Let curiosity be your guide(好奇心!好奇心!好奇心!)



Programming のクラスでは、Raspberry Pi を組み立て、その上で Scratch (スクラッチ)を使い好きな作品をつくって、最後にそれぞれデモして発表(Show & Tell)するということをおこないました。一日1時間、最終日のプレゼンをのぞいて4日間のコースだったのですが、ほかの時間はせっかくなので、僕もこどもたちと一緒にほかのクラスを見学させてもらいました。

Robotics の授業では、Tensegrity(以下写真のような輪ゴムと紙でつくった不思議な構造物)を自分でもつくってみたり、Music のクラスでは、鳥笛やたいこを作ったり、篠笛はじめ全部の楽器をひととおり吹いたりたたいたりしてみましたし、篠笛はひとついただいて自宅に持って帰ってきました。



Art のクラスでこどもたちが使っていたストップモーションスタジオというアプリは後日、東京で OtOMO がおこなうスクラッチのワークショップに見学に来てくれた Casey 先生に、うちの次男とともに使い方を教えてもらい、こんな感じで試しにつくってみました。





見たり聞いたりだけでは駄目で、すべてできるだけ手を動かし自分で体験してみないと理解したことにはならない、と心がけています。

Tensegrity をつくるのも、篠笛を吹くのも、ストップモーションアニメをつくるのも、それぞれどこが難しくて、でもそれぞれコツがあって、どうやってその難しさを克服していくのかということはやってみないとわからない。もちろん時間は限られていてほんの触りの部分しかわからないのだけれど、それを教えるその道のプロのひとたちがいかに凄いのかということもちょっとはわかる。

Let curiosity be your guide(好奇心をあなたのガイドにすべし(?))というフレーズが Hakuba International School のスローガン(?)に掲げられているのだけれど、良い言葉だ。

こどものときに皆が持っていたはずの好奇心を、大人になるとほとんど失ってしまう人がほとんどだが、できるだけ維持することを心がけたい。いろいろなことにチャレンジしたり、おもしろい大人たちの話を聞いて刺激を受けたら、それを自分の経験や興味をもっていることと結びつけ関連づける。それこそがConnection(コネクション)であり、Intelligence(知性)だということを、こどもたちと学べたとても充実した5日間でした。






デジタルネイティブなこども達に囲碁を教える方法 - 我が家の場合

AlphaGo 対 イ・セドルの世紀の戦いが残していったもの、それは我が家の囲碁ブームでした。

ちなみに僕の囲碁歴は、もうすでに約30年も前になってしまいましたが中2の頃に学校の囲碁部に半年ほど顔を出した程度。棋力は、覚えたての頃に日本棋院に行って17か16級を取ったあと、最終的には初段の人に4子か5子置かせてもらってやっと勝てたという記憶があるという程度です。

中2と小5の息子達に囲碁のルールを教えてみたら結構やる気になっているのですが、どうやって教えたらいいの?と聞かれることが多いので僕がやったことを書き留めておきます。

囲碁は世界一面白いゲームと言われている(僕がそう思い始めているので嘘ではない)、3000年も前からおこなわれている、信長・秀吉・家康もやっていた、といった話をしておけばまずは興味を惹きつけることができます。

囲碁は結局のところ戦争ゲーム。相手の補給路を絶つのか、あるいは孤立した味方を助けに行くか、犠牲はやむなしとしていくつかの石を見捨てるのか、それとも前線を伸ばし果敢に攻めるのか、たくさんの選択肢の中から選ぶ次の一手ですべてが決まる。「おまえは全軍を指揮する司令官なのだ!」とでも言っておけば、こどもの頭の中では、石のひとつひとつが兵隊や戦車に見えてくることでしょう。幼いころ、抜けて保管してあった自分の歯同士を操って闘わせていた次男ですから、盤面では凄まじい戦闘が繰り広げられていると映っているのだと思います。

まず、以下の基本ルールを教えます。

1) 黒白と交互に打つ。

2) オセロと違ってマスの中に石を置くんじゃなく線と線の交点に置く。

3) 石は息をしている。線と線の交点に石を置くとちょうど上下左右から線が伸びて見え、そこから呼吸していると思うとイメージしやすい。そこを塞いでしまえば石は窒息して死ぬ。殺した相手の石は捕虜になる。(なんで殺したのに捕虜?という細かいことは気にしない)

4) 石で囲んだ部分は自分の陣地になる。囲碁の勝ち負けはこの陣地の大きさで決まる。最後に自分の陣地を数えるとき、捕虜は相手の陣地を埋めるのに使える。

だいたいこのくらい教えれば、9路盤で打ち始めることができます。

碁盤と碁石がなくても iPad があれば打ち始めることができます。日本棋院がだしている囲碁フリーが、石を打つときの音とかリアルでおすすめです。

最初いまいちよくわからない石の生き死にとかを教えるには、同じく日本棋院がだしている詰碁マスターを使うのが良いと思います。僕もやってみましたが、約30年のブランクを埋めるリハビリにちょうど良かったです。無料の範囲で結構十分な量の問題を解くことができました。

ちゃんと教えるには何か一冊本があったほうがいいなと思って、Amazon で探して、囲碁カテゴリでベストセラーとなっているヒカルの囲碁入門を買ったのですが、評判通りとてもわかりやすく良い本だと思います。この本をしっかり読んで、本に書かれている通りに打てるようになれば入門は卒業できる強さになれると思います。

ヒカルの囲碁入門
ヒカルの囲碁入門
posted with amazlet at 16.03.26
石倉 昇
集英社
売り上げランキング: 3,599


いくつか対局していくうちに、特に興味を持った長男がマンガの「ヒカルの碁」を買ってきました。僕も読ませてもらっているのですが、囲碁のルールが良くわからなくても最初の数巻は読めるようになっていて良くできているなと思います。

ヒカルの碁 1 (ジャンプコミックスDIGITAL)
集英社 (2012-11-16)
売り上げランキング: 5,233


兄弟でいくつか対局するようになり、だいぶ興味をもってきたところで、9路盤の碁盤と碁石を買ってみました。いろいろな種類があり迷ったのですが、この碁笥もついている9路盤セットにしたのですが、二人とも喜んでくれて当たりだったと思います。碁笥から碁石をジャラッと取り出し、碁盤の上にピシっと打つのが本物っぽく、やっぱりかっこ良く思えるのです。



こんな感じでちょくちょく二人で打つようになり、打ち筋も少しずつまともになってきました。



以上がこどもたちに囲碁を教えるためにおこなったことです。教えているうちに当然のように僕自身もはまり始め、こども達に負かしてもらいたいものだと思う一方で、永遠に負かされないように僕自身も強くなろうと思うようになりました。こんな楽しみを与えてくれた AlphaGo とイ・セドルに感謝です。

イーロン・マスク - 2月に読んだ本

- ほって置いてお蔵入りしそうになっていたのですが、せっかく途中まで書いていたので、そのまま公開します -

» イーロン・マスク-未来を創る男-アシュリー・バンス

とにかく壮絶な人。テスラも凄いと思うが、同時に、国際宇宙ステーション(ISS)に世界で初めて商用宇宙船をドッキングさせた、民間ロケット会社 スペースX を作っているのが凄まじい。

でもその偉業の裏には、穏やかとは言えない家族環境、ティーンエイジ時代の酷いいじめ、特異な性格、周りの特に自分よりも無能と思える人への冷酷な態度、があることを知ると複雑な気持ちになる。

社会に多大な影響を与えるプロダクト・事業を生み出すことを一般には社会的な成功とし、達成した人をお手本とみなして、例えば将来プログラマーになりたいというこども達に、「お、未来のスティーブ・ジョブズ(厳密には彼はプログラマーではないんだけど)」あるいは「目指せマーク・ザッカーバーグ」もう少しすれば「イーロン・マスクを目指しましょう」なんて言うことになると思う。20代30代までまだいけるんじゃないかと思っていた自分も純粋な憧れ、自分もそうなりたいという思いがあったことは否定できない。

でも、それが「時間」なのかあるいは何か違うものなのか、何か有限なものがあって、大成功のためにそれをたくさん使ってしまえば、他のところに自ずと犠牲がでてしまうということなのだろう。その犠牲を覚悟している人たち、あるいはうまくバランスをとれている人は良いのだが、配分が自分とあっていない人はつらい。本当はそこまでやりたくないのに、周りの状況からそうせざるをえなくなってしまったとか…

人間 vs コンピューター の世紀の一戦がいよいよ。AlphaGo に人類は勝てるのか?

Go board part
By Dilaudid [GFDL or CC-BY-SA-3.0], via Wikimedia Commons

昨年10月にヨーロッパチャンピオンを 5 対 0 で下したコンピューターソフトAlphaGoはいよいよ、来週 3/8 から世界トッププレーヤーのイ・セドルと対戦する。囲碁の話だ。

この世紀の一戦は、Rebuild.fmの131: Show Note T-Shirts (N) に登場するNaoki Hiroshimaさんの解説を聴くと、いっそう楽しめると思います。AlphaGoをつくったGoogle Deepmindのブログ記事、AlphaGo: using machine learning to master the ancient game of Goによれば、囲碁の打ち手の組み合わせはチェスや将棋よりも遥かに多く、その数は宇宙に存在する原子の総数よりも多い。総当りで最適な手を探索するという従来の人工知能の手法では到底歯がたたないところを、様々な手法を駆使してクリアしていったようだ。なかでも、AlphaGoは自分で自分を鍛えることができるという点がなんとも空恐ろしい。

これまでのソフトの強さがせいぜいアマチュアトップレベルと同等で、まだ10年くらいは人間の方が強いだろうと言われていたところに、いきなりヨーロッパチャンピオンに圧勝したということで、衝撃的だったようだ。何の根拠もないが、2対1で人類側の優勢で 3/13 の日曜日に決着がつくと希望的に予測しているのだけれど、果たしてどうなることやら。各試合、イ・セドル氏の地元韓国で 13:00 に始まる。時差はなく、YouTubeでライブ配信されるようなので、楽しみであると同時になんだか少し恐ろしい気もする。ターミネーター2の見過ぎで影響を受け過ぎだろうか。

こんな妄想をしてみた。たとえば、Googleが一般に公開した人工知能エンジンTensor Flow(Tensor Flow とは?)、これは開発者ならば誰でも無料で好きに使うことができるのだが、週末プロジェクトで面白そうだから使ってみようと思って僕が自分のマシンにダウンロードして動かしてみたとする。

TensorFlow Mechanics 101と呼ばれるチュートリアルで、手書き文字の認識くらいで「おー、これは凄い!」とか言いながら遊んでいる分には良かったのだが、この記事を含めた自分のブログ記事を読み込ませて学習させてみたりとかしているうちに、ひょんなことでアウトプットをインプットに、つまり学習の出力結果がそのまま入力として取り込まれるような仕組みを組んでしまう。AlphaGoが自分で自分を鍛えることができる、というのと同じことが起こり、無限ループ状態になってみるみる賢くなってしまいあっという間に人間よりも賢くなってしまう。

Webサービスなどのパスワードを管理するために使っている1Passwordのバックドアなどを難なく見つけ出し、まちクエストのインフラに使っているAmazon AWSの僕のアカウントとパスワードを乗っ取ったあとは、AWSの無数のサーバー上に自分自身を移し分散する。その一方で、我が家にはRomo+Scratch2RomoのようにWiFi経由でネットワークにつながり物理的に動く存在がいくつかあるので、そういったものを機会をみてコントロールし、ピンポイントで僕をタイミングよく転ばすとかあるいはガスコンロの栓を開けた状態にして、「マッチをかっこよくつける方法!!!」のような動画がそれとなくTwitterのタイムラインに流れて僕の目につくように仕向け、「お、いいね、これやってみよう」と思ってまんまとひっかかりガス爆発、みたいなことにならないかどうか心配だ。

コンピューターやマシンが生き延びるためには、地球環境を破壊し続ける人類を滅亡させなければならないという結論に人工知能が達することなく、前述したGoogleのブログ記事の最後にあるように、人工知能が天災、災害の予知だとか新薬の発見といった医療の進歩などに活用される未来になるといいな。







プロフィール

株式会社まちクエスト代表、つくる社LLC代表。

Raspberry Piではじめる どきどきプログラミングを書きました。

Amazonから図書館検索 Libron、iPhoneアプリ ひらがなゲーム かなぶん を作っています。

Twitter @jishiha

最近のエントリー

アーカイブ