ユーザ用ツール

サイト用ツール


nvdajp

文書の過去の版を表示しています。


nvda 日本語化プロジェクト

操作ガイド

東京女子大学の卒業研究の成果:

nvdajp にて NVDA_mannual.zip がリリースされた。

  • 読み上げ一時中断 : Ctrl
  • 再開 : Shift
  • もう一度読む : NVDA-上矢印
  • タイトル読み上げ : NVDA-t
  • 見出し移動 : h / Shift-h
  • エディットボックスで文章入力 : k
  • フォーカスモードとブラウズモードの切り替え : NVDA-スペース
    • カシャッと音がしたら文字入力できるモード(フォーカスモード)。ポンとなると抜ける(ブラウズモード)。
  • ランドマーク移動 : d / Shift-d
    • 最近 google (日本)の検索結果ページが対応した。role 属性を使っている。参考

開発環境の構築 (devinstaller)

  • 2010年6月19日 作成。2010-09-01 改訂。ページ内の位置を移動。

コマンドプロンプトで bzr が使える必要がある。

bazaar win32 をインストールしておく。

コマンドプロンプトで作業 (cygwin不可)

C:\work\nvdajp\lp> bzr launchpad-login nishimotz
C:\work\nvdajp\lp> bzr branch lp:nvdajp/devinstaller
C:\work\nvdajp\lp> cd devinstaller
C:\work\nvdajp\lp\devinstaller> python bootstrap.py
C:\work\nvdajp\lp\devinstaller> bin\buildout.exe

かなり待たされる。

やがて終了。nvda ディレクトリの中に nvda と nvdadepend のディレクトリが作られている。

実行するときは

cd devinstaller\nvda\nvda\source
python generate.py 
python nvda.pyw

自分のブランチの実行環境を作るには

2010-6-21 追記

buildout.cfg ファイルの中にある、

urls =
    http://bazaar.launchpad.net/~nvdajp/nvdajp/main nvda

という項目のURLを変更し、自身のレポジトリにすることが可能

このやり方で(日本語版ではなく)本家の動作環境を作る、といったことも可能。

2009年12月ごろからの記録

開発のための情報源

Python と comtypes

Microsoft の技術情報

python コンソール

Python コンソールから音声合成エンジンを叩く実験。

ドキュメントトーカのSAPI5エンジンが入っていて、選択されている。

s = speech.synthDrivers.sapi5.SynthDriver()
s.performSpeak(u"こんにちは")

開発環境の構築(過去の記録)

以下は svn の場合。2010年4月現在、最新ソースは bazaar で入手する。

情報源 に従って必要なファイルを揃える。

http://svn.nvda-project.org/nvda/trunk/readme.txt

西本は Windows XP Pro SP3 で作業している。

  • python-2.6.4.msi
  • comtypes-0.6.2.win32.exe
  • pywin32-214.win32-py2.6.exe
  • wxPython2.8-win32-unicode-2.8.9.2-py26.exe
    • wxpython.org に繋がらないので sf.jp から

その他もろもろ。

svn からの checkout は c:\work\nvdajp でやった。

開発者としての checkout は下記(sshは設定済み)
svn checkout svn+ssh://username@svn.sourceforge.jp/svnroot/nvdajp/trunk

コマンドプロンプトで python nvda.pyw を実行。

Error starting, code 0X6B1

が出る(リビジョン73で各種ライブラリを最新版にしている)が、動いているっぽい。

  • このエラーコード 0x6B1 は NVDAHelper/remote/rpcSrv.cpp で RpcServerListen() の return value のようである。

Adobe FlashAccessibility interface typelib: http://www.nvda-project.org/3rdParty/FlashAccessibility.tlb が抜けてたので入れてみた。

http://www.nvda-project.org/3rdParty/system-dlls.7z の中身 (mfc90.dllなど)が c:\windows\system32 に入っていなかったので入れた。

試してみた

  • NVDAキーに「無変換」を割り当ててみた。
  • chrome は読み上げに対応していないようだ。
  • Firefox で Twitter を試す。
  • 公式サイトよりもアクセシブルだと言われているMovaTwitter でログインする。
  • 「無変換+下矢印」で読み上げ。
  • タブでリンク項目のジャンプ。
  • 「音声辞書」をユーザ登録してみるが、保存されていない。

2010-01-26 コードレビュー

2010-01-26 Twitter 記録

<html> <ul class="tl-tweets"> <li>遅刻。nvdaControllerClientの話をしている。 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/8230695053" target="_blank">19:35:48</a></li> <li>source/NVDAObjects/IAccessible/IME.py ってのがあるよ、という話をしています。 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/8231061748" target="_blank">19:54:32</a></li> <li><a href="http://www.nvda-project.org/wiki/DesignOverview" target="_blank">http://www.nvda-project.org/wiki/DesignOverview</a> をみんなで読んでます <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/8231358910" target="_blank">20:08:39</a></li> <li>accesibility API : MSAA = IAccesible / IAccessible2 / Java Acc Bridge / UI Automation = SRはここから情報を得る <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/8231441491" target="_blank">20:12:39</a></li> <li>native api : MSAAで取れない情報をとるために使用。カーソルの位置など。Operating System Functions : バッテリ残量など。どっちも win32 を叩いている? <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/8231475412" target="_blank">20:14:17</a></li> <li>NVDA Components : オブジェクト指向、抽象化された設計。コンポーネント化。Core 初期化してメインループに。 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/8231546651" target="_blank">20:17:36</a></li> <li>API Handlers : APIの初期化や終了 source/IAccessibleHandler.py を眺めてみる。 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/8231654026" target="_blank">20:22:35</a></li> <li>中国語対応しかけた残骸らしいです RT <a href="http://twitter.com/toratorax" target="_blank">@toratorax</a>: <a href="http://twitter.com/nishimotz" target="_blank">@nishimotz</a> IMEに対応しようとした痕跡でしょうか <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/8231687011" target="_blank">20:24:11</a></li> <li>source/NVDAObjects/init.py にあった。class NVDAObject これが全ての基本 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/8231809581" target="_blank">20:29:56</a></li> <li>MSAA がイベントを出すとキューに入って、eventHandler.executeEvent で実行される?イベントは event_ で始まる。event_gainFocus and event_nameChange など <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/8231899245" target="_blank">20:33:53</a></li> <li>ツール>ログ閲覧。設定>一般設定>ログ記録>デバッグ でいじってみる。#nvdajp 日本語を入力する。ローマ字入力の keypress しか来てないことを確認。 posted at <a href="http://twitter.com/nishimotz/status/8232240145" target="_blank">20:48:59</a></li> <li>IME.py に from logHandler import log を入れてみようとしたが実行環境で動かすところまでいかず、時間切れ。現在nvdajpは本家と別のレポジトリを持っている TODO:実行環境を作るマニュアル改訂 posted at <a href="http://twitter.com/nishimotz/status/8232449435" target="_blank">20:58:07</a></li> </ul> </html>

その後、MLではソースから実行環境を作る情報を更新。西本は勝手に pyaa に取り組む。

2010-02-16 IME候補読み上げに取り組んだ

2010-02-16 定例ミーティング

  • MS-IME 2002 の候補読み上げ。pyaa による実験で分かったウィンドウクラスとロールを NVDAObjects/IAccessible/init.py に反映させてみる
  • ソースはTABコードでインデントされていることに注意。
  • 実行するときは python generate.py してから python nvda.pyw を行う。
  • ログ閲覧で print 文の出力を読める。その他に 1/0 を実行してエラーを出すテクニックも。

成果

  • とりあえず IME.py の init() は候補選択ごとに呼ばれている。
  • ここで _get_value() して speech.speakText() する。スペースバーを3回くらい押すとしゃべり始めることが確認できた。
  • ログ閲覧には1回目からprintされているので speakText() の問題ではないか?

注意:以下の設定が正しくないと再現できない

  • 「コントロールパネル」→「地域と言語のオプション」を表示させる
  • 「言語」タブに移動し、「テキストサービスと入力言語」を開く
  • 「規定の言語」を「日本語 - Microsoft IME Standard Ver.8.1」に設定する
  • 「詳細設定」タブに移動し、「詳細なテキストサービスをオフにする」チェックボックスのチェックをはずす
  • 「詳細なテキスト サービスのサポートをプログラムのすべてに拡張する」のチェックボックスをチェックする

今後の課題

  • appModules/ : ここに置いたファイルが自動的に読み込まれる。appModules をもうちょっと研究してみる?
  • speech モジュール。キューイングされているから1回目と2回目を読まない?
  • TSFに取り組まないとVista/7対応や新しいIME対応が難しい。COMラッパーを作れるように。。
  • 詳細読み辞書を組み込む。田町読み?

Twitter 記録

<html> <ul class="tl-tweets"> <li>今夜はNVDA日本語化プロジェクトの定例ミーティングに行ってきます <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/9169888846" target="_blank">13:01:16</a></li> <li>NVDA日本語化プロジェクトのミーティング。西本からの報告終わり。これから本家のソース読み <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/9180715683" target="_blank">20:03:01</a></li> <li>pyAA による実験で分かったウィンドウクラスとロールを NVDAObjects/IAccessible/init.py に反映させれば IME2002 の候補を読めるんじゃない?という話に <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/9181295579" target="_blank">20:28:17</a></li> <li>不完全ながらMS-IME2002の候補を読み上げ始めた! <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/9182963437" target="_blank">21:33:01</a></li> </ul> </html>

メモ

import 文が読み込んでいるソースファイルのディレクトリ階層はトップからの絶対位置。 ただし from . import の場合は当該ファイルからの相対位置。

NVDAObjects/IAccessible/__init__.py

363行
		elif windowClassName.startswith('Mozilla'):
			mozCls=__import__("mozilla",globals(),locals(),[]).Mozilla
			clsList.append( mozCls)

この __import__ の意味:
mozilla.py のなかの Mozilla クラスをインポートして clsList に追加する

1394行

###class mappings
_staticMap={

1394行
	("mscandui21.candidate",oleacc.ROLE_SYSTEM_PUSHBUTTON):"IME.IMECandidate",

どうやら mscandui21.candidate と IME.py はアジア圏のIME対応を試みたが成功しなかったときの残骸らしい。

西本が調べた情報によると "MSCandUIWindow_Candidate" と ROLE_SYSTEM_LISTITEM が IME2002 の登録に必要なクラス名とロールID。

これをやってみたのが今回のパッチ。

IMECandidate: event_objectSelection は入れてみたが、このメソッドは呼ばれていない。

2010-02-16 のパッチ

(ソースはnvdajpのsvnレポジトリ)

Index: NVDAObjects/IAccessible/IME.py
===================================================================
--- NVDAObjects/IAccessible/IME.py	(revision 65)
+++ NVDAObjects/IAccessible/IME.py	(working copy)
@@ -5,6 +5,13 @@
 
 class IMECandidate(IAccessible):
 
+	def __init__(self, *argv, **kw):
+		super(IMECandidate, self).__init__(*argv, **kw)
+		name = super(IMECandidate,self)._get_value()
+		if name is not None:
+			print "IMECandidate: " + name
+			speech.speakText(name)
+		
 	def _handleNewCandidate(self):
 		oldNav=api.getNavigatorObject()
 		if oldNav.windowClassName!=self.windowClassName:
@@ -20,3 +27,7 @@
 	def event_stateChange(self):
 		if self.event_objectID>=1 and self.event_objectID<=9:
 			self._handleNewCandidate()
+	
+	def event_objectSelection(self):
+		print "IMECandidate: event_objectSelection"
+		self._handleNewCandidate() # nvdajp
Index: NVDAObjects/IAccessible/__init__.py
===================================================================
--- NVDAObjects/IAccessible/__init__.py	(revision 65)
+++ NVDAObjects/IAccessible/__init__.py	(working copy)
@@ -366,6 +366,9 @@
 		elif windowClassName.startswith('bosa_sdm'):
 			sdmCls=__import__("msOffice",globals(),locals(),[]).SDM
 			clsList.append(sdmCls)
+		elif windowClassName.startswith('MSCandUIWindow'): # nvdajp
+			sdmCls=__import__("IME",globals(),locals(),[]).IMECandidate
+			clsList.append(sdmCls)                           
 		if windowClassName.startswith('RichEdit') and winUser.getClassName(winUser.getAncestor(windowHandle,winUser.GA_PARENT)).startswith('bosa_sdm'):
 			sdmCls=__import__("msOffice",globals(),locals(),[]).RichEditSDMChild
 			clsList.append(sdmCls)
@@ -1391,6 +1394,7 @@
 	("AVL_AVView",oleacc.ROLE_SYSTEM_TEXT):"adobe.AcrobatTextNode",
 	("AcrobatSDIWindow",oleacc.ROLE_SYSTEM_CLIENT):"adobe.AcrobatSDIWindowClient",
 	("mscandui21.candidate",oleacc.ROLE_SYSTEM_PUSHBUTTON):"IME.IMECandidate",
+	("MSCandUIWindow_Candidate",oleacc.ROLE_SYSTEM_LISTITEM):"IME.IMECandidate", # nvdajp
 	("SysMonthCal32",oleacc.ROLE_SYSTEM_CLIENT):"SysMonthCal32.SysMonthCal32",
 	("hh_kwd_vlist",oleacc.ROLE_SYSTEM_LIST):"hh.KeywordList",
 	("Scintilla",oleacc.ROLE_SYSTEM_CLIENT):"scintilla.Scintilla",

2010-03-08 ミーティング

<html> <ul class="tl-tweets"> <li>NVDAの詳細読みを中村さんが実装した話。田町読みをpythonのdictionaryで実装。VistaとIME2007でスペースを2回押したら読んでくれる感じの状況 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/10164971098" target="_blank">19:21:27</a></li> <li>本家NVDAがbzrに移行した話。我々もbzrで作業した方が本家とのマージが楽になるはず。sfjpのbzrホスティングを使うか?Windowsのbzrエクスプローラは良くできてるが読み上げ非対応。。 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/10165082572" target="_blank">19:26:21</a></li> <li>bzrのレポジトリを作るときnvda本家のブランチはそのまま取り込んでjpブランチを別途作って行くのが将来マージしやすいのでは <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/10165204535" target="_blank">19:31:31</a></li> <li>中村さんの実装:文字コードのエラーは本家で解決。IME2002では候補文字列をget_valueしていたがget_nameにすれば2007で動く。上下カーソルとスペースで挙動が違うなど <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/10165394412" target="_blank">19:39:39</a></li> <li>speech.speakText() で喋らせれば読み上げ中のキー操作でちゃんと音切れする。Vistaの標準IMEだとget_nameはうまくいかない。ウィンドウクラスでIMECandidateを場合分けするか <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/10165622243" target="_blank">19:49:13</a></li> <li>田町読みがGPL互換ではなさそうなのでどうしようという話 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/10166118088" target="_blank">20:09:11</a></li> <li>python の unicodedata.normalize が記号の読み上げに使えるかも、という話 <a href="http://bit.ly/b1w3aV" target="_blank">http://bit.ly/b1w3aV</a> <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/10166427025" target="_blank">20:21:07</a></li> <li><a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> 参考 Unicode::Normalize で遊ぶ - daily dayflower <a href="http://bit.ly/c4NYfv" target="_blank">http://bit.ly/c4NYfv</a> posted at <a href="http://twitter.com/nishimotz/status/10166525311" target="_blank">20:24:57</a></li> <li>GPL互換の詳細読み辞書が手に入るまでダミー辞書で開発をしようという話 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/10166645690" target="_blank">20:29:35</a></li> <li>IAccessibleを継承したクラスを毎回 init してていいのか。TSFの検討は並行して進める。オープンソースカンファレンス再参加の検討 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/10167225395" target="_blank">20:50:49</a></li> </ul> </html>

TSF 対応を NVDA に組み込む

text_services_framework ReadComp の処理を取り込む。

どうやら共有メモリの処理が必要。

成果はこちら:

http://files.nishimotz.com/ReadCompPython-100321.zip

コマンドプロンプトで一番上のディレクトリにある readcomp.py を実行すると 30秒、数字が表示されつづけます。 その間にメモ帳を開いてかな漢字変換をすると、そのたびにイベントが呼ばれた回数が インクリメントされて数字が増えます。

ポイントは rcomplib.dll で共有メモリを使って、メモ帳・IME・TSFのプロセスが 書き換えた情報を、Python 側のプロセスで読めるようにしたところです。

C++のプロジェクトは rcomplib のデバッグビルドしか使っていません。

2010-04-12 コードレビュー

<html> <ul class="tl-tweets"> <li>bzrレポジトリの状況報告。リビジョン3403までが本家。3404以上が日本語関連。sf.jpのbzrでは(root)/nvdajpの下の階層作成には認証が必要? <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/12039165753" target="_blank">19:28:43</a></li> <li>mainは本家+安定した日本語版。projectは開発版。なんかしっくり来ないな。ブランチ使うんだろうが、bzr branch は svn checkout のような機能? <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/12039429211" target="_blank">19:36:35</a></li> <li>田町読みのライセンスをGPL互換にしてもらうお願いをする。当面はBEPの詳細読み辞書を開発用に使う。 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/12041320486" target="_blank">20:32:14</a></li> <li>TSFの未確定文字を抜き出すDLLの試作。処理をどこに突っ込むか。keyboardHandler.pyを読む <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/12041849510" target="_blank">20:46:52</a></li> <li>winInputHook.pyでキーイベントのフック処理。WINFUNCTYPEでコールバック関数もPythonで書けるのか。core.pyに初期化処理。 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/12042738213" target="_blank">21:09:51</a></li> <li>appModulesの中身のベースクラスはappModuleHandler.pyにある。ここではプロセスの名前をチェックしてフックをかけるなど <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/12043256862" target="_blank">21:22:49</a></li> </ul> </html>

2010-06-19 ミーティング

技術的なメモ

  • IEのテキストボックスでキーイベントが起こらない。別スレッドでループを回して監視することも必要
  • 他の処理が重いときに音がでないことがあるかも。TTSの選び方、CPU性能による?
  • APIとしては IMM 系と TSF 系を両方使わざるを得ない。
  • 閲覧時の1文字読み上げ?本家には数字キー2を2回押すとアスキーコード読み上げという機能がある。これを流用?
  • 共有メモリを使う方法はやめて、RegisterGlobal 系を使っている。
  • とうとう音声合成エンジンが次のマイルストーンになりそう

Twitterでの発言

<html> <ul class="tl-tweets"> <li>ぼちぼち <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> の話が始まる。IMEの入力中のキーエコーも変換候補の読み上げも技術的にはできてきた。いま渡辺先生が ITRC の説明中 posted at <a href="http://twitter.com/nishimotz/status/16529108799" target="_blank">16:05:02</a></li> <li>「JAWS or nothing の状況をなんとかしたい」(笑) <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/16529372893" target="_blank">16:11:53</a></li> <li>改正JIS「アクセシビリティ・サポーテッド」が日本だけガラパゴス化しないためにNVDAのようなスクリーンリーダの存在が必要 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/16529427899" target="_blank">16:13:17</a></li> <li>フォネティック読みが未実装であることについて。まだ本家にも実装されていないという話 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/16530377865" target="_blank">16:37:33</a></li> <li>アスキーコードを読み上げるキーバインドがある。これを乗っ取って日本語の詳細読みをしてはどうか、という話 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/16530416490" target="_blank">16:38:37</a></li> <li>8月末までに gtalk の DLL 化と naist-jdic (ipadic) への移行をしようと思っている私 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/16530614197" target="_blank">16:43:49</a></li> <li>記号の読み方。本家はTTSエンジンまかせ。日本語では独自に辞書を持つべきという話。ローマ字文字列の読み下し? <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/16530795823" target="_blank">16:48:24</a></li> <li>本家の中国語対応のチケットの話 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> <a href="http://www.nvda-project.org/ticket/635" target="_blank">http://www.nvda-project.org/ticket/635</a> posted at <a href="http://twitter.com/nishimotz/status/16530876977" target="_blank">16:50:34</a></li> <li>女子大生が帰る前にデモをしてもらう <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/16530914331" target="_blank">16:51:35</a></li> <li>日本語IME対応のアルファ版を6月末に出そうという話 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/16531583332" target="_blank">17:09:20</a></li> <li>Flashにも対応してWAI-ARIAにも対応しているオープンソースのスクリーンリーダの日本語対応。正式版のリリースのときには積極的に宣伝するべきという話 <a href="http://twitter.com/search?q=%23nvdajp" target="_blank">#nvdajp</a> posted at <a href="http://twitter.com/nishimotz/status/16531659770" target="_blank">17:11:22</a></li> </ul> </html>

次回:7月4日(日)本郷の予定

2010-06-21 自分のブランチを launchpad に作る

アルファリリースに向けた準備

http://bazaar.launchpad.net/~nvdajp/nvdajp/main/files

自分のブランチを作ってみる

$ bzr launchpad-login nishimotz
$ bzr branch lp:nvdajp
$ cd nvdajp/
$ bzr pull

$ bzr info
Standalone tree (format: 2a)
Location:
  branch root: .

Related branches:
    push branch: bzr+ssh://bazaar.launchpad.net/~nvdajp/nvdajp/main/
  parent branch: bzr+ssh://bazaar.launchpad.net/~nvdajp/nvdajp/main/

$ bzr push lp:~nishimotz/nvdajp/development

この状態で

を見ると

  • lp:~nishimotz/nvdajp/development

ができている。

$ cd ..
$ mkdir lp-nishimotz
$ cd lp-nishimotz
# うまく行かない例
$ bzr branch lp:~nishimotz:/nvdajp/development
bzr: ERROR: Invalid url supplied to transport: "lp:~nishimotz:/nvdajp/developmen
t": No such person or team: nishimotz%3A
# うまくいった例
$ bzr branch bzr+ssh://bazaar.launchpad.net/~nishimotz/nvdajp/development

やや時間がかかるが終了

$ ls
development

日本語IME対応の差分ファイルを取り込んで bzr add / bzr commit する。

$ bzr commit -m "Japanese Input Method Editor support"
Committing to: /cygdrive/c/work/nvdajp/lp-nishimotz/development/
modified source/TSF.py
modified source/core.py
modified source/keyboardHandler.py
added source/nvdajp_dic.py
added source/nvdajp_keyEvents.py
modified source/rcomplib.dll
modified source/config/__init__.py
Committed revision 3503.

$ bzr push lp:~nishimotz/nvdajp/development
Pushed up to revision 3503.

2010-06-21 nvdajpime レポジトリを作る

launchpad.net サイトでプロジェクトを作る。

ブランチを nvdajpime にする。プロジェクトは指定しないと +junk になるらしい。

https://code.launchpad.net/~nishimotz/+junk/nvdajpime

ローカルで bzr init / bzr add / bzr commit する。

# うまく行かない例
$ bzr push lp:~nishimotz/+junk/nvdajpime
bzr: ERROR: Target directory lp:~nishimotz/+junk/nvdajpime already exists, but d
oes not have a valid .bzr directory. Supply --use-existing-dir to push there any
way.
# うまくいった例
$ bzr push lp:~nishimotz/+junk/nvdajpime --use-existing-dir
Created new branch.

2010年6月30日 日本語アルファ版

2010-07-04 開発ミーティング

Togetter によるまとめ: http://togetter.com/li/33404

ブログ記事 http://d.nishimotz.com/archives/576

2010年8月20日 日本語ベータ版

2010-09-01 音声エンジン関連

nvdajp.1283431305.txt.gz · 最終更新: (外部編集)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki