EPUBアクセシビリティ検証ツール「Ace」を試す

[アクセシビリティ Advent Calendar 2019](https://adventar.org/calendars/3996)の10日目のエントリーです。

# Aceってなに？
[EPUBとは何か](https://ja.wikipedia.org/wiki/EPUB)という話は長くなりますので、詳細はWikiなどをみていただくとして、ざっくり電子書籍で使われるファイルフォーマットのことです。内部の技術としてHTMLやCSS、メタデータの記述にXMLなどの技術が使われており、オープンなフォーマットとして現在はW3Cが標準化を進めています。Webと親和性が高いフォーマットですね。

また、EPUBの仕様において重要なことに、デジタル録音図書の国際標準規格[DAISY(Digital Accessible Information System)](https://www.dinf.ne.jp/doc/daisy/about/index.html)より「アクセシブルな情報システム」の要件を取り入れていることがあります。こちらは[DAISYコンソーシアム](https://www.dinf.ne.jp/doc/daisy/consortium/index.html)が規格の普及を促進しています。

EPUBはその誕生からアクセシビリティ（特に録音図書由来）に関する仕様が組み込まれており、[EPUB Accessibility 1.0](https://www.w3.org/Submission/epub-a11y/) （[日本語訳](https://imagedrive.github.io/Submission/epub-a11y/)）が仕様として策定されています。
[kzakzaさんによる概要解説](https://code.kzakza.com/2017/06/epub-accessibility-1-0/)がわかりやすいです。

本日ご紹介するのは、DAISYコンソーシアムが開発している、EPUBのAccessibility仕様への適合をチェックするツール[Ace](https://daisy.github.io/ace/)についてです。
ちなみにEPUBのバリデーションツールとしてはW3Cによる[EPUBCheck](https://github.com/w3c/epubcheck)というCLIのアプリがありますが、そちらはEPUBの仕様への準拠のチェック、Aceはアクセシビリティのチェックと観点が違います。

まぁ、前置きはよしとして、ともかく動かしてみてどんな出力が得られるか試してみます。

## アプリをダウンロードして起動
さっそく[Aceのウェブサイト](https://daisy.github.io/ace/)よりビルド済みのアプリをダウンロード。
現時点Aceのコアは1.1.1が最新ですが、ビルド済みアプリ最新は1.0.1のようですね。今日はMacOS向けの1.0.1を使ってみます。
![公式サイトの「The Ace App」ページ画面のスナップショット。アプリ導入に関するTable of Contentsが表示されている。](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2827/671df8fc-2984-b07b-f049-d125d37fec6c.png)
サイトのメニュー「The Ace App」からMacOS、Windows、Linux用のビルド済みアプリをダウンロード、展開してインストールします。
ちなみにAceはNodeベース、GUIアプリは[Electron](https://electronjs.org/)で開発されています。

## Aceを起動
起動すると以下の様に画面が表示されます。
![Ace App起動画面、](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2827/0151a348-33bc-9413-08cb-ab0e63a96ac1.png)

テストするのは、まずデモに従い[IDPFのEPUB3サンプル](http://idpf.github.io/epub3-samples/30/samples.html)にします。
ファイルをドラッグ＆ドロップするか、メニューの「Check EPUB」を選ぶとファイル選択ダイアログが表示され、EPUBファイルを選ぶと自動的にチェックが開始されます。
しばらく待つと、以下のように結果が表示されました。さすがに公式のサンプル、あまり面白味のない結果ですが。

![Ace App Reportのsummary画面。Seriousが３件、Moderateが６件、Minorが７件、合計１６件の表示](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2827/ff9c2616-c4a8-ba1e-7d69-b89256e84994.png)
結果は規約違反を表示する「Violations」とアクセシビリティメタデータを含むメタデータの設定情報を表示する「Metadata」、コンテンツの構造やHTMLの構成を表示する「Outlines」、画像と代替テキスト（alt,aria-describedby,figcaption）の一覧を表示する「Images」となっています。

### Violations
Violationは大きく分けてAce独自のEPUBアクセシビリティチェックと、Deque Systems社が開発している[axeというオープンソースのアクセシビリティ検証ライブラリー](https://www.deque.com/axe/)によるチェック結果が表示されます。
![Violationのエラー表示例。Via:AceのSeriousが１件、Via:AceとaXeのModerateが１件づつ表示されている。](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2827/6a1af0a2-2e65-65b9-c8ef-272f2ec4989f.png)
スナップショットでは項目名が消えてしまっていますが、３項目が「Via: Ace/Via: aXe」となっていることでわかりますね。

再掲[kzakzaさんによる概要解説](https://code.kzakza.com/2017/06/epub-accessibility-1-0/)を読んでいただくと分かるとおり、EPUBにおけるアクセシビリティの要件として、WCAGとの適合性Aが必須、AAが推奨となっています。この部分のチェックはaxeが担当。EPUBのための追加要件のチェックはAce独自で書かれている、というつくりになっています。

### Metadata
メタデータのレポートでは、設定されているメタデータ一覧の表示以外に、アクセシビリティ関連のメタデータの設定の有無をチェックして表示してくれます。
![Ace AppのMetadataレポート画面。「Missing accessibility Metadata」が９件ある。](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2827/d7f9c6bf-05af-2985-01f1-a9a3b5c1d082.png)
Violationsで「Serious」が出ていましたが、このEPUBはアクセシビリティメタデータは全滅のようです。

特に面白いレポートも出ていなかったので。OutlinesとImagesは割愛します。
あ、画像のLocationがEPUBCFIだったのが個人的には面白ポイントでしたが。

### Export
Export機能を使うと、静的なレポートファイル（HTML、JSON）をZIPに圧縮し出力してくれます。
HTMLはアプリで表示されるレポート一式と、画像も含まれるようなので、そのまま代替テキストの確認に回せそう。結果を共有したい場合にはよろしいのかなと思います。
JSONは本来CLIで自動化する用途かと思いますが、レポートを何かデータとして再利用するには嬉しいかもですね。

### Settings
設定項目としては、レポートファイルを出力するフォルダの指定と、GUIの言語設定です。
言語は現在、English、French、Spanish、Portuguese-Brazilの４言語。残念ながら日本語はなしですが、[Localization](https://github.com/daisy/ace-gui/wiki/Localization)の説明を読むと翻訳さえ準備できればそんなに難易度高くなく日本語版を追加できそうな感触です。

[数年前にはじめて触った時](https://github.com/shunito/ace)は多言語化する仕組みがまだなく、手軽にさわれませんでしたが、すでに４言語で動く様になっていますので、日本語勢（？）も取り組みたいところですね。
[axeは日本語版があり](https://github.com/dequelabs/axe-core/blob/develop/locales/ja.json)ます（ミツエーリンクスの畠山さんのお仕事、多謝）ので、Ace独自の部分をなんとかすればなんとか。

ということで、年末年始少しチャレンジしてみようかなと思っていますので、できたら翻訳レビューにお付き合いいただけるとありがたいです。

## まとめてきなもの

- Aceはだいぶ成熟してきおり、アプリ版は導入も手軽。メタデータや代替テキストのチェックは概ねできる。
  - Violationsのチェックはもう少し色々試してみたいが、axeがコアにあるので信頼性は結構高いのでは。
  - EPUBCheckと併用して販売されるEPUBの品質チェックに使われるようになるといいな！
- 日本語化はまだされていないが、翻訳を準備すれば組み込みは可能な見込み。
  - 最近電子書籍のアクセシビリティ関連のアウトプットできてなかったので、ちょっと頑張りたい。
  - 英語ダメ人間なので、できたら誰か見て欲しいです。

[UI部分はざっくり日本語化完了](https://github.com/shunito/ace-gui/tree/Localization-ja)のイメージ
![Ace GUI日本語化サンプル](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2827/47d60fd6-f9c3-4fa4-327d-a6446b0f6d74.png)

以上、ありがとうございました。

よければこんなのも見ていってください。
- [サッカードと読みの効率テスト](https://shunito.github.io/fastread/)
- [BES Viewer α](https://shunito.github.io/)