

特別コラム
プログラミングとアプリ作り、僕はこんなふうに学んできた
―仲野潤一さんに聞く
(聞き手)上田昌文(NPO法人市民科学研究室)
仲野潤一(なかのじゅんいち)さん
2007年東京大学工学部都市工学科卒。2009年同大学大学院情報理工学系研究科修士課程修了。2016年9月同大学大学院情報理工学系研究科博士課程満期退学。デジタルミュージアムにおける屋内外のARシステムの研究開発を行う。iOSアプリケーション、インタラクションデザイン、サイネージシステム、サーバーサイドアプリケーション等の開発に携る。
きっかけ
聞き手:プログラミングに興味を持ったきっかけについて教えてください。
自分が生まれる前から、母親はコンピュータが好きでした。キットなどをつくったりしていたようです。
母が就職した後にPC8001 (*1) というパソコンが発売され、お金をかけて購入したらしく、子育てで途絶えていましたが、その後僕にすごく簡単な数字が増えていくだけのようなプログラムを作ってくれました。しかしそれを毎回親にやってもらわなければならなかったので、ある日僕はプログラムをメモしたらしく、それからは自分でできるようになったようです。
聞き手:すごいですね。
意味はわからないのですが、これと同じことを書けば、こういったことができるということがわかり、それからは雑誌に載っているゲームのコードなどを打って遊んでいました。しかしパラメーターなどを変えられることは分かっていましたが、プログラムのロジックを完全に理解しているわけではありませんでした。またBASIC (*2) のマニュアル本やプログラミングの基礎などを時間があるので読んでいました。
ただその後Macなどが入り、プログラムを書くのではなく、使う方が多くなりました。中学生の頃はゲーム機などがあり、まったくやっていませんでした。その頃はグラフィックをたくさん使うようなプログラムを書くのがすごく難しかったのです。同時に(それとも当時?)インターネットもない中学生には情報が入手しづらく、また1996、7年頃は中学生の間では、プログラミングという言葉がまったく浸透していませんでした。
聞き手:プログラミングの敷居は今よりも高かったのですね?
そうですね。当時はインターネットが無いので、手引きもなく、情報を集めにくかったのです。またインターネットが無いとプログラミングの面白さを感じにくいところがありました。インターネットに繋がっていないパソコンではできることは限られているので。

【仲野さんが作ったアプリの一例:「ギター・ドリル」】
指で弦を正確な位置で押さえることができるようになるための練習アプリ。



このコード(ソースコード)はこんな感じだよ。





もうひとつ違う画面。



このコードはこんな感じ。



自分のプログラムをつくるまで
聞き手:仲野さんはどのあたりから自分のプログラム、アプリを作ろうという発想が出てきたのでしょうか。
大学に入ってプログラミングが必修なのでJava (*3) という言語を勉強しました。その頃はまだスマートフォンはありませんでしたが、携帯電話でインターネットにつなぐということはできた時代でした。その頃は携帯で情報を管理するということがあまり無かった時代で、ToDoアプリのようなものができればと思いました。データベース勉強し、ウェブのプログラミングを勉強したので、自分で作ろうと思いました。
聞き手:自分専用ですか?
はい。カレンダー表示ができたところでやめてしまいましたが。
聞き手:今ではGoogle Calendarなどがありますが当時はなかったのですね。
そうですね。そういう意味ではニーズから始まっていました。今の時代は大体のことは満たされているので、ニーズから作ろうとすることは難しいかもしれませんね。ただコネクテッドホームやIoTなどは、各個人それぞれに、こういう時にこうしたいということが無限にあり、そしてそれらは既存のアプリでは対応しきれないので、あるかもしれません。
そういうところは自分で作るしかない。USBから赤外線を出す機械を取り付けることで、リモコンの代わりにさせることで、リモコンで動かすものは、ほとんど操作できるようになります。カーテンなども、喋ったり、時間で自動的に開けたりするようなことができるようになります。そのあたりはニーズが細分されすぎていて、自分で作るしかないでしょうね。そういうところは楽しいと思います。
聞き手:しかしそういうものは、普通の人から見るとものすごく色々な知識が必要で、勉強が大変で無理だという感じにはなってしまう可能性はありますか。
確かに現状ではそうならないとは言い切れないかもしれません。IoTの関連のものは本当にインターネットに対応していてセキュリティのことも考えているので、ありとあらゆるものを組み合わせようと思うと勉強しなくてはならないでしょう。でももっと初歩的なことで、例えば天気によって電気の色を変えるようなことは難しくないと思います。

【仲野さんが作ったアプリの一例:モザイクで描く葛飾北斎(かつしか ほくさい)の絵】



こんな風に、ぜんぜん別のいろんなたくさんの写真を自動で組み合わせて、北斎の有名な絵そっくりのモザイク画を作りだす。



このアプリのコードの一部はこんな感じだ。



プログラムをつくることについて
聞き手:やりやすいものと敷居の高いものがあるということですね。では仲野さんの経験から中学生や高校生でも、可能なものは十分作れたりするということでしょうか。
つくるものと人によると思いますが、やる気があればできると思います。
聞き手:最近プログラミングの教室などもあると思いますが、そういうところに行かないとできないと思いますか?
導入としてはプログラミングの教室というのはあり得るかと思いますが、プログラミングの教室に行ったところで、隅々まで分かるようになるわけでは無いと思います。英会話も、教室に通っても海外に行かないと完璧に出来るようにならないのと同じで、ソフトウェアエンジニアも仕事以外の時にやらないと成長しない。やる気がある子がいれば、本当の一番初めの環境設定だけしてあげれば、あとは勝手に進むと思います。
聞き手:プログラミングは他の物理や化学と比べて、相当自習しやすく、自分でものを作っているという感覚に直結していると思いますが、どうでしょうか?
そうですね。物理や化学は実験環境を自分では作れないので、自分が考えたことが正しいのか?確かめるのはすごく難しいのですが、プログラミングはそれが可能で、こうだと思えばやってみることができるので、そう思います。
大学でのアプリケーションとの出会い
聞き手:仲野さんが大学に入り都市工学科に入り、その後大学院で開発に携わる「思い出のぞき窓」 (*4) などのアプリケーションとはどういった出会いがあったのでしょうか。
若い人は西側をありたがる(←佐々木:こちらの意味は?東京の西側をありがたがる?)風潮があり、自分は城北に住んでいたので嫌だと思いました。西側はあまり歴史がなく、城北には中山道などもあり歴史がある気がしました。歴史などを調べていくうちに、昔の東京はどうだったのか少し興味を持つようになり、昔を少し想像するようになりました。そこでAR (*5) を使えると思いました。
聞き手:仲野さんはARを研究室に入る前から知っていたのですか。
僕が在籍中に古写真を重ねようという話が出てきていたが、その時はARの違うことやっていました。その時は今の都市を3D的に記録しようというようなことをやっていた。その3D的に記録するというのと、古写真を重ねるというのは似ているところがありました。ただ一番はじめは自分ではありませんでした。
聞き手:そこでこれまでのプログラミングの知識は使えましたか。
プログラミングの知識は必須でしたが、そこにさらに数学的知識が必要でした。幾何学的な知識ですね。それを独自に本とか読んで勉強しました。
聞き手:どの辺で自分が一番活躍したと思いますか?
最近思い出のぞき窓を使って、研究室的な実験ではなく、実際のニーズがあるところで適用していこうということで、3年間程、江東区の方でやったところで僕がやったことだと思います。
聞き手:そこの人と対話して情報を組み込むのと、技術開発と両方をやったということですか。
そうですね。ただ技術的なことは、挑戦的なことをやると動かなくなることがあるので、あまり挑戦的なことはやっていないということがあります。
聞き手:最初に思い出のぞき窓を見た時に、改良した方が良い点や活かせそうな点などはありましたか?
学部4年生や修士1年生が実際の開発の現場を知らずに書いたものなので、ぐちゃぐちゃなところがあり、そういうものはよくないと思いました。ただ知識がありすぎてもコードが書けないという現象があります。きっちり書こうとするあまり、とりあえず書いてみようという気が起こらなくなってしまうのです。
最初から設計して書くのが一番きれいにできるのですが、研究はトライアンドエラーなので、そういったことを気にしても結局ぐちゃぐちゃになってしまい、効率的で無いことがあります。ただ自分は綺麗に作りたい方だったので、そういったところは反省すべき点であったということはあります。
聞き手:アプリケーションを社会に向けて作っていくことは、プログラミングだけではおわらないということですね。仲野さんは最近新たに手がけたものはどんなものがありますか。
最近は人の動きを可視化するソフトを作りました。元の表形式のデータを可視化するソフトです。
聞き手:あとは後輩へのメッセージですが、今の子供たちを見ていて、プログラミングの環境は昔よりずっと良くなっていると思いますが、後輩にこうやった方が良いなどのアドバイスはありますか。ここはもっと突っ込むと面白いなども。
テキストファイルを100個作る作業など、繰り返しの作業でそこで何も学習できない時があると思いますが、100個作るときよりも時間がかかっても良いので、そこで自動化する方法を学んだ方が良いということはありますね。漢字の書き取りは、学習なのでそれとは違いますが。
聞き手:ついついできるとやってしまう感じですね。どこを自動でやり、どこを自分でやるかということですね。
そうですね。
*1: 1979年9月に発表された日本電気 (NEC) が発売したパーソナルコンピュータ
*2: BASIC(ベーシック)はプログラミング言語のひとつ
*3: Java(ジャバ)はプログラミング言語のひとつ
*4: 様々な場所の過去の風景をARで追体験する無料アプリ
*5: 拡張現実(Augumented Reality)の略で、実際の風景などに、コンピュータを使って情報を加える技術
