2016/08/27

仕事がなかなか進まない

仕事では、かれこれ数ヶ月 Project Tango を用いたアプリの実装を行っていますが、なかなか前に進まないですね。

他の調査と実装も平行していることが大きな原因の 1 つですが、Tango を用いた開発についての情報が少ないことや (公式ドキュメントも説明が足りない)、Android での 3D グラフィックス実装に対する経験のなさから難儀しています。

Unity から Java への移行


始めは Unity で開発を進めていましたが、途中から Java での開発へ移行しました。
このまま Java で進めようかなと。

3D の経験は僕自身が趣味レベルですし、まして会社はその分野に何一つ関係していないため、OpenGL を直接使うよりも Unity をベースにした方が適切だろうと始めは考えたのですが、最終的にはやりたい事が Unity にマッチしないという判断をしました。

今はツール的な意味合いの強い AR アプリを目指している所で、Android の標準 API で提供される UI との統合がどうしても欲しくなります。
また、クラウド サービスを前提にしており、多様なデータのリアルタイムな送受信や同期なども必要です。

Java ならば Android 標準 API で簡単に出せる UI があるのに、Unity 上で同等の UI を自作するのはナンセンスですし、僕らはクロスプラットフォーム開発を必要としていないため、Unity のプラグインを作ることもナンセンスです。
また、Unity では通信関連ライブラリが充実しておらず、これにも自作やプラグインの問題がまとわりつきます。

どのようなツールもライブラリにも想定する利用方法が必ず存在し、その想定にマッチする場合は恩恵を得られ、さもなくば足枷になります。
そして、僕らのやりたい事は Unity の想定から外れているため、他の方法を選択すべきということです。

でまぁ・・・それはそれでキツイなぁ、と。

Rajawali の利用


Android の OpenGL API を直接使うのもキツイので、今は Tango の公式サンプルで利用されている Rajawali という 3D ライブラリを利用しています。

Rajawali/Rajawali | GitHub

Rajawali は、Android OpenGL API のラッパー群を用意し、更にシーンを作るためのフレームワークや各種 3D モデルのロード機能などを備えている感じです。

Rajawali のソースコードを見ていると、Android での 3D 実装未経験の僕にとって勉強になりますね。

Java には構造体がなく、プリミティブ型以外の全てがオブジェクトとなるため、GC 効率に対する考慮が随所に見られます。
Vector3 や Matrix4 では、あえてメソッド元オブジェクトの状態変更で new を避けられるようにし、オブジェクトを new したい状況のためには専用の静的メソッドが提供されていたり、clone メソッドが用意されていたりします。
あるいは、演算中に発生する短命オブジェクトを避けるために、クラス内部でキャッシュを設けて上手く処理している部分が多く見受けられます。

でもなぁ・・・と。
ラッパーを使うと、どうしてもラッパー オブジェクトの new が発生するんですよね。
Tango から得られるベクトル配列や行列配列に対してラッパー オブジェクトの new が発生しますし、ラッパー メソッド内部では Android OpenGL API からの戻りで得られる配列に対するラッパー オブジェクトの new が発生します。

まぁ、あまり拘り過ぎると物が出来なくなるので、まずはこれでやってみようという感じです。

 

2016/02/16

Project Tango いじり開始

仕事で Project Tango 開発用タブレットを購入しました。日本では買えなかったので輸入です。
Project Tango - Google
一応、今年の夏頃には 3D センサ搭載 Android が発売されるそうです。

まだ、公式サイトを見ながら開発環境を整えたり、サンプル アプリを Google Play から DL していじたり、チュートリアルに従って少しだけ開発してみたりしている段階です。

ひとまずは Unity 版チュートリアルに従って試していますが、お世辞にもチュートリアルとは呼べない内容なので、Unity を単体で学ぶ必要と、サンプル コードから直接理解する必要があると感じてます。
過去には、そこそこ 3D グラフィックス関連の知識を得ているので、そこそこ気軽に Unity を理解できるのが救いです。でも、Script を C# で書いて、Android でどうデバッグするのかなど、開発での基礎的な部分が理解できていません。

Unity をいじるとなると、Tango とは関係しないテーマをひとまずは立てたいですね。その方が効率よく学べると思うので。過去に遊んでたプログラムを Unity でやってみる・・・とか。

2016/02/02

DevOps 系ツールを色々いじってます

仕事で VirtualBox、Vagrant、Ansible、Docker 辺りをいじっています。
プライベートな時間でもいじっているので、仕事なのか趣味なのか分かりませんが。

事の発端は、Redis を使いたいと思った事に始まります。Redis を使うには Linux 環境が必要です (怪しい Windows ビルドは論外)。しかし、Windows 環境でやりたいので、VirtualBox と Vagrant を使うかー、となりました。で、Ansible と Docker もついでにやるかー、となった感じです。

・・・と、いつものように壮大に脱線し、Redis はどこへ行った状態ですが、やっていると凄く楽しいです。

でまぁ、得た知識を情報としてブログで載せられたら良いなぁ・・・と思っています。必要な情報は Vagrantfile、Dockerfile、Playbook などのファイルに全てが記述されるので、それら一式を GitHub で共有する感じなんですかねぇ。

2016/01/20

最近のお気に入り - Kobito

最近は、何かしらの情報を記載する時には全て Kobito を使っています。

Kobito

Electron を調べていたのと、仕事で情報共有に使うツールを探していたら Qiita: Team に辿り着き、Kobito にも辿り着いたって感じです。

Electron
Qiita: Team

殆どの情報はテキスト形式で十分であると僕は考えていますが、単なるテキスト エディタで記述する場合、自分自身でレイアウトに迷うことが多く、また、人により構成が異なる所にイライラしていました。このイライラ解消には Markdown が最適 (完全ではなくベスト) であると感じ、Kobito を愛用している所です。

Markdown - Wikipedia

特に、コードの断片を記述する時に便利ですね。様々な言語用に自動的に整形する機能が便利です。従事している仕事の性質上、コードの断片を記述することが非常に多いです。コーディング規約、コード例、導入手順・・・などなど。

作業指示なども、Kobito で Markdown で書いて、相手にも Kobito のインストールを強制し、エクスポートしたテキスト ファイルを渡し、Kobito で開いて確認してね、というノリでやってます。仮に、Kobito を使わずに、一般的なテキスト エディタで見ても問題はないでしょうし。

他にも、打ち合わせでは Kobito で書いた内容をモニタに映して説明しています。

バージョン管理システムで文書も同時に管理する事を考えると、Markdown は差分把握に良い形式です。ゆえに GitHub の README も Markdown なのでしょう。

コピペの際にも便利ですね。テキスト ベースの場合、コピー元の書式にとらわれる事が無いので。変に凝ったツールでは、コピー元の書式までコピーしてペーストしてしまうので、かなりウザいです。

・・・って言うか、書いていて楽しいです。プレビューで整形結果をリアルタイムに見ながら、テキストでサクサクと情報を記述できるので。

欲を言うならば、Qiita 同様に目次も表示してくれると良いのですが・・・。後は、Qiita とは独立して、Kobito 単体でファイルを階層化できればなぁ、と。

2016/01/15

inFamous: Second Son やってました

inFamous: Second Son を善人プレイでクリアした所です。

inFamous シリーズは初プレイですが、以前より気になっていたシリーズで、ようやくプレイできたって感じです。過去作も DL 版があれば間違いなく購入していたでしょうに。

Xbox 360 でも Riot Act (en: Crackdown) シリーズがお気に入りだったので、類似の inFamous も楽しめました。ビルの上から一方的に攻撃したりするのは好きなんですよねぇ。

でも、マップが退屈ですねぇ・・・どこに行っても同じ印象で、米国風と謎の中国風の二択。
シアトルを舞台にしているそうですが、現実の建造物と配置は利便性や作りやすさが考慮されたものなので、箱庭系では真似過ぎると単調になるだけに思えます。
攻略エリアごとの特徴が欲しかったなぁ・・・と。

ED で Nirvana が流れたのは驚きました。一応、曲はこれ・・・のはず。




僕が学生頃はグランジ ブームで (音楽だけではなくファッションも)、Nirvana はよく聴いていたバンドの 1 つだったので懐かしいです・・・って、今でも聴きますが。
当時はシアトルがどうのと聞いた記憶があったので調べたのですが、グランジ発祥がシアトルでしたね。
inFamous 開発者としては、選曲にもこだわってみた、って所でしょうか。

2016/01/04

Bloodborne をとりあえずクリア

Fallout 4 を目当てに PS4 を買いましたが、2h 程度で投げてしまいました。いや、☓ボタンが決定ボタンってのはイライラする。アホかと。

で、Bloodborne (ブラボ) を楽しんでいて、先程クリアした所です。
ラスト前に少し寄り道を楽しみましたが、総プレイ時間 33h、レベル 80 弱という感じでした。放置時間が結構あるので、実プレイ時間は 20h 強かなぁと。

クリアまで進めたので、面白いと思うのですが、面白くないとも思っています。もう面倒だからクリアして終わりにしよう、そんな感じでクリアしました。

今の所は 2 周目や別キャラ作成をやろうと思わないんですよね。
「このビルドで試してみたい!」と思わせる要素が皆無で、「どんなビルドでも回避とパリィと近接物理攻撃の強制なのでは?」と思ってしまうわけです。

ニコ動でブラボ動画を漁っていますが、今の所は面白いプレイ動画が無いですね。面白い動画が出てくれば、それを参考に気持ちをあらためてブラボをプレイするかもしれません。

2015/12/25

PS4 & Fallout 4 購入

帰宅途中にヨドバシで PS4 を購入し、ただいま Fallout 4 の DL 版を購入して DL が完了した所です。

・・・が、インストールが糞遅い。ナニコレ。
なので、時間潰しにブログを書いています。

Play Go 機能で一部の DL からプレイを開始できるらしいのですが、Fallout 4 は未対応なんですかね。DL は終えているので、それに対応しているのならばプレイできるはずで。しかし、SPECIAL 説明動画が繰り返し流れるだけで何もできません。
色々とネットで調べると、インストール時間は約 30 分と書いている所もあるんですよね。

で、1 時間が経過しましたが、インストール状況は 30%。
いや、幾らなんでもキツイ。
つうか、DL 完了の通知が嘘で、インストール中にも何か DL している・・・のか?

libgdx いじり

Google が提供している Java 版の Tango Examples は Rajawali をベースにしているため、自分が仕事で開発する Tango アプリも Rajawali ベースとしていましたが、最近は libGDX への移行を進めています。一応、要点については移行が...