nvaccess / nvda

NVDA (NonVisual Desktop Access) は Microsoft Windows 用の無料のオープン ソース スクリーン リーダーです。NV Access が世界中の貢献者のコミュニティと協力して開発しています。 NV Access は、すべての貢献者およびその他のコミュニティメンバーが、このプロジェクトに参加または貢献している間、このドキュメントに記載されている規則を読み、遵守することを期待しています。

サポートを受ける

初心者、上級ユーザー、新規または長期にわたる開発者、あるいは NVDA についてもっと知りたい、貢献したいという組織のいずれでも、所定のドキュメントおよび NVDA スクリーン リーダー専用のいくつかの通信チャネルを通じてサポートを受けることができます。 以下は、最も重要なサポートソースの概要です。

Documentation

  • NVDA User Guide
  • NVDA Developer Guide
  • NVDA Add->
  • NVDA User Guide
  • NVDA Developer Guide
  • NVDA ControllerClient manual
  • その他のドキュメントはこのリポジトリの Wiki と Community Wiki

Communication channels

  • NVDAユーザーメーリングリスト
  • NVDA開発者メーリングリスト
  • NVDAアドテクノロジー
  • NVDA Add-> メーリングリストメーリングリスト
  • NVDA サポートのためのインスタントメッセージングチャンネル
  • ソーシャルメディアチャンネルのグループやプロファイルを含む他のソース。 言語別ウェブサイト、メーリングリストなど

また、NV Access から直接サポートを受けることもできます。

その他の主要なプロジェクトリンク

  • NVDA on GitHub
  • NVDA issues on GitHub: バグレポート、機能要求など。
  • NVDA 開発スナップショット。 現在の開発状態のプロジェクトのビルドを自動生成
  • NVDA add-ons。 NVDAを強化するアドオンを入手する
  • NVDA Add-ons coordination and support center: NVDAのアドオン環境についてのすべて
  • NVDA Add-ons Template: Add-onsのテンプレートを生成するためのリポジトリ
  • Translating NVDA: NVDAを他の言語に翻訳する方法についての情報
  • NVDA Controller Client (2010-02-19): 外部アプリケーションが直接メッセージを話したり点字したりするためのNVDA APIです。
  • Contributing to NVDA: NVDAのソースコードに貢献するためのガイドライン
  • NVDA commits email list: 3521>
  • Old email archives: NVDA開発に関する議論をまとめたメールアーカイブ

Getting the Source Code

NVDAプロジェクトはソースコードとドキュメントにGitバージョンコントロールシステムを使用しています。 次のコマンドでクローンすることができ、nvda:

git clone --recursive https://github.com/nvaccess/nvda.git

--recursive オプションは、私たちが使用しているさまざまな Git サブモジュールを取得するのに必要です。

Installed Dependencies

The following dependencies need to be installed on your system:

  • Python, version 3.8, 32 bit
    • Use latest minor version if possible.
  • Microsoft Visual Studio 2019 Community, Version 16.XXXXX.XXXXX.XXXXX.XXX.XXX.XXX.XXX.XXX.XXX.3以降:
    • https://visualstudio.microsoft.com/vs/
    • からダウンロードVisual Studioをインストールする際、以下を有効にする必要があります:
      • Windowsグループの「ワークロード」タブ
        • にある。
          • Desktop development with C++
        • 次に、インストールの詳細セクションの [Desktop for C++] の [Optional grouping] で、以下が選択されていることを確認します:
          • MSVC v142 – VS 2019 C++ x64/x86 build tools
          • Windows 10 SDK (10.x86).0.19041.0)
          • C++ ATL for v142 build tools (x86 & x64)
          • C++ Clang tools for Windows
      • 個々のコンポーネントタブで、次の項目が選択されていることを確認します。
        • MSVC v142 – VS 2019 C++ ARM64 build tools
        • C++ ATL for v142 build tools (ARM64)

    Git Submodules

    依存関係の中には Git submodule に含まれるものもあります。git clone に --recursive オプションを渡さなかった場合、git submodule update --init を実行する必要があります。必要なサブモジュールのコミットが変更された場合 (git pull の後など) には、常に git submodule update を実行する必要があります。よくわからない場合は、git pull、マージ、チェックアウトの後に毎回 git submodule update を実行してください。

    参考までに、以下の実行時の依存関係が Git サブモジュールに含まれています:

    • eSpeak NG, version 1.51-dev commit 53915bf0a
    • Sonic, commit 4f8c1d11
    • IAccessible2, commit cbc1f29631780
    • liblouis, version 3.1
    • eSpace NG, version 1.2-dev commit 53915bf0a
    • liblouis, version 1.2
    • eSpace NG, version 1.2-dev commit 53915bf0a
    • Unicode Common Locale Data Repository (CLDR), version 38.1
    • NVDA images and sounds
    • Adobe Acrobat accessibility interface, version XI
    • MinHook, tagged version 1.2.2
    • brlapi Python bindings, version 0.8 or later, distributed with BRLTTY for Windows, version 6.1
    • BRLTTY for Windows, version 6.1
    • BRLTTY for Windows, version 6.0
    • BRLTTY for Windows, version 6.1 BRLTTY for Windows, version 6.0
    • lilli.dll, version 2.1.0.0
    • Python interface to FTDI driver/chip
    • Java Access Bridge 32 bit, from Zulu Community OpenJDK build 13.0.1+10Zulu (13.28.0)
    • Python バインド。11)

    さらに、以下のビルド時の依存関係が miscDeps git サブモジュールに含まれています:

    • txt2tags, version 2.5
    • Nulsoft Install System, version 2.51
    • NSIS UAC plug-in, version 0.2.4, ansi
    • xgettext and msgfmt from GNU gettext
    • Boost Optional (stand-alone header), from commit 3922965

    The following dependencies are not needed by most people, and are not included in Git submodules:

    • to generate developer documentation for nvdaHelper.NVC (日本語) To make a developer documentation for nvdaHelper: Doxygen Windows インストーラー、バージョン 1.8.15:

    • お好みの統合開発環境として Visual Studio Code を使用している場合、Visual Studio Code 用の事前入力済みワークスペース設定を使用できます。この VSCode プロジェクトは NVDA リポジトリのサブモジュールとして含まれていませんが、リポジトリのルートから以下を実行することにより、リポジトリのワークスペース構成を簡単にチェックアウトすることができます。 これらはすべて、このリポジトリのルートにあるrequirements.txtファイルに、特定のバージョンとともにリストアップされています。 これらのパッケージは、このリポジトリ内の孤立した Python 仮想環境にインストールされ、システム全体のパッケージのセットに影響を与えません。

      Preparing the Source Tree

      NVDAソースコードを実行する前に、ソースツリーを準備する必要があります。これは、コマンドプロンプトを開き、NVDAソース配布物のルートに変更し、次のようにタイプすることによって行います。もし、ソースバージョンを実行中にヘルプメニューからユーザードキュメントにアクセスしたい場合は、コマンドラインに user_docs を追加する必要があります:

      scons source user_docs

      単にテストや変更をコミットする場合、ユーザードキュメントはリビジョン番号が変わるたびに変わるので、通常は scons source とだけ実行する方が速いかもしれません。

      NVDAHelper をデバッグ オプション付きでコンパイルする

      他のことに加えて、ソース ツリーを準備すると NVDAHelper ライブラリが構築されます。nvdaHelper をデバッグしようとすると、nvdaHelperDebugFlags および nvdaHelperLogLevel コマンドライン変数で構築することにより、さまざまなデバッグ オプションを制御することができます。 デフォルトは 15 です。

      nvdaHelperDebugFlags 変数は以下のフラグのうちの一つ以上を取ります:

      • debugCRT: ライブラリはデバッグ C ランタイムに対してリンクされ、アサーションは有効化されるでしょう。 (デフォルトでは、通常の CRT が使用され、アサーションは無効になります。)
      • RTC: ランタイムチェック (スタック破壊、未初期化変数、など) が有効になります。 (デフォルトはランタイムチェックなし。)
      • analyze: すべてのnvdaHelperコードに対してMSVCコード解析を実行し、警告があればホールティングを行います。 (デフォルトは解析なし).

      特別なキーワード none および all は、個々のフラグの代わりに使用することもできます。

      以下に、デバッグ CRT および runtype チェックが有効な例を示します

      scons source nvdaHelperDebugFlags=debugCRT,RTC

      デバッグフラグにかかわらず、ビルド時には常にシンボル pdb ファイルが生成されます。その代わり、scons symbolsArchive はそれらを別のアーカイブとしてパッケージ化します。

      デフォルトでは、ビルドはいかなるコンパイラの最適化も使用しません。

      ソース コードの実行

      完全なバイナリ パッケージとランチャーをビルドしなくても、NVDA をソースから直接実行することができます。cmd.exe を使用してソースから NVDA を起動するには、リポジトリのルートで runnvda.bat を実行します。これらの引数はユーザーガイドにも記載されています。

      Building NVDA

      NVDA のバイナリビルドは、Python および NVDA の他のすべての依存関係をインストールしないシステムで実行できます (スナップショットやリリースで行うように)。

      Binary Archives and bundles can be created scons from the root of the NVDA source distribution. 以下のいずれかをビルドするには、コマンドプロンプトを開き、このディレクトリに移動します。

      アーカイブされていないバイナリビルド (展開されたポータブルアーカイブと同等) を作成するには、次のように入力します:

      scons dist

      dist ディレクトリに作成されるビルドです。

      インストーラの構築

      ランチャーアーカイブ(インストールまたはポータブルディストリビューション生成のための実行可能ファイル)を作成するには:

      scons launcher

      アーカイブは出力ディレクトリに配置されます。

      Building the developer documentation

      NVDA開発者ガイドを生成するために、type:

      scons developerGuide

      開発者ガイドは出力ディレクトリのdevDocsフォルダーに置かれます。

      HTMLベースのソースコード文書を生成するにはtype:

      scons devDocs

      文書が出力ディレクトリのNVDAフォルダーに配置されます。

      nvdaHelper (devDocs ターゲットに含まれない) の開発者用ドキュメントを生成するには:

      scons devDocs_nvdaHelper

      ドキュメントは出力ディレクトリの devDocs\nvdaHelper フォルダに配置されます。

      Generate debug symbols archive

      各種 dll/exe バイナリ用のデバッグシンボルのアーカイブを生成するには:

      scons symbolsArchive

      アーカイブは出力ディレクトリに配置されます。

      Generate translation template

      翻訳テンプレートを生成するには:

      scons pot

      Customising the build

      オプションとして、コマンドラインから変数を指定することにより、構築をカスタマイズできます:

      • version: このビルドのバージョン
      • release: 7273>
      • これは、/O2 やプログラム全体の最適化など、さまざまな C++ コンパイラの最適化を有効にします。
      • これはまた、最適化されたバイトコードを生成するように Python に指示します。
      • certFile: 実行可能ファイルに署名するための証明書ファイルです。 証明書は pfx 形式で、プライベート キーを含んでいなければなりません。
      • certPassword: 署名証明書のプライベート キーのパスワードです。 省略された場合、パスワードは想定されません。
      • certTimestampServer: authenticode署名のタイムスタンプに使用するタイムスタンプサーバーのURLです。 省略された場合、署名はタイムスタンプされません。
      • outputDir: 最終的にビルドされたアーカイブなどが配置されるディレクトリです。 NVDA がサポートすべきターゲットアーキテクチャを指定します。 使用可能な値は、all、x86、および x86_64 です。 これは一般にデフォルトのままにしておくべきです。

      たとえば、特定のバージョンでランチャーをビルドするには、次のように入力します:

      scons launcher version=test1

      詳細については、sconstruct ファイルを参照してください。

      自動テストの実行

      NVDA コードに変更を加えた場合、NVDA の自動テストを実行するべきです。

      テスト (ユニットテスト、翻訳可能な文字列のチェック) を実行するには、最初に上記のように NVDA ソース配布物のルートにディレクトリを変更し、次のように実行します。たとえば、ファイル tests\unit\test_cursorManager.pyTestMoveTestSelection クラスのメソッドだけを実行するには、次のコマンドを実行します:

      scons tests unitTests=test_cursorManager.TestMove,test_cursorManager.TestSelection

      Translatable string checks

      Translatable string checks (すべての翻訳可能文字列に翻訳者コメントがあるかどうかをチェックする) だけを実行するには、次のコマンドを実行します。

      scons checkPot

      Linting your changes

      NVDA のコーディング スタイルに準拠していることを確認するために、ローカルで Flake8 linter を実行することができます。runlint.bat は Flake8 を使って、あなたの作業ディレクトリと指定した base ブランチとの間の差分だけを検査します。 ほとんどの場合、それは origin/master となります。

      runlint origin/master

      Linting エラーをより速く警告するために、使用している他の開発ツールと Flake8 を統合するとよいでしょう。詳細は tests/lint/readme.md

      ユニットテスト

      ユニットテストは rununittests.bat スクリプトで実行できます。rununittests.bat に与えられたすべての引数は Nose に転送されます。テストをフィルタリングする方法などについては、Nose 自体のドキュメントを参照してください。

      NVDA への貢献

      NVDA にコードやドキュメントを提供したい場合は、貢献ガイドでより多くの情報を読むことができます。