自分の備忘録がみんなの参考書に。ゲームエンジンUnityをマスターしたVRクリエイター

2019年12月1日から25日まで、クリスマス期間を盛り上げる記事投稿イベント『Qiita Advent Calendar 2019』を開催しました。(イベントについて詳細はこちら

このイベントの『Unity for Pro賞』で最優秀賞に輝いたのが、サトー(@sator_imaging)さんの記事『Unity のシェーダー開発方法のまとめと備忘録・頂点アニメーションテクスチャ(VAT)シェーダー』です。

サトーさんは、3DコンピュータグラフィックスやVRのクリエイターとして、業務や趣味でUnityを活用されていて、その学びの一環としてQiitaを利用しているそうです。今回は、受賞作はどのような経緯から生まれたのか、お忙しい中でどのようにQiitaに投稿しているのか、投稿のモチベーションを保ったり、Unityを学んだりするコツを伺いました。

プロフィール

サトー
カナダのソフトウェア開発会社の日本法人で、ハイエンド3Dコンピュータグラフィックスソフトウェアの代理店向け技術サポート業務に携わることからキャリアをスタート。現在では、3DCGクリエイターとして、ゲームやアニメ、VR、VTuberの制作に携わり、UnityやMayaを活用。Unity使用のきっかけはモバイルゲーム制作プロジェクトへの参加。

自分用にUnityの価値ある情報をまとめておこうと思ったのがきっかけ

──QiitaにUnityについて投稿するようになったきっかけや動機を教えてください。

サトー : もともと、調べたことをメモに取っていたんですが、それが自分しか読まないメモとして保存してあってもしょうがないと思うようになって。せっかくだしということで、後で見返す事になるかもと思うようなメモは公開してみようと思ったのが、Qiitaに投稿するようになったきっかけですね。

QiitaはIT系が多いイメージを持っていました。CGやMayaの情報もありましたが、Unity関連の話題が多かったので、Unityについて備忘録的に書こう、自分で調べたことを、あとで見て便利に読み返せるように価値ある情報をまとめておこう、と思って書くようになりました。

──今回の、アドベントカレンダーの記事を書こうと思ったきっかけを教えてください。

サトー : 正直にいうと、Qiitaから『Qiita Advent Calendar』参加への“最後の一押し”みたいなメールが来て、賞品にMacBook Proがあったからです(笑)

シェーダーの開発方法については、長いあいだメモを取っていました。仕事をするたびに、少しずつ追加して、また調べ直して――を繰り返していたので一度、まとめたいと思っていたんです。ちょうどそこにMacBook Pro(メールでのキャンペーン告知)がきたので。探せば、皆がいろいろ書いているテーマですが、「ここを読み返せばシェーダーについて一通り分かる、思い出せる」みたいなまとまった記事がないのが個人的に印象的に残っていたので、良いきっかけだと思ってまとめることにしました。タイミングが良かったです。

それと、今回のテーマは検索すると古い情報が引っかかってしまうのも、書こうと思った理由です。Unityは更新が多いので、良くも悪くも検索すると古い情報が引っかかってしまうので、ちゃんとまとめ直したかったというのも大きかったですね。

──今回の記事は、書籍一冊分あるのでは? と思えるボリュームがあります。記事を書く上で、苦労された点やこだわったポイントなどを教えてください。

サトー : そうですね。結果的に長くなってしまって(笑)自分でも、ずっとゴチャゴチャしていたというか、毎回悩んでいたところだったので、一年ほど書きためた箇条書きのメモに文章をつけて、少し起承転結をつける感じで書いていきました。扱った内容が、Unityのコアのバージョンアップを重ねていろいろ変遷を経ていたので確認が大変でした。

それと、絵や図はたくさん入れようと思っていました。最初に書いたときは、冒頭にリファレンスを置いて、その後に実例だったんですけど、逆に構成して、最初に絵がくるように変更しました。見る気になるものを頭に持ってこようと思って。やはり、読まれなければ始まらないので、つかみは大事ですね。最近、アニメなどいろいろ制作して思うところだったので工夫することにしました。

目次の前に動画と記事の概要を挿入して、読者を引き込む工夫をしている

ほしい機能を自分で作れるのがUnityのメリット

──Unityをご利用になったきっかけについて教えてください。

サトー : 3年くらい前に、スマホゲームの開発に参加したことです。Unityが選ばれたのは、とっつきやすいからというのが一番の理由ですね。他にも開発環境はありますが、VR版の開発チームを全員集めて10人いるかいないかの規模なので、中小企業でも扱いやすいUnityが採用されたのだと思います。

3DCGの開発ツールは、Unity以外ではゲームエンジン向けのデータを作るためにMayaを使っています。以前にゲーム会社に在籍していたときは、会社が作った内製エンジンを使っていました。

Unityは、新しいデバイス向けのソフトを作るのに向いていると思います。VRもそうですけど、SDK(Software Development Kit)などは最初からUnity向けであることが多いのでやりやすいです。

新デバイス向けの開発(ARKit 登場当時のテスト動画 2018年末~2019年初頭)
VTuber 開発当時、「iPhone X で表情を解析し Wi-Fi 経由で Windows のアプリにデータを送る」というテストを行った動画。演技中にアクターの表情を撮るというのは映画等では行われている手法ですが、付けたまま動き回るには iPhone は重く、細かい表情解析は VTuber にはオーバーキルということで結局見送りに。

──今までUnityで制作した作品はどのような作品でしょうか。

サトー : VRライド型アトラクション用の3DCGを作ったときもそうでしたが、仕事ではプリプロを制作することや、協力会社とのやり取りやチェックをすることが多いです。プリプロだけやって、表に出ないままのプロジェクトもあります。たまーに自分自身でもキャラクターとか、小物とか、エフェクトといったアセットを作るという感じですね。

Unity 以外では今、映像作品の制作もお手伝いしています。暗い話ですけど、VR自体がなかなか爆発しないというか……VR元年といわれてもう3年目くらいですが、「今年こそは」と言われ続けていますよね(笑) Facebookは1~2年後を目標に新デバイスを開発しているようなので、それでVRやARが広まればUnityの仕事も増えると思っています。

──制作にあたって、お気に入りやおすすめのUnityツールがあれば教えてください。

サトー : Unityは「この機能がほしい」と思ったら自分で作れるのが一番いいところだと思っています。ゲーム制作では避けては通れない反復作業など、プロジェクトに合わせてツールを作れるのが良いですね。エディタが拡張しやすいのも便利です。

よく使う反復作業向けのツール
マテリアルの初期設定をする際にテクスチャ以外のパラメーターを一括コピーするツール、実行時にセカンドモニタに全画面表示するためのトグルボタン、VRゴーグル使用のトグルボタン…等々。エディターを自由にカスタマイズできる。

他のゲームエンジンの話を聞くと、「あれはプログラマに頼まなきゃダメ」と言われたり、いざ会社に行ってみたら「今日はエンジンがリビルド中なんで、終わるまで待ってて」と言われたりすることがあるらしいので、そういったことがないという意味でもUnityが良いと感じています。

それと、自分の好みで自由に作れるのも魅力です。「昔、自分のホームページを作ってました」というレベルの人でもある程度のものを作れるのが利点で、そういう間口の広さがUnityの魅力になっていますね。

──社内や自分のプロジェクトでUnityを利用してよかった点はありますか?

サトー : 少人数でもUnityだと上手く回るのが一番良かったです。Unityは触っている人が多く、プロジェクトメンバー捜しが楽ですね。

中小企業にとっては、このあたりは生命線だと思います。「人がいない!」となってしまうと、話が進まないので。触っている人が多くて、人を募りやすいのは本当に良いところだと思いますね。

これだけ間口が広くて触っている人が多いと、様々なことがネットに書かれています。そのため、逆に古い情報が検索で引っかかってしまうのが欠点。個人的な印象としてUnityは「Unity5.0」くらいから有名になりましたが、4~5年くらい前の古い情報が検索でけっこう引っかかってきます。それをどうにかしたいという課題意識も、私がQiitaで記事を書こうと思ったきっかけです。

「それをUnityではどうやる?」の視点で調べていくのがポイント

──どのようにして、Unityについて学びましたか?

サトー : 使う前からUnityを知ってはいました。別のツールで開発もしていたので「それはUnityではどうやるの?」という観点でいろいろ調べてみたり、人が作ったデータを見たりして学んでいきました。私が調べるときは、他のゲーム開発でやっていること全般的に見て「それをUnityではどうやる?」という視点で調べていくことが多いですね。

Unity にタイムラインが無かった頃に作成したエディター拡張
Unity にタイムラインが無かった当時、実行時以外でもシーンに存在するすべてのアニメーションを再生できるようにしたエディター拡張。「Maya のようにシーン全体のアニメーションをコントロール出来ればいいのに」と思い作成し、複数のアセットのアニメーションを揃える必要がある演出シーンの作成で重宝した。

そこで「あとで読むかも」と思った部分を自分のためにQiitaに記しています。そういう意味では、「よく書けば覚える」じゃないですけど、Qiitaは学びの復習ツールになっていますね。

──今後のUnityに期待する機能・サービスなどはありますか?

サトー : 仕事をする上では、現在のUnityでけっこう上手く回っているのですが、細かいバグが少なくなると良いなと思っています。あと、いろいろな情報が整理されたら理想的ですね。ちょっと前にLTSが出て開発サイクルを変える話があったのですが、その変更の結果が出揃ってきたと思うので改善を期待しています。お試しに使うだけだったらβ版でも大丈夫なんですが、仕事で使うにはトラブルが起きたときの対応が難しいです。HDRPはプレビューが取れて安定版になるようなので、使ってみたいなと思っています。

Unityは「公式マニュアル」を全ページ読めばマスターできる

──Unityを検討されている方へ、アドバイスをお願いします。

サトー : 採用するゲームエンジンで迷っているなら、とっつきやすいUnityをおすすめしますね。Unityアセットストア(Unity Asset Store)で売っているアセットを組み合わせて新しいものを作れるので、特にこだわりがないならおすすめです。

Unityアセットストアがないと、小さな組織は回らないかもしれません。自分たちだけで全部作るのは難しいので、人を探せなかったときの手助けになりますね。アセットを普段作っているといろいろ改善点もあるんですが、VR系はアセットを買わないと回らない傾向があるので、開発する上ではこれがないとどうしようもない面があると思います。理想は全部自分で作ることだと思いますが、いざというときのセーフティネットとして役に立ちますよ。

──Unityを学ぶなら、どんな勉強方法がおすすめですか?

サトー : 時間はかかりますが、マニュアルを全ページ読めばマスターできます(笑)しかし、それは時間的にも難しいと思うので、Unityを覚えるというより「これをやりたい!」という目標を明確にしてから調べた方が、ほしい情報がすぐに見つかって効率が良いんですよね。そのやりたいことを「Unityでどうやるか?」を考えて調べていく流れで勉強するのがいいと思います。あとは、自分のやりたいことをテーマにしたチュートリアル本を読むのも良いと思います。
いろいろな本が売っていると思いますが、迷ったら売れている本を買えばいいと思います。

それと、なるべく公式サイトを見た方がいいですね。Unityは公式サイトが本当によくできていて、良いマニュアルだと感じます。自分がQiitaで記事を書くときも、なるべくリンクは公式にしていますね。公式サイトやマニュアルは作った本人たちが書いているので一番正確で、ちゃんと更新も続いているので信頼できます。最初に、スタートガイドのような「ボールが転がるゲームを作ろう」みたいなものを読んで、全体をさっと理解したら、あとは公式マニュアルを読めば使えるようになります。

目的ごとにまとめられているUnity User Manual

Unity User Manualを見る

──独学で学ぶときのコツはありますか?

サトー : Unityを勉強するよりUnityが使っている技術全般を知って汎用的なものを調べていけば、自ずとUnityも使えるようになります。
例えば、CEDECを見て、「CEDECでやっていたことを、Unityでできる?どうやる?」という観点で考えていくと、いろいろできることが広がるかなと思いますね。

公式情報が豊富で環境が整っているからとっつきやすい

──これからUnityで使ってみたい機能やツールがあれば教えてください。

サトー : 2Dライティングを試してみたいです。私は3Dが本職なんですけど、クライアントの都合で、2DならOKというケースがあるので、ちょうど自分の興味とやることが一致しているんです。

リーズナブルなところもUnityの長所で、そのおかげで試しやすくなったと実感しています。Unityではゲーム開発の民主化と言っていましたが、ゲームの制作に限らず人を集めてから受注するか、受注してから人を集めるかという「卵が先か、鶏が先か」の状態で悩みがちなので、リーズナブルで中小の規模でも使いやすいUnityには助けられていますね。

──最後に読者の皆さんにメッセージをお願いします。

サトー : 私はQiitaで、自分で調べて気になった部分を要約して記録しておき、あとから自分で見る議事録のように再読して利用しています。

目新しい技術系のトピックは技術職の人が投稿しているので、そうした新しい情報に触れたときに「Unityではどうやるの?」と考える部分が私のやっていることです。公式マニュアルは堅い方向でまとまっていますが、時間もないときにどうしたらいいのかすぐわかる情報も必要です。こうしたすぐにわかる情報をまとめ、運用面でカバーする方法を発信しています。

運用などで困っていたら、もしかしたら何かトラブルが起きているのかもしれません。トラブル対応や具体的な運用方法に興味があったら、ぜひ私の記事を読んでみてください。解決のヒントがあるかもしれません。

Unityをはじめる

Unityメールマガジンに登録する

編集後記

自分のためにやっているというサトーさんの姿勢が自然体でとても好感が持てました。ご自身の興味と仕事での課題を上手く摺り合わせながら、学びと仕事のバランスを上手く取って、楽しんでUnityに取り組んでおられるように見えました。

また、謙遜されていましたが、情報量の多いUnityだから、検索結果に古い情報が表示されてしまうことがある状況を心配されるなど、広い視野で物事を冷静に捉えていらっしゃったのも印象的でした。
何か新しいことを学ぼうとすると、どうしても力んでしまうことが多くて、その反動で三日坊主になりやすい人には、少しずつ箇条書きのメモを積み重ねていくサトーさんのスタイルは参考になるのではないかと思いました。

初心者はとにかくあれこれ目移りしてしまいやすいものですが、サトーさんのおすすめどおり、まずは「公式情報(サイト・マニュアル)」にあたってみてはいかがでしょうか。

取材/文:神田 富士晴
撮影:AtoJ

  1. 【Qiita x COTOHA API】プレゼント企画結果発表!
  2. 腕自慢エンジニア集まれ! 働き方改革コンテスト「アシロボチャレンジ」開催