すごい広島#23に参加して、NVDA 日本語版チュートリアル(導入から入力ヘルプまで)の続きを書きました。
(2) NVDA 日本語版の設定
NVDA を使うときに知っておくとよい設定を紹介します。
以下、NVDA制御キーはInsertや無変換キーなど、「ようこそ画面」で説明されたキーを使います。
ここでは NVDA 制御キーを押しながら N を押すことを NVDA+N のように表記します。
NVDA+N を押すと NVDA メニューが開きます。
下矢印キーを1回押すと「設定」という項目にフォーカスが移動します。
このメニュー項目にはサブメニューがあるので、右矢印キーを押すと「一般設定」という項目にフォーカスが移動します。
下矢印を何度か押して「キーボード設定」を見つけて、Enter キーを押してください。
「キーボード設定」ダイアログが開きます。
ダイアログの最初の項目にフォーカスが移動して、
「キーボードレイアウト(K) コンボボックス デスクトップ クローズ Alt+k」
と読み上げられます。
このチュートリアルでは「ラップトップ」配列を使うので、選択項目を変えてみます。
下矢印キーを押すと「ラップトップ」と読み上げます。
この状態でEnterキーを押すと選択項目が保存されますが、Escキーを押すと選択の変更がキャンセルされて設定は「デスクトップ」のままになります。
しかし、選択を保存する前に、もう少し「コンボボックス」の操作を確認しましょう。
「ラップトップ」に選択項目が変更された状態で、さらに下矢印キーを押すと、何も読み上げされません。これは、さらに下にはもう選択肢がないことを意味します。
逆に、上矢印キーを押すと「デスクトップ」に戻り、さらに上矢印キーを押すと、何も読み上げません。これは、さらに上にはもう選択肢がないことを意味します。
つまり、このコンボボックスには2個の選択肢だけがあるわけです。
コンボボックスには折り畳まれた(クローズ、閉じている)状態と展開された(オープン、開いている)状態があります。
マウスやタッチの操作ではコンボボックスを展開して選択肢の一覧を確認してから項目を選べますが、キーボードではコンボボックスが折り畳まれた状態のまま矢印キーで操作できます。
NVDA+Tabキーで、現在のコンボボックスの状態を確認できます。
コンボボックスの状態の説明でAlt+kと読み上げていましたが、これはアクセラレーターキーと呼ばれる操作方法のヒントです。
Tabキーでひとつずつ移動する代わりに、ダイアログボックスの中の項目にジャンプしたりチェック状態の変更ができるのですが、慣れるまでは覚えなくてもかまいません。
ダイアログボックスの項目は Tab キーで移動できますが、この順番はソフトウェアの開発者が決めた順番です。ふつうは画面の上から下、左から右に決められています。そろそろ Shift+Tab キーで逆方向に移動できることを覚えると、行き過ぎたときに戻ることができるし、先頭の項目から一番最後の項目に移動するときにも便利です。
読み上げの中止は Ctrl キーで、中断は Shift キーでできます。
中断したあとでShiftキーをもう一度押すと、続きを読み上げます。
ラップトップレイアウトを選択してEnterキーを押すか、フォーカスをOKボタンに移動してスペースキーを押しておいてください。
今度はNVDAメニューから設定「音声設定」を確認していきます。
「速さ」などは「スライダー」という形式の項目で、数値を視覚的に表現して、値を変更できるようになっています。
スライダーという名前のとおり、マウスでつまみをスライドするような操作ができるのですが、キーボードでも操作できます。
キーボードでは左右または上下矢印キーやPage Up, Page Downキーで値を増やしり減らしたりできます。EndキーとHomeキーで最小値や最大値に変えることもできます。
キーを押すたびに数値を読み上げます。
この音声設定のスライダーでは、変更した結果がどんな音声になるのかを確認しながら操作できます。
コンボボックスの「記号読み上げレベル」は読み上げる情報に含まれる句読点やカンマ、ピリオド、カッコなどの読み上げかたの指定です。
記号読み上げレベルを「読まない」にしたら、比較のためにNVDAメニューからヘルプ「ようこそ画面」を開いてみてください。
設定によって例えば「NVDAへようこそ」のあとの「感嘆符」を読んだり読まなかったりすると思います。
記号読み上げレベルは NVDA+P でも変更できます。
NVDAメニューから設定「オブジェクト設定」で「オブジェクトのショートカットキーの通知」をチェックなしにすると、アクセラレーターキーを読み上げなくなるので、説明がすっきりします。
繰り返しの説明になりますが、チェックとチェックなしの状態を切り替えるにはスペースキーを押します。
備考:2013年10月24日 画面キャプチャーを追加しました。
投稿者: nishimotz
-
NVDA 日本語版の設定
-
OSC2013広島 終了しました
オープンソースカンファレンス 2013 Hiroshima に参加してきました。
NVDA ユーザ会広島 として NVDA 日本語版のブース展示を行いました。
来場者数は正確には聞いていませんが約200人という話もあり、特に最初の数時間はにぎやかでした。
わざわさ 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 翻訳者養成塾」についてお話をする最初の機会だと思い、出展内容のキーワードを「デスクトップ」「翻訳」「教育」にしました。
皆様のご来場をお待ちしています。よろしくお願いします。 -
NVDA ワールド 2013 横浜(8月17日)インターネット配信のお知らせ
オープンソースのスクリーンリーダーNVDAの日本語版を開発しているNVDA日本語チームが主催するイベント、NVDA ワールド 2013 横浜(8月17日) が近づいてきました。
事前の参加申し込みをお願いしたところ、ご同伴者を含めて、すでに約100人のお申込みをいただいています。
また14の企業・団体さまにスポンサーとしてご協力いただけることになりました。
夏休みの時期にも関わらず、ご出展、ご参加、お手伝いいただける皆様に本当に感謝しております。
すでにご案内している通り、最寄り駅から会場までの誘導を行います。
ご予約は不要としております。お申込みに対して基本的には個別にお返事しておりませんことをご容赦ください。
お気をつけてお越しいただければ幸いです。
なお、当日の会場は混雑が予想されますので、下記のとおり、インターネット配信もご利用いただければ幸いです。
Ustream NVDA日本語版
Live streaming video by Ustream
8月17日(土曜)のスケジュールは以下の通りです。
時間:10時30分から11時30分
第1セッション「世界のNVDAコミュニティとNVDA日本語版の最新情報」
講演:西本 卓也(NVDA日本語チーム)
世界における NVDA の開発者、ユーザー、支援する企業や 団体などの状況、最近の NVDA の改良点と日本語対応、 日本語チームの体制と今後の課題などをお話します。
スライド
時間:13時00分から13時40分
第2セッション(講習) NVDAの導入と教材紹介
講師:四方田 正夫(DemekinText デメキンテキスト)
資料(テキスト版)
NVDA 日本語版のキャラクター「でめきん」にちなんで 名付けられた DemekinText プロジェクトでは、 HTML 版および DAISY 版の NVDA 演習教材を制作しています。 この教材に従って NVDA の導入の説明をします。
時間:13時45分から14時45分
第3セッション(講習) NVDAの便利な使い方
講師:西本 卓也(NVDA日本語チーム)ほか
NVDA のマニュアルに書かれていない Windows の操作の基本、 マニュアルではわかりにくい NVDA の移動コマンドを説明します。 また、文書の読み上げや日本語の文字入力、 NVDAが対応している主要なアプリケーションをご紹介します。
時間:14時50分から15時35分
第4セッション(講習) NVDAの高度な使い方と点字出力機能
講師:御園 政光(社会福祉法人 愛光 視覚障害者総合支援センターちば),西本 卓也(NVDA日本語チーム)
NVDA の機能を拡張するいろいろなアドオン、 NVDA 日本語版の日本語点字出力の機能などをご紹介します。
時間:15時40分から16時40分
第5セッション(講習)質疑応答
講師:NVDA日本語チーム
NVDA 日本語版の開発メンバーが皆様からの質問に答えます。
追記(2013年8月17日):第1セッションのスライドと第2セッションのテキスト版資料を追加しました。 -
広島市の NVDA 講習会でやったこと
広島市の「視覚障害者向けパソコン音声ガイドソフト講習会」が始まりました。今日(7月28日)と、8月4日、8月25日に開催します。
内容は NVDA 日本語版の講習です。
6月の VICステップアップ講習会 の改定版ですが、今日やった内容をあらためて紹介します。
(1)導入から入力ヘルプまで
NVDA 日本語版の最新バージョンは http://i.nvda.jp でダウンロードしてください。
NVDA のインストーラーを起動して、3種類の使い方があることを説明。
Tabで移動、スペースで「同意する」のチェックボックスの操作、スペースでボタンを押す操作。
エディット、チェックボックス、ボタンの一般的な説明。
この画面では、チェックなしだと無効になっているボタンがあるが、チェックありにするとフォーカス移動の対象になる。
USBメモリにポータブル版を作成して、Windows+R でそのポータブル版を起動する、という実演。
Ctrl+Alt+N で NVDA の起動。
ようこそ画面に書いてある「NVDAキー」の説明。ノートパソコンでは「無変換」を使うのが便利。
NVDA+N で NVDA メニューを開いて、ヘルプ(サブメニュー)から「ようこそ画面」を探し、Enterで実行するともう一度「ようこそ画面」が開く。
ダイアログはEnterキーで閉じられる。キャンセルできるダイアログやメニューはEscキーで閉じられる。
このEnterやEscはどのボタンにフォーカスがあっても有効になる。
確実に選択したボタンを押すならスペースを押した方がよい。
ようこそ画面を閉じるとデスクトップにフォーカスが移る。
Windows 7 だと Windows+D でデスクトップにフォーカス移動。Windows+B で通知領域にフォーカス移動。
Windows+T でタスクバー(実行中のアプリケーション)にフォーカス移動。
NVDA メニューを開いていないときも NVDA はずっと動いている。
NVDA+1 を押して「入力ヘルプモード」を体験する。押したキーの説明。NVDA+N を押すとわかるように「NVDAコマンドの説明」にもなっている。
入力ヘルプモードで NVDA+1 を押すと入力ヘルプモードの解除。
設定を初期値に戻す裏技:NVDA+Ctrl+R を3回押す。
(2)NVDA の設定
NVDA メニューで「キーボード設定」を確認する。この講習では「ラップトップ」配列を使う。
アクセラレーターキーで項目の移動やチェック状態の変更ができるが、慣れるまでは使わなくてよい。
項目は Tab で移動。そろそろ Shift+Tab で逆方向移動も。
読み上げの中止は Ctrl で、中断(再開)は Shift で。
音声設定で「速さの変更」や「記号読み上げレベル」を試していただく。
設定画面ではコンボボックスやスライダーの操作にも慣れてもらう。
記号読み上げレベル「読まない」にしたら、比較のためにもう一度「ようこそ画面」を開いてもらう。
この記号読み上げレベルは NVDA+P でも変更できる。
「オブジェクト設定」で「オブジェクトのショートカットキーの通知」をチェックなしにすると説明がすっきりする。
(3)ユーザーガイドを読む
NVDA メニューの「ヘルプ」から「ユーザーガイド」を開いてもらう。
このユーザーガイドはアプリケーションなので Alt+F4 で終了できる。
「ブラウズモード」で有効な「一文字ナビゲーション」:
H と Shift+H (見出しジャンプ)
1, 2, 3, 4 (Shiftで逆方向、レベルを指定して見出しジャンプ)
深い階層から抜けたいときに、レベルを指定して次の見出しにジャンプできると、効率がよい場合がある。
NVDA のコマンド(ラップトップ配列):
NVDA+左矢印・右矢印(1文字ずつ確認)
NVDA+上矢印・下矢印(NVDA内部で文として扱われている単位での移動)
NVDA+T (フォーカス位置のタイトルの読み上げ)
NVDA+L (キャレット位置の行の読み上げ)
NVDA+A (キャレット位置から連続して読み上げ)
このマニュアル閲覧では矢印キーを押しただけでも1文字単位・1行単位の移動ができる。
しかし本来は「確認(レビュー)」という NVDA の機能であり NVDA キーと一緒に押すべき操作。
フォーカスとレビューの違いをそろそろ意識してもらう。
この文書ではリンクされた項目がフォーカスの対象。
目次や文章中のリンクは、Tab で移動して、スペースでリンク実行(ジャンプ)できる。
NVDA+A は現在のキャレット位置から「すべて読み上げ」であり、文書の先頭から読むとは限らない。
文書の階層構造を意識するために「要素リスト」を使う。呼び出す操作は NVDA+F7 である。
要素リストの画面にはラジオボタンとツリービューがあるので、これらの操作に慣れてもらう。
ラジオボタンの「リンク」「見出し」「ランドマーク」のうち「見出し」を選んで、その次のツリービューに移動してみる。
上下で要素を移動、左でクローズ、右でオープン、といった操作を体験。
要素リストの要素でEnterを押すと、元のドキュメントに戻って、選んだ要素から読むことができる。
いままで Tab と Shift+Tab だけでフォーカスを移動してきたが、NVDA+Tab で現在のフォーカス位置を確認できる。
テーブルの移動:Ctrl+Alt+矢印
ここで練習した操作は Internet Explorer のページなどでも共通。
検索サイトなどでは、検索キーワードの文字入力にフォーカスが移動すると「ガチャ」という音がして、H や 1 2 3 などの文字も普通に入力できるモードに自動的に切り替わる。
(ブラウズモードとフォーカスモードの切り替え)
例えば Google の検索結果は見出しジャンプで移動できる。
(4)文書作成とオブジェクトナビゲーションに挑戦
オブジェクトとは? Windows の画面に表示されるあらゆるもの。
Windows 7 のメモ帳を使って「オブジェクトナビゲーション」を紹介する。
スタートメニューからメモ帳を起動。
例えば Windows キーを押して notepad と入力して Enter を押すと起動できる。
Alt+Tab (アプリケーションの切り替え)で、デスクトップとメモ帳が切り替わる。
「エディット複数行」は、ワードプロセッサーのようなテキスト編集のコントロール。
ここで Alt+半角全角 を押して、日本語入力のモードに切り替える。
漢字仮名交じり文を、文節単位でローマ字入力、スペースで変換、候補の選択、Enter で決定。
矢印キーで編集中の文字や行の内容を確認。
Windows の画面には「コントロール」以外の「オブジェクト」もたくさん使われている。
メモ帳で Alt キーを押して、矢印キーで「ヘルプ」の「バージョン情報」を探して、Enterで開く。
たくさん読み上げられたが、Tab でフォーカスを移動すると「リンク」と「OKボタン」の2個しか移動できる要素がない。
まず NVDA+Shift+下矢印 で「内側のオブジェクト」があるかどうか確認する。
そして NVDA+Shift+左(右)矢印で前後に「オブジェクトがありません」と言われるまで移動してみる。
これで3方向を確認したことになる。
NVDA メニューと違ってオブジェクトは「上下が階層の移動」「左右が階層の中での移動」なので注意。
いよいよ上に移動する。行き過ぎると「デスクトップ」まで行ってしまって、戻るのが大変になるので注意。
こうやってオブジェクトを探っていくと、Tab では見つからなかったテキスト情報がたくさん見つかる。
レビューしている要素がボタンのときには NVDA+Enter を使うと「押す」ことができる。
例えば「バージョン情報」の中のリンクで NVDA+Enter すると新しいダイアログが開く。
親オブジェクトに移動すると、そのオブジェクトの子に含まれるテキストをまとめて確認できる。
フラットレビュー(NVDA+PageUp)を使うと内容の確認が容易になることもある。
Tab によるフォーカス移動だけで操作できないアプリケーションでも、NVDAのオブジェクトナビゲーションはこのように活用できる。
やや簡略化して「バージョン情報」ダイアログのオブジェクト階層をまとめると:- ウィンドウ
- ボタン(閉じる)
- ダイアログ
- テキスト
- リンク
- ボタン(OK)
- …
現在のウィンドウをすべて読み上げる:NVDA+B
読み上げモードの切り替え:NVDA+S
エディットで選択:Shift+左右矢印
選択範囲の読み上げ:NVDA+Shift+S
続きはぜひユーザーガイドを読みながら練習してみてください。
今日は午前に約1時間半、午後に約2時間の講習でした。
実演には NVDA 日本語版 2013.1.1jp と「フォーカスハイライト」アドオンを使いました。
ダウンロード:focusHighlight
NVDA+H でフォーカス位置の操作を説明してくれるアドオン
また、systrayList アドオンの紹介、Windows 8 タッチモードの実演もちょっとだけ行いました。
systrayList アドオンの起動:NVDA+F11
追記(2013年8月6日):説明を加筆しました。
追記(2013年8月25日):説明を加筆しました。
追記(2014年2月18日):NVDA+T, NVDA+L, NVDA+A がフォーカスおよびキャレット位置に関する操作であることを追記・訂正しました。 - ウィンドウ
-
NVDA日本語版 2013.1.1jp の公開とイベント開催のご案内
無料(オープンソース)の Windows 用スクリーンリーダー NVDA (NonVisual Desktop Access) の日本語対応をすすめる NVDA 日本語チームは、2013年7月8日に最新の日本語版 NVDA 2013.1.1jp を公開しました。
ダウンロード
http://i.nvda.jp
NVDA 日本語版 2013.1.1jp のライセンスは GPL v2 です。
Windows 8, 7, Vista, XP の32ビット版および64ビット版に対応しています。
Windows 8 ではタッチ操作が利用できます。
以下は対応しているアプリケーションの一部です:- Webブラウザー (Mozilla Firefox を推奨、 Microsoft Internet Explorer, Google Chrome にも対応)
- Adobe Flash Player によるアクセシブルなコンテンツの操作
- 電子メールクライアント (Mozilla Thunderbird を推奨、Windows Live Mail, Outlook にも対応)
- Microsoft Office アプリケーション Word, Excel, !PowerPoint の主要な機能(対応バージョン 2003, 2007, 2010)
- LibreOffice (推奨バージョン3.6.6)
- Skype for Windows (バージョン6.5で動作確認済)
- Apple iTunes for Windows
- Twitter クライアント Tween
- 日本語入力システム(Microsoft IME, Microsoft Office IME および ATOK を推奨、Google 日本語入力にも対応)
- Adobe Reader によるアクセシブルな PDF 文書の読み上げ
- Adobe Digital Edition によるアクセシブルな EPUB 書籍の読み上げ
- AMIS によるオーディオ DAISY およびマルチメディア DAISY 書籍の読み上げ
以下は利用できる点字ディスプレイの一部です:
- ケージーエス ブレイルメモシリーズ(ブレイルテンダー、ブレイルメモポケットを含む)
- ケージーエス ブレイルノート 46C/46D
- HIMS ブレイルセンス・オンハンド(日本語版を含む)
- 日本テレソフト 清華シリーズ
オーストラリアの非営利法人 NV Access がリリースする NVDA は、Michael Curran, James Teh の両氏が中心となって開発を行い、世界のコミュニティが支援しています。
NVDA は多くのアプリケーションに対応し、インストール不要で利用できるポータブル版、アドオンによる機能拡張など、さまざまな特長を備えています。
2013.1 の更新内容は、直観的で一貫性のあるラップトップ配列の採用、Microsoft PowerPointへの対応、ウェブブラウザでの詳細説明(longdesc)への対応、点字ディスプレイからの入力(日本語は非対応)などです。
NVDA は世界40以上の言語に対応していますが、音声エンジンと点訳エンジンは日本語に対応していません。
そこで NVDA 日本語チームは、日本語音声エンジンと点訳エンジンを搭載した NVDA 日本語版を独自にリリースしています。
2013.1jp では仮名漢字変換の互換性や安定性の改善、日本語点訳規則や情報処理点字への対応、点字ディスプレイのカーソル位置処理の実装、および多くのバグ修正を行いました。
2013.3.1jp 以前のバージョンから上書きインストールしたときは点字設定の出力テーブルを「日本語6点情報処理点訳」に設定してください。
なお、日本語設定「日本語版の文字入力拡張」がチェックありのときには ATOK 対応やカナ文字の説明に関する改良を行います。この設定は既定値で有効になっています。なお、複数の文節を変換するときの文節の移動など、読み上げに対応できていない部分があります。
2013.1.1jp では Windows 8 での読み上げ辞書編集などの不具合の修正、KGS ブレイルノート46C/46D への対応、罫線文字や記号など文字説明機能の改良を行いました。
レビュー内の現在の文字を通知(デスクトップ テンキー2、ラップトップ NVDA+ピリオド)コマンドは、以下のように仕様変更されました。- テキスト内の現在行のレビューカーソル位置の文字を、その文字の説明や例で通知します(説明モードの場合。読みかたモードでは漢字を説明ではなく文字の通りに読み上げます)。
- 2度続けて押すと半角や全角、ひらがなやカタカナなどの情報をつけて文字を説明します。点字ディスプレイにも文字説明を出力します。点字設定「メッセージの表示終了待ち時間」の時間が適用されます。
- 3度続けて押すと10進数と16進数による文字コードを通知します。
- 4度続けて押すと 「説明モード」「読みかたモード」が切り替わります。既定値は説明モードです。このモードは NVDA を終了するときに保存されません。
これに伴い、日本語設定「カタカナの前にカタカナと読む」 「半角の前に半角と読む」 オプションを削除しました。「カタカナ」「半角」の確認は「現在の文字を通知」の2回押しで可能です。
詳細はNVDA日本語版の説明をご覧ください。
なお、NVDA 日本語チームは、NVDA の機能や活用方法、日本語化の取り組みをご紹介するために、下記のイベントを開催します。
NVDA にご興味・関心のある個人・団体・企業の皆様、ふるってご参加いただきますよう、ご案内申し上げます。イベント名:NVDAワールド 2013 横浜 主催:NVDA日本語チーム 共催:View-Net神奈川 日時:2013年8月17日(土)10時30分から17時 会場:横浜市市民活動支援センター(神奈川県横浜市中区桜木町1-1-56) 協力:DemekinText
詳細はWebサイトでご確認ください。
下記のフォームにて参加申し込みを受け付けております。
http://bit.ly/nvdajp2013aug
事前申し込みは必須ではありませんが、ご協力いただければ幸いです。
ご来場者には NVDA 日本語版および DemekinText の DAISY 版教材 CD-ROM を配布します。
お申込みいただいた方には確実に CD-ROM をお渡しできるように準備します。
NVDA日本語チームへのご連絡はメールアドレス nvdajp@nvda.jp にお願いします。 -
すごい広島 #6 でテスト駆動開発の読書
すごい広島とは 広島のエンジニアやウェブデザイナーが毎週集まって、 もくもくしたり Hackしたり 読書したり する場所です。
先週は欠席したので、今週は第6回でした。
「テスト駆動開発による組み込みプログラミング――C言語とオブジェクト指向で学ぶアジャイルな設計」という本を読み始めました。テスト駆動開発による組み込みプログラミング ―C言語とオブジェクト指向で学ぶアジャイルな設計posted with amazlet at 13.06.26James W. Grenning
オライリージャパン
売り上げランキング: 40,430原著 Test Driven Development for Embedded C のページからサンプルコードをダウンロードして、make しながら読み進めました。
組み込みの開発はするかも知れないし、しないかも知れないのですが、NVDA に組み込まれている eSpeak や libLouis のようなライブラリも、一種の組み込みソフトウェアとしてとらえています。
この本で使われているツールは Unity と CppUTest なのですが、ダウンロードしたサンプルコードの中にどちらも入っていました。
VisualStudio のプロジェクトファイルも入っているのですが、Cygwin か Mingw で make all するほうがしっくりきます。
著者は Eclipse の CDT で、ファイルを保存したときに自動的にテストが走るようにしているそうです。。
著者のJames W. Grenningさんの講演は5月にアジャイルジャパン広島サテライトに参加して拝聴しました。講演の内容はプログラミングというよりも開発者の文化とか理念のお話でしたが、そのときにこの本が紹介されたのを、今頃になって思い出したのです。
今日読んだのは最初の100ページくらいなのですが、テスト駆動開発の「王道」がきっちり実践されているので驚いています。
C言語を教える大学の情報系カリキュラムで、アルゴリズムと並行してこういう実践をさせたら、すごいことになるんじゃないかと思ったり。。
オブジェクト指向開発とかテスト駆動とかいう話は、たいていプログラミング言語と結びついて語られるわけです。そして、この本は、C言語でアプリケーションそのものをオブジェクト指向的に書いたりはしないようです。でも、テスト駆動開発に必要なエッセンスを、素材であるC言語で、どう実践したらいいのか、見せてくれます。
しかも、律儀に、テストを書く、失敗させる、コードを書く、成功する、という繰り返しを読者にしつこく提示します。
テスト駆動は「何を使うか」ではなくて「いかに実践するか」なのだなあと改めて思いました。
ツールの仕様だけを覚えても、思想やスキルは身につかないということですね。。
この本の面白いところは、バージョン管理ツールについて一切言及がないところです。
これだけテスト駆動を実践すると、どこでコミットするかとかブランチを切るかとか、普通はやるんですけど。。
ただ「継続的インテグレーション」の説明の中で、バージョン管理ツールとのつながりそのものは語られているので、おそらく、話題を発散させないためにわざと削ったのだと思えてきました。
そんなわけで「C言語をカッコよく使いこなしてみたい」と思わせてくれる本です。 -
すごい広島 #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 内蔵の日本語音声認識と日本語音声合成で、下記のようにツイートができました。今日はWindowsで音声認識を使うプログラムを作りました
— 24motz 西本卓也さん (@24motz) 2013年6月12日
「コンピューターツイッターを読んで」といえばタイムラインを読んでくれます。
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 対応したそうです:Qube update available, works with new Twitter API. Start The Qube and auto update, alternatively, have an installer: http://t.co/F2UO5AVwLU
— Quartizer Projects (@quartz_projects) June 12, 2013
-
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.css と Underscore.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; }) }; }