Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
What visually impaired
programmers are thinking
about Ruby?
Takuya Nishimoto @nishimotz
RubyKaigi 2017
2
self
• Hiroshima → Tokyo → Kyoto → Tokyo → Hiroshima
• PhD Eng. (17 years)
• speech, audio, natural language, machine lear...
Takuya Nishimoto (RubyKaigi 2017) 4
Pref Shimane CMS
Takuya Nishimoto (RubyKaigi 2017) 5
Read aloud button
Takuya Nishimoto (RubyKaigi 2017) 6
https://github.com/edhowland/viper
• simple editor in Ruby that works with screen readers
• only attempts an audible inter...
Takuya Nishimoto (RubyKaigi 2017) 8
Braille display
Takuya Nishimoto (RubyKaigi 2017) 9
Console (Terminal) applications
• only displays text
• text is accessible
• use can use speech synthesizers and braille di...
Text + Assistive Technology
• Screen reader
• VoiceOver (iOS/macOS) / TalkBack (Android) / Orca (Linux)
• Narrator, JAWS, ...
Accessible modern text editors
• Visual Studio Code
• Chromium-based
• Web accessibility technologies are used
• collabora...
Ruby and visually impaired programmers
• Pros
• documents in Japanese
• easy to read, easy to write, less coding
• tools f...
GUI framework and accessibility
• application
• does not directly use speech synthesizer (or Braille display)
• should exp...
Example Ruby source code
Takuya Nishimoto (RubyKaigi 2017) 15
Documentation tools
• Ruby source code to HTML
• rdoc
• yard
• demo
• Ruby 2.4.1 (Windows Subsystem for Linux)
• Windows 1...
rdoc output
Takuya Nishimoto (RubyKaigi 2017) 17
Landmarks
• efficient way of move
• main role = class Poke
• navigation
• search
• content info
• operations
• d : next la...
Headings
• == : h2
• === : h3
• default items
• h1 : Class
• no methods or constants
• operations
• h : next heading
• shi...
View Source
• "click to toggle source" appears if pointed by mouse
• announced as "clickable"
• cannot understand what hap...
Yard output (no landmarks)
Takuya Nishimoto (RubyKaigi 2017) 21
Headings
Takuya Nishimoto (RubyKaigi 2017) 22
• == : h2
• === : h3
• default items
• h1 : Class
• h3 : Instance Method Det...
expand / collapse (without mouse pointer)
Takuya Nishimoto (RubyKaigi 2017) 23
view/hide source (without mouse pointer)
Takuya Nishimoto (RubyKaigi 2017) 24
Why important?
• Comply with standards
• Robustness / quality
• Prepared to new technologies
• Voice agents
• Human rights...
Conclusions
• accessibility of Ruby
• pretty good
• we can make it better
• inclusive design
• handicapped people = lead u...
Upcoming SlideShare
Loading in …5
×

Rubykaigi 2017-nishimotz-v6

2,818 views

Published on

What visually impaired programmers are thinking about Ruby?

http://rubykaigi.org/2017/presentations/nishimotz.html

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Rubykaigi 2017-nishimotz-v6

  1. 1. What visually impaired programmers are thinking about Ruby? Takuya Nishimoto @nishimotz RubyKaigi 2017
  2. 2. 2
  3. 3. 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
  4. 4. Takuya Nishimoto (RubyKaigi 2017) 4
  5. 5. Pref Shimane CMS Takuya Nishimoto (RubyKaigi 2017) 5
  6. 6. Read aloud button Takuya Nishimoto (RubyKaigi 2017) 6
  7. 7. 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
  8. 8. Takuya Nishimoto (RubyKaigi 2017) 8
  9. 9. Braille display Takuya Nishimoto (RubyKaigi 2017) 9
  10. 10. 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
  11. 11. 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
  12. 12. 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
  13. 13. 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
  14. 14. 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
  15. 15. Example Ruby source code Takuya Nishimoto (RubyKaigi 2017) 15
  16. 16. 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
  17. 17. rdoc output Takuya Nishimoto (RubyKaigi 2017) 17
  18. 18. 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
  19. 19. 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
  20. 20. 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
  21. 21. Yard output (no landmarks) Takuya Nishimoto (RubyKaigi 2017) 21
  22. 22. 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
  23. 23. expand / collapse (without mouse pointer) Takuya Nishimoto (RubyKaigi 2017) 23
  24. 24. view/hide source (without mouse pointer) Takuya Nishimoto (RubyKaigi 2017) 24
  25. 25. 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
  26. 26. Conclusions • accessibility of Ruby • pretty good • we can make it better • inclusive design • handicapped people = lead users Takuya Nishimoto (RubyKaigi 2017) 26

×