2019年2月26日火曜日

VoiceoverからAppleScriptを実行して、Macの操作を効率かさせる(基礎編)


MacのVoiceoverには「コマンダー」という便利な機能が用意されています。これはテンキー・キーボードのキー操作やトラックパッドのジェスチャにVoiceoverのコマンドを割り当てて呼び出せる機能です。Voiceoverのキー操作はやや複雑で数も多いため、よく使うコマンドをコマンダーに登録しておくと作業効率がアップします。

ただコマンダーに登録できるのは基本的にVoiceoverコマンドのみ。アプリケーションのショートカットキーなどを割り当てることはできません。せっかくVoiceoverコマンドを省力化できても、アプリケーションの操作が煩雑だと有難味も半減です。

実はVoiceoverのコマンダーには、macOSに標準搭載されているスクリプト言語「AppleScript」のスクリプトを登録して実行することができるのです。つまりショートカットキー操作のスクリプトを作成しておけば、コマンダーからアプリケーションの操作が実現するのです。

ここではAppleScriptを用いてVoiceoverのコマンダーからキー操作を実行する基本的な方法を解説します。


「キーを押す」AppleScriptを書いてみる


ではまず、Voiceoverから呼び出すAppleScriptを作成します。
Macの「アプリケーション」>「ユーティリティ」フォルダの中に「スクリプトエディタ」というアプリがあるので、これを起動します。スクリプトを記述するエディタのウィンドウが開くはずです。開かない場合は「Command + N」を押します。

ではここに「キーを押す」というスクリプトを記述しましょう。
もっともシンプルなスクリプトはこんな感じ。

tell application "System Events"
key code 11
end tell

このスクリプトを実行すると現在アクティブになっているアプリケーションに対して、「B」のキー入力を行います。
「11」が「B」キーに対応するキーコード。キーコードは以下のページから調べることができます。


また修飾キーを併用する場合はこのように記載します。

tell application "System Events"
key code 45 using {command down, shift down}
end tell

この例では「Command + Shift + N」を実行します。
修飾キーの指定は「option」「command」「control」「shift」となります。ショートカットキー操作を実行する場合はこの書式が基本となります。
複数のキー操作を順番に実行することもできます。

tell application "System Events"
key code 126
delay 0.5
key code 17 using {command down, shift down}
end tell

この例ではまず「上矢印」を押し、一拍置いて「Command + Shift + T」を実行します。「Twitterrific」でタイムラインを次々翻訳して読む、という感じですね。

スクリプトが書けたら、名前を付けてスクリプト形式で保存しておきます。スクリプトの名前は、処理内容がわかるようなものにしておくと後々わかりやすくなります。


コマンダーにスクリプトを登録する


作成したAppleScriptをVoiceoverから実行できるようにします。
「VO + F8」を押してVoiceOverユーティリティを開いたら、まず「一般」を選択して「AppleScriptによるVoiceOverの制御を許可」にチェックを入れます。

続いてVoiceoverユーティリティの「コマンダー」を選択します。ここではテンキーコマンダーを例にしますが、もちろんキーボードコマンダーやトラックパッドコマンダーからでも同様に実行可能です。
「テンキー」タブを選択し、AppleScriptを実行するキーの「コマンド」メニューを開いたら「カスタムコマンド」>「AppleScriptスクリプトを実行」の順に開き、先ほど保存しておいたスクリプトを選択しましょう。これで準備は完了です。

あとはテンキーコマンダーをオン(VO + Clear)して設定したキーを押せばスクリプトが実行されます。
初回実行時にセキュリティ警告通知がポップアップするので、ダイアログのガイドに従ってシステム環境設定を開き、「セキュリティとプライバシー」>「プライバシー」>「アクセシビリティ」のリストにある「scrod」にチェックを入れます。この設定を行わないとAppleScriptからキー操作が実行できません。

なおスクリプトエディタでは「Command + R」でスクリプトを即座に実行することができます。動作を試行錯誤しながらスクリプトを書くのに便利ですが、この場合も上記のプライバシー設定に「スクリプトエディタ」を追加してチェックを入れておく必要があります。


一部挙動が怪しいけど、可能性は無限大


至極簡単ですが、VoiceoverからAppleScriptを実行する手順でした。
キーストローク処理だけでも、使ってみるとかなり便利だし作業効率がアップします。本当はコマンダーにキーストロークを直接登録できるといいんですけどね。

ただ一部のアプリでVoiceoverからスクリプトを実行するとVoiceoverの操作ができなくなることがあったり、ちょっと処理が鈍いなどきになることもありました。その辺りは今後の研究課題です。まだAppleScript初心者なもので。

とはいえAppleScriptをマスターすれば、Macの大概の操作を自動化することができるので、応用次第ではVoiceoverでのMac操作がさらに便利になるでしょう。本格的にAppleScriptを学習するなら以下のページがとても役立つはず。もちろん日本語で解説しているページもたくさんあります。


一歩上を目指したいVoiceover使いのMacユーザーさん、ぜひAppleScriptにチャレンジしてみてはいかがでしょうか。
便利なスクリプトを作成したら、ぜひ教えてください。


2019年2月15日金曜日

[随時更新] macOSにおけるVoiceoverの不具合と要改善点。(2019/10/26)


更新日:2019/10/26
確認バージョン:macOS Catalinna 10.15(追加アップデート適用)
確認機種:MacBook Pro Retina Mid 2012(2.9 GHz Intel Core i7、RAM 8GB)

<目次>
1.不具合と思われる現象
2.仕様かもしれないが改善して欲しい点
3.修正された不具合点

※あくまでも筆者が気が付いている範囲です。また筆者の環境に限定した現象も含まれているかもしれません。もし同じような不具合が発生しているようでしたら、ぜひAppleへフィードバックをお願いします。


1.不具合と思われる現象


■(Catalina)インストーラとリカバリモードの読み上げ
macOSインストーラー、及びリカバリーモード(起動時にCommand + ‘R’を押しっぱなし)において、Command+’F5’でVoiceoverを起動しても、音声がEnglishしか選択できず、音声読み上げでほとんどの内容を把握できません。進捗%の数字は読めるのでギリギリインストールの進行状況はわかリマス。
なおリカバリモードでは、ファイルメニューにある言語設定を突き止めることができればEnglishに変更して使用できます。

■(Catalina)ズームとVoiceoverを併用する場合
Voiceoverを有効にした状態でズームをオンにすると、Control+Optionを用いたVoiceover操作ができなくなるようです。CapsLockを用いた操作は可能。
またショートカットキーでズーム倍率を変更しても、Voiceoverがその情報を読み上げなくなりました。

■(Catalina)Safari
一部のテキストフィールドで日本語入力を行うと「選択項目が置き換えられました」と連呼して入力が困難です。Googleの検索フィールドなど
またこれは仕様かもしれませんが、Control+Tabでタブを移動する際、移動前のタブ名を読み上げるため、移動先のタブ情報を読み上げるまで待たされるのがちょっとストレス。
あと、読み込むとフリーズするサイトが増えたような?)Yahoo.comなど)

■読み飛ばす文字列。
特定の文字列を読み飛ばす場合があります。例えば、
お守り=おまもり
また同じ文字列でも特定の条件?で読み飛ばすこともあるみたい?

■デスクトップ移動コマンドの挙動が微妙
「VO+Shift+’D’」でデスクトップに移動できますが、移動してファイルやフォルダを操作しようとすると、別の項目が操作されることがあリマス。
どうやらFinderで開かれている最上位ウィンドウの項目が操作されるようです。改めてCommand+’F1’などでデスクトップに移動して操作する必要があります。

■日本語IMEで変換候補の先頭が読まれない場合がある
たまに読み上げることもありますがほぼ先頭は読み上げません。
これは、もしかしたらMacBookのスペック問題かも。

■テキストエディットで行読みが単語読みになり戻らない
突然、上下矢印キーでの行読みができなくなり、文字挿入カーソルから単語読みして読み上げが止まってしまうことがあります。
(暫定的対処法)Voiceoverのオン/オフ。

■句読点読みを「すべて」に設定しても読まれない文字がある。
左右の鉤括弧など、句読点レベルを「すべて」に設定しても、連続読みで読み上げられない記号・文字がいくつかあります。
試しにCatalinaで追加されたカスタム句読点に読まれない記号を登録してみましたが、読まれたり読まれなかったり、1文字読みができなくなったりと挙動がよくわかりません。
もう少し検証しようと思います。


2.仕様かもしれないけど改善して欲しい点


■「ミュージック及び「Podcast」」起動時に表示されるクイックツアー画面のアクセシビリティが悪い
ボタンのラベル、画像の代替テキストが指定されていない。

■日本語の詳細読みに非対応
アルファベットはフォネティック読みに対応していますが日本語では文字の説明をしてくれません。iOSではできるのに。
(暫定的対処法)再変換機能を使う。
(編集可能なアプリにコピペして文字を選択し「かな」キー2回)

■キーワード検索で日本語が直接入力できない
VO+’F’の検索機能。半角英数しか入力できません。
カスタムラベルや読み方登録は全角に対応しているのでこちらも対応希望。
(暫定的対処法)検索文字列をコピペ。

■キーボードのJIS配列に非対応
ショートカットキーがUS配列を元に割り振られているので、ホットスポットなど一部使いにくい機能があります。
(暫定的対処法)なし。

■英数文字の全角/半角が判別できない。
大文字/小文字はトーンで判別できますが全角/半角は判別する方法が用意されていません。iOSは判別できたはず。
(暫定的対処法)読み辞書に判別できるように登録。または再変換で調べる。

■スピーチ設定の読み上げ言語が固定されていない
VO+Command+Shift+矢印キーでスピーチ設定メニューが開きますが、このメニューのスピーチが現在設定されている声での読み上げになるため、何かのタイミングで声の設定が日本語以外の設定になるとこのメニューも読み上げられなくなります。日本語環境で日本語以外の声を設定してしまうと戻すのが難しくなります。
このメニューの読み上げだけスピーチを固定するか、メニューの言語をスピーチ設定に合わせる必要がありそう。

■「スピーチ消音の切り替え」にショートカットキーが割り当てられていない。
Voiceoverユーティリティからスピーチ消音を設定してしまうと戻すのが難しくなります。
(暫定的対処法)コマンダーに割り当てる。(「スピーチ」に項目あり)

■読み辞書の同期/共有機能が欲しい!
MacとiOSで読み辞書の同期ができたり、読み辞書を他のユーザーと簡単に共有できるようになると便利そうですね。


3.修正された不具合点


■2019/10/24に確認。
文字読みの不具合
アップデートのタイミングではなく、ある瞬間から以下の文字読みの不具合が解消されているようです。どういう仕組みで修正されたのかは不明ですが、ステルスアップデートでVoiceoverの読み方が変更されることは、これまでも確認されているので、そのような処理が施されたと想像されます。

・1文字読みで読み上げられない文字列(読み辞書登録で対処可能)
カタカナ、半角カタカナ、漢数字

・1文字読みで読み上げられない文字列(読み辞書登録で対処できない)
帰宅:帰宅 きたくするのき,
推薦:すいせんするのすい
瀕死:瀕死 ひんしのじゅうしょうのひん

・一部の英単語が日本語で読み上げられる)読み辞書登録で対処可能)
Contacts/れんらくさき、Notes/めも、Calculator/けいさんき、Dictionary/じしょ、table/ひょう


2019年2月6日水曜日

[Mac] VoiceoverでGoogle検索の「検索モード」が操作できない場合の対処法。


このところ、VoiceoverとGoogle検索の相性が良くありません。
たとえばこれは数ヶ月くらい前からだと思うのですが、Web検索結果を見出しジャンプでアクセスする際に「PDF」などのファイル形式を識別しにくくなっています。
具体的には見出しレベル3に設定されているページタイトルの直前にファイル形式が表示されているので、見出しジャンプさせるとその部分をすっ飛ばしてしまい、そのリンクがHTMLかファイルかをすぐには判別できなくなっています。
これはうまく判別できる方法はあるのでしょうか。
あと地味に検索結果のページタイトルとURLがグループ化されているのでURLを知りたいときにVO+Shift+下矢印で操作しなくてはならないのも面倒ですね。

で、ここ数日で気が付いたのが、検索モードの切り替えがうまくいかない現象。
筆者はよくキーワードを入力して検索してから、コンボ・ボックスの下にある「検索モード」のナビゲーション(すべて、ニュース、動画…など)をクリックして目的の情報を絞り込む使い方をするのですが、この検索モードのボタンをVO+スペースで「おす」アクションを実行しても有効にならないのです。
これは困ったなあ。
Safariの問題かと思ってChromeで試してみましたが同じ。もちろん以前はちゃんと押せていたので、何か変更があったのでしょう。
とはいえこのままでは不便なので、対処方法を考えます。
こういう時に頼りになるのがポインタ操作。最近よくお世話になるなあ。

1. 押したい項目にVoiceoverカーソルを合わせる。
2. VO+Command+’F5’でカーソル位置にポインタを合わせる。
3. VO+Shift+スペースでマウスのクリック操作をする。
場合によっては2回そうさが必要かも。

項目によってはポインタのいちを微調整しなければならないかもしれないので、マウスキーの操作も覚えておきましょう。
知っててよかった、Voiceoverのポインタ操作、って感じ。

まあ早くGoogle検索、元に戻って欲しいんですけどねえ。

ひとまずブログを統一します

BloggerがVoiceoverで非常にアクセスしにくくなってしまったため、しばらくはMac関係の記事も メインのブログ にエントリーすることにしました。ブログの切り替えが非常に難しいんですよ。 改善されればまたこちらにもエントリーするかもしれませんが。 よろしくお願いします。