<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:series="http://organizeseries.com/"
	>

<channel>
	<title>Grimoire.js &#8211; HTML5Experts.jp</title>
	<atom:link href="/tag/grimoire-js/feed/" rel="self" type="application/rss+xml" />
	<link>https://html5experts.jp</link>
	<description>日本に、もっとエキスパートを。</description>
	<lastBuildDate>Sat, 07 Jul 2018 03:14:05 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.7.19</generator>
	<item>
		<title>WebGLの現状と未来を、Grimoire.jsを生んだスーパークリエータに聞いてきた！</title>
		<link>/shumpei-shiraishi/24589/</link>
		<pubDate>Thu, 02 Nov 2017 01:00:22 +0000</pubDate>
		<dc:creator><![CDATA[白石 俊平]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[デザイン]]></category>
		<category><![CDATA[Grimoire.js]]></category>
		<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">/?p=24589</guid>
		<description><![CDATA[連載： HTML5 Conference 2017特集 (12)こんにちは、編集長の白石です。 この記事は、9月24日に開催されたHTML5 Conference 2017に登壇したエキスパートに、お話されたセッションの...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/html5-conf2017/" class="series-457" title="HTML5 Conference 2017特集" data-wpel-link="internal">HTML5 Conference 2017特集</a> (12)</div><p>こんにちは、編集長の白石です。</p>

<p>この記事は、9月24日に開催された<a href="http://events.html5j.org/conference/2017/9/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">HTML5 Conference 2017</a>に登壇したエキスパートに、お話されたセッションのトピックを中心に語っていただこうとういものです。セッションの内容をより深く理解する手助けになるだけでなく、本記事単体でも面白く読んでいただけることを目指しています。</p>

<p>今回お話を伺ったのは、東京理科大学4年の石井翔さんです。</p>

<p><img src="/wp-content/uploads/2017/10/42A5128.jpg" alt="" width="640" height="412" class="alignnone size-full wp-image-24605" srcset="/wp-content/uploads/2017/10/42A5128.jpg 640w, /wp-content/uploads/2017/10/42A5128-300x193.jpg 300w, /wp-content/uploads/2017/10/42A5128-207x133.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p>石井さんのセッション「WebGLの今とこれから ~今のWeb開発で使うからこそ知っておきたい周辺技術~」に関するスライド資料は、こちらで公開されています。</p>

<p><a href="http://html5.grimoire.gl/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">スライド資料</a>
（注: 重いのとモバイルから見えないのはご容赦ください by 石井翔さん）</p>

<h2>WebGLの現状</h2>

<p><b class="speaker siraisi">白石:</b> 本日は取材をお受けいただいてありがとうございます！簡単に自己紹介をお願いします。</p>

<p><b class="speaker isii">石井:</b> 東京理科大学4年生の石井 翔です。昨年、私が進めている<a href="https://grimoire.gl/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Grimoire.js</a>（注: モバイルからだと多少レイアウトが崩れます by 石井翔さん）というプロジェクトが<a href="https://www.ipa.go.jp/jinzai/mitou/2016/20170530.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">未踏IT人材発掘・育成事業に採択され</a>、スーパークリエータに認定されました。</p>

<p><b class="speaker siraisi">白石:</b> Grimoire.jsはWebGLのライブラリですね。Grimoire.jsについてもあとでお聞かせ願いたいのですが、まずはWebGLの概要や現状についてお話いただけますか？</p>

<p><b class="speaker isii">石井:</b> WebGLは、一言で言えばWeb上で3Dコンテンツを扱うための技術です。2010年に仕様が策定されており、既に多くのブラウザで実装されている技術です。ブラウザ上でどの技術が使えるかを測定する<a href="https://caniuse.com/#feat=webgl" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Can I Use</a>での結果を見ても、92%以上のブラウザがサポートしていて、広く使える状態にあると言っていいでしょう。</p>

<p>ただこれは、WebGL 1.0の話です。<a href="https://caniuse.com/#feat=webgl2" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">WebGL 2.0はまだまだ</a>ですね。ChromeとFirefoxだけが対応しているという状態で、特にiOSで使えないのが厳しいです。「ブラウザを限定すれば使える」という状態です。</p>

<p><b class="speaker siraisi">白石:</b> WebGL 1.0と2.0って何が違うんですか？…ぼく、3Dプログラミングが全然わかってないので、理解できるか自信がないのですが(笑)</p>

<p><b class="speaker isii">石井:</b> 浮動小数点テクスチャなどがWebGL 2.0の主な機能ですが、3Dプログラミングの知識がない人に向けて話すのはちょっと難しいですね(笑)
とりあえず、ライブラリ作者なら知っておくべきですが、ライブラリのユーザーはそれほど気にする必要はないかと思います。
ライブラリ作者も、WebGL 2.0が使えない環境では1.0にフォールバックするように実装していることが多いでしょうし。</p>

<p><small>
（筆者注: WebGL 2.0の強化点については<a href="https://qiita.com/emadurandal/items/4c7bd2a26ef2d732d734" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Qiitaで良い記事を見つけました</a>。ぼくにはちんぷんかんぷんですが…）
</small></p>

<p><b class="speaker siraisi">白石:</b> なるほど、あまり気にしなくていいと(笑) 安心しました。</p>

<p><b class="speaker isii">石井:</b> 3Dをご存じない方にとって大事なのは、<strong>そもそもWebGLとはGPUを扱うための技術だ</strong>ということをしっかり理解しておくことです。</p>

<p>CPUは、CPUは複雑な処理を逐次的に処理することを得意としています。CPUの場合はコアの数が4とか8とかに限られていることが普通です。</p>

<p>一方GPUの場合は、「異なるデータに対して同じ処理を施す」のを並列で実行するのに特化しています。なのでGPUは、コアの数が1,000を超えることも普通です。
こうした特徴を持つGPUだからこそ、大量の頂点を移動する処理など、3Dプログラミングに必要とされる「単純な処理の並列実行」に向いているんです。</p>

<p><b class="speaker siraisi">白石:</b> こうした特徴は、最近だと機械学習の分野とかにも活かされているんですよね。単純なベクトル計算とかが多いから。</p>

<p><b class="speaker isii">石井:</b> そうです。で、WebGLってそもそもOpenGL（※）と同じなので、CGの取り扱いに関しては共通している部分がほとんどです。<strong>ただ、置かれている環境は、OpenGLネイティブのゲームやアプリとは随分違う</strong>。</p>

<p>一番違う点は、WebGLは必要とされるリソースが全部Web上にあって、ダウンロードが必要という点です。モデルデータの読み込みに時間がかかるんですよね。</p>

<p>だから今まではゲームなど、「読み込みに時間がかかりそうだ」とユーザーも了解しているコンテンツが多かったんです。でも、本来使うデータをしっかり選べば短いロード時間で使えるものも多いんですよ。シェーダーアートとか。</p>

<p><small>
※OpenGL（オープンジーエル、Open Graphics Library）は、クロノス・グループ (英: Khronos Group) が策定している、グラフィックスハードウェア向けの2次元/3次元コンピュータグラフィックスAPIである（<a href="https://ja.wikipedia.org/wiki/OpenGL" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Wikipediaより引用</a>）
</small></p>

<p><b class="speaker siraisi">白石:</b> 確かに、WebGLでできたゲームとか、読み込みに数分待たされるものもありましたね。</p>

<p><b class="speaker isii">石井:</b> はい。モデルデータが大きいと、それだけダウンロードやデータ読み込みに時間がかかってしまう。なので、<strong>そうしたWebGLの問題を解決すべく、CGの世界にも進化が起きようとしている</strong>んです。</p>

<p><img src="/wp-content/uploads/2017/10/42A5125.jpg" alt="" width="640" height="417" class="alignnone size-full wp-image-24608" srcset="/wp-content/uploads/2017/10/42A5125.jpg 640w, /wp-content/uploads/2017/10/42A5125-300x195.jpg 300w, /wp-content/uploads/2017/10/42A5125-207x135.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<h2>ランタイム向け3Dデータフォーマット「glTF」</h2>

<p><b class="speaker siraisi">白石:</b> 具体的にはどのような進化ですか？</p>

<p><b class="speaker isii">石井:</b> 一つは<strong><a href="https://www.khronos.org/gltf" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">glTF</a> (GL Transmission Format) と言って、汎用的な3Dアセットフォーマット</strong>です。ツールに依存しない軽量フォーマットとして、Khronosが普及を進めています。</p>

<div id="attachment_24632" style="width: 650px" class="wp-caption aligncenter"><img src="/wp-content/uploads/2017/10/e1ac15f7811659bca0d029023946090c-640x334.png" alt="glTF" width="640" height="334" class="size-large wp-image-24632" srcset="/wp-content/uploads/2017/10/e1ac15f7811659bca0d029023946090c.png 640w, /wp-content/uploads/2017/10/e1ac15f7811659bca0d029023946090c-300x157.png 300w, /wp-content/uploads/2017/10/e1ac15f7811659bca0d029023946090c-207x108.png 207w" sizes="(max-width: 640px) 100vw, 640px" /><p class="wp-caption-text">glTF</p></div>

<p><b class="speaker siraisi">白石:</b> ツールに依存しない、というのはどういう意味ですか？</p>

<p><b class="speaker isii">石井:</b> 以前WebGL上でモデルファイルを扱う際には、MayaやBlenderといったツールのファイルをそのまま読み込んで利用することが一般的でした。これは言わば、<strong>「Photoshopのpsdファイルはあるけど、jpgやpngなどの汎用的な画像フォーマットがない」という状況</strong>です。</p>

<p><b class="speaker siraisi">白石:</b> そんな状況だったんですね…知りませんでした。ゲームやアプリとしてひとまとめにパッケージングしてしまうから、汎用フォーマットが必要とされなかったんでしょうか。</p>

<p><b class="speaker isii">石井:</b> 概ねそういうところです。そういう状況を変えようと、<a href="https://ja.wikipedia.org/wiki/COLLADA" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">COLLADA</a>という汎用フォーマットがKhronosによって提案され、一定程度普及はしています。</p>

<p>ただ、COLLADAファイルはCG編集ツール間でデータをやり取りするためのフォーマットとして設計されているため、WebGLアプリケーションが読み込んで利用するには、編集用のパラメーターなど不要な部分も多いんです。また、XML形式だというのも、ファイルサイズや解析速度の点で不利になります。</p>

<p>glTFは、COLLADAファイルから編集用のパラメータを取り除いて、JSON形式にしたものと言ってほぼ差し支えありません。</p>

<p><b class="speaker siraisi">白石:</b> なるほど。ただ、そういうフォーマットって、普及させるのがなかなか大変な気もしますが、どうなんでしょう？</p>

<p><b class="speaker isii">石井:</b> glTFは既に様々なライブラリにもサポートされていますし、普及は中々順調と言えると思います（参考: <a href="https://github.com/cx20/gltf-test" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">glTFのライブラリサポート状況</a>）。</p>

<p><strong>glTFの面白いところは、大手ベンダーの採用意欲が高い</strong>というところです。MicrosoftやAutodeskという大手ベンダーが乗っかってきているんですよ。
Khronos自身WebGLの仕様策定元なので、この分野で発言力が強いこともあります。また、最近では<a href="https://www.apple.com/jp/apple-watch-series-3/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Apple Watchのページ</a>でglTFが使われてたりもします。</p>

<p><b class="speaker siraisi">白石:</b> Apple Watchの公式サイトでもですか！それはかなりの人がアクセスしたでしょうね。確かに、これ単なる画像じゃない。スクロールと共に水滴が別々の動きをしてる…！（重いけど）</p>

<div id="attachment_24625" style="width: 650px" class="wp-caption aligncenter"><img src="/wp-content/uploads/2017/10/bf93ab1915cccd50fb572e6bd170ab1a-640x395.png" alt="Apple Watch Series 3のサイト" width="640" height="395" class="size-large wp-image-24625" srcset="/wp-content/uploads/2017/10/bf93ab1915cccd50fb572e6bd170ab1a.png 640w, /wp-content/uploads/2017/10/bf93ab1915cccd50fb572e6bd170ab1a-300x185.png 300w, /wp-content/uploads/2017/10/bf93ab1915cccd50fb572e6bd170ab1a-207x128.png 207w" sizes="(max-width: 640px) 100vw, 640px" /><p class="wp-caption-text">Apple Watch Series 3のサイト</p></div>

<p><b class="speaker isii">石井:</b> glTFは「オーディオにおけるMP3, ビデオにおけるH.264、画像におけるJPEG」といったように、「3DといえばglTF」となることを目指しているとのことで、普及にかけるKhronosの意気込みも並々ならぬものがあります。
<img src="https://www.khronos.org/assets/uploads/apis/2016-gltf-jpeg-of-3d.jpg" alt="" /></p>

<h2>頂点データ専用の圧縮形式「draco」</h2>

<p><b class="speaker isii">石井:</b> もう一つ注目の技術としては、Googleがオープンソースで開発している<a href="https://github.com/google/draco" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">draco</a>という圧縮形式です。頂点データを効率よく圧縮する技術で、元々の頂点データのサイズに比べて4倍から16倍の圧縮率を誇ります。</p>

<p><img src="/wp-content/uploads/2017/10/ea3f6e4f266b99b2233c19fe0d906450-640x338.png" alt="" width="640" height="338" class="aligncenter size-large wp-image-24626" srcset="/wp-content/uploads/2017/10/ea3f6e4f266b99b2233c19fe0d906450.png 640w, /wp-content/uploads/2017/10/ea3f6e4f266b99b2233c19fe0d906450-300x158.png 300w, /wp-content/uploads/2017/10/ea3f6e4f266b99b2233c19fe0d906450-207x109.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><b class="speaker siraisi">白石:</b> 先ほどのglTFにしか使えないんですか？</p>

<p><b class="speaker isii">石井:</b> いえ、汎用的なポリゴンデータ形式（.ply）に対応しているので、元のファイルフォーマットは選びません。</p>

<p><b class="speaker siraisi">白石:</b> ブラウザによる対応も必要なんですか？</p>

<p><b class="speaker isii">石井:</b> いえ、ブラウザがネイティブ対応するというものでもないんです。<strong>dracoによって圧縮されたポリゴンデータは、JavaScriptでデコードすることができます</strong>。</p>

<p><b class="speaker siraisi">白石:</b> なるほど、アプリケーションが自前で圧縮データを展開するんですね。でもそれだと、デコード処理にかかる時間がちょっと心配です。</p>

<p><b class="speaker isii">石井:</b> WebAssemblyでできたデコーダーもあるし、Web Workersで展開すればUI処理を阻害することもないので、そこはあまり問題ないと思いますよ。使うブラウザを選ぶということもありませんし、Three.jsのようなライブラリに任せてしまえば、アプリケーションはデコードについて意識する必要もありません。</p>

<p><b class="speaker siraisi">白石:</b> ほかには、Webだと画像のサイズを結構気にしたりしますが、CGの世界ではどうなんでしょう？</p>

<p><b class="speaker isii">石井:</b> CGだと、テクスチャ画像のサイズを削減するという話になりますね。ただ、単に画像のファイルサイズを小さくするだけでは片手落ちなんです。
いくら元画像のファイルサイズを小さくしても、GPUに乗るときにはフルサイズにデコードされてしまうので、メモリ使用量などにすごく影響するんですね。</p>

<p>なので、GPUが直接扱えるテクスチャ圧縮形式というものがありまして、それらを利用すると、GPU上でも圧縮した状態で画像を扱うことができます。DirectXだとS3TCという形式、iOSだとPowerVR Texture Compression (PVRTC) というように、ベンダーごとに異なってくるんですが。</p>

<p><b class="speaker siraisi">白石:</b> ベンダーごとに異なるんだと、取り扱いが面倒ですね。</p>

<p><b class="speaker isii">石井:</b> はい、なのでこういうフォーマット変換はWebpackなどで自動化されるべきだと思います。このように、今まではエンジンが自動的に行なってきたことも、WebGLの場合はプログラマーが自分で意識しなくてはなりません。</p>

<p><b class="speaker siraisi">白石:</b> まとめると、3DをWeb上で行うためにはいろいろな課題があって、それが徐々に解決されつつあるということですね。汎用モデルフォーマットが普及しつつあり、頂点データの圧縮ツールも登場した。そして、テクスチャ圧縮も自動化されるだろうと。</p>

<p><b class="speaker isii">石井:</b> そうです。そもそもWebは、多様なデバイスがネットワークで繋がれていることが前提です。そういうユビキタスな環境で、3Dが自由に表現できる世界に向けて、今まさに具体的で重要な進化が起こっているということです。</p>

<p><img src="/wp-content/uploads/2017/10/42A4970.jpg" alt="" width="640" height="399" class="alignnone size-full wp-image-24613" srcset="/wp-content/uploads/2017/10/42A4970.jpg 640w, /wp-content/uploads/2017/10/42A4970-300x187.jpg 300w, /wp-content/uploads/2017/10/42A4970-207x129.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<h2>WebGLの未来</h2>

<p><b class="speaker siraisi">白石:</b> こうした動きを踏まえて、WebGLの未来はどうなると思いますか？</p>

<p><b class="speaker isii">石井:</b> 今のコンピューターの世界は、やはり2Dを前提としているのは間違いありません。3Dが利用されるシーンは、ゲームなど、コンピューティングのごく一部に限られていました。マテリアルデザインなども、3Dの要素をうまく取り入れてはいますが、前提は2Dです。</p>

<p>ただ、今、GoogleやApple、Microsoftなどの強力なベンダーたちが、こぞってARやMRに力を入れています。このまま進めば、映画館や不動産屋さんとか、あらゆるお店の軒先にARのオブジェクトが浮いている…という世界は普通に来るんじゃないかと思っているんです。3Dがより身近になる世界です。</p>

<p>ただ、そういうのを見るために、<strong>わざわざアプリをインストールするのは面倒</strong>ですよね。近い将来、そういう面倒くささが、AR/MRの普及を妨げる大きな一因になってくるんじゃないかと思うんです。</p>

<p>しかしWebGLがそういう状況を打開できるんじゃないか、と期待しています。WebGLはWebブラウザさえあれば動きます。PCでもスマホでも動く。アプリのインストールが必要ないし、しかも安全なサンドボックス上で動きます。</p>

<p><b class="speaker siraisi">白石:</b> 確かに！もしかすると、ビーコン技術との組み合わせとか（※）で、アプリのインストールを必要とせず、気軽にバンバンARコンテンツを見るような時代が来るかもしれませんね。</p>

<p><small>
※Webとビーコン技術との組み合わせとして、<a href="https://developers.google.com/beacons/overview" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Eddystone</a>という仕組みがGoogleから考案されている
</small></p>

<p><b class="speaker isii">石井:</b> 実際、Googleが<a href="https://github.com/google-ar/WebARonTango" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">WebAR</a>という仕様を作ったりもしていますし、ARには各社力を入れているので、Webでも早晩ARが使えるようになるだろうと思います。</p>

<p><b class="speaker siraisi">白石:</b> でも実際、要素技術が揃っているだけでは世の中変わらない…という現実もあるかと思います。WebGLも、実際には随分前から使えるようになっていたわけですし。こういう「要素技術が揃っているだけでは越えられない壁」は、どうやったら超えられると思いますか？</p>

<p><b class="speaker isii">石井:</b> 難しい問題ですが、一つは3Dコンテンツの制作コストが高いというのも、普及を妨げる要因にはなるのかなと思います。ただそれは、「人が作る」ことを前提とするからコストが高くつくんだと思うんですよね。</p>

<p>そういう点では、2Dに関しては既に<a href="https://paintschainer.preferred.tech/index_ja.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">PaintsChainer</a>（AI技術を使い、線画を自動で着色するサービス）や<a href="http://make.girls.moe/#/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">MakeGirlsMoe</a>（AIで自動的に萌えキャラを作成するサービス）のようなサービスが出てきています。同様に、自動で3Dコンテンツを生成するようなサービスも近いうちに登場して、コンテンツの制作コストが劇的に下がるんじゃないでしょうか。</p>

<p><b class="speaker siraisi">白石:</b> <strong>AIサービスでコンテンツの制作コストが激減する</strong>というのは面白い発想ですね〜</p>

<p><b class="speaker isii">石井:</b> <a href="https://www.adobe.com/jp/sensei.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Adobe Sensei</a>も最近話題になっていますし、デザインの一部をAIに任せるというトレンドが来つつあるのは確実かなと思いますね。</p>

<h2>Grimoire.jsは、WebGLをWebエンジニアにとっての「筆」にする</h2>

<p><b class="speaker siraisi">白石:</b> では最後に、開発を進めていらっしゃる<a href="https://grimoire.gl/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Grimoire.js</a>についても、簡単にご紹介頂けますでしょうか？Three.jsなどのライブラリとは何が違うんでしょう？</p>

<p><img src="/wp-content/uploads/2017/10/grimoire-logo-640x172.png" alt="" width="640" height="172" class="aligncenter size-large wp-image-24627" srcset="/wp-content/uploads/2017/10/grimoire-logo.png 640w, /wp-content/uploads/2017/10/grimoire-logo-300x81.png 300w, /wp-content/uploads/2017/10/grimoire-logo-207x56.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><b class="speaker isii">石井:</b> Grimoire.jsはWeb開発の中でWebGLを扱うためのフレームワークです。<a href="http://threejs.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Three.js</a>や<a href="http://www.babylonjs.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Babylon.js</a>は、発想がCG中心なんですよね。画面全体をCGで構築するようなコンテンツにはいいのですが、Webコンテンツと混在させて、相互がやり取りするようなプログラムを作るには適していないんです。<strong>CGとWebには大きな隔たりがある</strong>。それに決められた構造を両者に与えて橋をかける必要があった。</p>

<p>この隔たりは、プログラミングスタイルにも大きく表れてきます。</p>

<p>CGの場合は、フレームごとにグラフィックを変更させていく、いわば<strong>フレーム指向</strong>です。<br />
一方でWebの場合は、イベントに応じて処理を行うのが普通ですよね。いわば<strong>イベント指向</strong>です。<br />
こうした隔たりがあるせいで、CG側とWeb側が、お互いにどうデータを受け渡しすればいいか、正解がないというのが今の状況です。</p>

<p>Grimoire.jsは、CG側とWeb側の、2つのAPIを提供することで、両者がシームレスに同居するようなアプリケーションを簡単に作ることができるように設計されています。</p>

<p><b class="speaker siraisi">白石:</b> 具体的にはどのようなコードになるんでしょう？</p>

<p><b class="speaker isii">石井:</b> Grimoire.jsは、GOMLという専用のマークアップ言語でCGを記述することができます。そして、GOMLの要素を変更することで、簡単にCGを変更できるんです。例えば、立方体にテクスチャを貼り付けて、自動的に回転するようなCGは以下のようなマークアップで簡単に実現できます。</p>

<p><img src="/wp-content/uploads/2017/10/cube-640x541.png" alt="" width="640" height="541" class="aligncenter size-large wp-image-24634" srcset="/wp-content/uploads/2017/10/cube.png 640w, /wp-content/uploads/2017/10/cube-300x254.png 300w, /wp-content/uploads/2017/10/cube-207x175.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p></p><pre class="crayon-plain-tag">&lt;goml&gt;
  &lt;scene&gt;
    &lt;camera&gt;&lt;/camera&gt;
    &lt;mesh texture="logo.png" geometry="cube"&gt;
      &lt;mesh.components&gt;
        &lt;Rotate speed="1,1,1" /&gt;
      &lt;/mesh.components&gt;
    &lt;/mesh&gt;
  &lt;/scene&gt;
&lt;/goml&gt;</pre><p></p>

<p>そして例えば、マウスが重なった時だけこの立方体が2倍の大きさになる…という処理は、以下のようなJavaScriptで実現できます。</p>

<p></p><pre class="crayon-plain-tag">gr(function() {
  var mesh = gr('#simple .canvas')('mesh')
  mesh.on('mouseenter', function () {
    mesh.setAttribute('scale', '2.0')
  })
  mesh.on('mouseleave', function () {
    mesh.setAttribute('scale', '1.0')
  })
})</pre><p></p>

<p><b class="speaker siraisi">白石:</b> おお、簡単ですね！これならWebエンジニアでも簡単に扱えそうです。</p>

<p><b class="speaker isii">石井:</b> はい、そうなんです。イベントを受けてパラメーターを書き換えるという流れは、今のWebアプリケーションフレームワークなどの潮流を見れば古い感じを受けるかもしれませんが、結局のところこれだけあればいくらでもラップすることができます。そのようなモダンなWeb開発の環境でもシームレスに環境を選ばず導入できるんです。Grimoire.jsの目標は「<strong>WebGLを、Webエンジニアにとっての『筆』にする</strong>」ことなんです。</p>

<p>一方で、CG側にはUnityに近いようなインターフェースのAPIが提供されています。TypeScriptで記述できるビルド環境が提供されているので、Webに疎いCGサイドでもすぐにWebエンジニアの使う筆を作ることができます。再利用可能で、最終的なパラメーター調整などをWeb側が簡単に行えるわけです。実際、そのためにChrome拡張でWebGLの空間をそのまま操作できる<a href="https://chrome.google.com/webstore/detail/grimoirejs-devtool-20/clioppdjbagckdddfdhpollnkbpepkhn" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">インスペクタ</a>も提供しています。</p>

<div id="attachment_24628" style="width: 650px" class="wp-caption aligncenter"><img src="/wp-content/uploads/2017/10/inspector-640x257.png" alt="Grimoire.js Inspector" width="640" height="257" class="size-large wp-image-24628" srcset="/wp-content/uploads/2017/10/inspector.png 640w, /wp-content/uploads/2017/10/inspector-300x120.png 300w, /wp-content/uploads/2017/10/inspector-207x83.png 207w" sizes="(max-width: 640px) 100vw, 640px" /><p class="wp-caption-text">Grimoire.js Inspector</p></div>

<p>WebエンジニアにとってCGをより身近にすること、そしてCGがより一般的な世界にすることを目指しています。</p>

<p><b class="speaker siraisi">白石:</b> とても期待しています！本日はWebGLの基本的な事柄から<a href="https://grimoire.gl/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Grimoire.js</a>まで、いろいろ教えていただいてありがとうございました。</p>

<p><b class="speaker isii">石井:</b> 1.0リリースを年内に行いたいと思っています。興味がある方がいたら公式サイトから開発チームのSlackなどに入ると新しい様々な情報が拾えるかと思います。またいくつかの例も載っているのでご覧いただけると幸いです。</p>

<p><DIV align=right>（撮影：刑部友康 写真提供：html5j HTML5 Conference 2017事務局）</div></p>
]]></content:encoded>
		
		<series:name><![CDATA[HTML5 Conference 2017特集]]></series:name>
	</item>
	</channel>
</rss>
