SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

翔泳社の本

メタバース開発に必要な技術の基本知識をおさらい。プラットフォームによる手法の違いは?

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

 一口にメタバースと言っても、プラットフォームによって必要な開発技術は異なります。例えばデスクトップアプリもあればモバイルアプリやWebアプリ、さらにVR機器のアプリで動作するサービスもあります。また、ほとんどすべてのサービスがゲームエンジンで開発されてもいます。今回はこうしたメタバースとその開発に関する基本知識を解説した書籍『図解まるわかり メタバースのしくみ』(波多間俊之、翔泳社)から、「第5章 メタバースを作るプログラミング」を抜粋して紹介します。

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

 本記事は『図解まるわかり メタバースのしくみ』の「第5章 メタバースを作るプログラミング~プラットフォームによる開発手法の違い~」から抜粋したものです。掲載にあたって一部を編集しています。

5-1 メタバースを作るためのプログラミング

コンピュータを構成する要素

 メタバースはPCやスマートフォンなどのさまざまなコンピュータで動作しています。さまざまなコンピュータで動作させるためには、どういった理解でプログラミングを行う必要があるのでしょうか。

 実は、どのようなコンピュータも制御、演算、入力、記憶、出力という5つの機能を備えています。これらを五大機能と呼びます(図5-1)。

 また、五大機能を含め、コンピュータを物理的に構成するすべての要素をハードウェアといいます。五大機能を知ると、プログラムの命令は大きく「入力せよ」「記憶せよ」「演算せよ」「出力せよ」の4種類しかないことがわかります。

 この4種類の命令を目的に合わせて記述することがプログラミングです。

図5-1 コンピュータの五大機能
図5-1 コンピュータの五大機能

プログラミングをなぜ行うのか?

 ハードウェアはあくまでコンピュータに必要な機能を備えているのみです。ハードウェアを動かすための動作を命令するのがソフトウェアです。ソフトウェアではコンピュータ上でアプリケーションが動く環境を作るOS(基本ソフト)、OS以外のソフトウェアをアプリケーションと分類します(図5-2)。

 作られたアプリケーションはOSがハードウェアとの仲介役となり、同じOSであれば異なるハードウェアを使う場合でも動作します。もし、すべてのコンピュータが同じOSで動作するのならば1つのアプリケーションで完結しますが、多種多様なOSがあるため、使用するOSに対応したプログラミング言語を使用してアプリケーションを作る必要があります。

図5-2 ハードウェアとソフトウェアの分類
図5-2 ハードウェアとソフトウェアの分類

5-2 デスクトップアプリの開発

PC向けのアプリケーション

 PCの中で動作するアプリケーションをデスクトップアプリと呼びます(図5-3)。

 デスクトップアプリの特徴は、使用するアプリケーションとPC内のOSが合っていればハードウェアに関係なく動作することです。現在、最もユーザー数の多いメタバースアプリの1つ「VRChat」もデスクトップアプリです。

図5-3 デスクトップアプリを動作させるには?
図5-3 デスクトップアプリを動作させるには?

デスクトップアプリの特徴

 現状、VRゴーグルなどのハードウェアの多くはPCでの動作を対象にしています。デスクトップアプリのメリットとして、メタバースの世界内でヘッドマウントディスプレイなどのXR系ハードウェアを使用したい場合に、他のアプリケーション環境に比べて比較的簡単に連携させることができます。また、ハードウェアを細かく操作するためにはOSごとのセキュリティが問題になりますが、デスクトップアプリは比較的柔軟になっているので操作しやすいです。

 また、高性能なPCのみを対象にできるのなら、他の環境よりもリッチな3D表現を行い、現実に近い世界観や派手な演出を表現することもできます。

 しかし、デメリットも存在します。デスクトップアプリを動作させるには、インストールやコピーをする作業が必要になります。実際の開発でデスクトップアプリを採用する場合には、インストールやコピーを行うハードルを考慮する必要があります(図5-4)。PC内で動作させるため、OSに大きく依存し、違うOSでは基本的には動作しません。違うOSで動作させたい場合は、OSに合わせて別に提供する必要があります。

図5-4 デスクトップアプリのメリット・デメリット
図5-4 デスクトップアプリのメリット・デメリット

5-3 スマホアプリの開発

スマートフォン向けのアプリケーション

 スマートフォンは年々進化し続けています。今では、スマートフォンさえあればPCほどではないですがたいていのことができるようになりました。スマートフォンで動作するアプリケーションをスマホアプリといいます(図5-5)。

図5-5 スマホアプリを動作させるには?
図5-5 スマホアプリを動作させるには?

スマホアプリの特徴

 スマートフォン内には便利なハードウェアが多く内蔵されており、さまざまなハードウェアを組み合わせて体験することがスマートフォン1台のみで行えます。インストールさえしてしまえば事前の準備が必要なく、ある程度の体験が行えます。例えば、高性能ディスプレイを2分割し、スマートフォン内に搭載されているジャイロセンサーを組み合わせれば即席のVRゴーグルになります。

 また、多くのユーザーがスマートフォンを所持していることも見逃せません。多くのユーザーが所持しているということは多くのユーザーに体験してもらえる可能性が高いということです。

 一方、ユーザーごとにスマートフォンの性能に差がある場合や、スマートフォン内のOSによっては動作できないなど完全な共通化はされておらず、すべてのスマートフォンに対応させることが難しい側面もあります。加えて、デスクトップアプリと比べてもスマートフォンの性能には限界があり、使用できるメモリやグラフィックス表現、VRヘッドマウントディスプレイの性能の差などがあり、同じ体験を行うのは現状では困難です。

 また、OSごとに専用のストアが存在し、スマホアプリを公開するためには各ストアに申請を行う必要があります。申請が通らない限りアプリケーションを公開できない点にも注意が必要です(図5-6)。

図5-6 スマホアプリのメリット・デメリット
図5-6 スマホアプリのメリット・デメリット

5-4 Webアプリの開発

Webブラウザ向けのアプリケーション

 デスクトップアプリやスマホアプリは、初めて使用する際にインストールやコピーが必要な手間が発生します。これではユーザーに体験してもらうハードルが上がってしまい、気軽に体験しにくいコンテンツになってしまう可能性があります。

 そのため、最近増えているものが、インターネット上で提供されるサービスです。FacebookやTwitterなどのSNSだけでなく、Amazonや楽天などのネットショッピング、GoogleやYahoo!といった検索サービスなどが挙げられます。その中でも、Webブラウザ上で動作するアプリケーションをWebアプリと呼びます。WebアプリはWebサーバー上で稼働し、ユーザーはWebブラウザがあればすぐにサービスを体験できます(図5-7)。

図5-7 Webアプリを動作させるには?
図5-7 Webアプリを動作させるには?

Webアプリのメリット・デメリット

 メタバースをWebアプリとして開発するメリットは、何よりその手軽さにあります。アプリケーションをストアへ登録する必要がなく、Webサーバーへアプリケーションデータをアップロードするだけで手軽にコンテンツを公開できます。また、基本的にWebブラウザが動作するデバイスであればコンテンツを表示できるため、1つのアプリケーションの開発でさまざまなデバイスやOSへ対応させることができます(図5-8)。

 その一方で、Webアプリにはいまだ課題も残ります。Webブラウザは非開発者でも安全に使用できるようにさまざまなセキュリティ対策が施されており、ハードウェアをうまく制御できないことがあります。また、メモリや3D表現の制限など、Webブラウザ自体のさまざまな制限にも気をつけなければいけません。

図5-8 Webアプリのメリット
図5-8 Webアプリのメリット

5-5 メタバースで使用されるプログラミング言語

OSによって使用される言語

 プログラミング言語は使用するOSや環境によって変わります(図5-9)。スマホアプリを例に出すと、Androidでは、Kotlin、Java、C#などが候補に挙がります。iOSではSwift、C#などが候補に挙がります。

 C#はどちらのOSにも対応していますが、KotlinやSwiftなど言語によっては一部のOSのみに対応している場合もあります。

 このような言語を複数のOSに対応させるためには、OSに応じて違うプログラミング言語を使用するため開発工数が増えてしまいます。メタバースはさまざまなOSで動作できるように開発することが多いため、1つの言語で複数のOSに対応することが可能な言語が主流になっています(図5-9)。このように複数のOSに対応させることをマルチプラットフォームと呼びます。

図5-9 各OSで開発可能なプログラミング言語
図5-9 各OSで開発可能なプログラミング言語

スクリプト言語とネイティブ言語

 図5-10のREALITYとClusterの言語にはC#の他にKotlinとSwiftも使用されています。C#のみを使用すればスマホアプリは1つの言語で完結しますが、なぜ使用しているのでしょうか。

 KotlinとSwiftはスマホアプリ向けの言語です。この言語はC#とは違い、直接CPUから実行できるネイティブ言語と呼ばれています。逆にネイティブ言語ではないものはスクリプト言語と呼びます。ネイティブ言語は対応するOSが少ない代わりに、実行速度の面で有利だったりOSに搭載されている機能を使用できたりします。

 最近では、基本はスクリプト言語を使用しつつ一部をネイティブ言語で開発することで、開発コストの抑制と処理パフォーマンスを両立させる手法が増えてきていることも覚えておくとよいでしょう。

図5-10 メタバースアプリで使用されているプログラミング言語
図5-10 メタバースアプリで使用されているプログラミング言語

5-6 ゲームエンジンを利用した開発

メタバースに多く採用されるゲームエンジンを用いた開発

 現在のメタバースのほぼすべてがゲームエンジンを使用して開発されています。ゲームエンジンとは、ゲームを開発するために作られたソフトウェアです。

 ゲーム開発にはグラフィックス描画、入力、サウンド、物理シミュレーション、アセット管理、AIなど共通した要素が多く、それらを簡単に実装できるしくみが用意されています(図5-11)。ゲームエンジンを利用すると、簡単なプログラムを書くだけでゲームエンジンに用意された高度な開発システムを使用できます。一部処理はコードを記述しないノーコードでの実装や制作途中でも実行して動作確認することも可能です。結果、効率的に開発時間を短縮し高クオリティなコンテンツを提供しやすくなります

図5-11 ゲームエンジンで利用可能な要素
図5-11 ゲームエンジンで利用可能な要素

ゲームエンジンを選ぶ利点

 メタバースは3DCGの利用が当たり前になりつつあります。3DCGのモデルを作って自由に動かすことは昨今のゲーム開発と近い概念です。ゲームエンジンを使うとそのしくみを利用しながら効率的な開発が行えるため、メタバースの開発にゲームエンジンが採用されています。

 また、メタバースはさまざまな機器で動作させることが増えてきています。スマホアプリに限っても、iOSやAndroidなど、それぞれのOSに対応したプログラミングが必要です。そこで、各OSに対応するゲームエンジンを使って作成すれば、アルゴリズムを変更する手間を省けるため、効率的に複数端末に向けてアプリケーションを開発するマルチプラットフォーム化を行うことができるという利点もあります(図5-12)。

図5-12 二大ゲームエンジンの対応プラットフォーム一覧
図5-12 二大ゲームエンジンの対応プラットフォーム一覧

5-7 最も使用されているゲームエンジン

世界一使われているゲームエンジン

 UnityはアメリカのUnityTechnologies社が提供するゲームエンジンです。現在のメタバースの開発で最も使われているゲームエンジンです(図5-13)。ゲームアプリ、VR/AR、2Dゲームなど幅広いジャンルに対応し、ゲームエンジンに必要な基本的な機能が網羅されています。VRChatなど知名度の高いメタバースアプリはすべてUnityを利用して制作されています。

図5-13 ゲームエンジンのシェア率
図5-13 ゲームエンジンのシェア率

Unityのプログラミング方法

 UnityのプログラミングにはC#とVisual Scriptingの2種類があります(図5-14)。

 C#では従来通りプログラム用のファイルを作成し、テキストエディタからコードを記載していきます。Unity内で事前に用意された機能を利用しながらプログラミングを行うため、通常のC#の機能の他に、Unityの機能を簡単に使えるようになっています。例えば、図5-14のC#のプログラムにおいてStartという機能は最初から用意されており、Startという部分の中に記載したプログラムは起動時に自動で実行されます。

 2つ目の方法は、コードの代わりにブロック単位の命令文(ノード)を使うVisual Scriptingです。ボックス間をノードでつなげることでプログラミングしていきます。コードではなくノードをつないでプログラミングすることをビジュアルスクリプティングといいます。ビジュアルスクリプティングは比較的新しいプログラミング手法です。元々、ビジュアルスクリプティングは非プログラマーでもプログラムを行えるようにするために開発されたものなので、習得はC#に比べて比較的容易になっています。

 2つとも同じ機能を実装できますが、実装が速く実際に動いている状態を可視化しやすいのがVisual Scripting、幅広くパフォーマンスよく機能を自由に実装できるのはC#です。どちらにもメリットがあるため状況に応じて選ぶとよいでしょう

図5-14 C#とVisual Scriptingのプログラミング画面
図5-14 C#とVisual Scriptingのプログラミング画面
図解まるわかり メタバースのしくみ

Amazon  SEshop  その他

 
図解まるわかり メタバースのしくみ

著者:波多間俊之
発売日:2022年9月7日(水)
定価:1,848円(本体1,680円+税10%)

本書について

今の技術での“現実的なメタバース”と、技術や法整備などの観点から“今は現実的ではないが未来のメタバース”という予測も交え、見開きで1つのテーマを取り上げ、図解を交えて解説しています。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
翔泳社の本連載記事一覧

もっと読む

この記事の著者

渡部 拓也(ワタナベ タクヤ)

 翔泳社マーケティング課。MarkeZine、CodeZine、EnterpriseZine、Biz/Zine、ほかにて翔泳社の本の紹介記事や著者インタビュー、たまにそれ以外も執筆しています。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

波多間 俊之(ハダマ トシユキ)

株式会社ビーライズ 代表取締役社長3DCGクリエイターを経て、2012年にVR/ARの専門企業としてビーライズを設立し、さまざまなXRシステムの開発に従事。近年では大企業やスポーツ球団向けのメタバース開発などを積極的に展開。事業の軸をメタバースへと移行している。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/16423 2022/09/14 07:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング