目次

nvdajp 開発環境

since 2010-12-12

nvdajp 開発者向けセットアップ。nvdajp_bazaar もどうぞ。

情報源

Windows 7/8 で開発環境

インストールするもの

updated on 2013-11-19

ソースコードの readme に書かれているが https://bitbucket.org/nvdajp を使うという前提で手順をまとめる。

基本的にすべて32bit版のバイナリ。新しいバージョンが出ていてもむやみに最新版を使わないほうがよい。

特に明記しないかぎり、インストーラーのオプションはデフォルト。

JTalk 単体テストで使うもの

環境変数

Redmond Path が便利。

Windows 7 (32bit) + Windows SDK 7.0 の場合は環境変数 PATH に以下を追加

"C:\Program Files\Microsoft Visual Studio 9.0\VC\bin"

miscdep の include\jtalk をビルドする前にはコマンドプロンプトで以下を実行

vcvars32 

その他 PATH に追加しておく場所

c:\Python27
c:\Python27\Scripts
C:\Program Files\7-Zip\7z.exe

64ビット環境の場合は Program Files(x86) になる。

lv も miscdep で使っている。

2012年までの備考

備考

開発ドキュメント scons devDocs 関連

MFC DLLについて

リポジトリからの取得

上記以外のものは launchpad の lp:~nvdajp/nvdajp/MiscellaneousDependencies から取得してください。

nvdajp_bazaar も参照してください。

作業例:

> bzr branch lp:~nvdajp/nvdajp/MiscellaneousDependencies miscdep
> bzr branch lp:~nvdajp/nvdajp/jpmain jpmain
> cd miscdep
> _pack.cmd 
# これで ..\miscdep.7z を作る
> cd ..\jpmain
> 7z x ..\miscdep.7z
# これで miscdep を jpmain に統合する
> chcp 437
> scons -c
> scons source
# これで jpmain\source\nvda.pyw が実行可能になる。

実行時に依存するもの

ツール

本家の人たちが勧めているテキストエディター:

その他

cygwin

かつて JTalk 関連のコンパイルに cygwin を使っていましたが、2011.3j からは不要です。

ただし cygwin を使うと launchpad.net を使うための ssh 設定がやりやすいかも知れません。

Windows SDK

since 2011-10-19

Windows 7 x64 に Windows SDK v7 をインストールして、スタートメニューの CMD Shell を開くと x64 の開発環境になっている。

setenv /x86 を実行すると、x86 のコンパイル環境がセットアップされる。

下記のようにショートカットを設定すれば一発で x86 環境が開く:

リンク先 C:\Windows\System32\cmd.exe /E:ON /V:ON /T:0E /K "SetEnv.cmd /x86"
作業フォルダ "C:\Program Files\Microsoft SDKs\Windows\v7.0\bin"

この環境は JTalk ライブラリの更新に伴って暫定的に必要になったもので、いずれ scons に統合したら、CMD Shell は不要になる予定。

依存パッケージ (miscdep)

作業フロー

since 2012-05-26

> bzr branch lp:nvdajp nvdajp-work
> dir 
nvdajp-miscdep-83.7z
nvdajp-work
> cd nvdajp-work
> "C:\Program Files (x86)\7-Zip\7z.exe" x -y ..\nvdajp-miscdep-83.7z
> scons -c
> scons source

セブンジップ 7z の説明もどうぞ。

eSpeak

since 2011-10-06

espeak は音声合成エンジン(日本語には非対応)。

2011.3 系以降では espeak をソースから scons するようになっている。

1.46.02 以上と書かれているが、どこにあるか分かりにくい。正解は下記:

http://espeak.sourceforge.net/test/latest.html

なぜか espeak を include/espeak において scons source するとエラーになる。

世間で話題になっていないので Windows のロケールに依存するのかも知れない。

解決策(1)は espeak の src/tr_languages.cpp を UTF-8N から UTF-8(BOMあり)に変換する:

解決策(2)は、src/tr_languages.cpp の 519,520 行の行末コメントを無効化する:

2013-03-29 espeak-general メーリングリストで報告したら 1.47.03e で直してもらえた。改行文字が認識されていなかった不具合として、コメントの行末に文字を追加して対応。

			// character codes offset by 0x380
			static const char el_vowels[] = {0x10,0x2c,0x2d,0x2e,0x2f,0x30,0x31,0x35,0x37,0x39,0x3f,0x45,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0};
#if 1
			static const char el_fvowels[] = {0x2d,0x2e,0x2f,0x35,0x37,0x39,0x45,0x4d,0};
			static const char el_voiceless[]= {0x38,0x3a,0x3e,0x40,0x42,0x43,0x44,0x46,0x47,0};
#else
			static const char el_fvowels[] = {0x2d,0x2e,0x2f,0x35,0x37,0x39,0x45,0x4d,0}; // ε η ι υ  έ ή ί ύ
			static const char el_voiceless[]= {0x38,0x3a,0x3e,0x40,0x42,0x43,0x44,0x46,0x47,0};  // θ κ ξ π ς σ τ φ χ 
#endif
			static const char el_consonants[]={0x32,0x33,0x34,0x36,0x38,0x3a,0x3b,0x3c,0x3d,0x3e,0x40,0x41,0x42,0x43,0x44,0x46,0x47,0x48,0};
			static const wchar_t el_char_apostrophe[] = {0x3c3,0};  // σ

2012-05-14 : espeak 1.46.12 以降に対応させるパッチという話(2013.1で正式に 1.47 対応になった):

=== modified file 'source/synthDrivers/_espeak.py'
--- source/synthDrivers/_espeak.py	2012-03-06 07:49:20 +0000
+++ source/synthDrivers/_espeak.py	2012-05-11 11:45:09 +0000
@@ -80,10 +80,13 @@
 #EE_BUFFER_FULL=1
 #EE_NOT_FOUND=2
 
+eightCharsType =c_char *8
+
 class espeak_EVENT_id(Union):
 	_fields_=[
 		('number',c_int),
 		('name',c_char_p),
+		('string',eightCharsType),
 	]
 
 class espeak_EVENT(Structure):

liblouis

since 2011-12-14

2012.1系(本家 Branch nvda/main: Rev 4839 以降)では liblouis を scons でビルドするようになった。

http://code.google.com/p/liblouis/downloads/list

から liblouis-2.4.1.tar.gz を落とす。

2013年4月からの作業

git に移行した。

2013年5月21日にブランチ release-2013.1jp での作業を終了した。がしかし、2013.1.1 が出るらしいので再開した。。

今後は本家 master からの派生 jpbranch で作業を行う。release-2013.1jp ブランチでの変更はすべて jpbranch にマージする。

git checkout master
git pull origin master
git checkout -b jpbranch
git merge release-2013.1jp

やってみたら珍しく conflict した:

Auto-merging source/versionInfo.py
Auto-merging source/globalCommands.py
Auto-merging source/appModules/skype.py
CONFLICT (content): Merge conflict in source/appModules/skype.py
Auto-merging source/NVDAObjects/window/edit.py
Auto-merging source/NVDAObjects/IAccessible/__init__.py
Auto-merging source/IAccessibleHandler.py
Auto-merging .gitignore
CONFLICT (add/add): Merge conflict in .gitignore
Automatic merge failed; fix conflicts and then commit the result.

git status するとこうなる:

# Unmerged paths:
#   (use "git add <file>..." to mark resolution)
#
#       both added:         .gitignore
#       both modified:      source/appModules/skype.py

修正して git add して git commit すればいいらしい。

2011年から2013年4月までの作業

2011.1

since 2011-01-31

Windows 版 bazaar をインストールする。

本家のbeta1に手作業で日本語関連をマージしたブランチ lp:~nishimotz/nvdajp/releases_2011.1 を bzr branch する。

後述の nishimotz 版 miscdep を上書きする。

開発環境の作り方 に書かれたツールのうち miscdep に入っていないもの、システムにインストールすべきものを入れる。

翻訳に関しては Translating NVDA into other languages (NVDA localization) に書かれたツールが必要かも知れません。

nishimotz版2011.1ブランチ

lp:~nishimotz/nvdajp/releases_2011.1

nishimotz版miscdep

更新 2011-02-02

bzr で手に入らないファイル:

リポジトリ: lp:~nishimotz/nvdajp/MiscellaneousDependencies

さらに過去の記録

since 2010-12-12

devinstaller というツールが整備されたが、最新の nvda に対応できていない、かも知れない。

Windows XP 32 bit

なるべく devinstaller が役立つような方針で。。

執筆作業中:

インストーラで入れるもの

2010-01 開発環境の構築

2010年1月の状況。

以下は svn の場合。2010年4月移行、nvdajp の最新ソースは bazaar で入手。

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

http://bazaar.launchpad.net/~nvda-core-dev/nvda/main/view/head:/readme.txt (2011-04更新)

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

その他もろもろ。

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で各種ライブラリを最新版にしている)が、動いているっぽい。

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 に入っていなかったので入れた。

2010-06 devinstaller

コマンドプロンプトで 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-06-21 buildout.cfg

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

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

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

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

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

2010-10-10 2010.2 を取り込む

buildout はやりなおさない。

nvdajp/2010.2 をマージして python generate.py して python nvda.pyw できることを確認。

2010-12-29 bzrignore されたファイルたち

nvdajp_bazaar 作業関連。

scons portable してエラーが起きない状況を楽に作りたい:

installer/waves source/lib source/lib64 source/liblouis-2.dll 
source/louis source/typelibs source/waves source/comInterfaces 
source/images source/synthDrivers/espeak-data source/synthDrivers/espeak.dll 
source/synthDrivers/jtalk source/nvdajpime.dll

公式のファイルはここ: http://bazaar.launchpad.net/~nvdajp/nvdajp/MiscellaneousDependencies/files/head:/source/

2011-01-30 こんなワーニングが出るので要修正 replace source/comInterfaces/_ _ init _ _.py