TokyoFacebookTwitterHatenaPocketついに2017年1月から日本でも開発者向けに出荷が始まった、マイクロソフトのHoloLens。そこで実機がなくても体験できる、アプリ開発のチュートリアルです。※本記事は2016年7月9日に掲載した記事の翻訳を一部更新したものです。執筆時点の情報をベースにしており、最新ではない可能性があります。最近出た中でもっとも刺激的で画期的なテクノロジー製品の1つが、マイクロソフトのHoloLensです。現実空間にリアルタイムの3Dホログラムを映し出すもので、コンピューター界に無限の新たな可能性をもたらしています。3000米ドルもする開発キットとして売り出されたばかりのHoloLensを私も少しだけ試してみましたが、まだまだこれからが楽しみな製品です。HoloLens本体が不要で、無料で入手可能なツールがあるのです。プラットフォーム向けのUWPアプリがHoloLensでも動作します。2015とUnity3Dの2つです。SDKやエミュレーターとともに使用します。必要なものは以下のとおりです。2015と一緒にインストールしていない場合)HoloLensエミュレーターこれらのツールをインストールすれば、初のホログラム体験の準備は完了です。Studioで書かれたUWPアプリはHoloLensで動作しますが、HoloLensアプリならではの特徴は3Dホログラムです。3Dホログラムは、好みの3Dソフトウェアで制作、モデリングできますが、私のように3Dモデルの作り方が分からない人には、プロに制作してもらえるサービスもあります。Unityにも独自の3Dモデルアセットストアがあります。Unityについて少し紹介しますが、大きなトピックですので、始めるにあたってはSitePointにあるほかのUnity関連記事を参照してください。Unity3Dは3Dモデルのインポートや操作ができ、各オブジェクトのイベントやスクリプトを管理できます。照明効果や背景(「シーン」と呼ばれています)など、ユーザーに投影する空間のあらゆる側面を調整できます。Unityをマスターするのは容易ではありませんが、HoloLensアプリを制作するには避けて通れません。Unityでの3Dオブジェクトの制作Unityを使って基本形を制作します。Objectを開き、その中から好きな3Dオブジェクトを選択します。球を選択するとシーンの中に基本の球体が表示され、あとで細工したり、動きを加えたりして調整できます。ホログラム体験で3Dオブジェクトとインタラクトする主な方法は、オブジェクトにスクリプトをつけることです。Unityで新規スクリプトを作成します。Studioで次のスクリプトをダブルクリックすれば編集できます。}}Startメソッドは、アプリが起動したときに呼び出され、イベントや初期化コードを設定します。Updateは各フレームごとに1度呼び出され、衝突やRayCastによるヒットなどのユーザーインタラクションを検出するときに使います。Unityでオブジェクトにスクリプトをつけるには、オブジェクトをドラッグして、スクリプト上でドロップします。スクリプトのコードはメソッドが呼ばれると実行されます。起動時やユーザーが音声コマンドを使ったときなど、ホログラム体験の中でイベントが起きたときです。Studioにプロジェクトをインポートすれば、UnityがUWPアプリのソリューションを全部作成してくれます。Settingsメニューの中にある次のビルド設定を使用します。SDKを確認してください。ビルドが実行されると、Unityは選択したフォルダーにUWPアプリのソリューションを作成します。Studioで開けます。10デバイスでも動作します。HoloLensの場合は、アプリがHoloLensで利用できる機能を有効にするための設定が必要です。StudioのPackage.appxmanifestファイルで、TargetDeviceFamilyを「Windows.Holographic」にします。これで、HoloLensエミュレーターでソリューションを実行できるようになりました。HoloLensアプリへの最初のインプット形式で、ホログラムへの焦点の当て方を決定します。これが、ユーザーがHoloLensを通して見るときの視界の中心であり、実質的な「マウスカーソル」です。カーソルは好きなようにデザインでき、アプリや企業ロゴあるいは他の3D形状との関係で考えます。イメージ提供:MicrosoftHoloLensでは視線ベクトルを決定するのに、ユーザーの目ではなく頭の位置と向きを利用することに注意してください。HoloLensの中心から直進するレーザーポインターのようなものです。カーソルもまた3Dオブジェクトであり、カーソルらしく動くようコーディングしなければなりません。Unityで新規スクリプトを作成してモデルに加え、次のようなコードを使用します。}}コードで重要な部分はRayCastオブジェクトです。RayCastオブジェクトは先ほど説明した「レーザービーム」に当たり、ユーザーがオブジェクトを見ているかどうかを判断するテストになります。ヒットがあれば、カーソルを表示させて、その表面に「貼り付く」ようにします。視線によりインタラクトしたいオブジェクトに標的を定めたら、ジェスチャーを使って実際にインタラクトしてみます。一般的で簡単にできるのは「タップ」です。これは、マウスの左ボタンをクリックしてオブジェクトのアクションを実行するのに似ています。オブジェクトを3D空間で動かすときの「タップ&ホールド」のような、より複雑なジェスチャーもできます。Unityで別のスクリプトを作成し、次のようなコードを入れます。すると、スクリプトはプロジェクトのルートにリンクし、ジェスチャーはアプリの中でグローバルに3Dオブジェクトとインタラクトします。}}このスニペットで注目すべきメインオブジェクトはGestureRecognizerです。GestureRecognizerは、ユーザーのジェスチャーを認識する役割があります。タップのジャスチャーをするたびに、オブジェクトにOnSelectイベントを渡すためにTappedEventを登録します。Updateメソッドは、注視されているオブジェクトがあるかを常にチェックし、オブジェクトがタップされたらイベントに送信します。音声入力HoloLens(またはせめてエミュレーター)とのインタラクションの方法で気に入っているのは、音声を使うものです。it」ルールと同様に、HoloLensが認識できるフレーズを自分で作成できます。アプリがあるフレーズを認識するとイベントが発生し、そのフレーズに対応する動作をします。}}ここで難しい役割を担っているオブジェクトがKeywordRecognizerで、コンストラクターは配列としてキーワードを取得します。これがフレーズを認識するたび、OnPhraseRecognizedイベントが発生し、キーワードのアクションが実行されます。Object」と言うとOnDropイベントが視線の先にあるオブジェクトに送られます。主要なホログラム体験の最後は臨場感あふれるオーディオです。これはユーザーが入力する方法ではなく、ユーザーに対して体験中に起こっていることや注目すべきものを示す方法です。オーディオを追加するのは技術的には難しくありませんが、映像に適切で必要なオーディオを追加するのは困難です。SDKは、ユーザーがHoloLensを通して見ている場所に応じて音を配置する役割がありますが、音が多すぎては混乱を招き、少なすぎてはユーザーは次にすべきことが分からなくなってしまいます。次のスニペットでは、オブジェクトの衝撃音とオブジェクト(球体など)の回転音が追加されています。}}OnCollisionEnter、OnCollisionStay、OnCollisionExitというイベントはそれぞれ、オーディオクリップの開始、継続、終了のタイミングを決定します。上のスニペットは衝突イベントによって音を追加する方法の1つですが、体験中に流す音楽や進行中のイベントにより発生した音声クリップなどの環境音の追加もできます。オーディオを追加することでより本物に近い体験が実現でき、ユーザーを魅了できます。コード参照元:https://developer.microsoft.com/en-us/windows/holographic/holograms_101eHoloDeckの将来デスクトップやモバイル、企業環境向けの従来型のソフトウェアを制作する開発者にとって、HoloLensに対応したアプリや体験を制作するのは未知の世界への1歩です。3D空間の体験に関する考え方は、アプリ開発における従来の認識を刺激してくれます。HoloLens向けアプリの制作で良い点は、始めるのに3000USドルを支払ってHoloLensを購入する必要がないことです。ツールはすべて無料で、開発したいシナリオのほぼすべてがエミュレーターでまかなえ、あとで本物のデバイスでテストできます。10で動作するため、既存のUWPアプリが使え、それを拡張してHoloLensで動作させることで洗練されたホログラム体験を実現できます。デジタルの未来は明るく、早い段階で新しいものを取り入れておくことが消費者に対して先手を取ることにつながります。Klintフリーのソリューション構築家でPluralsight講師を務めています。MicrosoftのMVPを獲得し、Microsoftエコシステムに興味を持つポッドキャストのホストとしても活躍しています。今年で7年目を迎える350人以上の参加者を持つDDDメルボルンコミュニティーイベントの共同創設者でもあり、国内外のさまざまな技術イベントに出席しています。