Yoshiki Ohshima (Ph.D.)

こんにちは!

コンピュータ・サイエンスの研究とソフトウェア開発をしている大島芳樹です。これまで、プログラミング言語やプログラミング環境、そして対話的なアプリケーションの研究開発、とくに教育向けのシステムに携わってきました。学会活動にも積極的にしています。

東京工業大学の学生だったころは、宣言的記述による最適化コンパイラや入れ子トランザクションを持った言語とったプロジェクトをやっていました。それはそれで良かったのですが、思い返すと、広い世界を知らないままかなり狭い視野にとらわれたままだったように思います。そこで、それが大きく変わることとなりました。

以下で触れるように、あるきっかけからアラン・ケイ博士と彼のグループと仕事をするようになりました。そこでは、「そもそもコンピューティングとはなんなのか」、また禅の公案のような「もし目の前にあるコンピュータのハードウェアを全部取り去ってしまったときに残るコンピューティングとは何か」そして「人類にとってコンピューティングとは何を意味するのか」という問題意識を持ち、それについて話をするだけではなく、実際に形あるものを作っていたのです。

私自身はほどほどのプログラマーですが、プログラミングの技術だけでなくいろいろなことについて学びたいと思っています。これまでに得た知識と目的意識が、私が作るものを特徴付けているように思います。


主なプロジェクト

RieとJun: 宣言的記述によるコンパイラ生成系 (1993-)

佐々政孝教授の指導のもと、属性文法に基づくコンパイラ生成系プロジェクトに携わりました。

Harmony/2言語 (1995-)

脇田建博士の指導のもと、入れ子トランザクション機能を持った並行オブジェクト指向言語について研究し、そのプロトタイプを作成しました。

Squeak Smalltalk (1997-)

1997年に開かれたOOPSLAという国際会議に学生ボランティアとして参加しました。運命のいたずらともいうべき小さなきっかけから、松岡聡教授を通じてSqueakチームのJohn Maloneyと立ち話をする機会ができました。松岡先生はシャープから販売されていたZaurusというPDAを皆に見せびらかせており、なりゆきで私にSqueakをZaurusに移植するようにと言ってきたのです。私はその頃はSmalltalkについてはほとんど何も知りませんでした。ただ、Emacsについては少し知っていたために、対話的に書き換え可能なコンピュータ環境とは良いものだ、という程度の認識を持っている程度でした。そのような無知蒙昧な状態でSqueakに触れ、コンピュータ・システム全体を一貫性のある動的なものとして構築したものがちゃんと動いている、ということに驚愕したわけです。その後私がコンピュータの分野でやってきたことは、システム全体を見渡した設計、動作中のシステムの動的な変更のサポート、そして教育分野へのコピューティングの応用を重視しているという意味で、SmalltalkとSqueakからの影響を多大に受けていると言えます。

私がSqueakに行った貢献で多分一番重要なのは、多言語化機能を実装したことかなと思います。もっとも基本的なところの変更であり、20年ほど経った今でもまだ使われています。

SqueakのZaurus PDAへの移植 (1998)

Squeakは移植性を非常に重視して設計されており、非力な携帯型のものを含め幅広いハードウェアで動作するように作られていました。私はSqueakをZaurusに移植する作業を1998年に始めたのですが、運良くシャープがアプリケーションを作れるようにZaurusプラットフォームを解放したところであり、また新しいモデルがちょうどギリギリのメモリを搭載してくれていた、というような幸運にも恵まれ、移植作業を2週間ほどで完了することができました。他にもオープンソースであるSqueakに貢献していたこともあり、Los AngelesのWalt Disney Imagineering R&Dに所属していた彼の研究グループを訪問し、その年Vancouverで開催されたOOPSLAに参加するようアラン・ケイ博士に取り計らってもらいました。

この時に私は人生初めて飛行機の乗り換えをすることになったのですが、サンフランシスコ空港で見事に乗り継ぎに失敗しました。

NetFrontブラウザのZaurus PDAへの移植 (2000)

ACCESS社は、NetFrontという軽量ウェブブラウザで携帯機器向け市場を切り開いていました。私はアルバイトとしてNetFrontをZaurusに移植する作業を行いました。Squeakと同様にNetFrontはプラットフォーム依存のコードをリンクすることにより移植が簡単にできるように設計されていたので、移植にあたって私はSqueak用に書いたコードを恥も臆面もなく再利用しました。まあ、自分がオープン・ソースプロジェクト用に書いたコードなのだから良いでしょう。ACCESSの人から見たら、「やけにコード書きが早いやつ」のように見えたかもしれません。

Parks PDA (2000)

Walt Disney Imagineering R&Dでは、当時市場に出てきていた携帯型の電子機器でテーマパーク来場者に新たなサービスを提供できないのか、ということに関心を寄せていました。また同じ頃、シャープはさらに新型のZaurusを販売し始めました。この新型は、1. カリフォルニアやフロリダの太陽のもとでもよく見えるカラースクリーン、2. Disneyが求める水準を満たすオーディオやアニメーションをするだけの性能、3. そのようなコンテンツを格納できるカードを挿せるスロットという、Disneyが求める要求を満たせる機能をようやくクリアしたものでした。私はAndy Ogdenをリーダーとするグループにインターンとして参加し、ソフトウェアの開発に関わることになりました。Squeakが持つ柔軟性により、Johnと私でDisneyのデザイナー達がコンテンツを作成できるようなフレームワークを手早く作ることができました。実際の来場者を対象としたテストは11月のはじめにオーランドで行ったので、チーム皆でDisney提携のホテルに2週間ほど泊まって実験したわけです。現地での実験がスムースに進むようになると、私は手が空いてきたのでDisney Worldのあちこちのパークに行き、R&Dのバッジに威力を発揮してアトラクションの列の先頭に入って遊びました。

こういう実験はしばしば地元のニュースに取り上げることがあり、我々も記事になるかなと期待していたのですが、ブッシュ対ゴアの選挙騒動があったために、我々の実験のような楽しい話に割く紙面はなくなってしまいました。

Stitch's Photo Phone (2002)

Stitch's Phone Boothは、テーマパークでの対話的なアトラクションを作る実験でした。これはひと家族が入れる大きさの部屋で、壁の一面が平面ディスプレイとなっていました。他の壁の裏にいるキャストはゲームコントローラーで画面上のキャラクター(Stitch)が動かしつつ、裏声でゲストと会話する、というものでした。一通りおしゃべりをしたところで、画面上のStitchがカメラを取り出して写真を撮るのですが、部屋に隠されていたカメラからの映像を取得し、それを印刷して家族に渡すようになっていました。何しろ実際の人間が裏にいたわけなので、特に小さな子供にとってはまさに本物のキャラクターと喋っているようで、多くの家族にとってはStitchと話したことが一番楽しかった思い出になりました。

私はカメラからのデータを取得するコードを書きました。この実験はは、第10回Themed Entertainment Association Awardという賞をもらいました。

こちらの実験はAnaheimで行われたので、私は3週間ほどGlendaleからAnaheimまで毎日(しばしば午前0時過ぎに)車で通いました。

Etoys (2003)

Disneyでは、私は正式にはSqueakチームではありませんでしたく(それでもプロジェクトではSqueakを使い、Squeakへの貢献もしていましたが)。9/11のテロはDisneyの業績にも大きな傷跡を残し、その煽りを受けてSqueakチームはレイオフされることになってしまいました。私はSqueakチームよりは少し長くDisneyに残りましたが、それでも結局レイオフされることになりました。ビザの関係から日本に帰らなくてはならなくなるところでしたが、伝手を頼って松尾正信博士に紹介していただき、松尾さんの会社であるTwin Sunで働けるように取り計らってもらいました。ただ、仕事の内容はさらにアラン・ケイとキム・ローズが設立したViewpoints Research Instituteのプロジェクト、中でもEtoysに従事する、ということが多くなりました。Etoysはエンド・ユーザー向けのプログラミング環境であり、Squeakの上に構築されていました。このころからEtoysに深く関与するようになり、数年のうちに徐々にリーダー的役割を果たすようになりました。

Kedama (2005)

Mitch ResnickのStarLogoやJohn MaloneyのStarSqueakの後継として、Etoysと統合された高並列な粒子シミュレーションシステムを設計・開発しました。Etoysと統合されていることにより、数千という粒子の振る舞いをEtoysのブロック編集を通じて動的に変更できるものでした。これが私の博士論文の元となりました。

Squeak Version of Croquet (2006)

私がSqueakやEtoysをやっていたころ、David Smith、Andreas Raab、David ReedとAlan Kayは3次元実時間共有環境Croquetというプロジェクトに取り組んでいました。私はちょっとだけお手伝いをする、という形でした。(たとえば、習作としてCroquet向けにPaxosの実装を書いたりしました)。他にも論文としてまとめた成果もあります。

Tweak (2006)

Viewpointsのチームは、Andreas RaabをリーダーとしてEtoysを一般化した次世代の環境であるTweakというプロジェクトに取り組み始めていました。私は粒子シミュレーションシステムを作ったり、エンド・ユーザー向けプログラミング環境の開発を手伝ったりしました。

Etoys for OLPC (2007-)

OLPC (One Laptop Per Child)とは、世界中の子供達を対象とした安価なラップトップコンピュータ(XOラップトップ)を開発し、政府を介して子供一人一人がコンピュータを一台ずつ持てるようにすることを目標としたプロジェクトでした。我々のグループも最初期からのソフトウェア設計に関する議論に参加していました。SqueakをXOのソフトウェア全体の基盤とて使い、子供達が「作ることで学ぶ」スタイルで学べるようにする、というアイディアが俎上には上がったりもしたのです。ただ、結局はその路線がとられることはありませんでしたが、我々のグループもかなりの労力を注いで、EtoysがXO上のアプリケーションとして使いやすいように改良をしました。XOに付属していたソフトウェアの中には「実際に何かを作れる」ものがほとんどなかったために、Etoysは一部の先生や生徒にはとても好評でした。

The STEPS Project (2007-2013)

Viewpointsでは、「パーソナル・コンピュータのソフトウェア全体は2万行もあれば実際に動くものの骨子を書くことできるはずである」というアイディアを実証するためのプロジェクトを始めようとしていました。NSFからの資金提供により、5年計画で取り組みことになりました。ソフトウェア全体というのは、コンパイラ、ネットワークドライバ、メモリ管理システム、グラフィックスシステム、テキストレイアウト、アプリケーション・フレームワークそして種々のアプリケーションまでも含んだものです。これは大きなプロジェクトであり、数人のメンバーそれぞれがいろいろと興味深いアイディアを出し、それらを実装して行きました。私はアプリケーション・フレームワークをやることになりました。私はFunctional Reactive Programmingを元にしつつ、動的なコード変更ができるようなものを設計・実装しました。そのフレームワークでは、アプリケーションと部品の間には区別はなく、どのようなアプリケーションも他のアプリケーションに埋め込めるようになっていました。宣言的な記述、そしてアプリケーションと部品の統合によって、少ない記述量ながらも多機能エディターを作ることできました。

GP (2013-)

John Maloney (Scratchのメイン・プログラマでした)とSnap!を開発したJens Mönigと3人で、GPという新たなブロック・ベースのプログラミングシステムを作るプロジェクトを始めました。エンド・ユーザー向けシステムの開発経験に関して家b、我々我々3人が相当なものを持っていたと言えなくもないのですが、それでも我々から見ると、いまだに真に汎用のシステム、つまり自分自身をすべて記述できるような強力なものが存在しないのがもどかしたかったわけです。この問題を解消することを目標し、Johnが設計と開発の中心となって活動しました。私はモジュールシステムを作ったり、仮想機械の64bit化などを行いました。

私はかわいいモルモット(Guinea Pig)をプロジェクトのマスコットにしよう、と主張したのですが、取り入れられることはありませんでした。

Kanto (2017)

私はコンピュータを使った協調作業、特に複数人で一緒に何かを作ったり学んだりできるものい興味を持っていました。WebRTCの画面共有とデータチャネルの機能を使えば、異なるブロック・エディター・アプリケーションであっても、同じ枠組みで共有環境にしてしまうことができるのではないかとということを思いつきました。Snap!を改造して複数のマウスポインターをサポートするようにし、実用性のある共有プログラミング環境を作ることができました。同じ枠組みで、SqueakJSとGPも共有化できました。

このシステムの名前はKanto(関東)にしました。このようなアプリケーションには、初期のシステムがKansas(アメリカの州で、だだっ広い平らな長方形をしている)という名前を使っていたことから、Squeak版として作られた同種のものがNebraskaと名付けられるという伝統がありました。私はJensと仕事をしていたので、もしかしたらドイツに平らなエリアがあるのではないかと聞いたのですが、「それだったらシュレースヴィヒ=ホルシュタイン(Schleswig-Holstein)だね」と言われました。これではソフトウェアの名前にならないし、ほとんどの人は発音さえできないのではないかと思い、日本にある平野から名前を取りました。

Shadama (2017)

このころまた、動的ん変更ができる粒子シミュレーションシステムを作り直してみたい、という気持ちが湧き上がってきましあ。ウェブ・ブラウザーからGPUを使うことができ、そしてJavaScriptは動的な変更が可能な言語とおいうことで、ブラウザー上で作ったのがShadamaです。

博士論文のネタをやり直すということに引け目を感じるということもあるかもしれませんが、まあこういうことになってしまうときはなってしまいます。

機械学習 (2018-2019)

私は、Vianaiという会社の準備段階の手伝いもしました。やったのは、機械学習のトレンドについて学び、アプリケーションのプロトタイプを作ることでした。Vishal Sikka博士と緊密に連絡を取りつつ作業をしました。会社が正式に発足した後もしばらく請負として仕事を続けました。VishalとDan AmelangがOracle Open World 2019でデモをしたソフトウェアも少しお手伝いしました。

JavaScript版 Croquet (2017-)

 Y Combinator Researchが我々の研究活動を後援できなくなってしまった時に、David Smith、そしてDan Ingalls, Vanessa Freudeberg、Aran Lunzerという同僚とともに、スタートアップを始めることにしました。この会社の目標は、ウェブ上で動く実時間共有アプリケーションを世の中に広めることです。共有化するためのアルゴリズムは元々のCroquetプロジェクトで開発されていたのて、我々はそれをJavaScriptで書き直しました。また、SDKを用意して、誰でも簡単に使えるようにしています。

ただ、このSDKは基盤としてはしっかりしたものであるものの、大きなアプリケーション、特に動的なDOM要素の操作やスクリプティングを必要とするようなものを書くにはちょっと抽象化の水準が低すぎるので、私は同僚からの多大な支援も受け、仮装DOMに基づいたアプリケーション・フレームワークを設計・実装しました。また、そのフレーム枠を使ったQという本格的共有アプリケーションも開発中です。


書籍など

子どもの思考力を高める「スクイーク」 (2005)

『子どもの思考力を高める「スクイーク」』を翻訳するお手伝いをしました。この本はEtoysに関するものですが、対話的なコンピュータ環境を使うことによって強力なアイディアを教えることができる、ということを主題としています。例として、重力を階差的な繰り返しとして表現することにより、子供でも理解し操作できるような形で教えることができ、コンピュータによって実際に対話的に扱えるようになる、というものが挙げられます。

創造する心 (2020)

『Inventive Minds』という本を翻訳し、『創造する心』として出版しました。私は実は翻訳しただけにとどまらず、原著の方にも関わりました。この本はマービン・ミンスキー によるエッセイが6本、そしてそれぞれのエッセイごとにミンスキーに近かかった人が書いた記事を集めたものです。Alanも記事を書いたのですが、紙で出版されるだけでは飽き足らず、コンピュータ上で実際に動かして試せるものにしたい、という意向があったので、Johnと共にAlanの記事の「アクティブ・エッセイ」版を作りました。その後で、古くからの友人阿部和広さんが、オライリー・ジャパンとの仲を取り持ってくれ、私が翻訳も担当することになりました。

Viewpoints Intelligent Archive (2018-)

私はコンピューティングの歴史に興味があります。Viewpointsは1970年代からのビデオテープを千本以上保存していました。多くのものはAlanの講演を記録したものですが、中にはApple ATGやWalt Disney Imagineeringの内部発表の記録などもあります。私はこれらのビデオ全てをデジタイズし(そして視聴し)、アーカイブしました。その動画の一部は私のYouTubeチャネルにアップロードされています。また、私はViewpoints Intelligent Archiveというサイトを管理しています。こちらはAlanの講演のビデオ、そしてAlanと元Viewpointsのメンバーによる論文がまとめられています。


学会活動

国際学会での論文発表と講演もそれなりにしてきました。また、プログラム委員としてもよく参加しています。

論文のリストは大島のGoogle Scholarページへのリンクで十分かと思いmす。また、論文の一部はViewpoints Intelligent Archiveにもあります。

以下は、プログラム委員として参加した会議のリストです。C5という会議はViewpointsが主催していたという意味で「内輪」のものではありましたが、その他の会議からの声がかかっているのは、私が書く査読が歴史的な経緯を踏まえ、また他の査読者とはちょっと違う視点から詳しく書かれたものとなっているからかなとは思っています。(こうやってまとめてみると、最近は自分の論文を発表するよりも査読をする方が多いのがバレてしまいますが。)

  • The 6th International Conference on Creating, Connecting and Collaborating through Computing (2008)
  • The 7th International Conference on Creating, Connecting and Collaborating through Computing (2009)
  • The 8th International Conference on Creating, Connecting and Collaborating through Computing (2010)
  • The 9th International Conference on Creating, Connecting and Collaborating through Computing (2011)
  • The 10th International Conference on Creating, Connecting and Collaborating through Computing (2012)
  • 3rd International Workshop on Programming based on Actors, Agents, and Decentralized Control 2013
  • Onward! Conference 2013
  • Future of Programming Workshop 2015
  • 8th Workshop on Dynamic Languages and Applications 2014
  • 1st International Constrained and Reactive Objects Workshop 2016
  • 3th Workshop on Reactive and Event-based Languages & Systems 2017
  • International Workshop on Smalltalk Technologies 2016
  • Programming Experience Workshop 2016
  • The 22nd International Conference on Distributed Multimedia Systems 2016
  • Programming Experience Workshop 2017
  • International Workshop on Smalltalk Technologies 2017
  • 4th Workshop on Reactive and Event-based Languages & Systems 2017
  • Blocks and Beyond: 2nd Workshop on Lessons and Directions for First Programming Environments 2017
  • Programming Experience Workshop 2017.2
  • Programming Experience Workshop 2018
  • 5th Workshop on Reactive and Event-based Languages & Systems 2018
  • Programming Experience Workshop 2019
  • Blocks and Beyond 2019: Beyond Blocks
  • 6th Workshop on Reactive and Event-based Languages & Systems 2019
  • Programming Experience Workshop 2020
  • Symposium on Visual Languages and Human-Centric Computing 2020
  • Onward! Conference 2020
  • 7th Workshop on Reactive and Event-based Languages & Systems 2020

学歴

以下が高等教育機関で取得した学位のリストです。

  • 1994年。東京工業大学 情報科学科。学士
  • 1996年。東京工業大学 数理・計算科学専攻。修士
  • 2006年。東京工業大学 数理・計算科学専攻。博士
学士から博士まで同じ大学で、実は指導教官(佐々政孝教授)も同じです。海外ではやや珍しいことですが、日本ではよくありますね。博士課程は学位取得前に退学してしまったのですが、論文博士制度の恩恵を受け、もしそのまま残っていた場合にやっていたのとは違う題材で取得しました。

職歴

以下のリストからは、私が頻繁に仕事を変えているようにも見えてしまいますが、実情はそういうわけではありません。Viewpoints Reearch、SAP LabsそしてY Combinator Researchは同じグループでまとまったままスポンサーが変わっていったものであり、同じ仲間で同じ目標を持って継続的に仕事をしていました。

  • Computer Scientist at Croquet Corporation (2018 to present)
  • Principal Investigator at Human Advancement Research Community (HARC), Y Combinator Research (2016 - 2017)
  • Principal Investigator at Communications Design Group, SAP Labs (2014 - 2016)
  • Researcher at Viewpoints Research Institute (2007 - 2014)
  • Software Researcher and Developer at Twin Sun, Inc. (2002 - 2006)
  • Intern and Technical Staff Member at Walt Disney Imagineering R&D (2000 - 2002)

これ以外にも、Vianaiやまた他の本の翻訳のようなパートタイプの仕事もやってきました。


その他

スポーツは色々とやっていますが、バレーボールを一番真面目に取り組みました。中学生の時にはじめ、子供が生まれて自由が利かなくなるまでやりました。大学でも体育会系でした。オタクの理系の大学でしたが、結構マジでやっていました。

12際以下の子供のサッカーチームのアシスタント・コーチをしています。サッカーはたくさんテレビでは見ていますが、経験はほとんどないのにコーチしています。

ロサンゼルで土曜日に授業をしている日本人・日系人向けの学校でSTEMクラスを教えています。雑多な分野から自分の興味が湧いた題材を選び、コンピュータを使った対話的な説明も交えながら教えています。

Twitterは平均すると一週間に一度くらい書く混んでいます。2019年には、Quoraに1日1回答をめどに書いていましたが、2020年は頻度がだいぶ下がっています。hatenaブログもあります。以前は毎日更新していました。が、こちらは休眠状態です。


Last updated: 2020-01-12