NVDA 日本語版の設定

すごい広島#23に参加して、NVDA 日本語版チュートリアル(導入から入力ヘルプまで)の続きを書きました。

(2) NVDA 日本語版の設定

NVDA を使うときに知っておくとよい設定を紹介します。

以下、NVDA制御キーはInsertや無変換キーなど、「ようこそ画面」で説明されたキーを使います。
ここでは NVDA 制御キーを押しながら N を押すことを NVDA+N のように表記します。

NVDA+N を押すと NVDA メニューが開きます。
下矢印キーを1回押すと「設定」という項目にフォーカスが移動します。

nvda-menu-01

このメニュー項目にはサブメニューがあるので、右矢印キーを押すと「一般設定」という項目にフォーカスが移動します。

nvda-menu-03

下矢印を何度か押して「キーボード設定」を見つけて、Enter キーを押してください。
「キーボード設定」ダイアログが開きます。

nvda-menu-04

nvda-menu-05

ダイアログの最初の項目にフォーカスが移動して、
「キーボードレイアウト(K) コンボボックス デスクトップ クローズ Alt+k」
と読み上げられます。

このチュートリアルでは「ラップトップ」配列を使うので、選択項目を変えてみます。

下矢印キーを押すと「ラップトップ」と読み上げます。
この状態でEnterキーを押すと選択項目が保存されますが、Escキーを押すと選択の変更がキャンセルされて設定は「デスクトップ」のままになります。
しかし、選択を保存する前に、もう少し「コンボボックス」の操作を確認しましょう。

「ラップトップ」に選択項目が変更された状態で、さらに下矢印キーを押すと、何も読み上げされません。これは、さらに下にはもう選択肢がないことを意味します。
逆に、上矢印キーを押すと「デスクトップ」に戻り、さらに上矢印キーを押すと、何も読み上げません。これは、さらに上にはもう選択肢がないことを意味します。
つまり、このコンボボックスには2個の選択肢だけがあるわけです。

コンボボックスには折り畳まれた(クローズ、閉じている)状態と展開された(オープン、開いている)状態があります。
マウスやタッチの操作ではコンボボックスを展開して選択肢の一覧を確認してから項目を選べますが、キーボードではコンボボックスが折り畳まれた状態のまま矢印キーで操作できます。
NVDA+Tabキーで、現在のコンボボックスの状態を確認できます。

コンボボックスの状態の説明でAlt+kと読み上げていましたが、これはアクセラレーターキーと呼ばれる操作方法のヒントです。
Tabキーでひとつずつ移動する代わりに、ダイアログボックスの中の項目にジャンプしたりチェック状態の変更ができるのですが、慣れるまでは覚えなくてもかまいません。

ダイアログボックスの項目は Tab キーで移動できますが、この順番はソフトウェアの開発者が決めた順番です。ふつうは画面の上から下、左から右に決められています。そろそろ Shift+Tab キーで逆方向に移動できることを覚えると、行き過ぎたときに戻ることができるし、先頭の項目から一番最後の項目に移動するときにも便利です。

読み上げの中止は Ctrl キーで、中断は Shift キーでできます。
中断したあとでShiftキーをもう一度押すと、続きを読み上げます。

ラップトップレイアウトを選択してEnterキーを押すか、フォーカスをOKボタンに移動してスペースキーを押しておいてください。

今度はNVDAメニューから設定「音声設定」を確認していきます。

nvda-menu-06

nvda-menu-07

「速さ」などは「スライダー」という形式の項目で、数値を視覚的に表現して、値を変更できるようになっています。
スライダーという名前のとおり、マウスでつまみをスライドするような操作ができるのですが、キーボードでも操作できます。
キーボードでは左右または上下矢印キーやPage Up, Page Downキーで値を増やしり減らしたりできます。EndキーとHomeキーで最小値や最大値に変えることもできます。
キーを押すたびに数値を読み上げます。
この音声設定のスライダーでは、変更した結果がどんな音声になるのかを確認しながら操作できます。

コンボボックスの「記号読み上げレベル」は読み上げる情報に含まれる句読点やカンマ、ピリオド、カッコなどの読み上げかたの指定です。

記号読み上げレベルを「読まない」にしたら、比較のためにNVDAメニューからヘルプ「ようこそ画面」を開いてみてください。
設定によって例えば「NVDAへようこそ」のあとの「感嘆符」を読んだり読まなかったりすると思います。
記号読み上げレベルは NVDA+P でも変更できます。

NVDAメニューから設定「オブジェクト設定」で「オブジェクトのショートカットキーの通知」をチェックなしにすると、アクセラレーターキーを読み上げなくなるので、説明がすっきりします。

nvda-menu-08

nvda-menu-09

繰り返しの説明になりますが、チェックとチェックなしの状態を切り替えるにはスペースキーを押します。

備考:2013年10月24日 画面キャプチャーを追加しました。

NVDA 日本語版の導入から入力ヘルプまで

広島のエンジニアやウェブデザイナーの活動 すごい広島 #20 に参加して、私の NVDA 講習会の資料を、文章にしてみました。

いままでメモ程度に書いていたものの、ちゃんとしたチュートリアル版です。3時間かかって(1)を書くのがせいいっぱいだったので、(2)と(3)は次の機会に書きます。
公開したあとで画面キャプチャーを追加して加筆しました(10月3日 0時20分)。
“NVDA 日本語版の導入から入力ヘルプまで” の続きを読む

NVDA 2013.2jp の公開と OSC 広島(10月6日)など

8月17日の「NVDAワールド2013横浜」を終えて、あっという間に1か月が過ぎました。
開催の記録ページから録画などをご覧になれます。
NVDA日本語チームのWebサイトでは写真を公開しています。

NVDA日本語チームが行ってきたSkype会議は9月からSkype交流会として運営方法を改めました。

9月13日にNVDA日本語版2013.2jpを公開しました。
ダウンロードは i.nvda.jp から可能です。詳しくは NVDA 日本語版のサイト をご覧ください。

10月6日(日曜)には広島市中区のサテライトキャンパス広島(広島県民文化センター)で開催されるオープンソースカンファレンス2013Hiroshimaに、「NVDAユーザ会広島」として参加します。
13時00分からセミナーで登壇します。
事前申し込み受付中です。
ブースでの紹介もさせていただきます。(展示は16時終了です)

8月のイベントでもお話しましたが、NVDA本家版はこれから1年間に4回のリリースを確実に行っていこうとして、システムがいろいろ見直されました。

このバージョンアップに、日本語チームが継続的に参加することは、日本語独自版を継続してリリースする土台を作るために、大事なことです。
去年から海外のNVDA関係者といろいろ交流してきましたが、多くの国や言語で、私のような晴眼者ではなく、NVDAを必要としているユーザーたちが、NVDAの発展を支えています。

日本で NVDA ユーザー自身が NVDA の翻訳を担当してくださる状態を作ることは、日本のNVDAコミュニティを世界の常識に合わせる(本当は「戻す」なのですが)ためにも、私が次のステップの活動に専念するためにも、必要と思っています。

他の国では、ひとつの言語について翻訳チームの担当者が2人か3人いて、ユーザーインターフェースの po ファイルを翻訳する人、ユーザーガイドを担当する人、新機能 (changes) を担当する人、といった感じで分担をすることが多いようです。
このように分担ができれば、1年に4回バージョンアップしても、1人の負担は小さくなります。

そのような体制をつくるために人材の育成が必要と思いはじめました。
いわば「NVDA 翻訳者養成塾」を開くことを考えています。
日本のNVDAユーザーに「英語」「バージョン管理ツール」「テキストエディタと poedit の操作」のスキルを持っていただくために何ができるのか、具体的に考え始めています。

10月6日の OSC 広島は、この「NVDA 翻訳者養成塾」についてお話をする最初の機会だと思い、出展内容のキーワードを「デスクトップ」「翻訳」「教育」にしました。
皆様のご来場をお待ちしています。よろしくお願いします。

すごい広島 #4 で Twitter API の勉強

すごい広島とは 広島のエンジニアやウェブデザイナーが毎週集まって、 もくもくしたり Hackしたり 読書したり する場所です。

ということで、今週は第4回でした。

NVDA の作業をしようかと思ったのですが、たまたま Twitter API 1.0 が今日終了したということで、あちこちでソフトやサービスが動かなくなったという話を聞き、久しぶりに Twitter API の勉強をしました。

よく考えたら、Twitter API はなんどか使ったことがあるのでした。最初に勉強したのは Twitter4r という Ruby のライブラリでした。。

まずは Apigee で Twitter API 1.1 を叩いてみます。OAuth 認証もやってくれて、JSON で情報が返ってきます。簡単ですね。。簡単すぎてつまらない。。

The Qube というスクリーンリーダー対応の Twitter クライアントは Python で書かれていて Tweepy というライブラリに依存しているという話。
なにかライブラリを試してみようか、ということで、調べたら Tweepy の他に Python Twitter というものが見つかりました。

せっかくなので使ってみました
が、タイムラインが取れて、ツイートができることは確認できたものの、GetFollowers などを使うと

twitter.TwitterError: [{u’message’: u’Rate limit exceeded’, u’code’: 88}]

になってしまい、うまくいかず。。

そもそも Twitter で何をしたいのか深く考えてなかったので、久しぶりに音声対話アプリを書いてみました。

書いたのはこんなコードです。

Windows 8 でこのプログラムを起動して、「今日はWindowsで音声認識を使うプログラムを作りました」「コンピューターいまのをツイートして」といえば、Windows 内蔵の日本語音声認識と日本語音声合成で、下記のようにツイートができました。

「コンピューターツイッターを読んで」といえばタイムラインを読んでくれます。

Python でこういうライブラリを使うと HTTP も JSON も文字コード変換もほとんどお任せでいいから便利ですね。。

静かな「もくもく作業の場」でひとりコンピューターに向かってしゃべり続けてしまい、すみませんでした。今度から突発的に音声認識アプリが書きたくなったときに備えて、常にヘッドセットを持参しようと思います。。

最近は Mac OS X や Chrome ブラウザにも音声認識機能がついてたりしますが、Windows 8 はクラウドでなくコンピューターの中で音声認識と音声合成をしています。でも作ったものが Twitter アプリだから、やっぱりネットワークにつながってなくてはならないわけで、違いをアピールしにくいです。。

今日は使いませんでしたが dragonfly – Python-based speech recognition framework – Google Project Hosting は SAPI と Dragon の音声認識APIラッパーらしいです。アプリケーションごとの音声コマンドのライブラリが充実している印象ですが、フレームワークがここまでやるとローカライズが大変かも。。

ところで、今週土曜日にはNVDA広島勉強会を行います。よろしくお願いします。

追記(6月14日)

Twitter クライアントの Qube は無事に API 1.1 対応したそうです:

AngularJS と NVDA

<htmlday> 2013 ということで AngularJS で遊ぼう という勉強会に参加しました。

AngularJS は Web アプリケーション開発のフレームワークということで、簡潔に書けて保守性が高いのが特長、らしいです。

しかし、生産性の高い開発手法という話を聞くと「それってアクセシビリティは大丈夫なの?」とつい思ってしまいます。
そこで、angularjs.org のトップページのビデオで紹介されていた TODO アプリケーションのサンプルをスクリーンリーダー NVDA 日本語版 と Firefox の組み合わせで確認しました。

書かれたマークアップは内部で標準的なHTMLに変換されているので、フォーカス移動などはちゃんとできるのですが、チェックボックスにフォーカスしたときに、その右側にある項目名を読み上げないので、何の操作をするチェックボックスなのかわかりません。

ふと aria-labelledby でやればいいんじゃない? と思ったので、下記のように直したところ、うまくチェックボックスの項目名を読み上げるようになりました。

最初は id をつけるために todos モデルに通し番号のプロパティを追加したのですが、後で $index という特殊プロパティがあることを教わったので、todo.js 側のコントローラーとモデルは書き換えないで実装できました。アクセシビリティのための処理が View だけで完結するのは素晴らしい。AngularJS なかなかよさそうなのでもうちょっと勉強してみたいと思います。

<htmlday>とは、日本全国でWeb制作者/開発者向けのイベントを同日に開催することで、日本のWebを一層盛り上げようという「お祭り」だったそうで、私も貢献できればと思いブログを書きました。
ちなみに広島市中心部は「とうかさん」というお祭りの季節です。。

以下のソースでは bootstrap.cssUnderscore.js を使っています:

<!doctype html>
<html ng-app>
  <head>
    <script src="angular.js"></script>
    <script src="underscore.js"></script>
    <script src="todo.js"></script>
    <link rel="stylesheet" href="bootstrap/css/bootstrap.css">
    <link rel="stylesheet" href="todo.css">
  </head>
  <body>
    <h2>Todo</h2>
    <div ng-controller="TodoCtrl">
      <span>{{remaining()}} of {{todos.length}} remaining</span>
      [ <a href="" ng-click="archive()">archive</a> ]
      <ul>
        <li ng-repeat="todo in todos">
          <input aria-labelledby="label{{$index}}" type="checkbox" ng-model="todo.done">
          <span id="label{{$index}}">{{todo.text}}</span>
        </li>
      </ul>
      <form>
        <input type="text" ng-model="todoText"  size="30"
               placeholder="add new todo here">
        <button ng-click="addTodo()"><i></i>Add</button>
      </form>

      <button ng-click="clearCompleted()"><i></i>Clear Completed</button>
    </div>
  </body>
</html>
// todo.js
function TodoCtrl($scope) {
    $scope.todos = [
	{text:'learn angular', done:true},
	{text:'build an angular app', done:false}];
    $scope.addTodo = function() {
	$scope.todos.push({text:$scope.todoText, done:false});
	$scope.todoText = '';
    };
    $scope.remaining = function() {
	var count = 0;
	angular.forEach($scope.todos, function(todo) {
	    count += todo.done ? 0 : 1;
	});
	return count;
    };
    $scope.archive = function() {
	var oldTodos = $scope.todos;
	$scope.todos = [];
	angular.forEach(oldTodos, function(todo) {
	    if (!todo.done) $scope.todos.push(todo);
	});
    };
    $scope.clearCompleted = function() {
	$scope.todos = _.filter($scope.todos, function(todo) {
	    return !todo.done;
	})
    };
}

すごい広島 #3 に行って勉強した

すごい広島とは 広島のエンジニアやウェブデザイナーが毎週集まって、 もくもくしたり Hackしたり 読書したり する場所です。

ということで、今週は第3回でした。私は最初の参加(広島Git勉強会から数えて2回目の参加)です。

たまたま「プロになるためのJavaScript入門」という本を読んでいるところなので、最初の文法の説明を「写経」することにしました。

プロになるためのJavaScript入門 ~node.js、Backbone.js、HTML5、jQuery-Mobile (Software Design plus)
河村 嘉之 川尻 剛
技術評論社
売り上げランキング: 88,262

こまかい作業は私の Wiki サイト JavaScript のページに書いたのですが、例えば、なぜ下記のようなものが出てくるのか、いろいろ打ち込んでみてやっとわかってきました:

> new String({})
{ '0': '[',
'1': 'o',
'2': 'b',
'3': 'j',
'4': 'e',
'5': 'c',
'6': 't',
'7': ' ',
'8': 'O',
'9': 'b',
'10': 'j',
'11': 'e',
'12': 'c',
'13': 't',
'14': ']' }

丁寧に書くとこういうことですね:

> new String(({}).toString())

JavaScript では new Object は {} と書けるので、({}) は toString() すると “[object クラス名]” という形式の文字列リテラルが得られる。これを与えて String ラッパークラスに与えるので、その(文字列リテラルではない) String オブジェクトの内部表記である { ‘0’: ‘[‘, ‘1’: … のような結果が返ってくる。。

前から読もうと思っていたCategorizing values in JavaScript という記事 がまさにこういう話だった。。

こんなことをもくもくやっていたのですが、集まった人たちがそれぞれ、もくもく何かをやっている状況は、とても刺激的でよい雰囲気でした。

この「すごい広島」は勉強内容は自由ですが、記録や報告に git/github や Markdown を使うルールになっています。共同作業の練習になるので、興味のあるかたはぜひ。

NVDA 講習会でやったこと

6月の VIC ステップアップ講習会で NVDA 日本語版の紹介をしました。

やった内容を紹介します。

(1)導入から入力ヘルプまで

NVDA 日本語版の最新バージョンは http://i.nvda.jp でダウンロードしてください。

NVDA のインストーラーを起動して、3種類の使い方があることを説明。
Tabで移動、スペースで「同意する」のチェックボックスの操作、スペースでボタンを押す操作。

NVDA の起動。ようこそ画面に書いてある「NVDAキー」の説明。ノートパソコンでは「無変換」を使うのが便利。
NVDA+N で NVDA メニューを開いて、ヘルプ(サブメニュー)からもう一度「ようこそ画面」を開いてみるなど。

ダイアログはEnterキーで閉じられる。メニューはEscキーで閉じられる。

NVDA メニューを開いていないときも NVDA はずっと動いている。

NVDA+1 を押して「入力ヘルプモード」を体験する。押したキーの説明。NVDA+N を押すとわかるように「NVDAコマンドの説明」にもなっている。
入力ヘルプモードで NVDA+1 を押すと入力ヘルプモードの解除。

(2)NVDA の設定

NVDA メニューで「キーボード設定」を確認する。今回は「ラップトップ」配列でやっていただいた。

アクセラレーターキーで項目の移動やチェック状態の変更ができるが、慣れるまでは使わなくてよい。

項目は Tab で移動。そろそろ Shift+Tab で逆方向移動も。

読み上げの中止は Ctrl で、中断(再開)は Shift で。

音声設定で「速さの変更」と「記号読み上げレベル」だけ試していただく。

記号読み上げレベル「読まない」にしたら、比較のためにもう一度「ようこそ画面」を開いてもらう。

この記号読み上げレベルは NVDA+P でも変更できる。

(3)ユーザーガイドで「一文字ナビゲーション」を体験

NVDA メニューの「ヘルプ」から「ユーザーガイド」を開いてもらう。

目次はリンクになっているので、Tab で移動して、スペースでリンク実行(ジャンプ)できる。

覚えるコマンド(ラップトップ配列):
NVDA+A (すべて読み上げ)
H と Shift+H (見出しジャンプ)
1, 2, 3, 4 (Shiftで逆方向、レベルを指定して見出しジャンプ)
左矢印と右矢印(1文字ずつ確認)
上矢印と下矢印(NVDA内部で文として扱われている単位での移動)
NVDA+L (現在の行の読み上げ)
NVDA+T (タイトルの読み上げ)

ユーザーガイドはアプリケーションなので Alt+F4 で終了。

(4)オブジェクトナビゲーションに挑戦

オブジェクトとは? Windows の画面に表示されるあらゆるもの。
Windows 7 の例を見せながら「電卓」で1ケタの足し算に挑戦。

スタートメニューから電卓を起動。
Alt+Tab (アプリケーションの切り替え)で、デスクトップと電卓が切り替わる。

電卓を起動すると「結果を表示しているオブジェクト」が現在位置で、「0」と出ている。

電卓がどんな画面なのかは、簡単にあらかじめ説明しておく。

Alt キーを押すとメニューに移動できて、上下に移動できることも確認。
Esc を押してメニューを閉じ、さらに Esc を押して元の場所に戻る。

まず NVDA+Shift+下矢印 で「内側のオブジェクト」があるかどうか確認する。
そして NVDA+Shift+左(右)矢印で前後に「オブジェクトがありません」と言われるまで移動してみる。
これで3方向を確認したことになる。

NVDA メニューと違ってオブジェクトは「上下が階層の移動」「左右が階層の中での移動」なので注意。

いよいよ上に移動する。行き過ぎると「デスクトップ」まで行ってしまって、戻るのが大変になるので注意。

Windows 7 の場合は、結果を表示するダイアログと、もう一つ名前のない「ダイアログ」がある。
名前なしダイアログに30個くらいボタンがある。NVDA+Enterでボタンを押せる。
「1」「加算」「3」「等号」と押せば、結果表示ダイアログに戻ってきたときに「4」と出ている。

Tab 移動で操作できないアプリケーションでも、NVDAのオブジェクトナビゲーションはこのように活用できる。

続きはぜひユーザーガイドを読みながら練習してみてください。

こんな感じで2時間の講習でした。
この内容は NVDA-KR の英語ポッドキャスト の第1回から第3回の前半までの内容を、ちょっと削ってコンパクトにしたものになっています。
最後の内容はまほろばさんの記事を参考にしました。
いずれ私もポッドキャストを作ったほうがいいなあと思っています。

実演には開発中の「フォーカスハイライト」アドオンを使いました。
ダウンロードは下記からどうぞ:
focusHighlight-0.0.5.nvda-addon

広島では7月から8月にかけて、何度か NVDA の講習会を行う予定です。詳しいことが決まったら、このブログなどでご案内します。

追記(7月28日):focusHighlight のリンクを更新しました。
講習会の告知は広島市広報誌の7月15日版に掲載されました。ご報告が遅くなって済みませんでした:
視覚障害者向けパソコン音声ガイドソフト講習会

広島Git勉強会に参加しました

広島Git勉強会に参加しました。

BzrからGitに乗り換えたときの話、と言いつつ NVDA のブランチ(チケット駆動開発)の話をしました。

NVDA が分散型バージョン管理システム Bazaar に移行してから、NVDA 日本語版は「ブランチとマージ」を活用してソースコードを管理することを心掛けてきました。

今回は NVDA 本家の機能ブランチとリリースブランチの運用方法を紹介して、さらに、NVDA日本語チームがどうやってリリースごとに日本語版のブランチを運用しているのか、ローカルとリモートのリポジトリをどのように使っているのか、といったお話をしました。最後に、Bazaar のエコシステムがうまく回らなくなったので Git に移行した、という1か月前の出来事に触れました。

Ustream 配信の録画

Git はエコシステム的には大成功しているツールですが、使い方は簡単ではありません。いろいろな人のお話を聞いていると、自分が使いこなしていないオプション、設定、使い方もいろいろ気づくことができました。

最後に交流会かと思わせて すごい広島 に参加者を巻き込んだ github flow の実習。ウェブサイトの場合は master ブランチを常にデプロイ可能な状態にしておくブランチ運用がいいよね、という話の実践でした。github のissueやプルリクエストなどの機能をみんなで体験しました。

6月2日:内容を追加しました。

おいしい広島 Advent Calendar 2012 (12月3日)

おいしい広島 Advent Calendar 2012の3日目を担当させていただきます。@24motz の中の人です、こんにちは。

広島に関するアツイ思いをつなげていこうぜ。
※内容は技術系とか関係なくご自由にどうぞ 例 俺の一番オススメなお好み焼きとか 俺が考えた最強の広島弁ネタとか

ということで、2011年から活動している「NVDAユーザ会広島」について書きます。

自己紹介

広島出身。2011年3月まで東京で大学教員をしていました。広島に転居して、NVDA日本語版(詳しくは後述)の開発を続けながら、技術コンサルティングや受託開発をしていたのですが、2012年10月から特定非営利活動法人 支援技術開発機構の主任研究員として働いてます。明日からまた海外出張なので、今日書かせていただくことにしました。

NVDAとは

NVDA (NonVisual Desktop Access) はオープンソース(無料)のスクリーンリーダーです。スクリーンリーダーというのは、視覚に障害があるかたが、キーボード入力、音声合成、点字ディスプレイでコンピューターを操作するための支援技術です。
NVDA はオーストラリアの開発者2人が中心になって2006年から開発しており、近年、世界でユーザーが増加しています。
2012年5月のWebAIMの調査では NVDA を”commonly used”と答えた割合が43パーセントに達しています。

日本でも2008年頃から「NVDA日本語化プロジェクト」が進められ、NVDAの日本語化が行われました。
しかし、NVDAが標準で使用しているeSpeak音声エンジンが日本語に対応していない、日本語のカナ漢字変換を読み上げできない、日本語の点字出力に対応できない、といった課題がありました。
これらの開発を行うために私(最初は東京在住)や @hoozukiyama さん(もともと広島県三次市在住)がNVDA日本語化プロジェクトに参加しました。

NVDAユーザ会広島

私が2011年春に地元の広島に帰ったので、NVDA日本語版の開発者2人が広島に揃いました。
NVDAユーザ会広島は、名前はユーザ会ですが、最初は NVDA 本家版のリリースごとに日本語版の開発を行う、開発者の団体でした。
しかし、いずれはユーザーが集まる場にしたい、と思ったので、あえて「ユーザ会」という名前をつけました。
ちなみに現在、日本で「NVDAユーザ会」と名乗っている団体は、私の知る限り、広島にしかありません。

NVDAユーザ会広島は地元のイベント、オープンソースカンファレンス Hiroshima に参加しています。
NVDAのイメージキャラクター「でめきん」のぬいぐるみは、オープンソースカンファレンスのために作りました。

また nvda.jp というドメインもNVDAユーザ会広島の活動として取得しました。

OSC広島2011のブースの様子

OSC広島2012のブースの様子

勉強会

2012年に入ってからは、定期的に例会(勉強会)を行ってきました。
あいかわらず少人数ですが、アクセシビリティやソフトウェア開発に興味をお持ちのかたが集まったので、Python による自然言語処理(NLTK)の勉強会もしました。本を読みながらソースを打ち込んで実行する、というスタイルで行いました。時間の制約もあり、テキストの全部はカバーできませんでしたが、NVDA の開発に使われているプログラミング言語 Python の実践的な勉強になりました。
音声合成や点訳エンジンのために機械学習を使おうと考えて、このテーマを選んだのですが、結果的に NVDA とはあまり関係ない勉強会になってしまいました。

入門 自然言語処理
入門 自然言語処理

posted with amazlet at 12.12.02
Steven Bird Ewan Klein Edward Loper
オライリージャパン
売り上げランキング: 65966

NVDA日本語チーム

2012年5月に「NVDA日本語化プロジェクト」は「NVDA日本語チーム」になり、私が代表になりました。
2012年6月にNVDA日本語版 2012.2.1jp をリリースしました。このバージョンは2012年12月1日までに4420回ダウンロードされました。
それまでのバージョンでは(ポータブル版とインストーラー版をあわせても)2000回程度であったので、この半年で利用者が大幅に増加したと考えられます。
たぶん今日中に新しいバージョンの安定版をリリースしますので、よろしければ nvda.jp のサイトをご確認ください。

現在、NVDAは40以上の言語で使われていますが、ローカライズ版を独自にリリースしているのは日本、香港、韓国などわずかな国しかありません。
本家版には新しいバージョンがリリースされたら自動的に更新される機能がありますが、この機能は日本語版では無効にしています。
ローカライズ版に独自に追加してきた機能が、本家版に統合されていくことが理想です。
NVDA 2012.2 から導入された「アドオン」という機能を使うと、本家版に日本語音声エンジンを追加することが容易になります。
すでに NVDA 日本語チームは NVDA 本家版用の日本語音声アドオンをリリースしています。
このアドオンというしくみが、「世界で一つのNVDA」を実現するために、これから重要になってきます。

NVDA日本語チームという名前は、本家版NVDAの日本語対応と、NVDA日本語版の開発を、同じメンバーで進めていく、という体制を示すために選ばれました。

NVDA日本語版の開発に全国からユーザーや開発者が参加してくださるようになったため、NVDA日本語チームは毎週の定例Skype会議で議論しながら進めるようになりました。
NVDA本家版 2012.3 の「東アジア言語の文字入力」には、日本語チームが行ってきた実装が一部利用されました。
2012年9月にはオーストラリアから NVDA の主要な開発者のお一人である Michael Curran さんを東京に招いてワークショップを開催しました。
現在は、NVDA本家版 2012.3 でもいちおう日本語の文字入力の読み上げができるようになっています。また、日本語に起因するバグを本家で修正してもらえるように活動しており、例えば「ユーザー名が日本語の特定の文字を含んでいるときにNVDAがインストールできない」問題が解決されました。

現在のNVDA日本語チームの最大の課題は、日本語点訳エンジンの改良です。一度は機械学習ベースでゼロから作ろうと考えたのですが、現在は liblouis という多言語対応のオープンソース点訳エンジンの調査研究も行なっています。
日本語だけ独自の技術を開発しても、それがユニバーサルな実装にならなくては結果的に長続きしない、ということが起こるからです。
音声エンジンについても Open JTalk に基づく独自実装から、多言語音声合成エンジンに発展させていくことが、日本語対応をグローバルに展開する道筋だと思い始めています。海外で話をしてみると HMM 音声合成はあちこちで研究開発されているので、ハードルはそれほど高くないように感じます。

NVDAユーザ会広島のこれから

NVDAユーザ会広島という活動を立ち上げた自分が、今はこの広島地域コミュニティをうまく活用できていないのです。ごめんなさい。
ただ、何か協力できないか、といろいろなかたから声を掛けていただいていることを、本当にありがたく思います。
関係者が集まったときには NVDA だけではなく iPhone, iPad や Android のスクリーンリーダー、電子書籍の音声読みあげなどについても情報交換しています。
広島でアクセシビリティとソフトウェア開発に興味がある人が集まって face-to-face で活動できる場として、発展させていければよいと思っています。

次の人

明日は @wizard_paso さんです。

WEB TOUCH MEETINGで喋りました

3月24日に「第45回 WEB TOUCH MEETING」で、広島の皆様に、NVDAとアクセシビリティについてお話をする機会を(やっと)いただきました。

雰囲気はATND(参加者リスト)とかTogetterまとめとかeielh さんのブログとかご覧下さい。
終了後もいろいろな方に声をかけていただき、Facebook にリクエストをいただくなど、感謝しています。

前日NVDA日本語版開発スナップショット jpdev120323 の作業をしていて、24日は昼間 NVDA ユーザ会広島の勉強会(Python&自然言語処理)でした。3月24日のツイート一覧。長い一日でした。コーヒーばかり飲んでいたので、帰宅しても眠れず。。

準備したスライドをほとんど使わないで、アドリブで喋ってしまいました。
録音も録画もないのですが、思い出せる範囲で書きとめておきます。

“WEB TOUCH MEETINGで喋りました” の続きを読む