開発基盤センターの伊藤です。XRフレームワークの開発に取り組んでいます。

会津若松市在住でたまに喜多方市に遊びに行きます。喜多方市というと喜多方ラーメンや日本酒で有名ですが、お蕎麦も有名でつい最近家族と「山都そば」を食べてきました。独特の歯応えがあってとても美味しかったです。ぜひ喜多方にいらした際は山都そばを食べてみてください。

元祖 手打生そば やまびこ

本題に入ります。2021年4月からXRチームに参加し、Unityエンジニアを目指して日々勉強中です。昨今XRが盛り上がっているのでこれからUnityを始める人も増えるのでは?と思い、私がUnityエンジニアになるためにやってきたことを紹介したいと思います。私だけだと物足りないと思い、同じXRチームの同僚に話しを聞いたので私と異なる部分を中心に紹介します。

私の場合はJavaなど他の言語でシステム開発の経験があるので、基本的なプログラミングスキルがある前提でのUnityへの取り組み方紹介になります。

私の場合

日々、XRに触れる

会津若松に引っ越したら快適だった!に書いてますが、私はアウトドア好きでXRやVRに全く触れてこなかったのでUnityの勉強を始める前にXRやVRの情報収集から始めています。

Unityを使うとどんな可能性があるのか、競合他社はどんなサービスを作っているのか、継続的にウォッチしていると少しずつXRやUnityの世界が自分の中で当たり前の存在になってきます。そして楽しそうなサービスに触れると仲間意識なのかモチベーションUPに繋がります。

日々の情報収集はRSSを使っていて次のRSSフィードをチェックしています。

さらに次のようなカンファレンスに参加して最新動向をチェックしています。カンファレンスへの参加費は教育投資ということで会社負担です。

何でも相談できる人を作る

次にやったことは何でも相談できる人を作ることです。元々JavaやWebは得意でしたがUnityは畑違いで効率的な学び方やお勧め教材も分からない状態です。ネットで探したりしますがやっぱり近くの有識者に相談して自分にあった学習教材を見つけ、どうしても解決できないところを相談するのが技術習得への一番の近道だと思います。私のこれまでの経験でしかありませんが、すごく出来る人ほど相談されるのが好きな方が多いように思います。私はすごく出来る人ではありませんが、やる気満々な人から相談されると一生懸命応えたくなります。

XRチームには開発や研究でUnityをバリバリ使ってきた人達がいたので、勝手に私の中でみんなメンターと思ってました。お勧めの教材や勉強方法を聞いて取り組んでみて動いたものを見せたり、分からないとこを聞いたりしながらUnityの基礎知識を習得していきました。実際に学習した教材は下記になります。(できるだけ新しい版へのリンクとしています)

「Unityに慣れる」は今思うと1冊やれば十分に思います。【スタジオしまづ】さんのハンズオンをやると、Unityの機能を活用して3Dゲームが出来上がっていく過程を体験できUnityを学べたという実感が湧くのでとてもお勧めです。

作りながら学ぶ

作りながら学べる人はとても強いエンジニアだと思います。作る過程でぶつかった問題を解決し続けるので、知らず知らずのうちに大量に学んでいて学習スピードが圧倒的に速いです。私はどんどん突破していける人ではないのでネットや書籍等で基礎知識をある程度習得してから、作りながら学ぶに切り替えます。

Unityの基礎知識を身に着けた後、Unityを使って1週間でゲームを作るイベント「Unity1週間ゲームジャム」にチャレンジしました。

オトンから逃げ回れ!

当時、娘が逃走中という番組が好きだったので逃げ回るゲームを作りました。プレイしてもらえば分かりますがとても単純なゲームです。それでもUnity初心者なので考えないといけないことがたくさんあり勉強になりました。

  • プレイヤーの移動方法
  • カメラでプレイヤー視点の実現方法
  • 鬼のランダムな出現方法
  • 鬼のランダムな徘徊方法
  • 鬼がプレイヤーを見つける方法
  • 鬼が見つけたプレイヤーを追いかける方法
  • ドキドキ感を演出するバックミラーの実現方法

アーキテクチャを気にする

ここまで来ると実務で開発経験を積んでいけば機能開発ができるようになると思います。ただしアプリを本番運用して人に使ってもらうには非機能を実現するアーキテクチャが必要になります。WebアプリやSPA(シングルページアプリケーション)の開発経験から次のようなアーキテクチャに関する話題が気になり、色々調べたり試したりしていますがまだまだ試行錯誤中です。

  • シーン遷移(ルーティング)
  • ステート管理
  • ビューとロジックの分離
  • アセット管理
  • オブジェクト管理(DIコンテナ)
  • 設定管理
  • エラー処理
  • ロギング
  • モニタリング(利用状況可視化)
  • 静的解析
  • コードフォーマット
  • 自動テスト、モック、カバレッジ計測
  • CI/CD

同僚にも聞いてみた

私の場合と異なる部分を紹介します。

勉強会やハッカソンに参加する

ネットで探すとUnityやXRの勉強会やハッカソンが見つかるので興味があるものに積極的に参加しているそうです。

技術を学ぶだけでなく人との繋がりも増えるので周りに相談できる人がいない方にはおすすめの取り組みだと思います。

Twitterでアンテナを張る

メインとしてTwitterでの情報収集を行っているそうです。私はおじさんなのでRSSで情報収集してますが若い人はTwitterですよね。

日本のXR界隈で中心になっている方、各勉強会の主催コミュニティなど、頻繁に発信を行う方をフォローして最新の技術やトレンド、勉強会の資料が多く流れてきます。その中から気になるものをピックアップして詳細に確認します。

VRサービスを体験する

XR界隈で話題になったサービスやゲームは試してみるそうです。

Clusterだとユーザがキャラを演じるリアル脱出ゲームや音楽ライブ、VRChatだとキャラクターショーやバーチャルマーケットなど企業が関わっているワールドを体験します。Clusterは日本の開発者やユーザの熱量が高く、VRChatは世界中の開発者とユーザの熱量が高く、VR睡眠など新しい文化が出てきているためVRが一般に普及したら生活がどう変わるのか興味があり積極的に体験してます。

まとめ

今回はUnityエンジニアになるためにやってきたことを紹介しました。私の場合はやってることはとてもシンプルです。情報収集を続けながら、メンターを見つけ基礎知識を習得し、あとは作りながら学ぶ姿勢で未知の領域にチャレンジします。誰かに使ってもらうつもりであれば本番運用を見据えアーキテクチャにも取り組みます。Unityに限らずどのような技術習得でも使えるフローだと思いますので誰かの参考になれば幸いです。