VR用BluetoothリモコンからiPhoneの画面をタップする方法

先日、VRゴーグルを買ったらBluetoothリモコンが付いてきました。
[asin:B06WD6X24N:image]

しかし、なんということでしょう。

このBluetoothリモコン、iPhoneに対してできることといえばミュージックの再生と音量調節くらいじゃありませんか。

タップが出来ないならYouTubeストリートビューも見ながらの操作は無理かー、としばらく放置していたのですが。

頭の動きでSiriを呼び出すという記事を見て、ああそうだ、iPhoneにはスイッチコントロールがあったと。そして探してみると先人はいらっしゃるもので→あるよっ♪ : お手軽に没入VRを体験したい

スイッチコントロールとは、上肢が不自由などの理由によりタップ操作が困難な方が、顔の動きや外部のスイッチによりiPhoneを操作するための機能です。
(参考:スイッチコントロールを使って iPhone、iPad、iPod touch を操作する - Apple サポート (日本)

この外部スイッチとしてリモコンのボタンを登録することでリモコンからのタップを実現しようというわけ。

では、手順を見ていきましょう。設定アプリのスイッチコントロール設定を開きます。設定するのはスイッチコントロールのON/OFF、スイッチ、レシピの3つです。

スイッチの登録

「スイッチ>新しいスイッチを追加>外部」と進みます。

「外部スイッチをアクティベートしてください…」の状態で登録するBluetoothリモコンのボタン*1を押し、スイッチ名を保存します。アクションはレシピ作成時に上書きするので適当に選択。

レシピの設定

「レシピ>新規レシピを作成」と進み「新しいレシピ」画面で好きなレシピ名を入力*2して「スイッチを割り当てる」をタップ。

先ほど登録したスイッチを選択。今回はリモコンのボタンによりタップしたいので「画面中央をタップ」を選択。

スイッチコントロールをオンに

レシピ設定画面で「レシピを起動」をタップして先ほど登録したレシピを選択した後、「スイッチコントロール」をオンにして*3完了です。

先ほど登録したボタンを押して画面中央にタップされたことを表す黒丸が一瞬表示されれば正常に動作しています。

あとがき

この記事ではタップだけ登録しましたが、スワイプやカスタムジェスチャを登録することも可能なので

  • iPadで表示した楽譜をフットスイッチでめくる
  • iPadで表示した電子書籍を布団の中からめくる

など他のことにも使えるかもしれません。

*1:うまくいかない場合、リモコンの@+Bや@+Cで音楽/ビデオモード以外のモードに切り替え、他のボタンを試してみてください。

*2:ソフトウェアキーボードが出ない場合はBluetoothを一旦オフにします。

*3:Assistive Touchとは共存できないので、Assistive Touchをオフにしてからスイッチコントロールをオンにします。

物書堂の国語辞書アプリ比較〜日国vs大辞林vs三国vs新明国

「精選版 日本国語大辞典」が2017/1/31まで7800円→4800円のセールで話題です。

精選版 日本国語大辞典

精選版 日本国語大辞典

  • 物書堂
  • 辞書/辞典/その他
  • ¥8,000
App Storeのレビューには高評価が並んでいます。
その要因として、精選版ながら国語辞書界のラスボス的な日国が採用された点はもちろん、快適な操作性や機能性と手厚いサポートを提供されている物書堂がデベロッパーである点も見逃せません。

続きを読む

Flashcards DeluxeのSiriによるTTS(音声読み上げ)で高品質な他言語音声を追加する方法

Flashcards Deluxe(以下、FCDと省略)は多機能な単語帳アプリですが、中でもTTS(Text to Speech、音声読み上げ)は目玉機能の一つです。

Flashcards Deluxe

Flashcards Deluxe

  • OrangeOrApple.com
  • 教育
  • ¥490

TTSを使えば単語帳のカードのテキストを元にして自動的に音声を付加できるため、特に外国語学習に威力を発揮します。

かつては音声データをダウンロードする手法のみが取られていましたが、iOS純正の読み上げ機能も使用出来るようになってからは、カードの修正の度にダウンロードし直す必要もなくなりました。

まずはFCDのカードにTTSを適用する方法から。

カードを表示させた状態の右上の設定ボタンよりDeck Options→Sound→Text to Speech (TTS)→Voice (音声を付加したい面の番号)と進んで使用したい音声を選択します。

▽音声選択画面*1*2

▽選択したボイスはデッキ中のカード全てに適用され、カードをめくると出てくる再生ボタンを押すと発音してくれます。

デフォルトでも多種多様な言語と音声が用意されていますが、追加もできるのです。

▽設定アプリより一般→アクセシビリティ→視覚サポート→Voice Over→スピーチと進み「ローターで選択可能な言語」より音声を追加したい言語を選択します。無ければ「新しい言語を追加…」より追加します。

▽対象の言語の中で試したい音声を見つけたら右の雲ボタンを押すとダウンロードされます。ダウンロードが完了したら再生ボタンで音声を確認しましょう。*3
カッコつきで拡張とあるのは高品質音声です。


▽設定アプリでの追加が終わったらFCDのTTS設定画面を開き直します。設定アプリで追加した音声が選択可能になっているはずです。

ちなみにTTS設定画面の中で現行のSiriは、日本語だと男声はHattori、女声はO-ren。アメリカ英語だと男声はAaron、女声はNickyです。迷ったらこれらを(アメリカ英語は拡張(=Enhanced)を利用して)使用すると聞き取りやすいでしょう。

あとがき

以上、FCDのヘルプに書いてあったことを元に解説してみました。もっとFCD使いが増えればいいな。

*1:上部のiSpeechと下部のSiriでブロックに分かれていますが、ここではSiriブロックにある音声を選択します。

*2:ボタンの配置や背景や文字色をカスタマイズしてますが操作順序は同じです

*3:声が微妙だったらフリックして削除しましょう。

YouTubeフィルタ検索URLジェネレータ

フィルタやソートを選択すると、それらを指定した時のYouTube検索URLが下部に表示されます。*1


キーワード

アップロード日

タイプ

時間

特徴

並べ替え


*1:モバイル版ではフィルタの内容を表示してくれませんが、アップロード日と並び替え以外は検索結果に反映されると思います。

テーブルを表示するHandyFlowyスクリプトConv2table

WorkFlowyは基本的に一対多の親子関係を表現します。
多対多の関係を表現したいときは、テーブルの方が適しているでしょう。

また、WorkFlowyでは画像を表示可能。
Get WorkFlowy Inline Images out of your System in 2016 – Workflowy
であれば、テーブルだって表示できるはずです。

と考えてHandyFlowyスクリプトを作りました。

HandyFlowy

HandyFlowy

  • Michinari YAMAMOTO
  • 仕事効率化
  • 無料

"@table"が1行目に記述されているノートに対し、2行目以降をテーブルに変換してノートの直上に描画します。
区切り文字は","で。変換はリアルタイムに行われます。

Conv2tableをMemoFlowy経由で登録

function do_parseTbl() {
    $(this).prevAll(".content-tbl").remove();
    var lines = $(this).text().split("\n");
    if ( !/@table/.test(lines[0]) ) return;
    var tbl = '';
    for (var i = 1; i < lines.length; i++) {
        var line = lines[i];
        if (line == '') continue;
        var td = i==1 ? 'th' : 'td';
        tbl += '<tr><' + td + '>';
        tbl += line.split(',').join('</' + td + '><' + td + '>');
        tbl += '</' + td + '></tr>';
    }
    tbl = '<table class="content-tbl">' + tbl + '</table>';
    $(this).before(tbl);
}

function parseTbl() {
    $("div.notes div.content").bind("DOMSubtreeModified", do_parseTbl);
    $("div.notes div.content").each(do_parseTbl);
    $("#expandButton,parentArrow").live("click", function() {
        $("div.notes div.content").each(do_parseTbl);
    });
};

$(window).bind("load hashchange", parseTbl);

var stylesheet = document.styleSheets.item(0);
stylesheet.insertRule(" .content-tbl td,.content-tbl th { border:1px #777 solid;padding:5px; font-size:13px; } ", stylesheet.cssRules.length);

parseTbl();

※2016.05.28 スマホ版の折り畳みボタンタップ時も表示されるように修正

HandyFlowyで日本語タグも一覧表示するTagListUni

こちらのTagListスクリプトのカスタマイズ版です。
d.hatena.ne.jp

HandyFlowy

HandyFlowy

  • Michinari YAMAMOTO
  • 仕事効率化
  • 無料

TagListUniではTagListから以下の箇所を変更しました。
・日本語(含むUnicode)タグも表示されるようにした
・縦方向のリストでなく羅列する形式にした
・文字の大きさのlarge指定をなくし普通の文字サイズにした

使い方はTagListと同じですのでTagListの記事を参照ください。

TagListUniをMemoFlowy経由で登録

url="https://workflowy.com/get_initialization_data";
q=new XMLHttpRequest();
q.open("get",url,false);
q.send(null);
data=q.responseText;
data = data.replace(/((?:\\\\)*)\\(u[0-9a-f]{4})/g, function(arg0,arg1,arg2){return arg1+"%"+arg2});
data=unescape(data);
list=new Array();
tag="@";
for(k=0;k<2;k++){
  d=data.split(tag);
  for(i=1;i<d.length;i++){
    s=d[i].split(" ")[0].split("\"")[0].split("\\")[0];
    if(s && !/[;{)\/\+]/.test(s) && list.indexOf(tag+s)==-1) list.push(tag+s);
  }
  tag="#";
}
list.sort();

listwidth=320;
listleft=(window.innerWidth-listwidth)/2;
html="";
for(i=0;i<list.length;i++){
  html+="<div onclick=Select("+i+") style=padding:5px;overflow:hidden;white-space:nowrap;display:inline-block;>"+list[i]+"</div>";
}

e=document.createElement("div");
e.innerHTML=html;
e.style.cssText="color:black;background:beige;font-family:Hiragino Sans;font-weight:bold;position:fixed;overflow:scroll;text-align:left;height:72%;top:14%;left:"+listleft+"px;width:"+listwidth+"px;z-index:99;border:1px white solid;box-shadow:5px 5px 5px 5px rgba(0,0,0,0.2);";
document.body.appendChild(e);

function Select(x){
  document.body.removeChild(e);
  location="https://workflowy.com/#/?q="+list[x].replace(/#/,"%23");
}

XMLHttpRequestを使わずdocument_view.js内で使われている関数などを使って実装すれば、タグの正確な抽出と高速化ができそうですが、処理の流れを追いきれませんでした。

あとがき

機能拡張スクリプトライブラリ作成計画、良さそうですね。

スクリプトのインポート自体にリスクがある上、MemoFlowy経由のインポートは敷居が高かったり手間取ったりするので、審査済みのスクリプトライブラリからワンタップインポートできたら安全性も利便性も高まりそうです。

ライブラリへの掲載や記事へのリンクの許可については、今のところwineroses氏のコバンザメスクリプトしか作れていないので、右に倣います。