-
Notifications
You must be signed in to change notification settings - Fork 167
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
アクセシビリティ改善の検討 #89
Comments
まず「前提」について了解しました。forkするか否かは修正内容によって判断しましょう。 こちらからは情報を提供します。
それぞれについて説明します。 画面に見えている情報から把握する人間のプレーヤーが盤面を把握するのと同じ方法です。HTMLの適切な場所に適切な情報を追加することで実現できると思います。電脳麻将では雛形となるHTMLに牌を差し込んだり、classを追加したりで画面を変化させています。JavaScriptでHTMLをゴリゴリ書いている部分は少ないです。なので pug のソースか、そこからビルド済みのHTMLのソースを一通り見ればコントロールの類は全容を把握できるかと思います。 ご懸念の「鳴けるか」については可能なアクションをボタンで出しています。セレクタでいうと AIに通知している情報から把握するAIが盤面を把握するのと同じ方法です。当然ながらAIは盤面のHTMLなど見てはおらず、プログラムが通知する「変化情報」(打牌や鳴きなど)だけを頼りに行動を判断しています。具体的には以下の部分です。 Majiang/src/js/majiang/player.js Lines 28 to 43 in 0e53c64
この
ただし、この方法だけに頼る場合、盤面の把握は難しくなると思います。頭の中で将棋を差すような状態ですね。 以上、ご参考まで。 |
返信が遅くなってすみません。 盤面の把握について、ある程度現実解が見えてきたので、相談させてください。 基本的には、ひとまず (1) の "画面に見えている情報から把握する" の方向で、なんとかなるのではないかと考えています。全体を一気に見ることはできないため、通常時よりも時間はかかりますが、読み上げができれば判断は可能そうでした。 盤面の把握を実現するために、最低限必要なことは以下の2つだと思います。 (1) rawdataの牌画像にaltを入れるこれは絶対に必要です。 (2) divで表現されているセクションに名前を付けるrawdataの画像は、 (1) の対応によって全て読み上げ可能になるのですが、これだけだと、いろんな牌の名前をひたすら読まれるだけ、という状態になります。今読んだものが、自分の手牌なのか、だれかの捨て牌なのか、ドラなのか、ということがまだ分かりません。
こうすることで、たとえばドラの牌が表示されているところにカーソルを移動したとき、 「ドラ リージョン、 イーピン」というふうに読まれるようになります。 以上の修正ができれば、スクリーンリーダーだけでプレイすることは可能になると思いました。全部ではないですが、ゲーム中にwebコンソールで似たような感じでDOMを書き換えてからやってみたところ、あがりまで到達できました。 ご検討いただけると幸いです。 |
取り急ぎ作業ブランチを切りました。 もし修正してみる場合はこのブランチでお願いします。 私自身がVoiceOverの操作に慣れていないので確認がうまくできないのがもどかしいです。 まあ、慌てずやりましょう。 |
feature/#89 ブランチの 63debdd の修正で、牌の画像にalt属性を追加してみました。確認してみてください。 私も Mac + Safari + VoiceOver で操作してみたのですが、牌にフォーカスが当たりません。これはマウスクリックで卓が選択状態にならないように卓相当のHTML(セレクタだと
|
早速作業してくださりありがとうございます! いつもは Windows でやっていたのですが、 Mac にも開発環境をセットアップして、 VoiceOver でやってみました。 alt属性が着いたことにより、盤面の牌を認識できるようになったことを、 Windows + NVDA 、および Mac + VoiceOver で確認しました。 |
あとはクリックできる場所が分かるようにしないといけないですね。クリックできる牌を |
ありがとうございます。かなり分かるようになってきました。 リージョンが着いたことで、牌が置かれている場所が分かるようになりました。 VoiceOver で要素をクリックするには、 ctrl + option + スペースバーを押します。 クリックできる牌を分かりやすくする方法ですが、見た目に影響がなければ a タグを使ってもよいですし、 button タグを使ってもよいです。ただ、基本的には見た目が変わる気がします。リンクであれば、架線?が入ったりなど。 ここからは多少挙動が変わるので、対応として必須というわけではないのですが、クリック可能な牌には、 tabindex="0" 属性を追加していただきたいです。これにより、タブキーを押したときに、クリック可能な牌にフォーカスが当たるようになるので、キーボードでの操作性が向上します。 |
自分の手牌にタブで移動できるよう これを行ってみて1つ疑問がわいています。それはタブでの移動とVoiceOverでの移動(ctrl + option + 左右矢印)の使い分けです。私としてはタブ移動はクリック可能な場所のみとした方がよいと思います。今回の修正は実は微妙にそうではなくて、相手の思考中は自分の手牌はクリックできない(クリックできたら打順を飛ばしてしまう)にも関わらずタブ移動できてしまっています。 けれどもう一つタブの使い方にアイデアがあって、「東一局」や相手の捨て牌などVoiceOverでの移動が遠いところにジャンプするような操作に使ってもいい気もしています。 VoiceOverの操作に慣れている方からするとどのような使い分けが自然でしょうか。 |
修正ありがとうございます! ご質問の件は、使用者によって多少好みが分かれる部分でもあると思いますが、個人的な見解で回答します。 まず、いつでもクリックできるように見えてしまって、打順を飛ばして押せてしまうかも…という件について。 次に、タブキーを遠い場所へのナビゲーション手段として使う件についてです。 Voiceover を使用しているときの各種ナビゲーションコマンドの挙動は、大まかに説明すると以下のような感じです。 |
情報ありがとうございます。いくつか修正してみました。
これでだいぶ遊べるようになるかと思いますが、ちょっと問題があって、チー/ポン などのボタンをキャンセルできません。マウスでのUIでは盤面の任意の場所を押してキャンセルできるのですが、VoiceOverではその操作はできないのではないかと思います。また、チー/ポン などのボタンが現れたことの把握が難しいと思います。ポップアップ類が出現した時同様の操作性にしたいですが、今の所やり方がわかっていないです。 |
修正していただいていたのに、またもや間が開いてしまい申し訳ありません。 |
大丈夫です。焦らず進めましょう。 |
最新の修正を適用した状態で、何度かプレイしてみました。 泣くときに、ボタンの出現に気がつけないかもしれないという懸念こちらについては、確かに出たタイミングがその場では分からないのですが、プレイのうえではそこまで問題だと思いませんでした。というのも、
という操作をしていたので、泣きたかったのにモーダルを見逃したため機会を逃してしまった、というような問題は発生しなかったからです。 モーダル外のクリックこちらは、モーダルの外であればどこでもよかったので、適当に盤面の牌などを選択してエンターを押すことで、モーダルを閉じることが可能でした。これは、スクリーンリーダー側が、エンターを押したときにクリックイベントをブラウザに送信してくれるため実現できています。スクリーンリーダーの仕様に依存した回避方法のため、Macで同じことができるかどうかを明日検証してみます。 追加で気がついた問題点一方、どの種類の牌をチー/ポンしようとしているのかは、なかなか把握が困難でした。
というような要素は、 "x" ではなく、 "閉じる" と読み上げられます。 ご検討いただけましたら幸いです。 |
遅くなってすみません。 |
反応が遅くて申し訳ありません。 電脳麻将改造中 - koba::blog で触れているのですが、今全面的なリファクタリングをはじめており、その中でアクセシビリティの改善も行う計画です。 進捗したら連絡しますので、触って見ていただけると幸いです。 |
モーダルの動作を見る限り、アクセシビリティを考慮した作り替えが必要かなと思っています。 とりあえず1人麻雀でツモと打牌ができるデモを作ってみました。 |
改善の検討、ありがとうございます。インターネット越しの対戦も計画されているとのことで、うれしくなりました。 |
とてつもなく時間が空いてしまいましたが、プログラムを更新しました。 以前ブログに書いたのですが、プログラム全体をリファクタリング中です。
かなり間が空いてしまいましたが、まだ興味があるようでしたらお試しいただけると幸いです。 |
ご連絡ありがとうございます! |
遅くなって申し訳ありません。 数人で、それぞれ何度かプレイしてみました。 全体的には、以下の2つにまずはフォーカスして考えられると、劇的にプレイしやすくなるのではないかという意見でまとまりそうです。
1について、まだ実際に検証はできていないのですが、 aria-live属性 を打牌のエリアに付けるだけで、もしかするとどうにかなってくれる可能性があります。 |
返信ありがとうございます。 UIの修正になかなか着手できていないのですが、明日からちょうど旧正月の休暇に入るのでこの機会に手をつけようと思っています。 相手の切った牌の読み上げですが、流れの中で読み上げるのが難しそう(VoiceOverがない状態だと打牌速度はだいたい1秒以内になる)なので「ステップ実行」的なモードを導入しようと思っています。相手の動作を読み上げてそれを確認してから次へ進むイメージです。 それと、まだチーの候補が複数ある場合のUIを実装していないのでこれも実装が必要です。 進捗したらまた連絡します。 |
間が空いてしまって申し訳ありません。 ゲームの進行のさせ方には2つの案がありました。
今回は2を採用し、捨て牌を aria-live で読み上げるようにしましたが、ブラウザによってはボタンが出るタイミングとぶつかると読み上げが飛ばされる場合があるようです。 まだ以下の問題があり修正が必要と思っています。
時間があるときに遊んでみていただけると嬉しいです。 |
引き続きの対応、ありがとうございます! |
こんにちは。 |
こんにちは。 他の実装もあり急いではいませんので、時間があるときに状況を教えていただければと思います。 |
こんにちは。 Macで動かしたところ、読み上げされていました。これは、WindowsとMacの、読み上げソフト側の実装の差異によるものなので、とりあえず横に置いておいても大丈夫だと思います(対応方法は思いついています)。ひとまず、Mac環境で再現できる習性を順番に議論して、落ち着いた頃にWindowsへの対応についてはご紹介させていただきます。 かなり遊べるようになってきたので、Voiceoverでのゲームプレイを録画しました。ブラウザの画面を画面共有で映して、Zoomで録画したので、たぶん映像も大丈夫だと思います。私のプレイにほぼ戦術がないのはご容赦ください。初心者なので... https://www.dropbox.com/s/2tyea5cwtmbykr4/video1057106885.mp4?dl=0 牌の読み上げについては、このように読み上げてもらえば、まったく問題ないと思います。 そのほかに気がついた点は、以下のようなことです。
とはいえ、打牌がリアルタイムに確認できるようになったことで、麻雀をプレイしているという感覚がかなり強くなりました。改善していただき、ありがとうございます! |
確認いただきありがとうございます。 まずは他者の打牌とボタン表示のタイミングがぶつかったときに打牌の読み上げがかき消される問題に対処しないといけないですね。ご指摘のようにボタンの aria-label に直前の打牌の情報を入れるのがよさそうです。 自分のポジションがわかりにくい問題は、配牌時に「東一局 1本番 ドラは一索、あなたは南家です」みたいなアナウンスが入れられればよいですが、読み上げソフトを使っていない人に取っては待ち時間が長すぎる気がします。これらの情報は画面の一番先頭にありますので、最初のツモを引いたタイミングなどで確認してもらうのがよいと思います。 修正したら、また連絡します。 |
ご無沙汰してます。 先ほど電脳麻将の ver.2.0.0 をリリースしました。 ブログで言及しましたが、電脳麻将のプログラム解説書を出版することになり、この半年はそれに注力していました。そのために機能追加が後回しになってしまい申し訳ありません。 近況報告だけですいませんが、まだ続けてますということだけ気に留めて頂ければ幸いです😁 |
リリースおめでとうございます! |
実現したいこと
視覚に障害があっても、スクリーンリーダーを利用して麻雀を練習したい。
このアプリケーションは、ウェブベースで構築されているので、画面読み上げソフトウェアに比較的低コストで対応できる可能性がある。
画面表示に影響することなく改善できることが理想的だが、もしかすると特別な変更が必要かもしれない。
このissueで議論する内容
電脳麻将をスクリーンリーダーで操作できるように改善できるかどうか、実装面での相談をしたい。
実現可能なめどが立ったとして、その変更を公式にも組み込むか、forkしたアクセシビリティ対応版を作成するか決定したい。
前提
アクセシビリティ対応のために他のプレイヤーのUXを下げたり、既存の挙動を大きく変更するようなことは望んでいない。あくまでも、この対応によるダウングレードは出さない、だれも困らないことが前提。
現状気になっていること
これらの問題がなんとかなれば、かなり遊べるようになるのではないかと思う。
自分の持ち牌が正しく読まれない
rawdata の画像データに alt を入れることで解決できる。検証済み。
捨てられた牌や、ドラの情報が確認できない
詳しい原因はまだ調査していない。
スクリーンリーダーで見ると、牌数、得点、自牌画像、音声コントロール、速度コントロール、バージョンを認識できるが、それ以外が見えていない。
自分以外の対戦相手の行動が分からない
もっとも改善の難易度が高いと思われる。おそらく、今は卓の盤面上の牌が変化するのを見て状況を判断する、ということになっていると思うが、これはテキストで情報伝達しないと正確には伝わりにくい。
やり方としては、 live region を使って、 aria-live="polite" 属性を付けた領域に補助情報を書き込んで読ませる方法がある。
ただ、これだけだと補助情報が画面に出てしまうので、さらにこうする。
cssでやっているのはこの実装例
見ての通り、非常にハッキッシュなコードができる。forkしたほうがいいんではないかと言った理由はここにある。
泣けるかという問題
泣けるとき、おそらく何かクリックできる要素が出てきて、それをクリックすれば泣く、しなければ泣かない、というようなやりかたをしていると思う。この時、
という問題があり、検証が必要。
The text was updated successfully, but these errors were encountered: