テスト駆動開発と
アクセシビリティ(仮)
西本卓也 @24motz
NVDA日本語チーム
2014-02-01 オープンセミナー2014広島 懇親会LT
今年のテーマ TDD & AGILE
• むりやりこじつけてNVDAの話をする
• Windows 用のスクリーンリーダー
• オープンソース

• 日本語版は本家版のfork
• 2013年にやっと日本語化が完成
• 現在は本家3か月ごとのラピッドリリースに追従
Webの自動テスト Selenium
• NVDA
• Firefox
• Python

# coding: utf-8
from __future__ import unicode_literals
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
import time
baseUrl = 'http://www.nvda.jp'
driver = webdriver.Firefox()
driver.get(baseUrl + '/index.html')
assert "NVDA日本語版 ダウンロードと説明" in driver.title
ActionChains(driver).send_keys(Keys.TAB).perform()
time.sleep(3)
ActionChains(driver).send_keys(Keys.TAB).perform()
time.sleep(3)
ActionChains(driver).send_keys(Keys.TAB).perform()
time.sleep(3)
ActionChains(driver).send_keys('2').perform()
time.sleep(5)
UI Automation
• Microsoftの技術
• ソフトウエアの自動テスト
• スクリーンリーダーとアプリケーションの通信
• Windowsナレーター

• Appleにも同じ名前の技術がある
テスト駆動と自然言語処理
• 自動点訳エンジンの開発
• 音声合成エンジンのテキスト解析を流用
• 複雑であいまいな点字表記の規則
• コーパス?テストケース?
{ 'note': '+ 基本テスト +' },
{
'input': 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミム
メモヤユヨン',
'output':
'⠁⠃⠉⠋⠊⠡⠣⠩⠫⠪⠱⠳⠹⠻⠺⠕⠗⠝⠟⠞⠅⠇⠍⠏⠎⠥⠧⠭⠯⠮⠵⠷⠽⠿⠾⠌⠬⠜⠴',
'inpos1':
[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,3
2,33,34,35,36,37,38],
'cursorPos': 0,
'brlCursorPos': 0,
},
{
'input': 'ガギグゲゴザジズゼゾダジズデドパピプペポキャキュキョチャチュチョ
ヒャヒュヒョジャジュジョピャピュピョ',
'output':
'⠐⠡⠐⠣⠐⠩⠐⠫⠐⠪⠐⠱⠐⠳⠐⠹⠐⠻⠐⠺⠐⠕⠐⠳⠐⠹⠐⠟⠐⠞⠠⠥⠠⠧⠠⠭⠠⠯⠠⠮⠈⠡⠈⠩⠈⠪⠈⠕
⠈⠝⠈⠞⠈⠥⠈⠭⠈⠮⠘⠱⠘⠹⠘⠺⠨⠥⠨⠭⠨⠮',
},
{
'text': '1234567890',
'input': '1234567890',
'output': '⠼⠁⠃⠉⠙⠑⠋⠛⠓⠊⠚',
'inpos2': [0,1,2,3,4,5,6,7,8,9],
{ 'note': '=== その2 複合語 ===' },
{ 'note': '1.区切ると意味の理解を損なう短い複合語や短い略語は、一続きに書く。' },
{
'comment': '点訳のてびき第3版 第3章 その2 1',
'text': '朝夕',
'input': 'アサユー'
},
{ 'note': '【備考】内部に助詞などを含んでいても、1語として熟している短い複合語は一続きに
{
'comment': '点訳のてびき第3版 第3章 その2 1 備考',
'text': '息の根',
'input': 'イキノネ'
},
{ 'note': '2.接頭語・接尾語・造語要素と自立語の間は続けて書く。' },
{
'comment': '点訳のてびき第3版 第3章 その2 2',
'text': '相たずさえる',
'input': 'アイタズサエル'
},
{
'comment': '点訳のてびき第3版 第3章 その2 2',
'text': '各種',
'input': 'カクシュ'
},
TDDの心理学
• 即座にフィードバックを得る
• 書いたコードに自信を持つ
• これから書くコードに自信を持つ
• 健康
• 正しさ・正直さ
• モチベーション
チクセントミハイのフロー理論
high

不安

フロー

挑
戦
無感動

退屈

技能

high

Nishimoto osh2014: Test driven development and accessibility

  • 1.
  • 2.
    今年のテーマ TDD &AGILE • むりやりこじつけてNVDAの話をする • Windows 用のスクリーンリーダー • オープンソース • 日本語版は本家版のfork • 2013年にやっと日本語化が完成 • 現在は本家3か月ごとのラピッドリリースに追従
  • 14.
    Webの自動テスト Selenium • NVDA •Firefox • Python # coding: utf-8 from __future__ import unicode_literals from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.action_chains import ActionChains import time baseUrl = 'http://www.nvda.jp' driver = webdriver.Firefox() driver.get(baseUrl + '/index.html') assert "NVDA日本語版 ダウンロードと説明" in driver.title ActionChains(driver).send_keys(Keys.TAB).perform() time.sleep(3) ActionChains(driver).send_keys(Keys.TAB).perform() time.sleep(3) ActionChains(driver).send_keys(Keys.TAB).perform() time.sleep(3) ActionChains(driver).send_keys('2').perform() time.sleep(5)
  • 15.
    UI Automation • Microsoftの技術 •ソフトウエアの自動テスト • スクリーンリーダーとアプリケーションの通信 • Windowsナレーター • Appleにも同じ名前の技術がある
  • 19.
  • 20.
    { 'note': '+基本テスト +' }, { 'input': 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミム メモヤユヨン', 'output': '⠁⠃⠉⠋⠊⠡⠣⠩⠫⠪⠱⠳⠹⠻⠺⠕⠗⠝⠟⠞⠅⠇⠍⠏⠎⠥⠧⠭⠯⠮⠵⠷⠽⠿⠾⠌⠬⠜⠴', 'inpos1': [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,3 2,33,34,35,36,37,38], 'cursorPos': 0, 'brlCursorPos': 0, }, { 'input': 'ガギグゲゴザジズゼゾダジズデドパピプペポキャキュキョチャチュチョ ヒャヒュヒョジャジュジョピャピュピョ', 'output': '⠐⠡⠐⠣⠐⠩⠐⠫⠐⠪⠐⠱⠐⠳⠐⠹⠐⠻⠐⠺⠐⠕⠐⠳⠐⠹⠐⠟⠐⠞⠠⠥⠠⠧⠠⠭⠠⠯⠠⠮⠈⠡⠈⠩⠈⠪⠈⠕ ⠈⠝⠈⠞⠈⠥⠈⠭⠈⠮⠘⠱⠘⠹⠘⠺⠨⠥⠨⠭⠨⠮', }, { 'text': '1234567890', 'input': '1234567890', 'output': '⠼⠁⠃⠉⠙⠑⠋⠛⠓⠊⠚', 'inpos2': [0,1,2,3,4,5,6,7,8,9],
  • 23.
    { 'note': '===その2 複合語 ===' }, { 'note': '1.区切ると意味の理解を損なう短い複合語や短い略語は、一続きに書く。' }, { 'comment': '点訳のてびき第3版 第3章 その2 1', 'text': '朝夕', 'input': 'アサユー' }, { 'note': '【備考】内部に助詞などを含んでいても、1語として熟している短い複合語は一続きに { 'comment': '点訳のてびき第3版 第3章 その2 1 備考', 'text': '息の根', 'input': 'イキノネ' }, { 'note': '2.接頭語・接尾語・造語要素と自立語の間は続けて書く。' }, { 'comment': '点訳のてびき第3版 第3章 その2 2', 'text': '相たずさえる', 'input': 'アイタズサエル' }, { 'comment': '点訳のてびき第3版 第3章 その2 2', 'text': '各種', 'input': 'カクシュ' },
  • 24.
    TDDの心理学 • 即座にフィードバックを得る • 書いたコードに自信を持つ •これから書くコードに自信を持つ • 健康 • 正しさ・正直さ • モチベーション
  • 25.