僕は消費者ではなく、創造者の立場に立ちたい──NEXT TECH PLAYER 賞は中学3年生で「Blawn」を開発した上原直人さん

インタビュー
静的型付言語の一種でありながら型付を必要とせず、可読性やメモリの安全性も高い言語「Blawn(ブラウン)」のプロトタイプをたった数週間で開発した上原直人さん。「U-22プログラミング・コンテスト2019」では、経済産業大臣賞(総合)を受賞。いちやく世間の注目を集めた。TECH PLAYER AWARD 2020で「NEXT TECH PLAYER 賞」を受賞した、まだ16歳の素顔に迫った。
僕は消費者ではなく、創造者の立場に立ちたい──NEXT TECH PLAYER 賞は中学3年生で「Blawn」を開発した上原直人さん

紙飛行機作りとプログラミングはどこか似ている

小中学校でのプログラミング教育の必修化などもあって、プログラムに興味を持つ子どもたちが増えているが、プログラミング言語そのものの開発に手を出そうという人はまだ少ない。アプリを作るのとは違った生みの苦しみが予想されるからだろう。

しかし、次世代のエンジニアを表彰する「NEXT TECH PLAYER 賞」を受賞した上原直人さんは、そんな苦しくもあり、刺激的でもある道をあえて選んだ。

「一昔前のように、プログラミングは魔法のようなとても手が出せないというほどのものではない。学校の授業でも触れる機会はあるので、プログラミングそのものについては、みんなある程度のイメージは持っていると思います。ただ僕が所属するコンピュータ部のメンバーでも、新しい言語に関心があって、それを作ってみようとか考えているのは、一人ぐらいですね」

そう語るのは、今年春から開成高等学校の1年生になった上原直人さんだ。

Alt text
▲開成高等学校 1年生 上原 直人さん

開成中学・高校が一緒に運営しているコンピュータ部は、国際情報オリンピックやSuperComputingContestでのメダル獲得など数々の戦歴を誇る。部員の多くはゲーム制作・競技プログラミング、機械学習、Web制作などへの関心が強い。

だが、上原さんがプログラミング言語を作っていると話すと、クラスメートはきょとんとしていたという。「U-22 プログラミング・コンテスト2019」で経産大臣賞を受賞したことで、「自分がやっていることを、ようやくみんなに理解してもらえた。それが一番嬉しい」と語る。

Alt text
▲経済産業大臣賞を受賞した「U-22プログラミング・コンテスト2019」で発表する上原さん

そもそも上原さんのコンピュータ言語への関心は、どこから生まれているのか。

「何か新しいことをやるときは、まず本で体系的な知識を一通り読んでから始めます。実際に始めるときは、インターネットでもいろいろ調べますね」

これは幼稚園生の時にハマっていた紙飛行機作りでもそうだった。そもそも飛行機はどんな原理で空を飛ぶのか。もっと頑丈で、もっと遠くに飛べるようにするためには、どこを改造すればいいのか。本やネットで調べては、何度も作り直した。

パソコンの黒い画面に、キーボードからひたすらコードを打ち込むハッカーに漠然と憧れのようなものも感じていた。小学6年生のときに、初心者向け言語「HSP(Hot Soup Processor)」を学んだが、飽き足らずすぐにやめてしまった。開成中学校に入学し、コンピュータ部に入ったときに、親に自分だけのパソコンを買ってもらった。

コンピュータ部とはいえ、プログラミングについては書籍とネットの情報をベースにひたすら書いて覚える独習の時間がほとんどだった。「プログラミングには、紙飛行機のような工作的な面白さがある」と気づいたのは、中学1年生の夏休みだった。

「世間でも話題になっていた機械学習を実装するプログラミング言語として、人気が高かったPythonに興味を持ちました。それが、Pythonを始めたきっかけです」

Pythonでは簡単なWebアプリを作ったり、「Kivy」というGUIフレームワークも使ったりしていた。Kivyを使うにはオブジェクト指向の概念を理解していないと難しい。

「そうした抽象概念がわからないと、嫌になって止まってしまう人もいると思うのですが、僕の場合は、わからないところはすっ飛ばして、たとえ感覚的であっても、その先にどんどん進んじゃう。すると後になって、『ああ、こういうことだったんだ』って腑に落ちる瞬間があるんです」。

わからないことはとりあえずカッコにくるんで、先に進み、後々の経験値で概念を整理し直すというのは、プログラミングに限らず、あらゆる学問の初学者にとって基本的に大切な姿勢である。

C++に課題を発見。違うアイデアで、もっといい言語ができると思った

中学2年生の夏休みになると、『30日でできる! OS 自作入門』(川合秀実著、マイナビ出版)という本を傍らに、自分なりのOSを開発してみた。

「その本に書いてあることを写してみただけみたいな感じだったんですけど、低レイヤーの雰囲気はわかってきました」

そこで改めてプログラミング言語の役割、そのアイデアや思想性に触れることになる。

「C言語を勉強しながら、言語としてもっとできることがあるんじゃないかと思いました。プログラマ側が気をつけないと変なエラーが起こる。それって言語側の努力で事前に防ぐことができるんじゃないか。だったら自分でそういう言語を開発してみようと考えたんです」

とさり気なく語るが、入門段階で言語仕様の問題点に気づく中学生が、世の中にそうざらにいるとは思えない。

歴史的なコンピュータ言語には、コンピュータリソースの限界や、その時代ならではのプログラミングの活用シーンがある。その出自には常に時代の制約を背負っているものだ。

Alt text

上原さんも「いろんな事情があってこうなっているんだろうなとは思うし、優れた言語は、その時点ではプログラムを書く環境に最適化されていたので、普及したはず」と、理解を示す。しかし、それを“常識”として受け入れる道を彼は選ばなかった。

「僕はちょっと傲慢かもしれないけれど、違うアイデアを入れればもっと良くなるのにと考えるタイプなんです。日常生活でも、これをもっとこうしてやればいいのにと、一人で勝手に思うことがよくあります。そう思い立ったら、すぐにやりたくなってしまう」

一方で、既存の言語を使ってゲームやアプリを書くのではなく、プログラミング言語をイチから開発するというのは、「資本主義的にはあまり意味のないことだ」とも言う。「僕が学生で時間があったからこそできたことですね」という達観する様子は、はるかに16歳の域を超えている。

静的型付言語なのに、型名を書かなくてもいい。人間が扱いやすい仕様を重視

Blawnの開発に着手したのは、中学3年生になってからだ。最初はそのネーミングにこだわった。Blawnは blue lawn(青い芝)からの合成語だが、そこにはこんな含意がある。

「隣の芝は青く見えるって、言いますよね。Pythonを使っている人がC++速くていいなとか、C++で開発している人がPython柔軟でいいなとか。それぞれいいなと思うところがある。そういう他の言語から見た長所を、全部集められたらいいなと思ってネーミングしました」

わずか2年間とはいえ、Python、C、C♯、C++などを一通り経験して「こうであったらいいな」というアイデアをBlawnには詰め込んだ。例えば、型の問題だ。Blawnは静的型付言語の一つではあるが、型付言語には珍しく、関数の引数でも、クラスでも型を書かないで済ますことができる。

「型名を最初に書くことで、プログラムの構造は意識化されると思います。コンパイラにとっても型名があるほうが扱いやすい。特にC++はコンパイラの挙動を意識する言語だと個人的には思っています。

ただ、型に縛られると、自分はこういう処理を実装しようと思っても、型という制約があるからだめだということになりかねない。でも、そういう制約はコンパイラで実装すれば取り払えるものです。いまどきのエディタなら型は簡単にわかる。だからあえて、型を明示しなくても静的型付ができる言語を考えてみました」

Blawnは、「U-22プログラミング・コンテスト 2019」の講評ページによれば、「既存の言語の仕様や文化に囚われず、実効速度などの性能の高さも含めた“人間にとっての扱いやすさ”を最重要視し開発」されたものとされている。

その点については、上原さんも「最も頑張ったところは構文のわかりやすさですね。プログラミング言語は結局人間が書くので、人間が書くときに、素直に意図がわかりやすいような構文を目指しました。型名を明記しなくていいという点も、わかりやすさにつながっていると思います」と自己評価している。

言語の構成要素についても工夫が凝らされている。再び講評を引用すると、「字句解析器にflex、構文解析器にbison、バックエンドにLLVMを利用。1パースで構文解析が済むように実装し、コンパイル速度の改善を図っている。また、全ての関数及びクラスがジェネリックで、これによって記述の簡潔さと認知負荷の低さ、さらには静的解析による実行速度の速さを担保している」と、説明されている。

こうした言語を、まだバージョンナンバーもないプロトタイプではあるものの、わずか「3〜4週間」で実装したというそのスピードにもみな驚いた。

Rubyの開発者であり、U-22コンテストの審査委員の一人でもあるまつもとゆきひろ氏は、あるQ&Aサイトで「Blawnで採用されたアイデアのうちのいくつかは大変優れたものであり、それが実現可能であることが実証されたことだけでも、世界にとって大変価値のあることだと思う」とその驚きを語っていた。

単なる消費者ではなく、創造者の側にもっと近づきたい

その驚きは、TECH PLAYER AWARDの審査員たちも同様だ。彼らの胸を打ったのは、なによりも上原さんの新しいものの創造にかける意欲だ。選考過程では、以下のようなコメントが寄せられていた。

Alt text
(株式会社エムテド 代表取締役 アートディレクター/デザイナー 田子 學氏)
「プログラミングを勉強ではなく、創造と捉えている世代の好例といえる。ピュアでバイアスがないからこそ言語開発まで乗り切ったのだと思う」

Alt text
(パラレルキャリアエバンジェリスト/プロダクトデザイナー/軍師 常磐木 龍治氏)
「ブラックボックスの上でしか実装できないエンジニアが増えている中で、プログラム言語そのものに興味をもち開発まで行ったフロンティア・スピリットが素晴らしい」

Alt text
(株式会社メルカリ 執行役員CTO 名村 卓氏)
「プログラミング言語に対する視点が、既に達観したシニアエンジニアの領域。経験以上に、物事の本質を見抜く力が素晴らしく、エンジニアとして最も必要とされる能力。もうすでに勝てる気がしない」


こうした創造性へのこだわりは、上原さん自身が自覚していることでもある。

「プログラミングのほかにもギターも弾くし、最近は音楽理論にも興味を持っていますが、そのいずれでも、単なる消費者ではありたくないと思っています。プログラムでも音楽でも単にできているものを享受するだけなら簡単ですが、これはどういう仕組で作られているかを知ることに、自分は関心がある。消費者よりは創作者側に一歩でも近づきたいですね」

Blawnの今後についても、上原さんは確固としたイメージを描いている。

「今の時点では対応できていませんが、iOSやAndroidでも動作するコードに変換できるようにしているので、大幅に構造を変えなくても、様々なプラットフォームで動くはずです。あくまでも実用言語を目指して、多様なデバイスに対応したいと思っています」

特に用途を絞っているわけではない。「システム・プログラミング全般に普及したらいいと思いますね。C++やそれを代替するといわれているRustも視野に入れて、それらに代わるようなポジションを目指しています」と、目指す目標も高い。

Alt text

もちろん、最初からその高みを目指していたわけではない。

「言語の構造はどんどん変わっています。レビューを受けて、開発の方向性を変えたこともあります。当時見えていた目標より、さらに遠い目標を目指すようになりました。だから、今はまだ自分が考えていることの3割しか実装できていない。

これからは大学受験など、考えなければいけないことも増えてくると思いますが、その合間を縫ってBlawnをじっくりと育て、自分が納得のいくバージョンになったら、オープンソースとして公開して、コミュニティの中で育てていってほしいと思います」

周到なロードマップと計り知れない可能性。上原さんの今後の活躍を、私たちも見守っていきたいし、そのチャレンジに今後も刺激を受け続けたいと思う。

TECH PLAYER AWARD

『TECH PLAYER AWARD 2020』は、実現したい世界のためにテクノロジーを駆使し、新たな価値を創り出す挑戦者(テックプレイヤー)の中から、この一年で最も活躍、またはチャレンジした企業・団体や人物を表彰するアワードです。

TECH PLAYER AWARD 2020

おすすめのコラム