Varjo Unity XR SDKを使ってパススルーを試す

こんにちは!
Synamonでエンジニアをしている黒岩(@kro96_xr)です。

プレスリリースにもあります通り、SynamonではVarjo XR-3を導入してよりハイエンドなXRコンテンツの開発にチャレンジしております。
f:id:krocks96:20210913171213j:plain

今回Unity向けSDKを触る機会がありましたのでSDK内のサンプルを動かすまでの手順を記事としてまとめておこうと思います。正確な情報が知りたい方は公式リファレンスも参照してくださいね。

なお、Varjo XR-3の紹介や体験記事については下記の記事にまとめられておりますのでよろしければご覧ください。

note.com

必要要件(2021/9/12時点)

大きいのはXR-3がなくてもVarjo Baseのシミュレータで簡易なテストは可能なことですね。私もリモートワーク中にシミュレータで実装をした後に出社して実機でテストというようなことをしています。
また、今回の記事で使用している私用PCのグラボはGTX1060です。実際にVarjoを動かすことはできないスペックですがシミュレータでサンプルを動かすくらいならできました。
機材費が高額となるため個人で実機を使用するのは難しいですがSDKを触ってみたいという方はぜひ試してみてください!

プロジェクトのセットアップ

SDKに同梱されているサンプルがHDRP対応なのでサンプルを動かすだけならHDRPテンプレートからプロジェクトを作成するのが楽かと思います。
また、URPだとPostProcessに対応していないようなのでリッチなコンテンツを作りたい場合はHDRP一択になるのかなと考えています。

When using URP, you need to modify the camera settings to be able to write into the alpha channel of the color buffer. For video pass-through to work, make sure the camera’s Post Processing and HDR settings are disabled.
引用元

それでは実際のプロジェクト作成に移りましょう!
* プロジェクトの作成
f:id:krocks96:20210912185809p:plain

  • パッケージマネージャーからSDKをインポート

    • Gitを使う場合
    • ローカルにダウンロードして使う場合
      • Window > Package Managerをウィンドウを開き、左上の+ボタンからAdd package from diskをクリック
      • ダウンロード済のSDKのpackage.jsonを選択してインポート
  • プロジェクト設定の変更

    • Edit > Project Setting > XR Plug-in ManagementからVarjoのチェックをONにしてください
      f:id:krocks96:20210912191132p:plain
  • レンダリング設定の変更

    • 前提知識
      • Varjoのディスプレイは中央のFocus Displayと周辺のContext Displayがあり、両目で計4枚のディスプレイがあります
      • Edit > Project Setting > XR Plug-in Management > Varjoから各種レンダリング設定を変更できます
    • パススルーを使用するための設定
      • OpaqueをFalseにする(標準がTrueなので変更必須)
        • Falseにすることでアルファブレンディングを行うようになります
          f:id:krocks96:20210912191317p:plain
      • (HDRP)Project Setting > Quality > HDRP > HDRenderPipelineAsset > Rendering > Color Buffer FormatをR16G16B16A16
        f:id:krocks96:20210912191743p:plain
      • (HDRP)カメラのBackgroud TypeをColorに、Background ColorをRGBA(0,0,0,0)
        f:id:krocks96:20210912192033p:plain
      • (URP)カメラのBackgroud TypeをSolid Colorに、Background ColorをRGBA(0,0,0,0)
        f:id:krocks96:20210912194317p:plain
      • (URP)カメラのRendering > Post ProcessingをFalseに
        f:id:krocks96:20210912193231p:plain
      • (URP)カメラのOutput > HDRをOFFに
        f:id:krocks96:20210912193415p:plain

これで設定はOKです。

サンプルシーンの読み込みとシミュレータでのテスト

  • サンプルシーンの読み込み
    Varjo XR Plugin>2.1.1>HDRP Samplesに各種サンプルシーンがあるのでそれを使用してください。
    今回はパススルーの設定をしましたのでMixedRealityを使用します。
    f:id:krocks96:20210912194739p:plain

  • Varjo Baseでのシミュレーション
    なにも接続せずにVarjo Baseを起動すると"No headset connected"となりToolsは選択できない状態ですが、左下の"Analitics window"だけは使用できます。 f:id:krocks96:20210912194918p:plain

Analitics windowをクリックすると新規ウィンドウが開きますので、左下のボタンをクリックしてメニューを表示>Simulateボタンを押してXR-3を選択してください。
f:id:krocks96:20210912195253p:plain

選択すると、Analitics windowが再起動しますので、これで準備完了です。
この状態でUnityでPlayを押すとAnalitcs windowにレンダリング結果が表示されます。
ピンクの部分がパススルーになる部分です。
f:id:krocks96:20210912195703p:plain

おわりに

本記事ではVarjo Unity XR SDKを使ってサンプルシーンを試してみました。
現状では中々触る機会がないような機材ですが、シミュレータもありますので興味ある方はぜひ触ってみてください!
マーカー検知やハンドトラッキングについても実機検証は出来ているので次回以降の記事で触れられたらと思います。

ここまで読んでくださりありがとうございました!

▼最後にお知らせです▼

お知らせ

Synamonは、Unity / C#エンジニア、テックリードを中心に新しい仲間を募集中です。
「XRが当たり前の世界をつくる」というミッションに共感したメンバーが、切磋琢磨しながら日々挑戦しています!カジュアル面談も実施中なので、ご興味ある方、お気軽にご連絡ください。
カジュアル面談でご来社いただきXR-3を体験することなども可能ですよ!

カジュアル面談はMeetyから▼
meety.net

エントリーはこちら▼
herp.careers

また、本テックブログやnote記事のお知らせは、Synamon公式Twitterでも発信もしています。
弊社の取り組みに興味を持っていただけたら、ぜひフォローお願いいたします!
twitter.com

PMBOK 7th 勉強会 第1回を開催して得られた学び

PMBOK 7th勉強会、始動。

こんにちは!
Synamonでエンジニアリングマネージャーをしている佐藤(@unsoluble_sugar)です!

先日、本テックブログでアナウンスしたとおり、社内のエンジニア有志メンバーが集まり「PMBOK 第7版」の勉強会を開催することになりました。

synamon.hatenablog.com

2021年8月の出版時点では日本語訳版が出ておらず、英語版を訳しながら読み進めていく形となったため、Section区切りで何回かに分けて継続開催していきます。  

PMBOKとは

PMBOK(Project Management Body of Knowledge)とは、PMI(Project Management Institute)がプロジェクトマネジメントに関するノウハウや手法を体系化してまとめた本です。

1996年の初版出版以来、4年に1度くらいの頻度で改訂が繰り返されており、2021年8月に第7版が出版されました。

本書は『The Standard for Project Management』と『PMBOK Guide』の2部で構成されています。今回は1発目ということで『The Standard for Project Management』の序章〜Section 1まで内容を翻訳。

本記事では概要の抜粋と、勉強会を開催してみて感じた課題について書き記していきます。

序章

1987年にホワイトペーパーが発表されてから、PMBOKは進化し続けてきました。改訂の間に世界的な変化が起きています。

  • 古い組織や技術が消えていく一方で、新しい組織が生まれ、技術も進化している
  • 過去10年だけでもあらゆる製品、サービス、ソリューションへのソフトウェア導入が急激に進んでいる
  • 様々な変化は起きているものの、基本的な概念や構造は変わっていない
    • 一人で考えるよりも集団で考えたほうが包括的な解決策が得られる
    • 組織はプロジェクトという手段を使い結果やアウトプットを提供する

PMI関係者によるフィードバック

PMIは世界中のステークホルダーのフィードバックを取り入れ、PMBOKをより現実的なものにしています。世界各地で開催されたワークショップのフィードバックをまとめると、大きく4つのポイントが強調されました。

① 信頼性と関連性の維持・強化
② 読みやすさ、使いやすさの向上させる一方で、新しいコンテンツを詰め込みすぎないこと
③ ステークホルダーのニーズを察知し、実践的な補足コンテンツを提供する
④ 過去の版の内容には継続的な価値があり、その価値を否定することなくシフトすることでより強化される

これらに適応するため、PMBOKはプロセスベースからプリンシプル(原則)ベースに変わり、成果物よりも価値をもたらす結果に焦点をあてる形になってきました。

  • 予測型から適応型アプローチへ
  • 組織の戦略、価値、ビジネス目標の推進に結びつける「バリューチェーン(価値連鎖)」に焦点を当てる視点に変わった
  • アウトプットよりもアウトカム重視

第6版からの追加項目

第6版と比較すると全体の構成が再編されていますが、新たに追加された項目としては以下のとおりです。

  • The Standard for Project Management
    • 価値提供システム
    • プロジェクトマネジメント原則
  • PMBOK Guide
    • チーム、開発アプローチとライフサイクル、プロジェクトワーク、デリバリー、不確実性
    • テーラリング
    • モデル、メソッド、成果物
  • PMIstandards+

PMIstandards+は、プロジェクトマネジメントの継続的な進化をサポートするデジタルプラットフォームです。

『The Standard for Project Management』と『PMBOK Guide』を補完する情報も見れるということで、本書と合わせてチェックしてみるのが良さそうです。

Section1

『The Standard for Project Management』は、プロジェクトマネジメントを理解し、どのようにして意図した成果を実現するのかという基礎を提供するものです。

本記事では、主な用語と解説のみピックアップします。

主な用語と解説

アウトカム

プロセスやプロジェクトの最終的な成果、結果。アウトプットや成果物も含まれるが、より広い意味でプロジェクトがもたらす利益や価値に焦点を当てている。

ポートフォリオ

戦略的目標を達成するために、グループとして管理されるプロジェクト、プログラム、およびオペレーション。

プロダクト

生産され、定量化可能な成果物。それ自体が最終的に提供されるものである場合や、成果物を構成するものの一部である場合もある。

プログラム

関連プロジェクト、補助的なプログラム、プログラム活動の集合体。個別に管理した場合には得られない利益を得るために、バランスを保って管理される。

プロジェクト

独自のプロダクト、サービス、または結果を生み出すために行われる一時的な試み。プロジェクト作業そのもの、またはプロジェクト作業フェーズの開始と終了を示す。単独で行われることもあれば、プログラムやポートフォリオの一部として行われることもある。

プロジェクトマネジメント

プロジェクトの要件を満たすために、知識、スキル、ツール、およびテクニックをプロジェクト活動に適用すること。意図した成果を実現するためにプロジェクト作業を指導すること。プロジェクトチームは、幅広いアプローチ(予測型、ハイブリッド型、適応型など)を用いて成果を達成することができる。

プロジェクトマネージャー

プロジェクト目標の達成に責任を持つプロジェクトチームを率いるために実行組織から任命された人物。成果を達成するためにプロジェクトチームの作業を促進し、意図した成果を実現するためのプロセスを管理するなど、さまざまな役割を果たす。

プロジェクトチーム

プロジェクトの目的を達成するために、プロジェクトの作業を行う個人の集合体。

価値提供のためのシステム

組織を構築、維持、発展させることを目的とした戦略的な事業活動の集合体。ポートフォリオ、プログラム、プロジェクト、プロダクト、オペレーションのすべてが、組織の価値提供システムの一部といえる。

価値

絶対的な価値、重要性、または有用性のこと。ステークホルダーによって価値の捉え方は異なる。顧客は製品の特定の機能や特徴を利用できることを価値と定義することができる。組織は利益からその利益を達成するためのコストを差し引いたものなど、財務的な指標で判断される事業価値に焦点を当てることができる。社会的価値とは、人々の集団、地域社会、環境への貢献を含むものである。

その他

『The Standard for Project Management』で使用されるその他の用語については Lexicon of Terms | Project Management Institute を参照。

勉強会では、ポートフォリオ、プログラム、プロジェクトの関係性が曖昧なメンバーも居たため、理解を補足するための参考記事を貼っておきます。

xtech.nikkei.com

Section2でもこのあたりの話が出てきますが、後述するPMBOK第6版の図解解説本にもわかりやすい説明が載っていたので、そちらも参考になるかと思います。

勉強会を実施してみて感じた課題

今回の勉強会は参加者5名、1時間枠で開催。第1回の実施を終えた上で、以下のような課題があがりました。

課題

  • Section1まで読んでおく前提だったが、手を付けられていないメンバーも居た
  • 用語の解釈が難しい場合がある
  • とりあえずやってみる精神で始めたものの、良い感じの進め方ができなかった
    • 全文を読み回ししていると時間が足りない
    • その場で翻訳するのはしんどい
    • 英語スキルの度合いによって翻訳に時間がかかる
    • 翻訳に注力してしまい肝心の内容について議論する時間が薄かった
    • 隔週開催ではペース配分のバラツキや継続性が失われる懸念あり

対策

  • 事前に次Section分を読んでおくこと
  • 各自で内容を掻い摘んで要約してくる
  • 勉強会では要約内容を示し合わせ、議論にフォーカスする
  • 隔週開催ではなく毎週開催に
  • 勉強会(読書会)の進め方について知見収集する

実施方法にも改善の余地あり

勉強会の実施方法も少し考えた方が良さそうだと感じました。

今回はoViceで通話しながら、Scrapboxを画面共有で映しつつ概要を箇条書きしていましたが、各自の要約内容を照らし合わせるのであれば、miroのボードを使う形式の方が適しているかもしれません。

miro.com

以後の勉強会では、より最適な手法を模索していければと思います。

やっていくぞ

今回は『The Standard for Project Management』の序章〜Section 1までということで、第6版から第7版への変更点概要や、本書で使われる用語の定義が確認できた程度でした。

とはいえ個人的にPM経験はあるものの、これまでPMBOKは未履修だったため、本書に触れる機会が得られて良かったです。

第7版は引き続き読むとして、第6版の内容を補完するため日本語解説書をポチってみました。土台を固めて挑んでいく構えです(キリッ

本テックブログやnote記事のお知らせは、Synamon公式Twitterでも発信もしています。
弊社の取り組みに興味を持っていただけたら、ぜひフォローお願いいたします!

twitter.com

Meetyで僕と本のお話をすることもできるので、本書に関する情報交換をしたい方は、お気軽にお声がけください~ meety.net

次回はSection2以後の様子をお届け予定です!
お楽しみに!

追記:Section2の記事出ました!

synamon.hatenablog.com

「エンジニアがどうユーザーと関わるか」というテーマでLT登壇しました

f:id:kkkkkkssssss:20210831185840p:plain

こんにちは。エンジニアの吉田です。

先日Startup Issue Gym第二回「クライアントサイドのIssue」で「エンジニアとユーザー中心設計」というテーマでLT登壇したので、登壇した内容と感想を書こうと思います。

動画のアーカイブはこちらになります。

www.youtube.com

Startup Issue Gymとは?

Startup Issue Gymは、ビビッドガーデンカミナシSynamonのスタートアップ3社で立ち上げをしたイベントグループです。急成長中のスタートアップが集まって、「各社が解決したあるいはぶつかっている Issue(課題) を共有し、一緒に解決方法を考える場をつくろう」というコンセプトでイベント開催を行っています。

Startup Issue Gymの特徴は、SolutionではなくIssueをテーマにしている点です。

スタートアップが集まるイベントでは何かの問題を解決した話(Solution)がテーマになることが多いですが、Startup Issue Gymのイベントでは起きたあるいは今実際に起きているIssueに焦点を当てることで、Startupでの仕事の泥臭さなど、普段表にでてくることが少ない生の話がきけるのが特徴です。

定期的にイベントを行っていますので、是非ウォッチしてもらえればなと思います。

(↓のcompassページを開き -> 「メンバー」タブ -> 「メンバーになる」ボタンを押してもらうとイベントの通知などが受け取れます。)

startup-issue-gym.connpass.com

登壇内容「エンジニアがどうユーザーと関わるか」

今回自分は「エンジニアがどうユーザーと関わるか」というIssueをテーマで発表しました。
ここではその内容を抜粋して紹介したいと思います。



f:id:kkkkkkssssss:20210831163932p:plain

Startupで働いているとユーザー中心設計で良いプロダクトをつくろうといったことをよく耳にします。

でも「実際エンジニアはどうユーザーと関わったらいいのか」についてはあまり語られることがないなと思い、それをテーマに選びました。

f:id:kkkkkkssssss:20210831163941p:plain

選んだテーマについて自分も明確な答えを持っているわけではないのですが、ディスカッションの種として「なぜエンジニアがユーザーと関わるのか」についての自分の考えと、Synamonでの仕事の中で「エンジニアの自分がユーザーと関わった実体験の共有」の2つのトピックを話しました。(会社紹介はここでは省略します)

f:id:kkkkkkssssss:20210831163944p:plain

「なぜエンジニアがユーザーと関わるのか」

もし、エンジニアをプログラムを書くだけの人ととらえ、ユーザーとのやりとりをCS(カスタマーサクセス)や営業のメンバーに任せてしまうと、エンジニアとユーザーの距離が遠くなります。

また、CSや営業、エンジニアといった職種を元に各々がメインとする業務だけを元に役割を決めると、このようなユーザーとエンジニアの距離が遠い状態に陥りやすいです。

f:id:kkkkkkssssss:20210831163948p:plain

開発するプロダクトの要件がある程度明確に決まっている場合は、ユーザーとエンジニアの距離が遠くても問題ありません。しかし、Startupはまだ世に前例の少ないプロダクトをつくることが多いためこれには当てはまりません。むしろ要件を決めるところ、言い換えれば「そもそも何を開発すべきか見極めること」、こそがStartupでは重要です。

そこを見極めないまま開発を進めてしまうと、以下のような問題が起きます。

  • つくったはいいものの誰にも使われないプロダクトができてしまう
  • 何を解決すべきかの状況や背景を上手く理解できていないので、良いUXがつくれない
  • どの機能がプロダクトのコアで、どの機能が拡張が予想されるものかわからないので、保守性や拡張性に乏しいコードが増える

f:id:kkkkkkssssss:20210831163951p:plain

「そもそも何を開発すべきか見極める」にはユーザーと密な連携が必要で、エンジニアとユーザーの距離を近づけるとそれが効率よく行われます。

つまり、次のような因果関係があることが、「なぜエンジニアがユーザーと関わるのか」に対する自分の考えです。

エンジニアがユーザーと関わる --> それによってユーザーとのコミュニケーションが促進される --> 「そもそも何を開発すべきかの見極め」が進む --> (UX/保守性などあらゆる面において)質の高いプロダクトができる

f:id:kkkkkkssssss:20210831163955p:plain

「エンジニアの自分がユーザーと関わった実体験の共有」

こちらについてはこの記事では割愛させていただきますが、ご興味あれば、動画のアーカイブやスライドをご覧ください。

登壇してみて

Startupでは日々様々な課題が起きてますが、他のStartupでも似たような課題を経験されていることは多いと思います。そのため、Startup同士で課題に対する知見を共有・ディスカッションし合う場があることはとても有意義だなと感じました。

また他の方の登壇をきいていると、外からだと万事順調そうに見える成長中のStartupでも、色々と苦労しながら成長しているんだなということが感じ取れ、自分たちも頑張ろうというエネルギーをもらうことができました。

宣伝

Synamonではエンジニアを募集中です。

少しでもご興味ある方は、是非以下のページを覗いてみてください!

募集職種がわかる求人ページ:

herp.careers

メンバーの雰囲気がよくわかる公式note:

note.synamon.jp

気軽に指定メンバーにカジュアル面談が申し込めるmeety:

meety.net

PMBOK 7th 勉強会始めます!

こんにちは、Synamon のエンジニアリングマネージャーの渡辺(@mochi_neko_7)です。

今回は最近社内で始めた PMBOK(Project Management Body Of Knowledge)の勉強会を始めた話と、関連した発信のご紹介をします。

PMBOK とは?

PMBOK はプロジェクトマネジメントの知識体系をまとめたもので、世界標準として作られています。

詳細は本題ではないので、こちらの記事などをご覧ください。

products.sint.co.jp

きっかけ

少し前に Twitter でこちらが話題になっていました。

note.com

プロジェクトマネジメントの総本山のあの PMBOK が、6th → 7th で内容を大幅に更新アジャイルな考え方を取り入れているとのこと!

これはどんな内容なのか気になりますし、その印象からこれまで PMBOK を避けていたのでこの機会にしっかり勉強してみようとなりました。

ですが残念なことに日本語翻訳版は11月発売。

でも早く読みたい、待てないということで、英語版で読むことに。

社内で声掛けしてみた

自分で読むのも全然良いのですが、最近の開発ではよりプロジェクト的な動きが強くなっている傾向があったので、せっかくなら有志を集めて何人かで読もうと思いつきました。

さらに日本語版も出ていないのでまだアウトプットも少なめ、するとテックブログで勉強会の内容を発信するのも良さそうです。

読みたい自分、社内でのナレッジ、社外へのアウトプットと一石三鳥ですね。

ということで社内で声掛けした結果、5人のエンジニアが集まって勉強会をすることになりました。

集まった顔ぶれ

参加者のプロジェクトマネジメントの習得度は

  • 最近勉強しはじめている
  • PM 経験少しあるが、体系的に勉強したことない
  • バリバリに PM 経験あるが、PMBOK は勉強したことない

のようにばらばらです。

理想的には従来の PMBOK 経験者がいると比較もできるのですが、いないので仕方ありません。

新しくなった第7版で一からプロジェクトマネジメントを勉強するつもりでやっていきます!

今後

今回は「勉強会をやります!」の宣言だけですが、今後勉強会の進行とともに学んだプロジェクトマネジメントの内容を、テックブログの記事として定期的にアウトプットしていこうと思います!

気になる方は自分Synamon 公式 Twitterでの発信をお見逃しなく。

最後に

Synamon ではこういった勉強会がメンバーから自発的に発生する文化があります。

もしそういう文化が好ましいという方、技術だけでなくプロジェクトマネジメントにも関心のあるエンジニアの方がいましたら、ぜひカジュアル面談でお話してみませんか?

meety.net

募集要件を詳しく見たい方、直接エントリーしたい方はこちら。

herp.careers

それでは次回をお楽しみに!

Startup Issue Gym #2 開催しますよー!

こんにちは、Synamon のエンジニアリングマネージャーの渡辺(@mochi_neko_7)です。

4月頃に Synamon を含めた3社のスタートアップで開催した「Startup Issue Gym」

synamon.hatenablog.com

ですがこれは単発のイベントではなく、あくまでイベントグループでイベントを定期開催しますよと宣言しておりました。

今回はその続報になります。

第2回やります

というわけで 2021/8/25(水)に第2回を開催します!!!

f:id:mochinekos:20210823193909p:plain

startup-issue-gym.connpass.com

今回のイベントテーマは「クライアントサイド開発の Issue」。

クライアントサイドというとちょっと広い定義で、Web フロントエンド、ネイティブ iOS / Android、Unity などなどクライアント(ユーザー)が直接触れる側の技術になります。

各社使用している技術は様々ではありますが、前回同様現場でのリアルな Issue の話からクライアントサイド特有の学びを持ち帰っていただけたらと思います。

ビビッドガーデンさん、カミナシさん、Synamon と事業領域が異なるスタートアップ同士でどんな Issue が語られるんでしょうか?

Synamon からの登壇は?

Synamon は XR(VR / AR / MR)の開発をしており、クライアントサイドは主に Unity を使用しています。

ですが今回の登壇内容は Unity には寄せず、クライアントサイド全般で学びのあるテーマを選んでいます。

登壇テーマは「エンジニアとユーザー中心設計」。

XR 技術はまだまだ一般には浸透しておらず、XR を活用したい企業でも XR がどんなものなのか詳しくは知らない人がほとんどであるのが現状です。(もちろん中には詳しい方もいます)

そのためふわっとした理解の中から企業が本当に実現したいことを一緒に探っていく必要があります。

言われたままに実装しても価値提供にはつながらず、顧客と対話しながらやりたいことを咀嚼し、我々の XR のノウハウを活かしながら最適な実現方法、ソリューションを提案していきながら、顧客への価値提供をしていくことになります。

そのプロセスの中では、営業から並走している BizDev、UX の知見のあるデザイナーだけではなく、エンジニアも貢献できる・関わるメリットががあります。

それを現場で実践しているエンジニアの方に、ユーザー中心設計も参照しながら語ってもらいます。

余談ですが

今回はイベントページの作成から当日の配信、司会など運営の中心を Synamon が引き受けています。

慣れない部分も多いですが、この経験からイベント主催のノウハウを溜めていきたい!

最後に

繰り返しになりますが、イベントは「2021/8/25(水)」開催です。

気になるテーマやキーワードのある方はぜひご参加ください↓

startup-issue-gym.connpass.com

また、後日 YouTube Live のアーカイブも配信予定ですので、予定の合わない方はそちらもチェックしてみてください。

それでは当日お会いしましょう!

Quest2上で動作するパススルーモードを試す

f:id:fb8r5jymw6fd:20210815173323j:plain

はじめに

エンジニアの松原です。先日社内でVarjo XR-3が導入され、今後はハイエンドなXRコンテンツが作っていけそうです。最近はAR/MR関連も業界で活発化しているのを見かけており、さらに楽しみが増えました。

それに関連して、先日Oculus Integration SDKがアップグレードされたのですが、ついに実験的機能としてパススルーモードが追加されました!

早速試してみたのですが、ビルドの際に気を付ける箇所があったので、備忘録的に記事としてまとめました。

Oculus Integration v31について

2021/08/12にリリースされたOculus Integration SDK v31には大きな変更がありました。

  • Passthrough APIが実験的機能に追加された
  • (Quest/Quest2のOSに)Vulkan検証レイヤが利用できるようになり、今後のアプリケーション開発にVulkanでの開発が推奨される
  • Unity上で動作するOVRPluginがOpenXR backendがデフォルトで有効になったこと

OVRPluginのバックエンドがOpenXRベースのものに変わったものも含め、以下にUnityでのQuest2向けのパススルーモードを有効にする設定までの手順をまとめてみました。

XR Plug-in ManagementとOculus XR Pluginをインストール

OpenXR backendを利用する場合、XR Plug-in ManagementOculus XR PluginをPackage Managerに追加する必要があります。

Unity2019~2021ではProject SettingsのGUIから追加することができます。一番下の項目にXR Plugin Managementの項目から、下図のボタンを押します。

f:id:fb8r5jymw6fd:20210814150634p:plain
XR Plugin Managementの項目から追加できる

しばらく待つと自動的にXR Plug-in Managementが利用できるようになります。続けてOculus XR Pluginも追加します。下図のようにXR Plugin ManagementのPlug-in Providersのリストのうち、Oculusにチェックを入れます。チェックを入れたら自動的にプラグインが追加されます。

f:id:fb8r5jymw6fd:20210814151736p:plain
Oculus XR PluginのチェックボックスをONに

Oculus Integrationをインストール

これらのパッケージが追加できたら、Oculus Integrationの最新版のv31をPackage Managerからアセットをダウンロード、インポートします。

f:id:fb8r5jymw6fd:20210814145634p:plain
Oculus Integrationのインポート

Unity2019をお使いの場合、バックエンドがOpenXRベースのものになっていないので、メニューバーの Oculus > Tools > OpenXR > Switch to OVRPlugin with OpenXR backend を選択し忘れないよう注意してください。 (Unity2020や2021ではデフォルトでOVRPluginがOpenXR backendを使うように変更されましたので、そのままで大丈夫です。)

f:id:fb8r5jymw6fd:20210814153303p:plain
Switch to OVRPlugin with OpenXR backend を選択する

ビルド設定を変更する

Project SettingsのPlayerのOther Settingsの設定を変更していきます。

Color SpaceLinear に変更します。

f:id:fb8r5jymw6fd:20210814153642p:plain
Color SpaceをLinearに変更

Graphics APIはOpenGLES3、VulkanいずれかでもPassthrough APIは動作するようですが、v31ではVulkan APIの利用が推奨されているようなので、せっかくなので Auto Graphics API のチェックを外し、Vulkan を利用するように変更します。

f:id:fb8r5jymw6fd:20210814154534p:plain
Vulkan APIを使うように変更

v31のパッケージではPassthrough APIではARM64ビルドでないと動作しないようで、そのためには Scripting BackendIL2CPP に変更したうえ、ARMv7 のチェックを外し、 ARM64 の箇所にチェックを入れます。

f:id:fb8r5jymw6fd:20210814153836p:plain
IL2CPPに変更、Target ArchitectureをARM64に変更

シーン中にあるOVRCameraRigのパススルーモードを有効にする

パススルーモードを利用するにはUnityのScene中にあるOVRCameraRigの設定を変更する必要があります。今回は Assets/Oculus/SampleFramework/Usage/Passthrough/Scenes 配下にある AugmentedObjects のシーンをサンプルとして利用します。

f:id:fb8r5jymw6fd:20210814155006p:plain
AugmentedObjectのシーンを開く

Hierarchyにある OVRCameraRig を選択します。

f:id:fb8r5jymw6fd:20210814155145p:plain
OVRCameraRigを選択

インスペクタにある OVR Manager (Script)Experiment Features EnabledPassthrough Capability Enabled にチェックを入れ、Enable Paththrough にもチェックを入れます。

f:id:fb8r5jymw6fd:20210814155302p:plain
Passthrough関連の項目にチェックを入れる

他、サンプルからでなく、一から自分のアプリをパススルーにする方法に関しては追加で以下の記事を参考にしてください。 https://developer.oculus.com/experimental/passthrough-api/

設定後、シーンを保存アプリをビルドして実機に転送します。

ADBコマンドからQuest2実機側のパススルーモードを有効にする

2021/08/13日時点だと、パススルーモードの有効/無効設定はADBコマンドからしか変更できないようです。

PCとQuest2をUSBケーブルを使って接続した状態で、ADBコマンドが利用できるPC環境で、以下のコマンドを実行します。

adb shell setprop debug.oculus.experimentalEnabled 1

※Quest2を再起動するたびに上記コマンドが必要になるようです(パススルーモードが無効になるようにリセットがかかるみたいです)。

実行画面例

f:id:fb8r5jymw6fd:20210814160352p:plain
実機での実行画面
※Quest2の本体のセキュリティで静止画や動画キャプチャをすると真っ暗になるようなので、実機のレンズにスマホを押し当てて撮影しています。

試した所感など

パススルーモードは現在実験的機能で、まだ本機能として実装されるか不明ですが、Quest2があればAR/MRコンテンツが体験できるようになりそうで嬉しいです。

また、Graphics API が 本格的にVulkanに移行されることも期待され、パフォーマンスの向上が期待でき、今後の開発が楽しみです!

お知らせ

Synamonでは現在Unityエンジニアやサーバーサイドの採用を積極的に行っております!Unityの開発経験がある方をお待ちしております!

ご自身のキャリアプランに合わせて役職を選べます!詳しくは以下の求人を見ていただけると嬉しいです!

herp.careers

イベント立ち上げ&LT登壇してきました!

こんにちは。

株式会社Synamonでエンジニアリングマネージャーをしてます、渡辺匡城(@mochi_neko_7)です。

またしばらく記事投稿が空いてしましましたが、気を取り直してまた定期的に記事を書いていきたいと思います!

先日Synamonと、同じスタートアップのビビッドガーデンさん、カミナシさんと共同でイベントグループの立ち上げをしました。

今回はそのイベントグループ Startup Issue Gym の簡単な紹介と、第一回イベントで私が登壇したLTの内容についてお話します。

f:id:mochinekos:20210524202803p:plain

Startup Issue Gym

Startup Issue Gymは、ビビッドガーデン、カミナシ、そしてSynamonのスタートアップ3社で立ち上げをしたイベントグループです。

このグループでは急成長しているスタートアップが集まって Issue(課題) を共有し、一緒に解決方法を考える場をつくっていきます。 苦労した Issue を共有して学びを深めるもよし、ちょっと先のフェーズのスタートアップの Issue を参考にするもよし、スタートアップでは働いていないけどどんな Issue があるのかリアルな話を聞きに来るもよしです。

スタートアップがどんなやり方で開発をしているのか知りたい方や今スタートアップで Issue を抱えて困っている方、Issue は乗り越えたので発信することで自分たちの学びを深めたいという方にも集まっていただけるといいなと思っております。 ちょっと覗いてみるとスタートアップの現場のリアルな声が聞けるはずです。

startup-issue-gym.connpass.com

イベントは単発ではなく今後も定期開催する予定なので、気になる方はぜひ「メンバーになる」を押してください!

記念すべき初回イベントのテーマは「開発プロセスの Issue」ということで、立ち上げた3社が自己紹介も兼ねてLTとQ&Aを行いました。 おかげさまで予定していた定員も埋まり、増枠させていただきました。

startup-issue-gym.connpass.com

Youtube Live のアーカイブもあるのでよければご覧ください。

www.youtube.com

実は当初はただ Issue を共有するだけではなく、参加者の方と一緒にその Issue にどう立ち向かうかディスカッションをするイベントにしようとしていたのですが、ディスカッションとなるとなかなか参加のハードルも高いため初回はQ&Aの形式になりました。 ここは次回以降のイベントで挑戦してみたいですね。

ここからは私が実際にLTでお話した内容の要約になります。

開発プロセスの Issue

初回イベント「開発プロセスの Issue」のSynamonのLTとしては私がお話をさせていただきました。

www.slideshare.net

大きなテーマとしては2つの Issue を紹介しました。

  • ここ一年で一番大きかった Issue
    • スクラム導入
  • 現在の開発プロセスの Issue
    • プロダクト開発と案件開発の両立

これらの Issue に関して簡単に説明します。

ここ一年で一番大きかった Issue ~ スクラム導入 ~

Synamonでは2020年10月頃からスクラムを導入しています。

スクラム導入の動機・目的としては主に以下のようなものでした。

f:id:mochinekos:20210524200958j:plain
スクラム導入の動機

プロダクトの開発初期の頃は比較的少人数で、新しい機能などをどんどん開発する必要があるため個々の開発力が光ります。 しかしプロダクトが大きくなるにつれ、ソースコードは複雑になり組織としても大きくなるためチームとして機能する必要が出てきました。 そうなってくるとこれまでの開発プロセスでは難しい場面も出てきます。

また、VRという技術自体の市場がそもそもなかったこともあり、顧客目線が持ちづらいという課題も長くありました。 これはビジネス的にも大きな Issue の一つであり、それに対してはビジネスメンバーだけでなく開発メンバーも向き合うべきと考えています。

スクラム導入の経緯に関しては別の記事でしっかりお話したいと思います。

こういった経緯も踏まえつつ、導入して約半年後の2021年4月頃での実感としては主に以下のようなものが挙げられます。

f:id:mochinekos:20210524201130j:plain
スクラム導入の効果

スクラムとしてはおそらくまだまだ向上の余地はありますし、現在でも課題はたくさんあります。 それでも導入前よりは明らかに良くなったというメンバーの声ももらっています。 開発におけるプロセスのあり方、顧客にとっての価値とは何か、スクラムをもっとうまくやるためにはどうすればいいのかなど、開発メンバーが自発的に考えるシーンを多く見るようになってきました。

現在の開発プロセスの Issue ~ プロダクト開発と案件開発の両立 ~

現在の Issue ももちろんいくつもあるのですが、ここではプロダクト開発と案件開発の両立を中心にお話しました。

弊社プロダクトの「NEUTRANS」は、ビジネスでのコラボレーションに必要な基本的な機能を備えたプロダクトの側面(ベース)と、 個々の企業様の実現したい体験に合わせたカスタマイズをする案件の側面(ユースケース)を持っています。

f:id:mochinekos:20210524201227j:plain
NEUTRANSの構成

これらは独立はしておらず、ベースの拡張によってユースケースの表現が広がり、ユースケースの要望からベースが進化する関係にあります。 このサイクルが循環することによって、各ユースケースのナレッジが蓄積し、ユースケースを横断した機能や新しいユースケースの創出なども行われます。

こういった狙いもありますが、一方で Issue も様々あります。

f:id:mochinekos:20210524201327j:plain
NEUTRANSのIssue

そもそも性質の異なるプロダクトと案件が混ざるため、開発要件がかなりカオスになってしまっています。 かといって簡単に分けてしまうのも、現在の規模の組織のマネジメントとしてはあまり取りたくない手段です。

また、スクラム導入以前からの組織的な課題も残っています。

こういった状況の中でも、常によりよい形を模索するため小さく実験を繰り返し、やってみる→ふりかえるを繰り返して組織として成長している最中になります。

f:id:mochinekos:20210524201540j:plain
スタートアップの面白さ

こういったところに面白味を感じていただけるのであれば、成長期のスタートアップはあなたの成長の場としては良いのではないでしょうか。

おわりに

今回のイベントでは運営者としても登壇者としても関わらせてもらいました。

自分たちの Issue を言語化することで学びも深まりますし、他のスタートアップの Issue の話も共感できる話ばかりでした。

こういった場を通して、スタートアップ同士の交流が活発になったり、スタートアップに興味を持ってもらえる人が少しでも増えたらなと思います。

積極採用中です

Synamonではエンジニア各ポジション積極採用中です。

実は私は最近はエンジニア採用に注力していまして、スカウトからカジュアル面談などもやっております。

ちょっと話を聞いてみたいという方も歓迎していますので、ぜひお気軽にお声かけください!

www.wantedly.com

open.talentio.com