2014-12-14

EPSON BT-200AV と BD プレーヤーで BD/DVD を楽しむ

エプソンからスマートグラス MOVERIO BT-200AV をモニターで借りている (see. clmemo@aka: EPSON のスマートグラス MOVERIO ブロガー・ミーティングに参加した)。前回の記事で Android の画面を Miracast で転送して MOVERIO BT-200 に映し出すやり方を紹介した。YouTube やニコニコ動画が楽しめる。

今回は、オーディオも豪華にして映画を楽しんでみたい。

EPSON MOVERIO BT-200AV

前回は EPSON MOVERIO BT-200 でやれることだけを書いた。今回は BT-200AV (今、モニターで借りているモノ) を使ってやれることを書く。

BT-200 と BT-200AV の違いは何か。スマートグラス本体に違いはない。違いは付属品にある。BT-200AV には Wireless Mirroring Adapter EHDMC10 という機器が付く。

Wireless Mirroring Adapter EHDMC10

EHDMC10 を使うと HDMI からの入力を MOVERIO BT-200 へ Miracast 転送することができる! (MOVERIO BT-200 の画面を HDMI 出力することもできるけど、その話はしない)。

背面を見てみよう。

HDMI の 入力 (INPUT) と出力 (OUTPUT)、リセット・ボタン、そして電源給供用の Micro USB 端子がある。今回使うのは、電源給供の Micro USB と HDMI INPUT だけ。

写真を撮るのに、傾ける台が欲しかったので BT-200 を下に敷いた。何か、コレ、エンタープライズ号みたいね。ウン、スター・トレックが見たくなった。というわけで、観る映画は「スター・トレック」に決定。

接続

では BD/DVD を楽しむ用意をしよう。BD プレーヤー Marantz BD8002 から HDMI で映像を、デジタル出力で音声を分岐させる。図にするとこんな感じ。

Primare I30, Stellavox PW1 はアンプ。Bösendorfer VC2 はスピーカー。これで映像はスマートグラス、音声はオーディオという図式が完成。

Marantz BD8002 から HDMI ケーブルを伸ばして、EHDMC10 の HDMI INPUT に挿し込む。電源を入れて準備 OK。

設定

設定方法は、前記事をなぞってしまうけど、改めて書いておく。

  1. MOVERIO BT-200 で MOVERIO Mirror アプリを起動
  2. MOVERIO Mirror アプリで「Source」を選択
  3. 「接続機器」を選択
  4. 「Wi-Fi Direct」にチェックを入れる
  5. バックボタンで「接続機器」の画面へ戻る
  6. BD プレーヤーを ON にする
  7. EHDMC10 の「Wireless/Pass-Thru」ボタンを押す
  8. 「Wireless Ready」ランプの点滅が点灯になったら準備 OK
  9. EHDMC10 の「Wireless Connect」ボタンを押す
  10. 「Link」ランプの点滅が点灯になったら準備 OK
  11. BT-200 側に接続のポップアップが現れるので「OK」を選択
  12. BD プレーヤーの画面が映る (まで待つ)

鑑賞

ではスター・トレックを BD プレーヤーで再生してみる (ぼくが持ってるのは残念なことに DVD 版。う〜ん、BD 版を買えば良かった)。

部屋を暗くして寝っころがって見る。横幅 100 cm くらいだったから、16:9 のディスプレイでいうと 45 インチ。うちの部屋に置くには厳しいサイズ。それが目の前に写し出される。イイネ。

オープニングは息つくひまがない。宇宙がきれい。外壁が割けて、人が外に放り出されるシーンの光の明滅とか美しい。ああ、ラスト近く。エンタープライズ号が雲の中から木星をバックに浮き上がるシーンは何とも言えない。このシーン大好き。

BD や DVD の「緻密さ=美しさ」ではなく、ひと昔前の映画館の美しさって感じ。

映像のスムーズさだけど、これはちょっとカクつく。無線だから仕方ないのかなぁ? 動きが早いシーンだけでカクつくわけじゃない。動きが遅いシーンでもカクつく。動きが早いシーンだからといっても、カクつかない時はカクつかない。法則性が見つけられない。頻度はソコソコ。

気になるかと聞かれると... ウーン。「スター・トレック」は何度も見ているので、カクつかれてもあんまし気にならないけど、初めて見る映画で (特に重要な場面で) カクつきがあったら嫌かも。

あとがき

オーディオと連携させて、MOVERIO BT-200AV を使ってみた。大画面 x 高音質を楽しむ方法。ぼくは BD プレーヤーしか持っていないので試せなかったけど、AV アンプを持っていれば Apple TV や Chromecast を使って Hulu といったコンテンツも「大画面 x 高音質」な再生が可能。

プロジェクターや巨大テレビがなくとも、大画面が楽しめるのは心踊る。

2014-12-13

Nexus 7 (2013) + Android 5.0 (Lollipop) + EPSON BT-200 で Miracast を楽しむ

エプソンからスマートグラス BT-200 をモニターで借りている。

イベント終了ののち、帰宅して一番最初に試したのは Nexus 7 (2013) の画面を MOVERIO BT-200 にミラーリングすることだった。タブレットの画面を TV に表示する機能では、Apple (iPhone や iPad から) の AirPlay や Google Chromecast が有名。

Google Chromecast ( クロームキャスト )  Wi-Fi経由 テレビ接続 ストリーミング / HDMI / 802.11b/g/n / 1080p ) GA3A00035A16

MOVERIO BT-200 は Miracast という方式をサポートしている。AirPlay や Chromecast の名前に隠れがちだけど、これ、Apple や Google の独自規格ではなく、Wi-Fi Alliance によって策定された、ちゃんとした国際規格。

iPhone, iPad は Miracast 規格に対応していないけど、Android はバージョン 4 系から Miracast に対応していた。ぼくがこの記事で Nexus 7 の後ろに (2013) と入れてるのには理由がある。というのも、Nexus 7 (2012) は Miracast に対応していない!! ぼくの記憶では、Nexus 7 (2012) が日本で発売された頃、Android も最新 OS が同時にリリースされて、それが Miracast 対応していると聞き嬉んだ。ところが、Nexus 7 (2012) が Miracast 対応してなくて臍を噛んだ覚えがある (see. clmemo@aka: Miracast 対応アダプタ PTV3000 〜 Android でも AirPlay みたいなことがしたい)。

Nexus 7 (2013) は Miracast 対応していたのだけど、今度は Miracast を使って画面を映し出す「送り出し先」に興味を覚えなくなってしまった。

そこで現れたのが、EPSON MOVERIO BT-200。

Nexus 7 (2013) も MOVERIO BT-200 も Miracast 対応している。これは楽しむしかないじゃない!!

設定

Nexus 7 (2013) x Lollipop は Wi-Fi と Bluetooth を ON にしておく。

MOVERIO BT-200 を起動したら、アプリ一覧から「MOVERIO Mirror」アプリを開く。

W-Fi Direct の操作を開始します。これによりWi-Fi クライアント/アクセスポイントの操作が OFF になります。

と出てくるので「OK」。

MOVERIO Mirro アプリが起動するので「Source」を選択。

続けて「接続機器」を選択。すると、Android の設定画面へ遷移する。

ここで「接続とネットワーク > その他」から「Wi-Fi Direct」の項目を出して、チェックを入れる。この時、「Wi-Fi Direct」の下に MOVERIO BT-200 の ID が表示されるので覚えておく。

最後に MOVERIO の手元スイッチで「バックボタン」を押す。「接続機器」が「接続されていません」と表示されているはず。

次は Nexus 7 (2013) の設定。設定画面を開いて、「ディスプレイ > 画面のキャスト」を選択。「ワイヤレスディスプレイ」として、先ほどの MOVERIO BT-200 の ID が見えるかな?

これを選択すると、MOVERIO 側で Nexus 7 (2013) から画面共有したいというリクエストがあったとポップアップが現れるので「OK」と答える。十数秒待つと MOVERIO BT-200 に Nexus 7 (2013) の画面が現れる!! ヤッタネ。

Miracast を使って YouTube を見る!

手元の Nexus 7 (2013) の画面が表示されている。MOVERIO には YouTube アプリが入っていなかった (ブラウザーから youtube.com より動画を見ることは可能)。Nexus 7 (2013) の YouTube アプリから視聴履歴を見る。手元のタブレットで操作できるので、使い勝手がいい。やはり使い慣れてる分、操作が思う様に進む。動画の再生が始まったら、タブレットを置いて MOVERIO BT-200 に集中。

遠くの壁を見たり、ひっくり返って天井を見ると、より大画面が楽しめる。

タブレットを操作中、MOVERIO BT-200 を付けていても気にならない。透過式の面目躍如といったところか。ちょっとした作業なら、MOVERIO BT-200 を付けたままでも「映ってる画面が気にならない」というか、「気にしないで済む」。これは大きい。タブレットの操作が終わったら、画面が見やすい方向に顔を向けて、意識を「タブレット」から「スマートグラス」に切り替えるだけ。いちいちスマートグラスを着けたり外したりといった手間はいらない。

Nexus 7 (2013) からはニコニコ動画アプリでニコニコ動画を見たり、Nexus 7 (2013) に入っている動画を Nexus 7 (2013) に入れている動画再生アプリで再生することもできる。

操作性

MOVERIO BT-200 の操作性は「スマートグラス」という分野では「考えられている」と思った。タップパッドを使って PC のマウスを操作する感覚で Android 実機である MOVERIO BT-200 を操作する。アイデアは良い。

残念な点を言えば、「タップパッドで PC を操作する」ことより「タブレットを直接手で操作する」方が使いやすいこと。

では、他にやりようがあったのかと言われると何も思い浮かばない。

というわけで、手元の Android スマホやタブレットが Miracast に対応しているなら、(最初のセッティングに一手間かけるけど) ぜひ使い勝手の良さを試して欲しい。MOVERIO BT-200 がより楽しくなることを保証する。これは面白いよ。

画質

画質はそんなに高くない。今、出回っているスマホやタブレットは Retina ディスプレイを先駆けとした高解像度が主力。

Full HD 動画を 20 インチそこそこの小さなディスプレイで見ている「目」には、大画面で映し出された低解像度な画面が粗く感じる。

これは大画面を楽しむか、高画質を楽しむか、の割り切りになってくると思う。もう一つ言えば、さっき MOVERIO BT-200 をかけたままタブレットを操作した、と書いた通り、デュアル・ディスプレイの新しい形として掴えるのも面白い。

なお、Miracast で飛ばした動画はほんの少しだけどカクついた。これは無線環境に寄る所も大きい。Wi-Fi ルーターを買い換えたいと思っているし、MOVERIO の無線技術もまだまだスペック的に向上の余地があると思うので今後に期待したいところ。

最後に...

大画面で動画を見るなら、音楽はオーディオで聴きたい... と思ったけど、そうは問屋がおろさなかった。つまり、Android の動画を Miracast で MOVERIO BT-200 へ、音声を Bluetooth でオーディオにつなごうと目論んだ。でも、Nexus 7 (2013) は Miracast と Bluetooth の両方を扱うことは出来ないみたい。両方繋ごうとしたら、片方の接続が切れちゃった。残念。

2014-12-10

Android 用 ChatWork アプリ、新バージョンがリリース

先日、私的プロジェクトで ChatWorkEmacs クライアントを開発・紹介した (see also. clmemo@aka: ChatWork に入社しました)。

今日 (2014-12-10, Wed) は公式プロジェクトのお話。

チャットワークの Android アプリがメジャー・バージョンアップした。開発プロジェクト名 The Shard。バージョンは 3.0。

これは Titanium で作られていた前プロジェクトを、(Android 本格の開発言語である) Java で書き直したもの。メリットとして、次の様な事柄が上げられる:

  • 最新 Android OS への追従コスト削減
  • Android 用に提供されているライブラリーの利用
  • iOS アプリと分離することによる新機能追加・バグ修正の独立・開発サイクル短縮

ChatWork for Android 3.0 ウォークスルー

新しい ChatWork アプリは Material Design を採用して UI 構築されている。

簡単に新しくなった ChatWork アプリをウォークスルーしてみる。

まずはチャットルーム一覧。虫めがねマークをタップすると、チャット名をインクリメンタル検索できる。スクリーンショットでは「chat」と入力した。すると、会社名に「chat」が入ってる人達のチャットルームが表示された。ルームの検索が楽にできる。

ChatWork 3.0.3

左上のアイコンをタップすると、サイドバーが現れる。サイドバーの中身は、チャット・タスク・コンタクトそして設定。

Sidebar

一足先に「設定」を見てみる。うん、バージョンは 3.0.3。最新版! ちなみに「ChatWork について」をタップすると、アプリで使っているオープンソース・ライブラリーのライセンス一覧が表示される。気づいてた?

Settings

チャットからルームを選択するとタイムラインが表示される。表示が前バージョンより高速化されたはず。初回だけ読み込みが遅い時があるかもしれない。その時は、バック・ボタンで戻って再表示。う〜ん、コレ、再現性があるのかないのかよく分からなくて困ってる。

Timeline

ちなみに、チャットのタイムラインで画面を右にスワイプすると、その「チャットルーム」のタスク、そしてその「チャットルーム」のファイルを見ることができる。

自分に振られたタスクを全部見る場合は、サイドバーを開いて「タスク」を選択。おっと、この画面はぼくの個人アカウントなんで未完了タスクは一つだけ。

Task

という感じで、新しくなった ChatWork アプリをウォークスルーしてみた。

ぼくは、iOS アプリの開発を進めていて、この Android アプリについてはバグ出しテスターな役割くらいしか関わっていない。でも、自分の Nexus 7 で会社のチャットを見たりするために Android アプリは使ってた。いわゆる、ドッグフードを食べる (自社サービスを使う) ってやつだけど、日に日に使い勝手が良くなっていったのを実感した。

新バージョンの ChatWork for Android 3.0 (The Shard) を楽しんで頂けたら幸い。

Android 5.0 のマルチ・アカウントで Google Play ストア以外のアプリがインストールできない

タイトルに書いてある通り。Android 5.0 (正確には 5.0.1) にアップデートしてから、「所有者」以外のアカウントで「提供元が Google Play ストア以外のアプリのインストール」ができなくなった (Nexus 7 2013)。

「設定 > ユーザー設定 > セキュリティ」を選ぶと、「提供元不明のアプリ」という設定項目があって、これをオンにすると、Play ストア以外からアプリをインストールできる。ところが、所有者以外のアカウントで、この項目を見るとグレイアウトしてしまって、選択そのものができない。

ぼくは個人アカウントを「所有者」にして、会社のアカウントを追加している。会社のアカウントで、テスト用のアプリを入れたりしてるんだけど、これで「Play ストア以外のアプリ」をインストールできないのはつらいなぁ。Play ストアへ申請する前のアプリ検証をやるのが目的なんだからさ。

どこか設定し忘れているのかな? それとも、所有者以外はこのオプションを ON に出来ないのかな? 追加アカウントを「所有者」とほぼ同等の権限にするとか出来ないのかしらん。

Android 5.0 は昨日から使い始めたばかりで、よく分からない。分からないなりに調べてみたけど、検索にこの手の情報が引っかからない。Android 4.4 の頃は出来た。そういう情報は沢山転がってるんだけど、それは分かってるんだよね。問題は Android 5.0 (Lollipop) でどうなのか? ってこと。

誰か情報をお持ちでしたら、教えください。

Android 5.0.1 Lollipop が Nexus 7 (2013) にやってきた

2014-12-09 の夜、ようやくぼくの Nexus 7 (2013) にも Android 5.0 (Lollipop) がやってきた。

バージョン番号は既に 5.0.1 だったけど!!

Android 5.0 has come!

アップデートに 30 分くらい... かな? お風呂に入ってる間にアップデートが終わってた。

デザインがスッキリしてて良いね。今まで、一部のアプリが Material Design 化されてたけど、OS 全体が Material Design 化するとスマートさが際立つ。

Android 5.0.1

バック、ホーム、アプリ一覧ボタンが三角・丸・四角ボタンに変更されたのを見て、Android 5.0 だなぁと感概深い。

今日から Android 5.0 で遊んでいきたい!!

2014-12-09

git で merge 用のブランチを作る利点

master ブランチから大きく fork したトピック・ブランチを master へマージする時のお話。

小さな変更 (数日分) ならまだしも、数週間・数か月近くブランチが分岐したままだと、merge はどこかで conflict する。そこで力技に走っている人を見かけたので、アドバイスした。

merge 専用のブランチを作りなさいよ。

$ git branch
* big-change
  master

例えばこんな風に bag-change branch がある場合、直接、merge は行なわない (トラブルが起きないなら、直接 merge しても構わないと思うけど)。

$ git checkout master
$ git merge big-change

代わりに一回 merge 用の branch を作ってそこで conflict 解消の作業を進める。

$ git checkout master
$ git checkout -b merge-big-change
$ git merge big-change

こうしておけば、merge-big-change branch で取り返しの付かない失敗をしてもブランチを削除すればいいだけだし、master ブランチも big-change ブランチも綺麗なままなので、修正を加えることもできる。

一番好ましくないのは、conflict を起こして、その間 master も big-change ブランチもコンパイルが通らない (もしくはテストが通らない) 状況が続くこと。

意外と、こうやって「作業」を分割して、リスクを下げることに無頓着な人がいるのでエントリーにしてみた。まあ、それだけ git という VCS というか、ワークフローが磨かれて、泥臭い作業に直面する機会が減ったということなのかもしれない。

2014-12-08

空白を含む引数を bash script に渡す

空白混じりの引数を受け取る、bash script の書き方。先日までは引数の「渡し方」を書いてたけど、今回は空白混じりの引数を「渡される側」について。

例えば bash script が 2 つあったとする: a.sh と b.sh

a.sh は b.sh を呼び出す。

#! /bin/bash

token=foo
name="Ludwig van Beethoven"

bash b.sh $taken $name

b.sh は引数を受け取って処理を行なう。例えば、こんなコード

#! /bin/bash

option='-foo -bar'
token=$1
name=$2

some-command $option $token $name

この時、変数 name には二番目の引数が入る。a.sh で渡す「二番目」の引数は "Ludvig van Beethoven" なので、変数 name にもその値が入っていることを期待したくなるけど、実は "Ludvig" という値しか入っていない。引数 "Ludvig van Beethoven" は空白で分割されて 3 つの引数になってしまう。

今回の b.sh の例だと、$3, $4 に "van" と "Beethoven" が入る。

これは嬉しいくない。そこで、変数 $* を使う。すると、空白を含む引数をひと固まりに扱うことができる。引数が 2 つある (今回の様な) 場合なら、shift を使うとスマートにコードが書ける。

#! /bin/bash

option='-foo -bar'
token=$1
shift
name=$*

some-command $option $token "$name"

some-command に渡す引数は一応 "" で囲んでおく方が安全。

あとがき

shell は「空白」を引数の区切りにするので、ハマりやすい。というか、実際にハマりまくったので、メモとして残しておく。

2014-12-05

空白を含む path を bash 変数にして cd する

昨日の続き。

path に空白が含まれていることがある。純粋な Unix 系のディレクトリー構成では見られないけど、Windows や Mac だとタマに... 有名な所では Windows の Program Files とか、Mac の ~/Library/Application Support/ とか。

コマンドライン派の人間が好んで「空白を含む」ディレクトリーを作ることはないので、他人のソースを扱う時や、開発環境が元からそういう仕様だったりして悩まされるかな。

これも、.bashrc に変数として保存できれば楽なんだけど事は楽に進まない。

foodir="/path/to/dir with space"

上の様に「dir with space」という空白入りのディレクトリーに移動したいとする。

そこで変数を使って cd しようとするとエラーになる。

$ cd $foodir
bash: cd: dir: No such file or directory

dir というディレクトリーはないと怒られた。実は変数が渡される時、bash shell によってスペースが「引数の区切り」になってしまっている。この場合、$foodir/path/to/dir with space に展開された後、cd コマンドに /path/to/dirwithspace の 3 つの引数が渡されてしまっている。本当は一つの引数として渡したいのに...

解決策は泥臭いけど、変数を " で囲む。

$ cd "$foodir"

コマンドラインから空白入り path へ移動するのは面倒なので、少し面倒でも助かる。

shell script を作ってる時でも、同じトラブルは起きる。むしろ、shell script でハマる時の方が重症かもね。

2014-12-04

dir path を bash 変数に入れて、dir alias にしている

bash の変数に Directory Path を設定して、cd コマンドでの移動に役立ててる。

例えば、こんな感じ

$ cat .bashrc | grep blog
blog="$HOME/Documents/blog/"

で、コマンドラインからは次のように使う。

$ cd $blog

ぼくはコマンドラインから git コマンドを直接叩くことも多いので、この手の変数を用意している。移動が楽になって便利。特にプログラム・ソースを深い階層に置いていても、移動が一発なので助かってる。

Mac で Emacs.app をターミナルから開く

先日、Mac 用に Emacs をコンパイルした。それは今、/Application/Emacs.app に置いてある。

今まで Emacs.app を起動するのに Finder から Emacs.app を選択していたのだけど、CUI が好きなぼくは面倒になってしまった。で、.bashrc に次のコードを入れて Terminal から起動できるようにした。

alias emacs='open /Applications/Emacs.app'

これでターミナルから emacs で起動できるようになった。快適。