「ロボットの死」をOSSで救う。自由なライセンスが巻き起こした爆発的ミーム
── スタックチャンを開発するにあたっての個人的な課題や、開発における初期衝動について教えてください。
当時の私の中には、大きく分けて2つの強い初期衝動や課題感がありました。
1つは、純粋で直感的なモノづくりへのワクワク感です。スタックチャンを本格的に開発する前からM5Stackのコミュニティに関わっていましたが、2018年頃にM5Stackを初めて入手した段階で、すでに画面に映し出す「顔のグラフィックプログラム」を作成して公開していました。
当時、そのプログラムを見た人たちが面白がって使ってくれていたのですが、私自身も「この可愛い顔に、実際に動く体がつけば絶対に魅力的になるはずだ」という確信めいた衝動をずっと抱えていました。それが、ハードウェアを自作しようとした直接的なモチベーションです。

もう1つの理由は、より深い危機感や悲しみから生まれた課題解決への思いです。開発を始めた当時はメーカー製の既製品や市販の完成品ロボットが中心で、コミュニケーションロボットのデータをオープンソースで公開し、コミュニティで共有する文化はほとんどありませんでした。
そんなある日、多くのファンに愛されていた市販のコミュニケーションロボットの製造元が、経営難で倒産したというニュースを目にしました。運営会社がなくなると、ロボットが通信していたクラウド上のサーバーも停止してしまいます。その結果、昨日まで家族のように接していたロボットとの関係が、突然断ち切られてしまうのです。
私はその状況を「コミュニケーションロボットの死」のように感じて、ひどく胸を痛めました。
「もしオープンソースで作られたロボットであれば、万が一開発者がいなくなったり会社がなくなったりしても、世界中の誰かがコードを引き継いで使い続けられる。そして、ロボットの命を存続させることができるのではないか」と考えるようになりました。
オープンソースの力でロボットをずっと生き残らせたいという思いが、スタックチャンをOSSとして生み出す最大のきっかけとなりました。
── スタックチャンのコンセプトや、あの愛らしいデザインに至るまでに「最も苦労した点」と乗り越え方を教えてください。
最も苦労した点であり、一番時間をかけてこだわったのは、やはりロボットとしての外装デザインと、それを自然に動かすためのメカニズムの設計です。
私はメカ設計に関しては素人だったため、3D CADを使って図面を引くこと自体が未知の領域でした。幸いにも、当時の周りにはロボットづくりのプロフェッショナルが多く在籍していました。そのため、職場の同僚にわからない部分を徹底的に相談し、アドバイスをもらいながら知識を吸収していきました。
デザイン面で特に研究したのは、「シンプルでありながら、いかにして動きだけで豊かな存在感を演出するか」という点です。スタックチャンの顔はドットや線で構成された非常にシンプルなものですが、人間が「可愛い、生きている」と感じるには、静止しているだけでは不十分です。
そこで、まばたきの頻度や、呼吸をしているかのようにゆらゆらとわずかに顔が上下する動き、目が周囲を見回すスピードなど、内部のパラメーターを何度も調整しながら、最も可愛く自然に見える振る舞いを徹底的に研究していきました。
また、Webエンジニアとしての経験から、コードの設計にも工夫を凝らしました。スタックチャンのプログラムは、表情のコントロールや動きの振る舞い、サーバーとの通信部分などが、後から誰でも自由にパーツのように差し替えられるように意識して設計されています。

この拡張性の高い設計のおかげで、1つのコードベースでありながら、ユーザーが異なるメーカーのモーターを接続しても問題なく動作します。さらに、M5Stackのシリーズが旧世代から最新のハイエンド機種(CoreS3など)に変わっても、スムーズにプログラムを移植して動かすことができます。
開発環境を自分のスキルセットに合わせて手繰り寄せ、周囲のプロの力を借りながら一歩一歩進めたことが、素人だった私がハードウェア開発の壁を乗り越えられた秘訣だと思います。
── 自身が作ったものをオープンソースとして公開し、他者の手によって改造・製品化されていく様子を見て、どのような気持ちになりましたか?
Webエンジニアとしてキャリアを積んできた私にとって、何かを作ったらオープンソースとして公開するというのは、ごく自然な発想でした。
現代のWebシステムは、先人たちのOSSの力、いわば『巨人の肩の上』に乗ることで成り立っています。ですから、自分が新しく作るものも、今度は他の誰かの「何かを作りたい」という思いに役立ってほしいという、恩返しの気持ちが根底にありました。
実際にスタックチャンのソースコードや3DデータをGitHubに公開したところ、わずか2〜3日のうちに「データをプリントアウトして組み立てた」という報告が届きました。
さらに翌週には、国内の著名なMakerでもあるtomorrow56さんから「自分が持っている別の種類のモーターでもスタックチャンが動くようにケースを修正したから、プルリクエストを送ったよ!」と連絡が届いたのです。記念すべき最初のコード寄贈は、このケースデータでした。その圧倒的なスピード感と熱量には大きな衝撃を受けましたし、非常に興奮しました。
その後、スタックチャンの輪は大きく広がっていきました。最初の半年間で20〜30人ほどの作例が集まり、それ以降は年を追うごとに倍々のペースで増えています。
私はスタックチャンを「商用利用も可能」な非常に自由度の高いライセンスで公開しているため、単に自分用に作るだけでなく、スタックチャンのパーツを3Dプリンターで大量に出力して、組み立てキットとして個人で製造・販売する方まで現れました。キットは累計1000台以上も販売されており、これは私1人の力では絶対に成し遂げられなかった成果です。
自身のプロダクトが他人の手によってモジュール化されたり、独自の進化を遂げたりしていく様子を見て、開発者として嫌な気持ちになることはまったくありませんでした。嬉しさのほうが勝っており、「どんどん開発して、もっと驚かせてほしい!」という気持ちでいっぱいです。
コミュニティを惹きつけるポイントを強いて挙げるなら、私自身が「お気持ち表明」をしたり、作者としての強い主張をしすぎないように意識している点かもしれません。「開発者の顔」が見え隠れしてしまうと、コミュニティの参加者が自由に手を加えづらくなってしまいます。
「自分がスタックチャンだと思ったら、それはすべてスタックチャンでいい」と最初に広く宣言したことで、参加者同士が互いに元データへのリスペクトを持ちつつ、自由に創作を楽しめる素晴らしい文化が醸成されたのだと感じています。
