へたれ技術っぽいブログしてます

【Android】ビューバインディング(View Binding) を使いましょうと教えていただきました

ご注意:この記事はまだKotlinではAndroidアプリを一度も(一度も!)作ったことのない人間が書いています。ほんと、お触りしかしたことないのですよ。いろいろごめんなさい。

 

KotlinでAndroidアプリを作る人は「findViewByIdなんて使わなくてもいいんだぜ!キャストが不要になったからっていちいち参照を取得するなんてかったるくてやってられないぜ!! import kotlinx.android.synthetic.main.activity_main.* って書くのはまあちょっとめんどくさいけどな」ってJavaな人にユーエツカンを抱きながら開発をしていると思っているのですけど※1、この synthetics という機能はもう使えなくなるようですね。まあ、超久々にKotlinを試してみたところ使えなくなってたのでググって調べたらわかっただけなんですが。詳しくは↓こちら。

developers-jp.googleblog.com

 

というわけで皆さん、2021年9月に完全終了する機能からAndroidの公式ライブラリであるビューバインディング(View Binding)に切り替えましょう。こちらはJavaでも使えますので。詳しくは↓こちら。

developer.android.com

 

でも個人的にはfindViewByIdが超好きなのですが(老害脳)。

 

おしまい

 

※1 超偏見

【VR】株式会社ハシラス様のライドデバイス「キックウェイ」を使ったアプリを作った

みなさま年末進行お疲れ様です。忙しい中ですが何モノにもなれないHiekichiがお送りいたします。ネンマツシンコー!

 

これは

qiita.com

の12月23日の記事です。たぶん・・・

 

・・・というわけで、表題のとおりライドデバイス「キックウェイ」(by ハシラス)用のアプリを作りました。

作ったのですが、どこまでオープンにしていい情報なのかわからないので、絶対に大丈夫だろうということを箇条書きで記してみます。

 

■キックウェイについて

・キックウェイは風(サーキュレーター)と床移動(左右にちょっと動いたり振動したり)を制御できる乗り物風デバイスVRと連動させて体験させることで体験の質を向上させる。

・キックウェイとUSBで繋がっているPC上でキックウェイのハードウェア(HW)を制御するソフトウェア(サービス)が動いている。キックウェイ対応アプリは専用のコンポーネントを介してHWの制御をサービスに依頼している。ちなみにIPアドレスを指定するだけの簡単設定。

・ハードウェア制御ソフトウェアへの依頼(指示)は、スクリプトから行うこともできるけどTimelineに風とか床移動とか床回転のトラックを作成して、時系列に沿ったクリップを配置するだけでOK。素晴らしい。

 

■作ったアプリについて

・グライダーに乗って飛ぶのを体験するっぽい気持ちのアプリ。

・風を受けて(サーキュレーターが回って)乗ってる(つもり)のグライダーが回転したり浮上したりする。そのグライダーの移動に合わせて風や床移動などのクリップをタイムラインに配置した。

・カメラの移動はタイムラインで行わせるのがふつ~だと思うけど、Cinemachineを使ってみたかったのでそいつのDolly Cart機能でOculus用のカメラ(OVRCameraRig)を移動させている。

・Oculus Quest 2用のアプリとして作った。キックウェイに繋がっているPCで動くHTC Vive用のアプリとして作るのが普通だと思うけど。

 ・開始と終了がめんどくさい(ViveだとPCのキーボードで開始が指示できるけど、Oculus Questだとそうはいかない)ので、アプリ起動とともに児童開始されて延々とループするようにした。

・アプリ開始と同時にDolly Cartでのカメラ移動と、Timelineの開始を行う。カメラの移動が一周したタイミングでTimelineを再度実行させるようにしてみた。まあ、だいたい合ってればいいかなと。

 

 

■その他

 ・HTC Vive用のアプリも初めて作ってみた。でもやっぱりなんか性に合わない。なぜだ?

 

動作はこんな感じです。Vive用に改めて作ってみました。適当な無料アセット(Skybox、シーンなど)をダウンロードしてSteamVR PluginやCinemachineの設定、Timelineなどを作って手直しして・・・で、2時間くらいでした。

www.youtube.com

 

 

というわけで、23日の記事でした。

明日は @godan09先輩の「ちょっとポエムでも書くか「入社3年目から見える風景 もしくは 激動の2020年と2021年生存戦略」という記事です。後輩の皆様ご拝聴くださいませ。楽しみですね。セイゾンセンリャクー!

 

おっと、明日の晩はクリスマスですね。昔は「日没から翌日の日没までが1日だった」ので、12月24日の日没から12月25日の日没までがクリスマスであり、12月24日の日没から12月25日の日の出までが夜(クリスマスのイブニング=クリスマスイブ)である。ってことをアイザック・アシモフ先生のエッセイで知った、ということは毎年なにかしらで伝えていきたいと思います。

間違っても23日をイブイブとか言うなよ! 

 

では良いクリスマス&新年を!

【覚書】チラシの裏にでも今年試みたことをちらっと振り返り書きなぐってみようぜ

注意!:これはブログではなく単なる日記です。というわけでまあ有用な情報は期待しないでください。

 

今年は世界的流行なアレのせいで自分も "引きこもり(Stay Home!)" が絶賛捗っていたわけですが、年度の前半は正直オンライン授業の実施でもうもうもう大忙しでした。だって週に30コマ設定されている授業枠(月曜から金曜日の5日間×50分授業が1日に6回=30コマ)に対して酷いときは27コマ・緩いときでも25コマの授業を実施しないといけなかったんですよ!うちの学校は録画の配信とかで授業は行っていないので、すべてリアルタイムで行いましたからね。もうカツカツですよ。それらの空き時間に授業準備やら教材の作成やらを行っていたわけです。とほほ……

まあ、忙しいなりに新しいことに手を付けるのが必要 or 手を付けざる負えなくなるのが現代社会人かと思いますが、私も生きていくだけでいっぱいいっぱいな中でちょっとだけは新しいことを始めました。せっかくなのでチラシの裏と思って書き殴ってみます。ぶんぶん!

 

(1) Unityちょっとやった

 もちろんチョットデキルのレベルまでではございません。なんとなく使っていたUnityをちょっとだけわかるようになったような気がします。とりあえず「自分にとって新しい項目を覚えるためにそれを使ったショーモ無いアプリを作ってみる」というのを繰り返しました。ちなみに新しい項目ってのは別に世の中的に新しいことってわけではなく、UI使ってみる、OnTriggerEnterメソッド使ってみる、とかのレベルです。

 やっぱり「3D空間とは…」みたいな難しいことを最初に考えるよりも、作りながら試してみるのが理解深まりますよね。もっともっと頑張って本を出版してみたいなあ。

 

(2) VRアプリ開発もちょっとやった

 Unityの流れなんですが、簡単なVRアプリも作ってみました。もちろんマーケット公開するレベルではなく。

 一応 VR-HMDとしては Oculus DK1/ DK2/ CV1 / Go と個人的に購入してはいましたが先達の方々がブログ等に書かれていることをお試しするようなレベルのアプリ(オブジェクトを眺める…程度のアプリ)しか作ったことはなかったんですよね。でもOculus Quest 2のおかげでアプリの作って試す環境が格段に手軽というか手近になった気がします。まあ、これまたUnityの機能を試すレベルのアプリではありますが。ちなみに今回のQuest2は直販ではなくYodobashiで予約購入しました。

 

こういうの(水の呼吸~♪)とか

www.youtube.com

 

こういうの(弾き返すだけ!)を作ってみました。

www.youtube.com

 

書き殴りというか作り殴りですが。

 

ところで結局、VR元年っていつなんですかね?

 

(3) YouTube Liveの配信方法をちょっと覚えた

 なぜだか仕事で配信をしないといけない状況が発生して、泥縄的に覚えました。結構面白い。

 

生きてるとまあちょっとづつ色々新しいことを始めていると思うので、年末なので皆さんも振り返ってはいかがでしょうか、という日記でした。(日記?)

【プログラミング一般】Conway先生に黙祷

授業で Conway's Life Gameについて取り上げたときにググってみたら、Conway先生が今年の4月に「新型コロナウイルス(!)」でお亡くなりになっていることを知りました。

やっぱり密集はいけないのですね。黙祷。

【VR】株式会社ハシラス様のライドデバイス「キックウェイ」を使ったアプリを作(りたか)った

なんか今日、めっちゃ寒いんですけど・・・

 

皆様、いかがお過ごしですが? 自分は本日もオンライン授業を実施中です。つい先ほどまで UnityでUI作ろう!って授業で、Screen Space-Overlayで画面に張り付いているUIとWorld Spaceで空間に浮いているUIの作成などをお話ししておりました。・・・なんていう近況報告は良いとして・・・。

 

この記事は

qiita.com

の12月3日の記事です・・・って、今年はAdventarさんじゃなくてQiitaさんのAdvent Calendarなのか。いきなりハードルが高くなったような気がしたけど・・・まあいいや、気にせず書きましょう。

 

みなさん、VR開発の黎明期から起業され活躍されている株式会社ハシラス様をご存じでしょうか。

hashilus.co.jp

 

古くは乗馬型フィットネス機器(ジョーバとかロデオボーイとか)を活用した乗馬レーシングから始まり、今までに様々なアミューズメント設備とコンテンツを展開されている会社様です。【詳しくはこちらをご覧ください】

そうそう古くはハシラス社長とGOROmanさんが組んでの「オキュ旅」なんてのもありました。その時には自分も出資(カンパ)させていただきました、500円だけですが。

ascii.jp

 

そのハシラス様のご協力をいただきまして、ただいま私の所属する学校にVR用ライドデバイス「キックウェイ」が期間限定ながら導入されています。

ライドデバイスという名の通り、人が乗ってアミューズメント体験をする装置です。公式サイトに「パーソナルモビリティ型モーションシミュレーター」と書かれている通り、VRで見ている風景に合わせて台座がモーションして(動いて)くれるので、VR体験の質を飛躍的に向上させることができます。

hashilus.co.jp

 

こちらが設置いただいたキックウェイです。

f:id:Hiesuke:20201204131413j:plain

全体の風景

右側の銀色の箱とその上に載ってる扇風機、箱の手前の台座、台座から上に伸びている手すりで貸し出しいただいた「キックウェイ」になります。左にあるPC(床の上で青く光っているやつ)やモニターなどは当方で用意したものです。

 

f:id:Hiesuke:20201204131841j:plain

モニターの表示

VRですので、ヘッドマウントディスプレイに画像が表示されていますが、こちらのコンテンツではモニターに同じ画像が表示されているのでサポートする人や見学する人が利用者が見ている画面を一緒に見ることができます。

 

f:id:Hiesuke:20201204132033j:plain

キックウェイ本体

キックウェイ本体です。銀色の箱に収められているモーターで手前の銀色の台座を動かしています。PCの電源を入れると、うにょうにょと動いて初期設定を行ってくれます。

手すりの棒は動きません。ハシラス様を訪問した際に「なんでキックウェイと言うのですか?」と社長にお尋ねしたら、「開発初期段階でキックコースターを分解して入手したハンドルを手すりとして利用したから」とおっしゃってました。

 

f:id:Hiesuke:20201204132751j:plain

台座

台座です。100キログラムまではOKと言われましたので気になる方はダイエットしてお臨みください。

 

以上、ここまでは引用しつつの単なるご紹介ですが、次回は開発の状況を記事として書きますね。ハシラスさんからは特に秘密としてる内容はない旨の話は伺ってますが、一応 社外への開発環境提供のファーストケースらしいので・・・

 

というわけで、今回は「・・・作りたかった(これから作る予定)」編でした。

 

YMIC OG/OBの方、もちろん現役の方も含めてキックウェイを体験してみたい方は、お早めに @Hiekichi までご連絡ください。体験会を開いちゃうよ。

 

p.s.

キックウェイの制御用PCにはHTC Vive proが接続されていて、お貸しいただいているアプリもVive用なのですが、私はOculus派(というのがあるかは知らないけど?)なので Oculus Quest 2用アプリで開発する予定です。

 

当Advent Calendarの明日の記事は、XXXさんによる「XXX」です。わーい、とってもXXXで楽しみですね~。

【PC】【覚書】Adobe Reader DCで右側に出る表示が邪魔だったので消えていただいた

タイトルの通りです。

 

PDFファイルを Adobe Reader DCで表示しているのですが、文書の本体だけを見たいのに右側に出てきて邪魔するアレが、非表示状態にしても次に文書開いたときにまた表示されちゃうという邪魔で邪魔で邪魔な気持ちを解消しただけです。

ちなみにバージョンは、Adobe Acrobat Reader DC 2020.009.20063です。

 

■手順

(1) Adobe Reader DC を実行する(適当なPDF文書を開く)。

(2) 編集メニューから「環境設定」を選ぶ。

(3) 分類(G) から「文書」を選ぶ。

(4) 「ツールパネルの現在の状態を記憶」にチェックを入れる。

(5) 「OK」で閉じる。

 

ちなみに設定したはずなのに設定が保存されていなかったなんてことがありました。Adobe Reader気難しいです。

 

おしまい

【AI】【NVIDIA】Jetson Xavierのファンが回らない件

Jetson AGX Xavier に DeepStream を設定して30個のフルHD動画を同時に画像認識させるってデモを動かすとこまでやってみた。

最初は良かったが途中から動画がカクカクして止まるようになる。メッセージを読んでみると computer too slow って感じ。

そんで気づいたのが、Xavierにはファンが付いているんだけどこれが回ってない。おかげで筐体がチンチンな状態。

調べてわかったのが初期状態ではCPUなどがフルに活動してないので、nvpmodelというコマンドでクリック設定をして、jetson_clocks.sh というシェルスクリプトファイルで設定変更をするらしい。

ところがホームディレクトリにあるっぽいjetson_clocks.shというファイルが無い。で、また調べてわかったのがこれが/usr/binの中にコマンドとして格上げされたらしい。

 

というわけで、現在(Jetpack 4.3)の設定では

    sudo  nvpmodel  -m  0

    sudo jetson_clocks

 とすれば良いっぽい。

ファンがビュンビュン回ってくれます。

 

 

 

... っていうか、ここに書いてあった!

https://docs.nvidia.com/metropolis/deepstream/dev-guide/index.html#page/DeepStream_Development_Guide/deepstream_quick_start.html#wwpID0E2HA