maaash.jp

what I create

IRKitはiOSのアクセシビリティ(スイッチコントロール、VoiceOver)に対応しています

iOSには、あまりメジャーでないかもしれませんが
設定画面にアクセシビリティという機能があり、これがよくできています。

IRKitシンプルリモコンアプリ では、過去ご要望があり、アクセシビリティのうち、スイッチコントロールとVoiceOverに対応しています(iPhoneのみ。iPadは未対応)
iOSの設定アプリ -> 一般 -> アクセシビリティ -> スイッチコントロール を開き、オンにした後、
リモコンアプリを開くと、以下のように、ボタンそれぞれの周りに青く枠が付き、スイッチコントロールの外部ボタンで選択(=赤外線信号を送信)できるようになります。

IRKit simple remote Accessibility

また、iOSの設定アプリ -> 一般 -> アクセシビリティ -> VoiceOver を開き、オンにした後は同様に、
このボタンの下に書いてある、「25暖房自然風」とかって文字列をiOSが音声合成して読み上げてくれます。

これを実現するのに追加で書く必要のあるコードが少ないのがiOSが「よくできている」と思うポイントですが、以下のような変更でこの対応を行いました。

この画面ではUICollectionViewを使っていて、各ボタンは、UICollectionViewCellを継承したクラスです。

1
2
3
4
// SSButtonCell : UICollectionViewCell
- (void)awakeFromNib {
    self.isAccessibilityElement = YES;
}
1
2
3
4
5
6
7
// SSMainViewController : UICollectionViewController
- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath; {
        IRSignal *signal = [_signals objectAtIndex: indexPath.row];
        SSButtonCell *cell = [cv dequeueReusableCellWithReuseIdentifier: @"SSButtonCell" forIndexPath: indexPath];
        cell.label.text         = signal.name;
        cell.accessibilityLabel = signal.name;
...

これだけだし、accessibilityLabelのところを、漢字もうまく読み上げてくれるのだからすごい。

accessibilityLabelが音声認識対象になって、アプリ内でSiriと話せるようになるとSiriも使えるし、
多くのアプリがアクセシビリティに対応するようになるし一石二鳥でいいと思うんだけどな〜
iOS9で待ってます。

参考

サービスをつくるときには 「こういうユーザー層にこういう使われ方をするだろう」 と考えてその予測の精度がよいと、 いい仕事をした、という満足感がありますが、
(予測は当った上で) さらに想像を越えたところで使われ、 自分の想像力の欠如をよい意味で裏切られるのも、 嬉しいものですね。

ということで、最近もまたアクセシビリティ関連のお問い合わせがあったので検索用に書いてみました。

Comments