ざっきーの雑記ー

プログラミングとかデバイス自慢とか

ムフフ簡易VRやってみた

この記事は、 PMOB Advent Calendar 2016 の 14日目 の記事です。


 どうも。アドベントカレンダーを埋めるべく、今回も書かせていただきます。
研究漬けの日々、結果の出ない解析、悶々とした僕はついに買ってしまいました。
f:id:jp-zacky:20161214013114j:plain

 Amazonのセールで安かったので買っちゃいました、簡易VRレンズ。

  
有名なのはハコスコってやつですね。
スマホで再生したVR対応動画をこのレンズを通して鑑賞することで、だれでもVR体験ができるというもの。

  
これの凄いところは、レンズの前後移動ができるのでピントが合いやすいっていうのと、1500円くらいなのに割と頑丈でよくできているってところです。
f:id:jp-zacky:20161214014525j:plain このカートリッジみたいなところにスマホを装填して、レンズ越しにスマホ画面を見る感じになります。
もちろん、レンズと眼の間には十分なスペースがあるのでメガネを付けながらでも装着OKですし、イヤホンを通す穴も用意されています。


 VRでおなじみ"HTC vive"のほうは機会がありまして、僕は遊んだことあるんですけど(自慢)
『VRカノジョ』をプレイしたときの衝撃たるや!!
  

「仮想空間で女の子とイチャイチャしたい」、男の子なら皆そう想い馳せていたはずなんですよ...

  

ムフフVR体験

ってことで『VRカノジョ』、予告編なら簡易VRでも見ることができるんです!!

 でも簡易VRじゃ空間移動できないんで、モノ足りないんですけどね。(積極的にHENTAI...したくないですか?)

  
妄想といえばこんなのも。

VR対応動画はYouTubeにそこそこあるんで、値段以上は絶対に楽しめるかと。

  

なんでかんだでやっぱりYouTube公式VRチャンネルのクオリティが一番おすすめです。

 なにより魅せ方がすごい。「VRを流行らせよう!!」という意思が伝わるほど、工夫が詰まっていて勉強になります。(プレゼンとかの)


 そして壮大なLED空間で一世を風靡したDMM.planetsでおなじみ、DMM.comでもVR動画を配信しています。
基本的には有料なのですが、R18と普通(?)の無料お試しVR動画があったので、両方体験してみました。

DMM動画VR

専用のアプリが必要なのと、もちろん会員登録が必要でした。
まずは普通の。
f:id:jp-zacky:20161214022421p:plain
  

すげぇの。
  

目の前で女の子がサラダ食ってんの。
  

  

そんでもって R18VR動画の感想はというと...

     

  

見せられないクオリティでした。(良い意味で)
     

察して。みんな、察して。
たぶん有料のはもっとすごいんだろうなーって感じ。
 でもコンビニで売ってるDMMカード、2000円からって....(動画2本分くらい)


ちなみに、時を駆ける最先端技術VRでムフフなの見てたら
さすがに女子にドン引きされちゃうと思うんですよ。
(ぼく、しってるよ。)

  
   だから専用アプリにはこんな工夫が。
f:id:jp-zacky:20161214023446p:plain
自分でパスワード設定できるのだ。
お心遣い、感動いたしました。


 簡易VRコンテンツ開発(Unity)も普通のVR開発となんら変わりは無さそうなんで、ちゃちゃっと作れそう。
時間があるときに作ってみようかな。

とりあえず、女の子のモデル募集中です。

  

おわり。

後世に残すモノづくり

この記事は

PMOB Advent Calendar 2016 - Adventarの10日目の記事です。


どうも、ざっきーです。
1年ぶりの寄稿でございます。過去の記事を見て驚愕しました、「自分めっちゃ成長してる!!」
ちょー恥ずかしいけど嬉しいものですね。

なんかN●Kの番組にありそうなタイトルですよね。
今回は自分の研究室のためにサイネージを制作しました。
「どうやって作ったの!?」っていろんな人に聞かれて嬉しいんですけど、実は超原始的なプログラムでできています。(言わせんな恥ずかしい///ってレベルの)

まぁまぁ、とりあえず見てください、このサイネージ。

f:id:jp-zacky:20161210013944j:plain
シンプルに現在時刻と大学バスの時刻表を表示しています。

Twitterに上げたらめちゃくちゃイイネもらえました、理系男子たちから。(嬉しかったですよ!!)
いまの女の子はサイネージとかあんまり興味ないんですかね?
もしかして僕に、「終バス逃しちゃった...♡」とか言いたかったんですか?////(イイネ!!)

...そもそもなんで卒研クソ忙しいこの時期、僕はサイネージ制作に注力していたのか。

制作動機

うちの変態研究室では、 "怪電波を飛ばして電波時計をハックする" という実験をオープンキャンパスに来た受験生に見せてアピールしているそうです。(受験生たちの反応は...言わせないでください)
それもあってか研究室備え付けの時計は正確な時間を刻めなくなっていました。

「午後に研究室に来たらまだ朝だった」
「朝から研究室に来たら終バス終わってた、泊まるわ」

研究室がちょっとした精神と時の部屋状態になる前に...時計が欲しい、僕はそう思いました。

ちなみにこれが壊れた時計。手前のがクリスマスツリーです。 f:id:jp-zacky:20161210015548j:plain

設計思想

うちの研究生は、どちらかといえばハード寄りの研究をしたい人が多い。
そのことを踏まえて、

  • あんまりソフトに詳しくない人でも弄りやすいもの(プログラミングをさわるキッカケになってほしい)
  • どのパソコンでも動くもの(めんどうな環境構築がいらない、それだけで完結するモノを作る)
  • 清楚系リケジョがうちの研究室に入りたくなるようなもの

という目標をおおまかに立てた。

サイネージの実現

使用言語: HTML, JavaScript, CSS
使用ブラウザ: GoogleChrome
HTML上に情報を表示し、GoogleChromeの全画面表示モード[F11]でサイネージっぽくする。
面倒くさいので、ややこしいトラブル防止のためにローカルで動かすことに。

大変だったこと

  • JSで公式バス時刻表からパースしようと思った
    • HTTPSだった。(ふぁんとむjsでパースできるって聞いたことあるような。もちろん、設計思想に反するのでNO
    • けっきょく配列ベタ打ちしたった。
  • csvに時刻表を保存してそこから参照しようと思った。(1回読み込んだらキャッシュに保存したかった)
    • セキュリティの問題で、自分のところにアクセスできないっぽい。(たしかに、それできたら他人のローカルにアクセスできちゃうもんね...?)
  • 自分のPCとサイネージに使うモニターの違いでCSSの修正めんどすぎた
    • Twitter BootStrap使ったら楽だったのでは?とか思ったけど、こういうのって流行り廃りだし、「後輩よ、不満になったら自分で触ってみてください」っていうメッセージ性を込めたよ。(言い訳)

あとがき

最近、モダンデザインの記事を読んだからか、我ながらカッチョ良くできたと思うんですよ。
来年は女の子がいっぱい研究室に来ると思うんですよ。
f:id:jp-zacky:20161210022731j:plain

おわり。

scalaはじめてみた

私について

 なんとなく作りたいコードをネットで調べてはコピペして遊んでいたが(言語無差別),Play Framework2やらいろいろとできるJavaの勉強を主にしていた.
 小手先の技術でオブジェクト指向(風味)なコーディングをし, 小手先の技術で遊べるレベルになった僕は ひょんなことからscala勉強会に参加し無事撃沈. -> scalaに興味が湧く
 Javascalaに書き直していたら素晴らしさに気づいたので記事にしました.

scalaの気に入ったところ

mySort st = new mySort();  

となるのですが,前後にクラス名を書くのは面倒.
scala型推論を利用すると,

val st = new mySort();  

で終わります. 配列の宣言も同じ.
もちろん,以下のように明示的に型を指定することも可能.

val st: mySort = new mySort();  
  • 型のいざこざが少ない
     また型の話になってしまいますが,Javaではプリミティブな型(double, int, char...)とオブジェクトな型(Double, Integer, Char...)がありました.
     ○○○.parse○○○() を使うようなコード内ではややこしくなったり...
     scalaは関数言語なのでオブジェクト型しかないです. (なんとなくシンプル...?)

  • 動くものを作っていればなんとなくセキュアなものが作れる(1)
     scalaで変数宣言をする際,valとvarを用いる.valは値を上書きしない変数に,varは値を変更する変数を宣言するときに行頭に付ける.(valで宣言した変数が変更された時点でエラーを吐く)
     これにより予期しない値の変更を防ぐことができる.

  • 動くものを作っていればなんとなくセキュアなものが作れる(2)
     Javaを使っていたとき, 「○○クラスの××メソッドだけ使いたいから,とりあえずインスタンス作っておこう」という小手先の技術に身を委ねていた.
           "nullインスタンス量産マン" である.
     しかしscalaでは基本的に行ごとに式が成り立っていなければならない.
     よってどの変数にも値が存在する(?)ため,NullPointerExceptionが起こりにくい.(voidを示すUnit型が存在する)
     式が成り立つようにコーディングしていると,自然と綺麗にコードがまとまっていくので一石二鳥である.

  • Javaからの移行がしやすい
    scalaコンパイルするとJavaのクラスファイルが作られることから分かるように,Javaのライブラリを使うことができる. 

  • 勉強しやすい
     scalaにはREPLという対話型インタプリタが用意されており,関数の動作チェックのようなことがターミナル上で簡単に行える.
     scalaで学んだことをoutputしたい時,気楽に遊ぶことができる.

zacky@zacky-pc MINGW64 ~  
$ scala  
Welcome to Scala version 2.11.7 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_6
6).
Type in expressions to have them evaluated.
Type :help for more information.

scala> val a: Int = 5
a: Int = 5

scala> def myAdd(num:Int) = num+1
myAdd: (num: Int)Int

scala> myAdd(a)
res1: Int = 6

scala> :q  

 こんな感じです.
 たぶんまだまだscalaの魅力はあるのですが,僕が感動したのはこんなところ.
 『式でなければならない』という縛りから生まれる美しいソースコードは見ていて気持ちの良いものです. 今回は記述できませんでしたが,ループ文の記法も無駄のない美しいデザインなのでぜひチェックしてみてください.
http://bach.istc.kobe-u.ac.jp/lect/ProLang/org/scala-list.html
 新参者なので記事内の間違い等ご指摘いただけるとありがたいです.(お手柔らかに...笑)
 ありがとうございました.

自己紹介

ざっきーです.

このブログでは
- プログラミングの話
- デバイス買ったよ自慢
- その他技術系の話
をしていこうかなと思っております.

僕の音楽活動についてのブログはこちら.
http://jp-zacky.wix.com/about-zacky