水無月ばけらのえび日記

bakera.jp > 水無月ばけらのえび日記

最近一週間ほどのえび日記

2019年7月7日(日曜日)

タブUIのキーボード操作はユーザーに理解できるのか?

公開: 2019年7月7日22時5分頃

先日このような記事を公開しました。

いわゆるタブUIがキーボード操作できなかったので対応させたという話なのですが、結論としてはtabロールをつけない判断をしたということです。

WAI-ARIAのtabロールを使うと、WAI-ARIA対応するスクリーンリーダーに対して「タブ」という通知をすることができます。また、スクリプトで制御すれば、タブ切り替えのキーボード操作に対応させることも可能です。その対応をした場合どうなるのか、記事には以下のように書きました。

スクリーンリーダーでも「タブ」として操作可能にする

OSが提供するタブの機能をWebで再現する。基本的には望ましい対応だが、タブ操作に慣れていないユーザーは逆に混乱する可能性もある。また、さまざまな実装を行う技術が必要で、一定のコストがかかる。

以上、なぜ「タブ」はスクリーンリーダーで読めない? タブをアクセシブルにする より

「タブ操作に慣れていないユーザーは逆に混乱する可能性もある」と書きましたが、これについて少し補足しておきます

ここで想定しているタブのキーボード操作は、「コーディングWebアクセシビリティ: WAI-ARIAで実現するマルチデバイス環境のWebアプリケーション (www.amazon.co.jp)」で紹介されているものです。具体的には、以下のような記述になっています。

  • 左右の矢印キーを使って隣接するタブを切り替える(フォーカスを移す)。これは対応するタブパネルを表示するアクションでもあります。
  • アクティブな(aria-selectedな)タブと対応するtabpanelとの間を、Tabキーで切り換え、Shift + Tabキーで戻れるようにする。

以上、コーディングWebアクセシビリティ 5-4 タブを1つください! より

tabキーでタブにフォーカスしたら、タブの切り替えは左右の矢印キーで行います。その後、さらにtabキーを押すと、現在選択しているタブに対応するタブパネルに移動します。

これは、WindowsなどのOSが提供するタブUIのキーボード操作と対応しています。タブをタブとしてふるまわせる場合、OSのタブの動作と合わせるのは合理的ですし、合わせるほうが良いはずです。

しかしこの操作、一般的なWebのユーザーに使いこなせるのでしょうか。Webコンテンツの大半はtabキーでフォーカス移動、Enterキーで決定するだけで使えるようになっています。左右カーソルキーを使うのは、入力フォームくらいで、コンテンツ閲覧時にはほとんど使わない操作です。Webコンテンツ内でタブが出てきたとき、左右キーで切り替え操作をするものだと自然に気づいてもらえるものでしょうか。

※もっと言うと、最近は、OSの中でタブUIを見かけること自体が減ってきているようにも思います。

こういったことを考えた結果、タブをタブとしてふるまわせないほうが良いのではないか、と判断したのでした。

とはいえ、実際にユーザーが使えるかどうか試してみたわけではないので、もしかすると普通に使えるのかもしれません。機会があれば、ユーザーテストをして判断してみたいところではあります。

まとめ:
  • タブをタブとしてふるまわせることは難しくない
  • タブとしてふるまわせるなら、OSのタブの操作と合わせるべき
  • しかしその操作はWebコンテンツではあまり一般的な操作ではないように思える
  • なので、今回はあえてタブではないふるまいにした
  • タブ操作がユーザーに伝わるのかどうかユーザーテストをしてみたい

関連する話題: アクセシビリティ

2019年6月30日(日曜日)

ファミコン版ファイアーエムブレムと線形合同法

公開: 2019年6月30日22時55分頃

Nintendo Switch Online (www.nintendo.co.jp)に加入していると、「ファミリーコンピュータ Nintendo Switch Online (www.nintendo.co.jp)」というサービスが利用できます。要するにファミコンのソフトが動くエミュレータなのですが、それなりの数のタイトルが配信されていて遊び放題になります。

配信されているタイトルの多くは昔プレイしたものなのですが、実は当時とは違った楽しみ方ができます。というのも、このエミュレータには「どこでもセーブ」という機能があり、任意のタイミングで状態をセーブ・ロードできるのです。この機能を活用すると、難しかったゲームを簡単にクリアできるようになったり、通常はできないプレイができるようになったりします。あのやたら難しかった「リンクの冒険」も、この機能を活用すれば残機を全く失うことなく最後までプレイできるのです!

※もっとも、ゲームバランスは大きく崩れる可能性があるので、クリアしたことのないタイトルで多用するのはお勧めしません。

この機能でゲーム性が大きく変わってくるタイトルのひとつが、「ファイアーエムブレム 暗黒竜と光の剣」です。

このゲーム、レベルアップ時の成長がランダムになっているのが大きな特徴のひとつです。能力の成長率はキャラクター毎に異なり、成長しづらいキャラクターはほとんど育ちません。それゆえ、成長率の低いキャラは敬遠されがちです。

しかし、「どこでもセーブ」を活用すれば、レベルアップを何度でもやり直せます。レベルアップ前にセーブ、成長が悪かったらロードしてやれば、成長率が低いキャラも、最強キャラへと変身させることができるはずです!

……と、そう考えていた時期が私にもありました……。

実際にやってみると、以下のような露骨な傾向が見えてきます。

どうも使われている乱数が偏っていて、小さい数字と大きい数字を交互に繰り返すという性質があるように見えます。

※守備力とHPが同時に上がらないのは、この2つが連続判定されているためです。守備力の成長判定で小さな値が出ると成長に成功しますが、その場合には、続くHP判定で必ず大きな数字が出るため、HPの成長判定には失敗します。同様に、必殺判定と力の成長が連続判定されているため、必殺判定に成功したときは力の成長判定に失敗します。

これは線形合同法の典型的なパターンです。このゲームの乱数がどうなっているのかはよく分かりませんでしたが、リメイクのSFC版では以下のような計算で出しているようです。

x = (x + 143) mod 256

リメイクがこれなので、おそらく本作も同様なのでしょう。ということで、本作では乱数にこのような性質があるため、いくらリセットを繰り返しても全能力アップの成長はできないのでした。

それでもリセットを駆使すればある程度は制御できるので、そこそこ使えるレベルでよければ育成できます。皆さんも好きなキャラを育ててみてはいかがでしょうか。

参考までに、8章(ワーレンの港町)でレベル20になったビラクのステータスを載せておきます。

ステータス画面: ビラク、Sナイト レベル20、HP20、ちから20、わざ5、武器レベル12、すばやさ10、うんのよさ2、しゅびりょく20

関連する話題: ゲーム

最近の日記

関わった本など