Electronics

2019.09.20

「toio」のAPIがオープンソース化された理由とその可能性

Text by guest

編集部から:この記事は、小林茂さん(情報科学芸術大学院大学[IAMAS]産業文化研究センター 教授)に取材・執筆していただきました。


撮影(以下、すべて):池ノ谷侑花(ゆかい)

2019年3月、ソニー・インタラクティブエンタテインメントは、ロボットを使った新しいあそびのプラットフォーム「toio(トイオ)」を発売、同時にビジュアルプログラミング環境を公開した。続けて6月には詳細な技術情報やJavaScriptのライブラリを公開、発売から半年足らずで、メイカーをはじめとする様々な人々が活用し、作品やツールが次々と生まれている。なぜ「toio」のAPIを「オープンソース」化し、その先にどのような可能性を見出しているのかについて、「toio」プロジェクトの田中章愛さん、寺戸育夫さん、八重田岳さんにソニーの企業内メイカースペース「Creative Lounge」で話を聞いた。

田中さんは既にMake: Japan Blogに何度も登場しているメイカーで、品川を活動拠点とするコミュニティ「品モノラボ」の中心メンバーであると同時に、Creative Loungeを立ち上げた方として読者には既におなじみだろう(Maker Faire Tokyo 2017直前に行ったインタビュー記事)。寺戸さんはソフトウェアエンジニアで、「toio」に関してはビジュアルプログラミング環境を担当し、プライベートでもAtomなどのオープンソースプロジェクトに参加している。八重田さんも同じくソフトウェアエンジニア。「toio」のタイトルを開発するための開発環境の整備、技術仕様のサイト、JavaScriptのライブラリなどを担当している。

「toio」は何段階かのプログラミング環境を提供している。まず、初級者向けにはPCを一切使わない「GoGo ロボットプログラミング〜ロジーボのひみつ〜」というタイトルがあり、順次、分岐、反復といったプログラミングの要素を学ぶことができる。次に、「ビジュアルプログラミング」というScratchをベースにしたアプリがmacOS向けに提供されており、さまざまなブロックを用いてビジュアルにプログラミングできる(2019年度中にはWindowsも対応予定)。最後に、JavaScript用ライブラリ「toio.js」が提供されており、さまざまなOS上でより高度な制御ができるようになっている。

自然すぎて気がつかない、高度な技術による「当たり前」

例えば、ビジュアルプログラミング環境を使うとどのようなことができるのだろうか。寺戸さんに、「toio」における「Lチカ」(一定の間隔でLEDを点滅させる)をライブコーディングで見せていただいた。


ビジュアルプログラミング環境を用いてライブコーディングする寺戸さん

まず、画面に表示されている車の位置を指定するブロックのXとYに、コア キューブ(以下「キューブ」)の位置を表すXとYを入れ、無限ループで繰り返す。これで車の位置とキューブの位置が連動するようになる。次に、車の向きを指定するブロックに、キューブの向きを示す値を入れる。これで位置にくわえて向きが連動するようになる。さらに、キューブをペンとして使えるようにする拡張機能を組み合わせると、マットの上でキューブを動かした軌跡で画面上に絵が描かれていく、というお絵かきプログラムができあがる。ここまでわずか数分間で、ブロックも11個しか使っていない。この発展版としては、マットの上に置いて右に回すとペンの太さが太くなり、左に回すと細くなる、など今までのマウスではできなかったような作法を自分でどんどん拡張できるという。当たり前のように実現できてしまっているが、冷静に考えてみるとかなり高度な技術が使われていることに気がつくかもしれない。


ビジュアルプログラミング環境のスクリーンショット

「toio」と同様に2つのタイヤを装備した走行型ロボットは世の中に無数にある。それらの中には、出発点からの相対的な位置や方向をセンサによって検知できるものも多数ある。しかしながら、ある平面上の絶対的な位置や方向を把握するには、天井にカメラを設置して画像解析するなど大がかりな方法が必要になる。「toio」の場合には、特殊パターンが印刷された専用のマット上という制約はあるものの、平面上での位置と方向をかなりの精度で検出できる。これにより、先ほどのように非常に簡潔なコードでキューブを物理的な入力として使用することができるし、この逆に位置を指定してそこまで移動させることも容易である。このように、現実世界の動きやデータをコンピュータの中に取り込み、アルゴリズムを使ってゲームのキャラクターのように扱えるのである。「toio」を体験した後では当たり前に思えてしまうが、よく考えると今までにはなかった体験なのである。このナチュラルさと、実際の高度な処理のギャップについて田中さんは次のように語ってくれた。

田中:もともと、技術のことを分かっていないと使えないものだとか、技術的に大変そうなものだという恐怖感を与えたくないなという意図は強く持っていたので、ある意味で成功しているんですけど、想像以上に成功しすぎたなと(笑)。開発の最初の頃は天井にカメラがついて大がかりなシステムだったんですが、見た目の大仰さからか、その頃はやたら「すごい!」と言われたんです。でも、簡単にしたら技術の凄さが伝わらなくなってしまったんです(笑)。そうはいいながらも、本当に普及する技術はそういうものだとは思っています。

リアルタイム絶対位置検出をはじめとして、「toio」に実装されている技術についてはウェブサイト上の記事「toioのTechnology」で詳しく紹介されている。リアルタイム絶対位置検出以外にも、非常に俊敏に動きつつ安定した制御が期待できる駆動系や、6軸センサによる姿勢やイベントの検出など、かなり高度な技術が盛り込まれている。こうしたプラットフォームがあるのであれば(企業としての)メーカーが提供するタイトル以外に自分自身でも自由に活用してみたいと思うのが(個人としての)メイカーならではの考えだろう。「toio」では、複数のプログラミング環境にくわえて、コア キューブのハードウェア仕様と通信仕様を「toio™コア キューブ 技術仕様」で公開しており、公開の範囲は「toio専用タイトルの『トイオ・コレクション』を自分で実装することも実際にはできてしまうくらい」(八重田さん)だという。ここまで詳細に環境を提供している背景にはどんな狙いがあるのだろうか。

「toio」の「オープンソース化」に期待すること

田中:「toio」で自分のつくったものを載せて形を作って工夫できるだけじゃなくて、動きもつくりたい、プログラミングしてバリバリ動かしたいという声も大きかったので、そうした声にお応えしたいと思ったのと、そもそもポテンシャルは十分にあると思ってつくっていたので。今回、単なるプログラミング環境に留まらず、広くAPIを公開したのは、デバイスとしても、体験としても、まだ新しくて色々なものをつくれると思っているので、体験自体を一緒につくっていただける方をどんどん拡げて行けたらな、ということで。自分たちで作り込んで「どうですか?」と見せるよりは、みんなで体験を発見して行けたらな、という思いが強いですね。

実際に、公開した後の反響は大きく、メイカーにくわえて、大学の研究室、メディアアートをつくるアーティスト、自社の製品やサービスのプロトタイプとして使ってみた、などさまざまな話が次々と出てきているという。このように田中さんは熱く語ってくれたが、他のお二人はどのようなモチベーションで「toio」に関わり、どのようなことが起きることを期待しているのだろうか。

寺戸:一番根っこにあるのは個人的な実体験です。子どもの頃、オモチャを買ってきて遊んだとき、買ってきたそのままを遊ぶんじゃなくて、そこから何か色々つくったり、壊したり、といった経験がすごくよかったんです。買ってきたそのまま、与えられたルールの中で楽しむだけじゃなくて、遊び方、使い方を自分自身で考えて、自分自身で作り出せる、そういうプラットフォームを世に出したかったんです。個人的な考えでは、プログラミングはあくまでも手段と考えてます。根本的な目的としては、学ぶことの楽しさや、自分の作った作品を他人が遊んで楽しんでくれる喜びといった、人生をより良くするために大事なエッセンスを実感できるツールとしてプログラミングが一つあるかなと考えているんです。将来的には、プログラミングがきっかけになって、他のことについても興味を持って自分から学んでいく、というスタイルにつながるといいな、というのが一番の根っこにありますね。

八重田:最初に「toio」の話を聞いたとき、オープンソース化するつもりがあるという話を聞いて、(当時の)社内にはあんまりそういう話はなかったし、自分のやりたいことにすごく近かったんです。実際に触ってみたら、物理的なものを動かすのにタイヤを2個だけ動かせばいいという体験がよかったし、サンプルで追いかけっこをつくったとき、物理的なものを思ったように制御できる、というのはすごい面白いなと思って。これがみんなに拡がると面白いだろうし、SDKや技術情報などを公開しておけば、買った後にタイトルだけじゃなくて色々な人がつくったものを遊べて、「toio」全体の世界を拡げていくエンジンになるかなと思ってます。

田中:初期メンバー、加わってくれたメンバーを含めて、もともと社外のオープンソースソフトウェアやオープンソースハードウェアのコミュニティでいろいろなものをつくってきたというメンバーなんです。そういうバックグラウンドもあるので、一緒に盛り上げていきたいし、自分も個人的に何かつくって何か発表したいという思いもあるので、「自分たち自身も使いたいし、みんなにも使ってもらいたい」という思いでつくっています。

「toio」のように詳細な情報をメーカーが公開するというのはそれほど多く例があるわけではない。今回取材に応じてくれたお三方のお話を伺う中で、自らがオープンソースのソフトウェアやハードウェアのコミュニティに参加してた実感に基づいているのだと強く感じられた。オープンソースとして公開した後様々な反応があったということだがそれぞれの視点で見た時何が一番深く心に刺さったのだろうか。

八重田:toio.jsをブラウザで使えるようにしたというのを、すごく簡潔にベストな方法でやっているものです(toio-browser-example)。いずれやりたいな、とか、こうやればできるかな、とは思っていたんですけど、それをパッとやってくださった方がいたんです。

寺戸:自分の場合には中国語対応です。GitHubで一般公開したのが今年の3月20日(発売と同日)なんですけど、そこから一週間も経たずに中国語対応に関するプルリクエストが届いたんです。まさにオープンソースの醍醐味で、自分一人だったら絶対にできないようなことを、他の方の知識やノウハウを活用することでソフトウェアの価値を高められる、というのはオープンソースのすごいところだな、ということを再認識して感動しましたね。

田中:有志の方々による「toio」の「作ってみた」コミュニティのFacebookグループで紹介されていた、ビジュアルプログラミングでサッカーができるよというワークショップを公開している方の作品です。単純にリモコン的に動かすのではなくて、9×9のマス目が描かれているマットで番号を指定してそこに移動できるという機能を活かしていて、場所の指定で移動できるという「toio」らしさを活かしているのがすごいなと思いました。

このほか、公式には対応していなかったPythonに対応したライブラリや、iOS上からコントロールできるアプリなど、さまざまなものを公開する人が現れている。

本気でプログラミングする

先日開催されたMaker Faire Tokyo 2019では、「toio」を用いた1時間半のワークショップが開催された。参加者には4つのボタンがついた「8421キーボード」という名のDIYで作られた箱型のコントローラーとPCが貸し出され、4つのボタンの操作に対して前に進む、回転する、突撃する、などをそれぞれのボタンに割り当てる。ボタンは同時押しが可能であるため、同時押しに対しても動きを割り当てることができる。また、位置情報を使ってある位置からはみ出そうになったら自動アシストしてくれるというオートモードも用意されており、操作に慣れていない段階でボタンを連打してはみ出そうになってしまっても、手を離せば自動で戻ってくれるようになっている。このワークショップでは何が起きたのだろうか?


Maker Faire Tokyo 2019でのワークショップの様子


Maker Faire Tokyo 2019でのtoioブースの様子(提供:ソニー・インタラクティブエンタテインメント)

田中:一番驚いたのが、ビジュアルプログラミングの経験もないし、普段パソコンを触っていないし、という6歳の子でも1時間以内で技をつくって自分の分身のように使いこなせたんです。普通に考えると、ここまで到達するのに何回分のワークショップになるんだろう、というイメージがあると思うんですけど、「toio」をつかった場合、電源をオンにするところから始めてロボットを使った相撲大会のサンプルプログラムを改造して試合するというところまで1時間以内でできたんです。

八重田:対戦しながら、相手の上に付いているブロックの形状を見て自分のを下に入れようとか、「toio」の場合はプログラミングだけに留まらず、外側の物理的な形状を考えながらやって「これには回転を付けよう」とやっているのをみると「toio」の拡がりを感じて、いいなって思いました。あと、対戦して負けると泣いちゃう子がいて、最初に見たときは驚いたし、本気でやっているんだな、というのが伝わってうれしかったですね。本気でプログラミングして、本気で自分のマシンを動かして、とやっているのがよかったですね。

寺戸:物理的なものをつくって人と対戦する、というのが相当本気度を高めて、相手よりも先に裏に回るにはどうすればいいだろうか?というのは単に動けばいいという次のステップで、より効率的に動くやり方、アルゴリズムやデータ構造といった、次の段階への入口になるといいな、というのは涙を見て実感しましたね。

このような話を伺うと、子どもたちをここまで本気にできるのであれば、「toio」をプログラミング教育のツールとして活用できるのではないかという期待が出てくるのは自然なことだろう。実際に、プログラミング教育という視点からの反響はかなり大きかったという。しかしながら、開発者のみなさんの言葉からは、「toio」がもっと先を見ていることが伺えた。

プログラミング教育ツールではなく、エンタテインメント文化を醸成するプラットフォームとして生まれた

2020年度より小学校においてプログラミング教育必修化するということが大きなきっかけとなり、プログラミング教育に関する関心はここ数年で急速に高まっている。例えば、今年の8月に開催されたMaker Faire Tokyo 2019においても、少なからぬ協賛企業や出展者がプログラミング教育に関連したものであった。こうした状況を踏まえ、どのように考えているのだろうか。

田中:プログラミングできるというのはあくまで機能、提供しているツールの一つであって、遊びをつくりたいとか、遊びたいとか、目的とかやりたいことを大事にしているつもりです。当然、プログラミングが楽しくてプログラミングをバリバリやる人もいると思いますので、目的にいかに早く達することができるという環境をどんどん提供したいと思っています。楽しいところに行くまでに超えないといけないハードルがたくさんあるので、まず楽さを先に感じて、さらに高みを雪だるま式に目指せるような環境やツールを提供できたらいいなと思っています。

八重田:ワークショップに参加した子どもたちは、とても楽しそうにやっているし、技の名前も独自のものを付けていたりしているんです。自分の子どもにも「そういう積極的に表現できる環境を与えてあげたいな」とか「ああいう子になって欲しいな」と思うので、「toio」を使って自己表現を自由にできる子が増えてくれるといいなと思ってます。

寺戸:昨今プログラミング教育という話が出ている中で、先生とか、プログラミングに興味のないお子さんが最初はちょっと抵抗感があるんだけど「対戦しているのを見ていて楽しそう」というところから、段々と「自分も遊んでみよう」とか「改造してみよう」という感じでうまくユーザー層が広がっていくといいなと。子どもに限らず先生達も、プログラミングを怖がるのでなく、興味を持って「楽しそう」みたいなところを入口に「toio」を活用していただけるような世界観を、ワークショップを全国各地で開催しながら、是非みなさんに体感していただきたいなと思いますね。

読者へのメッセージ

最後に、田中さん、寺戸さん、八重田さんよりそれぞれ、Make: Japan Blogの読者に向けてメッセージをいただいた。

田中:「toio」は今のところ小学生向けのオモチャという見え方が大きいのですが、汎用性とテクノロジーが詰まっているので、高度なことにチャレンジしたい方にも活用してもらいたいなと思います。メイカーの方に向けたメッセージとしては、特にソフトウェアに強い方や、ハンダづけが苦手という方には、「toio」はハードウェアとしてはできあがっていてソフトウェアの一工夫だけでも様々な表現ができるので、そういったコミュニティの方に入ってきて欲しいなと思っています。

寺戸:ビジュアルプログラミングやJavaScriptのライブラリをツールとしてみたときに、ツールの利用者としてコンテンツをつくるということもお願いしたいところなんですけど、メイカーの方にはツールそのものを良くするという発想で一緒にものづくり、ことづくり、というのを楽しんで行けたらと思います。これはオープンソースとして出したという一つの意図でもありますので。個人なのか企業なのかを問わず、我々の想像していないような楽しみ方を一緒につくっていけると、よりみんなで楽しめるかなと考えています。

八重田:みなさん是非使ってください! まだ言えないのですが、今後もいろいろやっていくので期待してください。

最後の八重田さんのメッセージにもあるように、取材の時点ではまだまだ話せない様々な展開が今後予定されているようだ。プラットフォームとしての「toio」の継続的な進化に引き続き期待しつつ、現時点で公開されているツールを使って新しいコンテンツをつくったり、新しいコンテンツをつくるためにツール自体の改良に参加したり、とそれぞれの興味やスキルに合わせた活動に参加してみてはどうだろう。