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