rubykaigi 2017-nishimotz-v6

26
What visually impaired programmers are thinking about Ruby? Takuya Nishimoto @nishimotz RubyKaigi 2017

Upload: takuya-nishimoto

Post on 21-Jan-2018

1.588 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Rubykaigi 2017-nishimotz-v6

What visually impaired programmers are thinking

about Ruby?

Takuya Nishimoto @nishimotz

RubyKaigi 2017

Page 2: Rubykaigi 2017-nishimotz-v6

2

Page 3: Rubykaigi 2017-nishimotz-v6

self

• Hiroshima → Tokyo → Kyoto → Tokyo → Hiroshima• PhD Eng. (17 years)

• speech, audio, natural language, machine learning

• experimental psychology / applications / accessibility

• Freelance jobs: Objective-C++ / Python

• NonVisual Desktop Access (NVDA)• Japanese Team Director www.nvda.jp

• Localizations / Enhancements• Insert key → Escape key (makes Mac users happy)

• OpenJTalk / ATOK / Excel cell border / Japanese Braille

Takuya Nishimoto (RubyKaigi 2017) 3

Page 4: Rubykaigi 2017-nishimotz-v6

Takuya Nishimoto (RubyKaigi 2017) 4

Page 5: Rubykaigi 2017-nishimotz-v6

Pref Shimane CMS

Takuya Nishimoto (RubyKaigi 2017) 5

Page 6: Rubykaigi 2017-nishimotz-v6

Read aloud button

Takuya Nishimoto (RubyKaigi 2017) 6

Page 7: Rubykaigi 2017-nishimotz-v6

https://github.com/edhowland/viper

• simple editor in Ruby that works with screen readers• only attempts an audible interface

• sighted users will only see confusing gibberish

Takuya Nishimoto (RubyKaigi 2017) 7

Page 8: Rubykaigi 2017-nishimotz-v6

Takuya Nishimoto (RubyKaigi 2017) 8

Page 9: Rubykaigi 2017-nishimotz-v6

Braille display

Takuya Nishimoto (RubyKaigi 2017) 9

Page 10: Rubykaigi 2017-nishimotz-v6

Console (Terminal) applications

• only displays text

• text is accessible• use can use speech synthesizers and braille displays

• engineers prefer terminal + screen reader• remote access

• demo• Windows Subsystem for Linux (WSL)

• Emacs 24.3.1 + sshd

• TeraTerm + NVDA (NonVisual Desktop Access)

Takuya Nishimoto (RubyKaigi 2017) 10

Page 11: Rubykaigi 2017-nishimotz-v6

Text + Assistive Technology

• Screen reader• VoiceOver (iOS/macOS) / TalkBack (Android) / Orca (Linux)

• Narrator, JAWS, NVDA, etc. (Windows)

• Tactile (refreshable Braille display)• good for verify spelling (type errors)

• device is expensive

• difficult to learn

• Listening (speech synthesizer)• takes time, difficult to locate information

Takuya Nishimoto (RubyKaigi 2017) 11

Page 12: Rubykaigi 2017-nishimotz-v6

Accessible modern text editors

• Visual Studio Code• Chromium-based

• Web accessibility technologies are used

• collaborating with NVDA developers

• Eclipse• IAccessible2 API (developed by Mozilla)

• Dynamic Language Toolkit (DLTK)

• Ruby is supported

Takuya Nishimoto (RubyKaigi 2017) 12

Page 13: Rubykaigi 2017-nishimotz-v6

Ruby and visually impaired programmers

• Pros• documents in Japanese

• easy to read, easy to write, less coding

• tools for server engineers

• test driven development (RSpec etc.)

• Cons• How to build Windows Apps?

• GUI development? (in non-visual way)

• TK is not accessible

Takuya Nishimoto (RubyKaigi 2017) 13

Page 14: Rubykaigi 2017-nishimotz-v6

GUI framework and accessibility

• application• does not directly use speech synthesizer (or Braille display)

• should expose necessary information to OS

• if GUI framework just draws images• sends nothing to OS

• OS cannot send information to screen reader

• application cannot be operated with screen reader

• wxRuby is good, but not actively developed now

Takuya Nishimoto (RubyKaigi 2017) 14

Page 15: Rubykaigi 2017-nishimotz-v6

Example Ruby source code

Takuya Nishimoto (RubyKaigi 2017) 15

Page 16: Rubykaigi 2017-nishimotz-v6

Documentation tools

• Ruby source code to HTML• rdoc

• yard

• demo• Ruby 2.4.1 (Windows Subsystem for Linux)

• Windows 10 + NVDA + Firefox

Takuya Nishimoto (RubyKaigi 2017) 16

Page 17: Rubykaigi 2017-nishimotz-v6

rdoc output

Takuya Nishimoto (RubyKaigi 2017) 17

Page 18: Rubykaigi 2017-nishimotz-v6

Landmarks

• efficient way of move• main role = class Poke

• navigation• search

• content info

• operations• d : next landmark

• shift+d : previous landmark

Takuya Nishimoto (RubyKaigi 2017) 18

Page 19: Rubykaigi 2017-nishimotz-v6

Headings

• == : h2

• === : h3

• default items• h1 : Class

• no methods or constants

• operations• h : next heading

• shift + h : previous heading

• 3 : next h3

Takuya Nishimoto (RubyKaigi 2017) 19

Page 20: Rubykaigi 2017-nishimotz-v6

View Source

• "click to toggle source" appears if pointed by mouse• announced as "clickable"

• cannot understand what happens without mouse pointer

• line indentation reporting

Takuya Nishimoto (RubyKaigi 2017) 20

Page 21: Rubykaigi 2017-nishimotz-v6

Yard output (no landmarks)

Takuya Nishimoto (RubyKaigi 2017) 21

Page 22: Rubykaigi 2017-nishimotz-v6

Headings

Takuya Nishimoto (RubyKaigi 2017) 22

• == : h2

• === : h3

• default items• h1 : Class

• h3 : Instance Method Details

• no constants

• Summary and Details• "collapse" in item name

Page 23: Rubykaigi 2017-nishimotz-v6

expand / collapse (without mouse pointer)

Takuya Nishimoto (RubyKaigi 2017) 23

Page 24: Rubykaigi 2017-nishimotz-v6

view/hide source (without mouse pointer)

Takuya Nishimoto (RubyKaigi 2017) 24

Page 25: Rubykaigi 2017-nishimotz-v6

Why important?

• Comply with standards• Robustness / quality

• Prepared to new technologies

• Voice agents

• Human rights of every person• guidelines and regulations

• W3C WCAG / JIS X8341 / US Section 508 Law

• Technology is removing barriers

Takuya Nishimoto (RubyKaigi 2017) 25

Page 26: Rubykaigi 2017-nishimotz-v6

Conclusions

• accessibility of Ruby• pretty good

• we can make it better

• inclusive design

• handicapped people = lead users

Takuya Nishimoto (RubyKaigi 2017) 26