ウンcodeプログラマの日常

CentOS・MacOSぶっ殺すマン PC中毒・プログラマ エロゲ・ギャルゲなどの制作もしています。最近はVRやAR技術ばかりやってます

ASUSTORのNASは絶対に買うな

令和元年6月2日、自宅のNASがまた壊れた。しかも二台同時に。公式のアップデートによって。
自分でも未だに何が起こっているかわからん。ということで、

急行能登@闇落ちなう… (@exp_noto) | Twitter

さんの勧めもあってブログに今までのNASの崩壊話をまとめたいと思う...

我が家に来た初めての10G対応NAS

f:id:MogamiTsuchikawa:20190603004123p:plain

あれは高校三年のころだっただろうか...

SynologyのNASを試しに買ったところ便利さに虜にされ、ポータブルHDDやUSBメモリの使用を殆ど止めてしまった。

保存しているデータが増えてきていたため、4ベイタイプの新しいNASの購入を決めた。せっかく新しいNASを買うのだから10GbaseT対応にしようと思い、当時4ベイNASで10Gbase対応なのに破格なASUSTORのAS4004Tを購入した

実販売価格45k円なのにLANは10G対応が一つと1G対応が二つと豊富なIOを備えていて購入に迷いはなかった。

購入後Synologyの2ベイNASからデータを移行し運用を開始した。当時はTOSHIBAの6TBのHDDを4台RAID10構成にしていた。

そして、しばらくして悲劇が始まる

定期的にネットワークに繋がらなくなる

購入してから半年後、私は浪人生になっていた。浪人していてもコンピュータを使わないことは無く、NASは生活必需品だった。

そして悲劇は起きる。

ある日を境に、NASが定期的にネットワークがダウンするようになってしまった。

最初購入代理店に連絡したところ、データを採りだした後にOSを再インストールすることをおすすめしてもらった。が、まいった。4ベイのRAID10のNASから一体どうやってデータを取り出せば良いのか...負荷がかかるとネットワークが落ちるようだったので、ネットワーク経由では全ては取り出せない。しょうがなく、重要なデータのみを取り出し初期化をした。このときRAID10でもNASのOSが壊れればOUTという経験を得れた。

その後大容量の外付けHDDを接続して、これに一週間ごとにバックアップを自動でするようにした。

NASが起動に失敗する

先の障害から半年後、冬になっていた。浪人生にとってはセンター試験が近づき神経質になっている時期だった。

また障害が起きた。今度はフリーズ後に再起動してもNASが起動に失敗する致命的なものだ。正直ここまでの障害、今度はソフトウェアではなくハードウェアの問題だろうと思った。

親の仕事データもNASに入れている関係上、復旧は迅速に行わなければならないので、同じ機種のNASをもう一台購入した。これならHDDを入れ替えるだけで復旧が可能なはず。

だが現実は厳しかった...購入した新しいNASにHDDを載せ直したところ同じ症状が起きるだけだった。ここでようやくハードウェアではなくソフトウェアの問題だと発覚。NASの初期化をし、外付けHDDよりデータを復旧した。

ここでさらなるバックアップ体制が必要だと考え、新しく購入したNASにもHDDを購入して搭載し、一日おきでデータをバックアップし、メインのNASが故障した際にそのまま同じデータがすぐに利用できるサブNASとした。

世界に平和が訪れた...

(私はセンターを失敗した...)

レッドアラート!!...戦争は終わらなかった...

RAID崩壊事件

センター試験が終わった。(二重の意味で)

そして、NASの信頼性をあげる目的でHDDを普通のHDDからNASなどの24H稼働を想定したHDD、SeagateのIronWolfに交換をした。一枚一枚交換してRAIDを再構築。簡単な作業のはずだった...

だが、壊れた。また初期化して入れ直した。このときはサブNASが役に立った。

 

大学生活と共に10GbaseLAN化!

大学生として一人暮らしを始めると共に、ネットギアの10G対応スイッチやAUひかり5Gなどを契約してようやくNASの10Gインターフェイスが生かせるようになった。

f:id:MogamiTsuchikawa:20190603002714p:plain

NASへの接続も早くなり、大学生活も順調だった...はずだった...

NAS書き込み不能事件

ある日を境に、いきなりNASへ大容量のデータを書き込みできなくなった。いや、書き込みは出来る。転送中に失敗するのだ。だが低速なWiFi経由だと成功する。もう無理。と思いながら原因もろくに探さず初期化した。すぐ治った。いいかげんにしろよ殺すぞ。

メイン・サブともに完全崩壊。ASUS許さねぇぞ

アップデートがきた。NASのアップデートだ。メジャーアップデートじゃない普通の更新プログラムだ。普通にアップデートするだろ?して大丈夫だと思うだろ?

ダメでした

いや、もう訳ワカラン

HDDが1,2番が認識されなくなったんだよね。一時的なものかなって再起動したら

これ。

f:id:MogamiTsuchikawa:20190603003519p:plain

はい。障害。ん?

お前4ベイNASのAS4004Tだろ?いつからAS4002Tになったんだよ!?

意味ワカラン、訳ワカラン。ん?サブNASはどうしたかって?サブNASはねぇ...更新しちゃった後だったんですよ...もう言わなくても分かるよなぁ??

f:id:MogamiTsuchikawa:20190603003811p:plain

OSが壊れているのか、外付けHDDのバックアップ状況もワカラン。死にたい...

 

 

もう、ムリデス。新しいNAS購入します。

えっ?どこのメーカーのをって?

少なくともASUSTORのは買いません。

はい。では僕はデータ復旧頑張ります

SDK v1.0出たしFlutter触ってみる(環境構築)

Flutterとは?

GoogleDartというGoogle自身が開発した言語でAndroidiOSどちらのアプリもネイティブに開発できるという結構楽しそうなやつです。
Googleが将来的にAndroidを捨て新しいOSをリリースする際にFlutterアプリが増えていれば簡単に新OSの方でもアプリが揃い、最初からアプリ不足に悩まずにいけるのを狙っているらしいです。
しらんけど。
ちなみにDart自体はJSなどに変換できるそうです。

ちなみに公式サイト

flutter.io

Flutterを使えるようにする

今回はWindows10(1809)にエディタとしてVisualStudio Codeを利用していきます。
使う端末はAndroid Pie(9)のPixel 3です。
## Android Studioをインストールする 特に説明は必要無いでしょう。
AndroidStudioをインストールします。

Android StudioDartとFlutterのプラグインを入れる

もしかしたらVS Codeで使うなら必要無いのかもしれませんが、とりあえず入れます。
Android Studioを起動し、Configure - Pluginsを選択します。
f:id:MogamiTsuchikawa:20181205125936p:plain 画面下のBrowse repositoriesをクリックします。
f:id:MogamiTsuchikawa:20181205140915p:plain 新しい画面に切り替わるのでそこで検索ボックスにflutterと入力し検索します。
FlutterFlutter i18nが出てきますがFlutterの方をインストールします。
同時にDartもインストールするか聞かれるのでYesを選んでください。

Google USB Driverをインストールする

Windowsユーザーのみ必要な作業のようです。
下記URLよりダウンロードします。
https://developer.android.com/studio/run/win-usb

VS Codeのセットアップ

VS Codeの拡張よりFlutterプラグインをインストールします。
インストールが終わったら再読込をしておきます。

FlutterのSDKをセットアップする

下記URLより flutterのSDKをダウンロードします。

Windows install - Flutter

zipファイルですし後々問題を起こしたくないのでzipファイルのプロパティよりセキュリティの項目にチェックを付けて適用します。
f:id:MogamiTsuchikawa:20181205150309p:plain

zipファイルを解凍し、flutterフォルダを任意の場所に置きます。
今回はC:\src\flutterという構成にしました。Program Filesフォルダー内はオススメされません。
SDKの配置が終わったら次はPowerShellを起動し先ほどのC:\src\flutterに移動します。
まずは、flutterフォルダないのflutter_console.batを実行します。
.\flutter_doctor.batと打って実行します。
まずはAndroid SDKのライセンスに同意する作業をします。
flutter doctor --android-licensesと打ちます。そうするとライセンス文出てくるんで(しっかり読んで)yを入力して同意していってください。
同意するのは何個かあります。
それが終わったら最後はUSBデバッグモードをONにした端末をPCに繋ぎます。
flutter doctorと打って環境が正しく構築されているかを確認します。問題なければ全てチェックマークが付きます。PowerShellだと色も付くのでわかりやすいですね。
f:id:MogamiTsuchikawa:20181206092553p:plain 上記の画像ではあえてスマホを繋がずにエラーを出しています。スマホも含め全て問題なければ[!]は無くなり、全て[√]がつきます。

VS Codeで動くか検証する

flutter doctorコマンドをVS Code でも動くかを確認します。
VS Codeのコマンドパレットにdoctorと打ちます。そうすると候補にFlutter:Run Flutter Doctorと出てくるのでクリックして実行します。
そうすると、右下にFlutterのSDKどこだよ?的なメッセージが出てきますんで、そのメッセージをクリックして先ほどのC:\src\flutterフォルダを指定します。
flutter doctorコマンドで先ほどと同じように全て[√]が出たら環境構築は正しく出来ています。

サンプルをとりあえず動かしてみる。

まず、プロジェクトを作りたいフォルダをVS Codeで開きます。
VS Codeのコマンドパレットを出しFlutterと打ちます。候補の中からFlutter:New Projectを選択します。
そうするとプロジェクトの名前をどうするか聞かれるので入力してください。
プロジェクト作成完了したら早速F5キー押して実行しましょう。
ビルドなどには時間がかかるので気ままに待ちましょう。
apkなどが出来るとスマホに転送されデバッグが開始されます。
初期アプリでは画面右下の+ボタンを押すことでカウントが増える者みたいですね。

おわりに

結構説明を省いているところがあるので、分からないこととかあったら是非Twitter等で聞いてください。
@MogamiTsuchikaw
自分もFlutter勉強中なのでFlutterチョットデキルようになったらまた続きを書きます。

新しいプロダクト開発にPython使ってみた

久しぶりに開発ツール開発

f:id:MogamiTsuchikawa:20181101173906p:plain

高校生のころに作ったC#_GO(C#のポータブル軽量開発環境)から、あまり開発系ツールを作っていなくて久しぶりにそういう系統の物が作りたくなったのでやってみました。(まあ今回作るツールも需要ないだろう...とは思いながら)

開発にPythonを使ってみる

f:id:MogamiTsuchikawa:20181101174007p:plain

最近流行っている言語?であるPythonを使ってみました。 Pythonというと機械学習のライブラリが豊富だったり、言語仕様的に行列演算とかが強いとかでAI・機械学習によく使われていますが、マルチプラットフォームな点でも良さげな言語です。マルチプラットフォームならC#だってmonoやら.NET coreでマルチプラットフォームじゃんと言われそうですが、しっかりとC#ではなくPythonを選ぶ理由があるんです。

C#を選ばない理由

C#マルチプラットフォームなアプリを作るには今.NET coreが熱いですが、.NET coreはGUIライブラリ機能を有していません。
一応.NET core3からはWindows環境では今までのWindowsFormやWPF,UWPのGUI機能を使えるようになりますがそれを利用するとMacLinuxでは動きません。monoを利用する場合でもGUI付きの場合Gtk#などを使う必要があります。Gtk#ですがちょっとググって見ましたが恐ろしいほど情報が少なかったので諦めました(公式資料読みあさってやっても良かったけど、ブログのネタにもなりそうだし) PythonならGUIライブラリを使っても普通に他のOSでも動きますし無難かなと思いました(´・ω・`)

Pythonを選ぶ理由

上記で条件にマルチプラットフォームに対応出来ることをあげましたが他にも条件がありました。それは開発環境の構築が大変じゃ無いこと。世の中にはマルチプラットフォーム向け開発に対応した開発ソフトが沢山ありますが大抵が入れるの大変で重くてでかいです。正直機能沢山の開発環境はVisualStudioやVScode,Unityでお腹いっぱいなので基本コンパイラテキストエディタでゴリゴリとコードでUIも書けちゃうやつが良いなと思いました。

手軽に動作を確認出来る対話型インタプリンタ

「こんな感じで処理したらどういう動作をするんだろう?範囲外にならないかな?」と心配になるときがありますが、こういう時にはまずは一回その部分だけで実行できるようにして動作を確認するのですが、C#などの場合、一度テスト用のプロジェクトを作ったり案外手間がかかります。Pythonの場合、こんな事をしなくても対話型のインタプリンタでコードを確認出来ます。途中の変数内の値もprintなどを使わず、そのまま変数名を入力するだけで確認することが出来ます。

高機能なPythonIDEiOS向けにある

Appleって少し前からiPadをノートPCの代わりとして推していますが(ならMacって何なんだよっていう思いですが...)iPad向けには現状PCの代わりになるほどアプリケーションが充実していません。特に開発系に関しては絶望的です。AndroidなどではC++などを使いAndroidのアプリケーションを作成出来るアプリケーションなどがありますが現状iOS向けには単体でiOSのアプリケーションを開発するソフトは存在しません。

f:id:MogamiTsuchikawa:20181101174546p:plain

ですが最近「Pythonista3」というアプリを見つけました。これはiOS上でPythonのコードを実行するアプリで一見よくありそうなアプリに見えますが3000円もすることもあってエディタの機能はしっかりとしていますしiOSの機能を使ったりホーム画面に自分の作ったコードの実行ショートカット(実質単体アプリのように使える)も作れるとよく出来ています。さらにとあるコードを実行することでAppleで禁止されているDropBoxでのコードの共有機能やシェル機能(pipなどでnumpyなどのライブラリを取得することが出来ます。)が使えます。これさえあれば色々とiPad向けにAppleが許してくれなさそうなアプリを作って共有することが出来そうです。

f:id:MogamiTsuchikawa:20181101174706p:plainf:id:MogamiTsuchikawa:20181101174719p:plain

こんな感じでPythonが案外気に入ったのでこの後もPythonに関することをブログにまとめていきたいと思う。主にwxPythonなどのGUIライブラリやPythonia3のお話をメインにPythonについてこのブログにまとめて行こうかなと思っています。

あとは最近α版がリリースされ始めた.NET Core3などについてもちょくちょく書いていきたいですね。

SurfaceGoを買ったぜぇ!最高だぜぇ!!

なんか勢いでSurfaceGoを購入してしまったのでレビューしちゃいます。

スペックシート

以下のものは上位モデルのものです。

CPU GPU RAM ストレージ OS 液晶解像度 ポート類
PentiumGold 4415Y HD Graphic 615 8GB SSD128GB Windows10Home S mode 1800 x 1200 USBTypeC Surfaceコネクタ 3.5mmジャック

ちなみに下位モデルではRAMが4GBになるほかに、ストレージがSSDより遅いeMMCの64GBになります。特別な理由が無い限り上位モデルを選ぶべきかと思います。
以下ベンチマーク関連です。

Passmark

CrystalDiskMark

ちょっとNVMeなSSDにしては遅いですね。

案外快適なPentiumGoldプロセッサ

SurfaceGoの購入を考えている中で一番気になったのがCPU
Pentiumというと今ではローエンドCPUというイメージですよね。
最近では4コアCPUが一般的になっていますが、こちらは2コア4スレッド しかも第七世代です。さらにターボブーストも無い。正直そんなに期待はしていませんでした。
が、良い意味で期待は裏切られました。
起動して一通りソフトを入れたりしていましたが、AtomやN系統のCeleronPentiumのような遅さを全然感じませんでした。おそらくストレージやソフト面で支えているんだと思います。なので単純にCPU性能を求められるような操作ではCPUの非力さを実感します。(ですが、十分ストレスにならない程度ですし、Atom Z8700に比べたらめちゃ速いです。)
Atomとかを搭載したPCってOffice作業やらWebブラウジングでも少々引っかかったりしますが、SurfaceGoではそれが全然無いんです。

10inchi機のくせに使いやすいキーボードとトラックパッド


(レビューに使ったSurfaceGoはUS版なのでキーボードはUS版です。日本で売られるSurfaceGoはJISキーボードです。)
10inchiぐらいの端末になってくるとキーボードってお世辞にも使いやすいとは言いにくくないですか?
あとキー配列が変だったり...(USキーボードを無理矢理JISっぽくしたりね)
ですが、Goのキーボードはかなり良いです。普通にブラインドタッチが出来ます。
少し不満点を言うなら「`」キー、JIS配列でいう半角/全角キーが小さいことです。
これはアメリカ人なら感じないのかもしれませんが、日本人だと無い半角/全角キーの代わりに「Alt」+「`」でIMEのON/OFFをするので小さいと少し使いづらいですね。

トラックパッドに至っては驚異的です。
よくこの本体サイズでこのサイズを用意できたなっていう感じですね。
使いやすさも今までのSurfacePro並です。Macerが使ってもストレスは無いかと。

でもちょっと気になる点があります。
それはキーの押し心地です。
キーストロークもしっかりあり、使いやすいキーなのですが押し心地が...なんというか...懐かしい...
なんと表現すればいいか分かんないのですが、昔のメンブレン式キーボード?それに似た押し心地が最初にきて、その後がパンタグラフの感触です。
自分は嫌いじゃないし逆にくせになっていますが、人によっては苦手かもしれません。

USB TypeC

SurfaceGoでは従来のSurfaceでは必ず搭載されていたUSB TypeAが廃止され、USBポートはTypeCが一つのみとなっています。
そしてこのTypeCポートは充電に対応しています。充電に関する挙動は後に記述します。
このUSB TypeCですが、AltModeとしてDP出力に対応していますのでよくあるTypeCから映像出力ポートに変換するアダプタが使えますし、充電機能やUSBハブ機能を搭載したTypeC接続の液晶に繋げばケーブル一本でデスクトップのように使うことも出来ます。

二系統選べる充電

SurfaceGoでは従来のSurfaceに搭載されているSurfaceコネクタ経由とUSB TypeCポート経由の充電に対応してます。
純正品のアダプタとしてSurfaceコネクタを搭載した30Wの充電器が付属していました。
Surfaceコネクタは昔のMacBookProやMacBookAirのように磁石で簡単にくっつき外すのも簡単なのでとても使いやすいですが、専用コネクタであるためどこでも充電したりするのが難しいです。
SurfaceGoではTypeCでの充電に対応しているので外出先で汎用のTypeCコネクタの充電器やモバイルバッテリーを使うことが出来るので、非常にモバイル性が上がっています。
学生や外回りをするビジネスマン、ノマドワーカーには嬉しい機能だとおもいます。

また、SurfaceGoのTypeC充電は制限がかなり緩いです。大抵のノートPCはUSB PDかつ最低何Wからと決まっている物(自分のTinkPadE480は30W以上から)が殆どですが、SurfaceGoでは下限はなく、しかもUSB PDにアダプタが対応している必要はありません。
自分が試したところUSB 5V 1Aでの充電(市販のスマホ向け充電器+TypeAtoCケーブル使用)でも充電が可能と言うことが分かりました。つまり、普通に売られているTypeA出力のスマートフォンタブレット向けモバイルバッテリを使えることが分かります。
ですが充電速度を考えると、極力USB PDに対応したモバイルバッテリーを使った方が良さそうです。
スマートフォンも最近はUSB PDに対応した物が出てきているので、買い換えるのも良いかもしれませんよ?
自分は既にUSB PDに対応したモバイルバッテリーは3つほど所有しています。
ちなみに上限は30W(20V 1.5Aもしくは15V 2A)なので専用充電器とは充電能力は同じですね。

驚異的なバッテリの持ち

SurfaceGoですが驚異的にバッテリーが持ちます。
ブラウザーで映画を見ながらなら普通に6時間ほどもちました。
少々負荷がかかりっぱなしになる作業も2時間ほど経っても半分以上、60%以上持っていました。
iPadなどと比較するとやはりバッテリの持ちは低いかもしれませんが、Windowsタブレットとしては驚異的です。

格安機とは言わせない!Surfaceのアイデンティティーを持つハイコストパフォマンス機

Surfaceといえば綺麗な液晶、ペン入力、WindowsHello顔認証、キックスタンド、マグネシウムボディですよね。
SurfaceGoでは値段が圧倒的にSurfaceProから低いのにその全てを受け継いでいます。

格安機と呼ばれるWindowsPCでは大抵がFullHDもなくキーボードは打ちにくくペン入力や顔認証は当たり前ですがありません。そして、筐体はプラスチックで安っぽいことが殆どです。
前にDellの6万ほどの格安機を買ったのですが液晶は大変見にくくキーボードも打ちにくいしトラックパッドに関しては毎回ストレスを感じさせる物でした。
特定用途にしか使わないと自分は割り切って使っていましたが、もしこれを親からPC入門用に渡されていたらPCが嫌いになっていたかもしれません。

買うべき?

約一週間SurfaceGoを使ってみて、Webブラウジングからちょっとしたアプリケーションのコーディングなどもしてみましたが、ストレスは殆ど感じませんでした。ちなみにこのブログも今SurfaceGoで書いています。
正直メイン機として使うのは無理ですが外出時に鞄にさっと入る大きさとCPU性能、電池性能はサブ機としては全然ありです。
また、大学生の方や特に初めてPCをもつお子さんに買うのも凄く良いと思います。
やっぱり始めて使うPCがキーボードやトラックパッドが使いにくかったり画面が見にくいと、スマホの方が良い・PCはクソとなっちゃうと思うんですよね。

と、ここまではSurfaceGo最高だよ!と書いてきましたが最後にお一つ辛口なコメントを添えておきます。

日本で売られる個人向けSurfaceGoには必ずOfficeがバンドルされて価格が2万ほど高くなっています。学生でないかつ会社で買えないかつOfficeをよく使う方には関係ないと思いますが、それ以外の方には安さが売りのSurfaceGoが二万も高くされるクソ仕様な他ありません。学生の方でも教育機関版を学生協から買えるか分かりませんし、Officeが無駄になるケースは多いと思います。
自分もOfficeを五台まで使えるOffice365 Businessを契約しているので、Officeバンドルの日本版はもったいないと思いUS版を輸入しました。

なんでMicrosoftJapanはOffice非搭載版を売ってくれないのか...まじでMSJP意味分からん。 ふぁっきゅーMSJP(´・ω・`)

MirageSoloをゲッツしたので色々見てみた(1)

受験勉強やら委託で作っているゲームの制作に時間を取られ、前のOculusGoの投稿から結構時間が空いてしまった...
今回は ようてん さんからMirageSoloを頂いたので!いろいろチェックしたことを複数回に分けて、まとめていきます。

MirageSoloのおさらい

概要

プラットフォーム タイプ ラッキング ストア メーカー 販売価格
Daydream(Google) 一体型VR 6DoF(コントローラーは3DoF) GooglePlay Lenovo 64GB

MirageSoloはGoogleが出しているVRプラットフォームDaydreamに対応したVR専用機で、PCレスの一体型で本体内蔵のカメラセンサーを利用した位置トラッキングに対応しています。
(Googleではこのように内蔵センサーで位置トラッキングする技術をWorldSenseと読んでいます。)

スペック

OS SoC ストレージ 外部端子 スピーカー
DaydreamOS SD835 64GB TypeC/microSD/3.5mm 非搭載(イヤホン必須)

AndroidVR専用にカスタマイズしたDaydreamOSを搭載。
SoCには一世代前のハイエンドSoCが使われています。 外部端子は豊富で、内蔵スピーカーは非搭載。なので使用するにはイヤホンなりヘッドフォンが必要です。
個人的には本体から長いイヤホンのコードを垂らしながら使うより内蔵スピーカーで簡単に使いたかったなぁ...

ディスプレイスペック

ディスプレイ種類 ディスプレイ解像度 フレームレート
液晶 2560×1440 75Hz

VRHMDでかなり重要なディスプレイ、MirageSoloには解像度2560×1440(WQHD) 75Hz工藤の液晶が使われています。
スマホVRや格安一体型VRHMDでは大抵1920×1080(FullHD)のディスプレイなので、それと比べるとめちゃ良いです。

競合機種と比べながら使ってみる

競合機種としては同じくスタンドアロンなOculusGoとPCVRとしてはお手軽なものに分類されるWindowsMR HMDを比較していきます。

概要

\ プラットフォーム タイプ ラッキング ストア メーカー 販売価格
MirageSolo Daydream(Google) 一体型VR 6DoF(コントローラーは3DoF) GooglePlay Lenovo 64GB
OculusGo Oculus 一体型VR 3DoF OculusStore Oculus ¥23800
WinMR HMD WindowsMR PCVR 6DoF MicrosoftStore Acerなど ¥39600

スペック

\ OS SoC ストレージ 外部端子 スピーカー
MirageSolo DaydreamOS SD835 64GB TypeC/microSD/3.5mm 非搭載(イヤホン必須)
OculusGo カスタマイズAndroid SD821 32/64GB microUSB/3.5mm 搭載
WinMR HMD Windows10(PC) (PC) (PC) HDMI/USB TypeA/3.5mm 非搭載(イヤホン必須)

ディスプレイスペック

\ ディスプレイ種類 ディスプレイ解像度 フレームレート
MirageSolo 液晶 2560×1440 75Hz
OculusGo 液晶 2560×1440 72Hz
WinMR HMD 液晶(Acer) 2880×1440 90Hz

※WindowsMR HMDは色々なメーカーで作られているので必ずしも上記仕様ではありません。
ざっと表で比較してみましたが、各ハードウェアの仕様は値段(WindowsMRはPCも含めての値段)の上下と一致しています。
なので、OculusGo < MirageSolo < WindowsMR HMD と言う形でハードウェアのスペックとしては上下関係があります。
それでは実際に被って検証していきます。
今回HMDを被っている写真を撮るために祖母に協力してもらいました(^_^)

まず、個人的に付け心地で一番快適だったのはOculusGoです。
なんと言ってもコードが無いし、とても軽い。(OculusGo:468g / MirageSolo:645g)
しかし、撮影の際におばあちゃんから付け心地の意見を聞いたところOculusGoはあまり付け心地が良くなかったようです。
一番付け心地が良くて見やすかったのはMirageSoloで、理由は付けていても頬が痛くならなく、レンズとの距離の調整が出来て見やすく出来たことのようだ。

(写真のスイッチを押しながらで調整できる)

(かなり調整が効く)

自分の場合VRHMDに慣れてしまっているので頬が痛いとかを特に意識したことは無かったのでこういう意見は新鮮だった。
MirageSoloと近い固定方式を採用するAcerのWinMR HMDも付け心地が良かったようだ。ただ体験をしてもらった際に周りを見回すのに夢中でケーブルに引っかかりそうになっていた。ここら辺はやはりPCレス・ケーブルレスで使えるMirgeSoloやOculusGoは強い。

次はコントローラーやコンテンツについて、その次は開発環境などについて語っていく...予定...

Oculus Go の開発をやってみる(後編)

前回の続きです

Oculusの開発者登録をする

OculusGOを開発者モードにするには使っているアカウント(OculusもしくはFacebook)で開発者登録が必要です。

OculusDeveloperCenter

OculusDeveloperCenterに入ったらまずはFacebookアカウントかOculusアカウントでサインインします。
そしたら、画面上にあるManageを選択します。
f:id:MogamiTsuchikawa:20180511171231p:plain そうするとストアでの表示名を聞かれるのでお好きなお名前を。問題が起こるとコワイのでアルファベットのみで付けると良いでしょう
f:id:MogamiTsuchikawa:20180511171410p:plain
登録が完了するとこんな画面が出てきます。
f:id:MogamiTsuchikawa:20180511171518p:plain
これで開発者登録は完了です。

OculusGOを開発者モードにする。

スマートフォンにインストールしたOculusアプリを開きます。
f:id:MogamiTsuchikawa:20180511172123j:plain
設定を開きます。

f:id:MogamiTsuchikawa:20180511172204j:plainf:id:MogamiTsuchikawa:20180511172230j:plain

その他の設定を開いて開発者モードを選択します。

f:id:MogamiTsuchikawa:20180511172338j:plainf:id:MogamiTsuchikawa:20180511172402j:plain

はい!これでOculusの設定は完了!

OculusGOのドライバーをインストールする

OculusGOにアプリを送ったり削除したりをPCから操作するためのadbドライバーをインストールします。
この操作はWindowsのみで必要のようです。
まずはOculus公式サイトからドライバーをダウンロードします。
OculusGO adb driver
ダウンロードしたzipファイルを適当な場所に解凍します。
解凍できたら中に入っているandroid_winusb.infを右クリックしてインストールをクリックします。
f:id:MogamiTsuchikawa:20180512114617p:plain
インストールが完了したら、Windowsを一度再起動することをお勧めします。

Unityでアプリを実行する

Unityに戻ります。
いよいよアプリケーションを動かします。
もうビルドすれば動くのですが、動いても何か物がないと自分が回転したり出来ているかもわからないので、適当にcubeなどを設置します。
cubeはGameObject--3D Object--Cubeと選択することで追加が出来ます。
f:id:MogamiTsuchikawa:20180512115350p:plain

Cubeが設置できるとこんな感じになります。
f:id:MogamiTsuchikawa:20180512115428p:plain

File--SaveSceneを選択して保存します。
それが出来たら、OculusGOとPCがUSBケーブルでつながっていることを確認してFile--Build&Runを選択し実行します。
開始したらOculusGOをかぶりましょう。おそらくUSBデバックの許可についてのダイアログが出ているので許可してください。これでPC側のビルドがしっかりと成功すればアプリが実行されるはずです。

最後に

どうでしたか?
VRアプリケーションの開発と言っても普通のスマホアプリ開発とほぼ同じでそれ以外に特に難しいことはありません。
だからOculusGOのアプリを作ろうぜ☆
何か質問等あったら気軽にTwitterの方に聞いてもらってOKです。このブログのコメントでもかまいません。

投げ銭よろしくお願いします!!

BitCoin:3QsNSLWHxFHa3Bs2VfD17PGJz7TTgE6p15

MonaCoin:M9yBDmLNg8f19EsE63349iUuniivDdkqm6
頂いた投げ銭は開発資金の足しにしたりします!

Oculus Go の開発をやってみる(前編)

OculusGoの開発環境構築で色々つまずいたので、まとめておきます。
開発環境はWindows10 + Unityで構築します。
2018/5/10現在、これで行けることを確認済み

Oculus Go基礎知識

スタンドアローン(動作時にスマホやPCがいらない)
GearVRのアプリケーションの大半が動く 安い(32GBタイプは23000JPYほど。送料込みで注文して3日ほどで届く) OS: Android Nのカスタム(7.0か7.1かはよくわからない。そのうち追記します。) SoC:SnapDragon821 (二世代前のハイエンドSoC)
ROM:32GBor64GB

Unityのセットアップ

Unityのインストール自体は難しいものではありません。
OculusGOはAndroidがベースのOSで動いているのでインストールの際にAndroidを開発する項目にチェックしてインストールすれば良いです。
Androidのオプションを付けてもAndroidSDKJava DK(以後JDK)は自分で入れる必要があります。

AndroidSDKのインストール

AndroidSDKAndroidStudioをインストールと一緒にインストールされますが、最近のバージョンではUnity側で上手く設定できないのであえて古いバージョンのAndroidSDKを落とします。
ここから落としました。
AndroidSDKoffline
今回はバージョン25.2.5を選択しました。調べてみると26あたりから新しいやつになっているみたいで。古いバージョンですがマネージャーとかが古いだけなのでAndroid8など最新のandroidOSのSDKも使えます。
ダウンロードと解凍が終わったら任意のフォルダーに移動させます。自分はDドライブ直下に置きました。
フォルダーの中を見るとtoolsフォルダーがあるはずです。その中のandroid.batを右クリックして管理者として実行をクリックしてください。 管理者権限の確認画面が出てくるのではいを選択。 そうするとAndroidSDKの設定画面が現れます。
f:id:MogamiTsuchikawa:20180510173126p:plain Android 7.0 と7.1を選択してインストールします
f:id:MogamiTsuchikawa:20180510173303p:plain Accept Lisenceを選択してインストールを開始します。 終わったらAndroidSDK Managerには用はないので閉じます。

JDKのインストール

JDK ですが最新版の10だと動かなかったので8をインストールしていきます。
JDK 8 昔から思うんですけど、Java関連のソフトのダウンロード画面ってわかりにくい気がするんですよね。一番上に同意のRadioButtonがあってそれを押さないとダウンロード出来ないという。所見だと結構わからなくて
Windows x64のリンク押してもダウンロード出来ない!?」
とかなりません?自分だけかな?

Unityの本体の設定をしていく

ではunityを起動します。最初にライセンス認証とかありますが、そんなに難しくないので割愛。
プロジェクトを新規作成していきます。適当に名前を決めましょう。
f:id:MogamiTsuchikawa:20180510172403p:plain
androidのビルドの設定をしていきます。
EditのなかのPreferenceをクリックします。
f:id:MogamiTsuchikawa:20180510174208p:plain ExternalToolの中のSDK,JDKBrowseボタンを押して、先ほど置いたandroidSDKJDKの位置を選択します。JDKは標準ではCドライブのProgramFilesフォルダー内にあるはずです。
f:id:MogamiTsuchikawa:20180510174123p:plain ちなみにここの設定画面で通常使うエディタの設定が出来ます。自分はVisualStudioCodeを使っています。Windowsユーザーなら標準はVisualStudioになっているはずです。Codeの方が軽く使いやすいのでお勧めです。

プロジェクトの設定をしていく

最初にプロジェクトのターゲットプラットフォームをAndroidに変更します。 標準ではPC(Windows,MacOS,Linux)向けになっています
File--BuildSettings...を選択します。
f:id:MogamiTsuchikawa:20180510182234p:plain
そうするとBuildSettings画面が出るのでAndroidを選択してSwitchPlatformを押してAndroidに変更します。
f:id:MogamiTsuchikawa:20180510182328p:plain
変更が完了するとunityアイコンがAndroidの方に表示されます。
f:id:MogamiTsuchikawa:20180510182439p:plain

続いて、Player設定の方を変更していきます。 Edit--ProjectSetting--Playerを選択します。
f:id:MogamiTsuchikawa:20180510174648p:plain
Player設定画面が右端に表示されます(今までのようにウインドウでは表示されません。)
OtherSettingを選択し以下の部分を変更していきます。

PackageName : デフォルトの状態だとunityに怒られるので適当に変更します。自分はmogami.soft.comとかにしてみました
MinimumAPI Level : OculusGOはAndroidNなのでAndroid7(API level24)にします。 ちなみにここまでの作業はUnityの普通のandroidアプリを作る際と同じ手順です。

最後にPlayer設定の一番下にあるXR Settingsを弄ります。 まずはVirtual Reality Supportedチェックボックスにチェックを入れます。
そうするとVirtual Reality SDKsというボックスが出るので、+ボタンを押してOculusを選択します。
f:id:MogamiTsuchikawa:20180510184545p:plain
これでVR対応化完了です。めちゃ簡単ですね。

後編ではOculusGOのデベロッパーモードの仕方やデベロッパー登録、ADBドライバのインストールを紹介していきます。

後編はこちら

投げ銭よろしくお願いします!!

BitCoin:3QsNSLWHxFHa3Bs2VfD17PGJz7TTgE6p15

MonaCoin:M9yBDmLNg8f19EsE63349iUuniivDdkqm6
頂いた投げ銭は開発資金の足しにしたりします!