WebエンジニアがXR業界へ転職した話	
増田博志
自己紹介	
•  まっすー。 @trapple		
•  株式会社meleap,	HADO	
•  元Webエンジニア(1x年)	
(Perl	->	JavaScript	React/flux)	
•  Unity歴2年(HoloLens,	iPhone)	
•  HADO	KART担当
祝!ねこますさんと同じ列に並ぶ!	
hLps://manabiya.tech/speaker	
XRなのじゃ〜
本日の内容	
WebからXR?	
	
全く関係ないじゃん?	
	
これまでのキャリアを捨てたの?
本日の内容	
いえいえ、そんなことないんですよ。	
やりたいことをプログラミングで表現するという
内容は変わらないので、基本的な技術ベース
は同じ。	
今まで学んだことは全て今につながっているん
です。
サーバーサイド開発	
•  Perl,	PHP等LL	
•  Webサーバー構築運用	
(Amazon	Linux,	Ubuntu,	CentOS) 	
•  DB(MySQL)	
Webエンジニア時代にやった内容(1)
Webエンジニア時代にやった内容(2)	
フロントエンド開発	
•  HTML/CSS	
•  JavaScript	
•  Ajax(jQuery)		
		->	MVVM(Vue,	Knockout,	Angular)		
					->	Component(React)
XRエンジニアになってからやってること	
フロントエンド開発	
•  Unity	
•  C#	
•  iPhone	/	HoloLens
スキルセットの違い	
全部違う	
一つも被ってない	
→
スキルセットの違い	
と思うでしょ?
考え方	
スキルセットが違っても	
必ず変わらない「考え方」がある
変わるもの変わらないもの	
まずはわかりやすく	
	
変わらない(変わりにくい)ものから意識しよう
オブジェクト指向	
世界はすべてオブジェクト指向	
	
	カメラがどのように映像をデータ化しているかは知らないけ
ど、シャッターを押せば記録されることは知っている。	
電球がどのように光を発するのかは知らないけど、ソケット
に挿してスイッチを押せばいいと知っている。
オブジェクト指向	
このクラスがどのように処理をしてるかは知らな
いけど、メソッド,	プロパティを呼ぶ。	
using	Teratail;	//Teratailさんが作った	
	
var	manabiya	=		new	Manabiya();	//Manabiyaの	
print(manabiya.raijousya);	//	来場者数を知りたい	
来場者数をどのように数えているか知る必要は無い
オブジェクト指向 WebとXR	
Web	
•  今時どの言語もオブジェクト指向	
•  どの言語を学んでも問題ない	
	
XR	
•  Unityそのものもオブジェクト指向を強く意識して
作られている	
•  コンポーネントによる設計	
•  C#はもちろんオブジェクト指向
SOLID原則	
•  Single	Responsibility	Principle	
(単一責務の原則)	
クラスを変更する理由は1つでなければならない	
•  Open/closed	principle	
(開放閉鎖の原則)	
•  Liskov	subs^tu^on	principle	
(リスコフの置換原則)	
•  Interface	segrega^on	principle	
(インターフェース分離の原則)	
•  Dependency	inversion	principle	
(依存性逆転の原則)
SOLID原則	
単一責務の原則	
クラスを変更する理由は1つでなければならない	
	
クラスの分け方の勘所を掴もう	
-  一つのクラスに複数の役割を持たせない	
-	スコープはできるだけ小さく	
-	ひと目で何をするクラスなのかわかる命名を
UNIX哲学	
•  小さいものは美しい	
•  1つのプログラムには1つのことをうまくやらせ
る	
•  他省略	
UNIXという考え方―その設計思想と哲学	
hLps://www.amazon.co.jp/dp/4274064069
UNIX哲学	
•  SOLIDの単一責務の原則とほぼ同じ	
•  パイプ・フィルタ・リダイレクトで小さなプログラ
ムを繋げる	
cat	manabiya.txt	|	grep	"3/23"	>	today.txt
アプリケーションアーキテクチャ(設計)	
•  MVC,	MVVM,	MVP,	flux	
•  DDD(ドメイン駆動設計)	
•  Clean	Architecture
アプリケーションアーキテクチャ(設計)	
関心の分離	
	
例)Viewの分離	
Viewはビジネスロジックに関心を持たない	
ただ与えられた値を忠実に表示するもの	
	
Reactは与えられた値を忠実にHTML化するもの
TDD(テスト駆動開発)	
•  xUnit,	Rspec,	Test::More	
すべてをTDDする必要はない	
->	テストしやすい部分からやろう
テストしやすい部分	
Aを与えればBが返る	
UNIX哲学で言うところのフィルタ	
var	b	=	input(a);	
この内容だけなのにテストが書けない(書きにくい)プログラムは設計
が悪い可能性がある	
	
•  別のクラスと密結合していないか?	
•  分離,抽象化の基準になる	
•  テストに慣れることで疎結合な良いクラス設計が身につく
チーム開発手法	
アジャイルとは『すばやい』『俊敏な』という意味で、
反復 (イテレーション)	と呼ばれる短い開発期間
単位を採用することで、リスクを最小化しようとす
る開発手法の一つです。	
NECソリューションイノベータ	
アジャイル	
アジャイル開発するためには分離・分割されたソフトウェア設計
が必須となる
共通した考え方	
•  UNIX哲学	
1つのプログラムには1つのことをうまくやらせ
る	
•  SOLID原則 単一責務の原則	
クラスを変更する理由は1つでなければなら
ない
変わるものとの付き合い方	
•  MVCフレームワーク(Rails,	Laravel,	Play	
Framework)	
•  ライブラリ(jQuery,	React,	Angular)	
•  エコシステム(npm,	bundler,	CI,	Github)	
•  クラウド(AWS,	GCP)	
•  オーサリング(Unity,	Flash)
変わるものとの付き合い方	
使い方を学ぶだけでなく、その背景に存在する
考え方・哲学を学ぼう	
	
自分なりの考え方・哲学を確立して、	
	
•  楽をしたい	
•  変更に強くありたい	
•  複数人で開発したい
変わるものとの付き合い方	
なぜ新しいものへ変化していくのか	
•  考え方・哲学を実現する最善手が更新された
だけ	
•  基本的な考え方をしっかりおさえれば表面的
な変化には振り回されない
まとめ	
エンジニアリングに必要な技術をただ覚えるの
ではなく、考え方や哲学を意識しよう	
	
そうすればどんな業種でも戦えるッ!!
メッセージ	
Web業界の方へ	
	
XR業界はまだまだ創世記。	
興味があったら思い切って飛び込もう!	
	
XR業界の方へ	
	
Web業界にも優秀な人材が沢山います	
XRの魅力を発信して誘惑していこう!
おわり

WebエンジニアがXR業界へ転職した話