CodeIQ MAGAZINECodeIQ MAGAZINE

『未踏の世界』 C++で簡単にゲームやメディアアートを作れるライブラリ「Siv3D」─鈴木遼

2015.03.13 Category:【連載】ギークたちの『仕事の流儀』 Tag: , , , , ,

  • 115
  • このエントリーをはてなブックマークに追加

IT技術を駆使してイノベーションを創出することのできる、突出した若い逸材を発掘育成することを目的とした国家プロジェクト「未踏」。

その最先端である未踏スーパークリエイタたちが生み出す独創的なプロダクトを、奥田浩美さん、池澤あやかさんとともに、三橋ゆか里さんがレポートします。
by 馬場美由紀 (CodeIQ中の人)

2013年度の未踏プロジェクトに採択された「Siv3D」開発者・鈴木遼さん

小学生の頃から無類のゲーム好きだった早稲田大学・表現工学専攻・長研究室・修士1年生の鈴木遼さん。高校に入ってからC++を使って、自らゲーム開発をするようになりました。小さいゲームをコツコツ作っていたものの、徐々にもっとユニークでインパクトのあるゲームを作りたいと考えるように。そこで独自に開発したのが、楽しく簡単にゲームやメディアアートを作れるライブラリ「Siv3D」です。

▲わずか数行のコードから生まれるグラフィカルでインタラクティブなアプリケーション

現在、既に公式Webサイトには300以上のサンプルコードが掲載され、Siv3Dを使った人気アプリなども登場しています。2013年度の未踏プロジェクトに採択されたことで、最終的なゴールである「プログラミングを楽しむ人を増やしていくこと」に着々と近づいています。

C++を使ったプログラミングを楽しく、簡単にする「Siv3D」

──Siv3Dはどんなライブラリですか?

鈴木:「プログラミングを楽しく簡単に」というコンセプトで作られた、C++を使って簡単にゲームやメディアアートを作れるライブラリです。ひと言で言うと、音や画像、またはKinectやLeap Motionといったいろいろなデバイスを使ってアプリケーションを楽しく簡単に開発できるツールです。プログラミングを学びたい人や教えたい人、ゲームやメディアアートを作りたい人、またマルチメディアアプリケーションの開発者がターゲットです。

▲早稲田大学・表現工学専攻・長研究室・修士1年生の鈴木遼さん

──Siv3Dで開発されたアプリにはどんなものがありますか?

鈴木:例えば、手書き風のイラストを生成する「HamSketch(ハムスケッチ)」というアプリがあります。画像を入れてあげると、自動で手書き風のイラストをお絵描きしてくれるんです。ハムスケッチの関連動画は、ニコニコ動画で15万再生とヒットを飛ばしました。あと、曲と連動するタイピング練習ソフトも人気です。リアルタイムに音楽を再生して、入力が遅いと曲が遅く流れて、上手く打てれば曲が本来の速さで流れる仕組みです。

──Siv3Dは「プログラミングを簡単に」をコンセプトに掲げていますが、具体的にどう簡単なのか教えてください。

鈴木:例えば10行のコードを書けば、こんなお絵描きソフトを作ることができます。また14行のコードを書くだけでKinectのモニタリングができたり、30行のコードならブロック崩しのゲームが作れます。短いコードで、他にも手書き文字認識を使って脳トレのような計算を速く解くようなアプリなんかも作れます。最新のC++11とC++14の規格に対応しているので、従来のC++より短く簡単にコードを書くことができるんです。

▲音楽だけは別に用意していますが、このデモ作品は、映像もCGもほぼプログラミングだけでできています。雲の模様も、パーリングノイズという特別な乱数を使って生成しています

──書くコードの行数が少ないのがSiv3Dの利点の1つだということですが、他の言語と比べてどれくらい違うんでしょうか。

鈴木:例えば、ブロック崩しのようなゲームだと、openFrameworksやProcessingですごく頑張って書いても、Siv3Dの1.5倍以上の行数はかかりますし、GUIやいろいろな操作を備えたお絵描きソフトを作ろうとしたら2倍、3倍の差が出てくると思います。

▲聞き手:三橋ゆか里さん

──メディアアートのためのプログラミングライブラリ「Siv3D」としての特徴を教えてください。

鈴木:Siv3Dには様々な特徴がありますが、大きな特徴としては現時点で12種類の入力デバイスに対応していることです。カメラやマイクはもちろん、「Kinect」や「Leap Motion」などにも対応しています。また、音と画像で遊ぶための仕掛けがいっぱい入っています。再生したり録音している音声をリアルタイムに解析してスペクトルを見てみたり、手拍子を認識したり、写真から顔を検出したりなど、いろんな音と画像を使った遊びの可能性が備わっています。

──Siv3Dのコードを拝見すると、確かにすごくわかりやすいというか、プログラミング初心者でも取っ付きやすそうな印象を受けました。

鈴木:そうですね。Siv3Dのコードを簡単に説明すると、例えば、音楽を鳴らしたいときは[Sound]というオブジェクトに音楽ファイルの名前を渡してあげて、再生したい時は[play]、一時停止したい時は[pause]、音量を変えたい時は[setVolume]といった具合にコーディングすることができます。画面に四角を描きたい時は、まずは[Rect]に位置と大きさを定義して、描くなら[draw]、枠だけ書くなら[drawFrame]といった具合です。こんな風に、さらっと文法を覚えるだけでプログラミングができるんです。

未踏採択で反響は激増。期間中に実装した機能は400件以上

──そもそも、なぜSiv3Dを開発しようと思ったんですか。

鈴木:小学生の頃からゲームが好きで、高校の時に自分でゲームを開発したいなと思って。一般的にC++が使われているというので使い始めて、高校ではコンピューター同好会にも入って勉強や開発をしていました。いろいろ作るうちに、もっと規模が大きくて新しくてユニークなものを作りたいと思うようになって。ちょうどいいライブラリがなかったので、自分で作ることにしました。

奥田:7年前にSiv3Dの開発に着手されて、未踏に採択されたのは2013年9月ですよね。採択の時点でSiv3Dの基本形はでき上がっていたと思うんですが、未踏期間に開発をどう広げたんですか?

▲奥田浩美さん 株式会社ウィズグループ、株式会社たからのやま 代表取締役。
2014年より、情報処理推進機構の「IT人材白書」検討委員、未踏IT人材発掘・育成事業の審査委員。著書に「人生は見切り発車でうまくいく」「会社を辞めないという選択」がある。

鈴木:未踏期間中は、画像処理の機能、音声処理の機能、新たなデバイス対応など、具体的な実装の目標を立ててそれを消化していく感じでしたね。未踏期間中に実装した機能は400項目以上ありました。

奥田:例えば開発がすごく進んだとか、未踏に採択されたことでどんな効果を感じました?

鈴木:一番大きかったのは、知名度が上がったことでユーザーが増えて、フィードバックがたくさん集まったことですね。そもそも未踏に応募した理由の一つが、未踏採択という実績を作ることで、より多くの人に知ってほしいというものだったので。

奥田:指導の先生に言われたことで、特に印象に残っている言葉とかってありますか?役に立ったフィードバックとか。

鈴木:2カ月に1度開催される、中間報告などを兼ねた未踏の合宿があるんです。そこで先生やOBの方にいただいた実装のアドバイスは、開発にいろいろ反映されていますね。「インストールの手順がめんどくさい」という意見をもらったので、昔は3分かかったインストールを短くしたり、ワンクリックでVisual Studioに入れるようにしたり。

奥田:未踏に採択されたけれど、最後の合宿まで方向性が決まらないっていう人もたまにいるくらいですから、その勢いはいい意味で周りのプレッシャーになりそうですね。

鈴木:プロジェクトマネージャーからは、「いつ寝てるんだ?」って聞かれましたけど、実はそんなに難しくなくて。テンションが上がれば、1日に3~4個の機能を実装したこともありました。ただ、実装のアイディアが湧かないときは1日中近所を散歩したりもします。未踏は作業時間を自分で決められるので、僕みたいなタイプの人は快適に開発できると思います。

楽しさを損ねる「待ち時間」を減らすことで教育現場にも導入

──未踏に参加した後、Siv3Dではどんなことに取り組んでいますか?

鈴木:「CEDEC」というゲーム技術者向けのカンファレンスに展示しました。ソニーの方に「これでPS4のゲームが開発できるといいね」みたいなことを言っていただけたり、教育関係の方も多くて「Siv3Dを授業で使いたい」などいろいろポジティブなフィードバックをもらうことができました。あとは、早稲田大学が主催する中学生向けの情報科学講座で講師をしたり、そこの教材をSiv3Dを使って作っています。中学生たちにC++を勉強してもらって、3日間でオリジナルゲームを作るんです。

──Siv3Dを教育の現場に取り入れてもらうことにも積極的なんですね。教材というのは例えば?

鈴木:これが実際の教材ですけど、例えば RGBのスライダーを動かして自分で色を作って塗り絵ができたり、画像の標本化量子化のレベルを変えて画像の変化を見たり。インタラクティブな教材でコンピューターの仕組みや面白さを知って、プログラミングを楽しく学んでもらう。最後は自分でオリジナルコンテンツを開発する。この流れをすべてSiv3Dで支えられるようにいろいろなことに取り組んでいます。また、それにも繋がりますが、C++を楽しく学べる教科書を執筆中です。

──教育の現場で導入されるためには、学習のハードルを下げることが鍵になりそうですが、その点はSiv3Dの場合はどうでしょう。

鈴木:「プログラミングの楽しさを損ねているのは待ち時間だ」という仮説を立てて、いかにプログラミングをより手軽にするかに挑戦しています。音と画像を使うアプリの開発を、通常のProcessingやopenFrameworksで行う場合のフローがこれです。コーディングして、コンパイルが完了するのを待って、結果を見るためにはアプリを一度閉じることの繰り返しです。

▲上がProcessingやopenFrameworksでの開発工程。下がSiv3D

同じことを今開発中のSiv3D Scriptでする場合、アプリを起動したら、起動している途中にコーディングしながら結果をその場でリアルタイムに見ることができます。これだけシンプルですが、これまでC++で書かれたSiv3Dのコードを、ほとんど修正せずにそのまま使えます。

奥田:実は、うちの中学生の娘が、女子中高生向けのプログラミング教室を2度開催していて。ひたすら書いてもそれがすぐには見えないから、何をやっているのかがわかりづらい面もあるのかなって。Siv3Dは、変化を見ながらプログラミングできるのが面白いなと思いました。娘にも紹介してみようと思います。池澤さんは、ご自身もプログラミングをやってきてどうですか。池澤さんは、ご自身もプログラミングをやってきてどうですか。

▲池澤あやかさん 女優
プログラミングが得意な「ギーク系アイドル」として人気が急上昇し、「Rubyの女神」とも呼ばれる。

池澤:Processingはコンパイル待ちがあまりないので特にストレスは感じないですけど、確かに待ち時間が少なければ少ないほど、ハードルが下がるとは思います。openFrameworksは、すごく早いのですが、待つんですよね。それもあって、Processingを使ってしまうみたいなところが何となくあったんですけど。

奥田:一度作れる楽しみを知った人は待てるんだと思う。だけど、それを知らないゼロの人は待てないんじゃないかな。

池澤:いや、でも待てないですよ(笑)。openFrameworksとかすごく遅いので。だから、C++でこんなに待たないSiv3Dは革命的ですよ。

鈴木:厳密にはC++ではないんですね。開発中なので仕組みはまだ秘密なんですけど、ほぼC++のコードが書けると思ってもらえれば。1日に何百回もコンパイルする人は、待ち時間だけで1時間くらい使ってますからね。

「Siv3Dを勉強する」を「Siv3Dで遊ぶ」に

奥田:Siv3Dの開発をジュニアに向けてもやっているってことは、もともとこれを作ろうという時に裾野を広げたいという思いがあったんですか?

鈴木:作っていくうちに、徐々に対象が広がっていったかんじです。当初は開発の様子をブログで公開していて、それを見た読者から「公開して使わせてほしい」という書き込みが増えて。自分のために開発していたものが、ブログの読者や大学のゲームサークル、教育の現場という風に広がっていきました。裾野が広がったことで、「楽しく簡単に」というコンセプトがより明確になりましたね。

奥田:ジュニアの教育だけじゃなく、私は「高齢者とIT」っていう事業を日本全国で展開しているんですけど、その現場でも使えそうです。

鈴木:プログラミング教育がこれから大事になると思っていて、将来、Siv3Dを事業化したいと考えています。今、一番成長が見込める分野が教育なので、そこで活用してもらう方法を模索している感じです。

奥田:面白いなと思ったのが、「Scratch」とかを使うと今度はコードを書くことがなくなっちゃって、どこからがプログラミングなのかの境界線が曖昧なんですよね。実感がないというか。その点、Siv3Dはちょうどいい具合な感じがするのね。

鈴木:Scratchは、コンピューター的な考え方に慣れて、子どもたちにまずプログラミングに馴染んでもらう導入ツールとしては素晴らしいですね。でも、子どもの発想力には制限がないのでいろいろやりたいとなった時に、それが言語やツールの制限で実現できないのは残念なことで。Siv3Dなら「できない」と答えることはありません。

池澤:ProcessingやopenFrameworksって、アプリとして端末に書き出せたりするじゃないですか。今後、Mac版とかが出ればそういう機能もつけますか?端末に入ると、子ども達のリアクションがまたすごく変わりそうと思って。

鈴木:例えば、Androidタブレットとか、クロスプラットフォーム対応はしていきたいと思っています。

奥田:Siv3Dのここから先の方向性みたいな部分はどう考えているんですか?

鈴木:プログラミングライブラリとしては、スクリプトのシステムを進めることと、もっと便利で面白い機能を追加していくことと。また事業化の方向性を見つけることですね。例えば、Siv3Dを使ってアプリケーション開発する人向けのサポート提供とか、ジュニアアカデミーで実施したような一連の教科書や教育のパッケージ販売とか。早稲田情報科学アカデミーという場が既にあるので、まずはそこを中心に取り組んでいきたいです。

池澤:基本はお1人で開発されてきたんですよね?今後は一緒にやっていく仲間を増やしていくような予定はありますか?

鈴木:基本は1人でやってきました。ユーザーから報告があったバグの再現や解決に潰した週末は数知れずです(笑)。最近は、コアユーザーの人に開発に協力してもらったりしています。また、サイトの主要部分は既に英訳されているんですが、その翻訳はGitHubにプロジェクトを登録したりして協力者を募っています。

──鈴木さんは今後もずっとSiv3Dの開発に取り組んでいく予定ですか?

鈴木:7年間 開発を続けて来て、Siv3Dが向かうべき方向に少しずつ向かっている感覚があります。今は修士一年で博士課程まで進むので、学生生活だけでももう4年残っています。これから数年で、事業化の目処を立てて収益を生みたいと思っています。

奥田:スタートアップの世界にいると7年ってなかなかないから、すごいなって思いますね。

──未踏って、新しく思いついたアイディアだけじゃなく、長年やってきたものが採択されることもあるから素敵ですね。

奥田:そうです、そうです。自分がこれまでやってきたことを、未踏の期間でどう新たに成果を出すのかが明確ならいいんですよね。

鈴木:同期のプロジェクトでもそのパターンが多かったです。未踏に採択される以前前から開発していて未踏期間により進化させるっていう。例えば、スケルトニクスとか、SizzTassとか。

──では最後に、Siv3Dを今後どんな風にしていきたいのか、これからのビジョンのようなものがあれば聞かせてください。

鈴木:大きな目標は、プログラミングを楽しむ人を増やしていくことです。あとゲーム、メディアアートの開発を盛り上げること。Siv3Dを使ったゲーム開発などの一連の流れを、日本発のプログラミング教育システムとして世界に売り込んでいければいいなと思っています。最近、よくネットで「Siv3Dを勉強する」っていうツイートとかを見かけるんです。その心意気はすごく嬉しいんですけど、本当は「Siv3Dで遊ぼう」にしたいんですよね。そこまで敷居を下げられるまで、Siv3Dの研究と開発は続きます。

取材を終えて

池澤:鈴木さんがコーディングされているのを見ると簡単そうな印象を受けました。でも、C++をあまりやらない私としては、実際にやってみるといろいろ細かい質問が出てくるかも。でも、リアルタイムの出力にはすごく感動しました。ちょっとしか直していないのに下手すると1分くらい待つこともあるので。

待ち時間を減らすことがプログラミングの楽しさや簡単さに繋がるというのはその通りだと思うので、そこが改善されているSiv3Dはユーザーにとって使いやすいものなんだろうなと思います。

奥田:私は、未踏の審査委員の立場から感想を言いますね。未踏は国のプロジェクトなので、そこに対して研究費などのお金が出ます。このプロジェクトに関しては、Siv3Dの開発に終わらず、次世代のためになるものを作っているんですよね。自分の作りたいものを作って完成じゃなくて、これが完成することでプログラミングに挑戦する人が何人増えるんだろうって。

そこまで先を見据えて採択されたのかはわからないけれど、結果的にすごくいい採択だったと思います。次の世代にも繋がっていくストーリーが描けるのはすごく素敵ですよね。楽しみです。


インタビュー/執筆
三橋ゆかり

ライター・記者。オンラインショップ、UIコンサルティング会社、Web制作会社等を経て2009年に独立。日経デジタルマーケティング、Japan TImes(英語)、The Bridgeなどで執筆。 映画「ソーシャル・ネットワーク」の字幕、監修も務めた。
また、Hanakoなど女性誌のウェブサイトやスマホアプリ紹介の記事も手がける。

── 撮影:小澤亮

自分の書いたコードを誰かに評価されたいエンジニアは、けっこう多い?

ITエンジニアのための実務スキル評価サービス『CodeIQ』で出題されている「コード銀行」問題に挑戦すると、あなたのコードが評価されます。

評価(1)出題者からの評価  ⇒評価フィードバック例を見る

  • 企業ではたらくという観点からあなたのコードをチェックします
  • フィードバックされた観点をふまえてコードを書くと世の中の企業にとって「いいコード」が書けるようになります

評価(2)企業からの評価  ⇒評価フィードバック例を見る

  • 「あなたと一緒にはたらきたい」という企業からスカウトが届きます
  • あなたのコードが社会でどこまで通用するか、リアルな評価が得られます

興味を持った方はこちらからチャレンジを!

  • 115
  • このエントリーをはてなブックマークに追加

■関連記事

『未踏の世界』音や色を認識して自立飛行する手の平サイズのクアッドコプター「Phenox」─此村領・三... プログラマブルで自立飛行ができるクアッドコプター「Phenox」とは? 今回、奥田さんと池澤さんが訪ねたのは、藤井彰人PMが担当、東京大学大学院 工学系研究科 航空宇宙工学専攻の此村領さん(チーフクリエータ)と同研究室の1年後輩の三好賢聖さん(コクリエータ)がタッグを組んで進めている未踏プロジェク...

今週のPickUPレポート

新着記事

週間ランキング

CodeIQとは

CodeIQ(コードアイキュー)とは、自分の実力を知りたいITエンジニア向けの、実務スキル評価サービスです。

CodeIQご利用にあたって
関連サイト
codeiq

リクルートグループサイトへ