見出し画像

Xcodeで擬似言語でテストをする方法

ここのところ #WWDC20 の記事を書いているのでこの記事もそうかと思いきや普通に今世に出ているXcodeでも利用できるのでその他の記事として書いています。ただ、内容についてはこちらのセッションを見て知りました。

今の世に出ているXcodeでも利用できるのでずっと可能だったのかもしれません...昨年末にAndroid Studioでこのような記事が出ていました。

これを見てXcodeでもできないかな?とぼんやり考えつつ特に調べたりしなかったんですが実はXcodeでも既にできるということを知り衝撃を受けました。

Xcodeで擬似言語を利用してテストをする方法

早速擬似言語を利用する方法を説明します。

画像1


スキーム選択のところでEdit Scheme...を選択します。

画像2

左のペインでRunを選択し、Optionsタブで Application Language をクリックします。一番下の方に見慣れない項目がありました。

画像3

これが正にpseudo(擬似)言語なのでした。現時点(Xcode 11.5)で選択できるのは5つです。

Double-Length(2倍の長さ)
Right-to-Left(左右逆転)
Accented(文字の上下にアクセント記号が表示される)
Bounded String(文字が[]で囲われる)
Right-to-Left With Right-to-Left Strings(左右逆転に更に文字が左右反転)

せっかくなので1つずつ見ていきます。

Double-Length Pseudolanguage

画像4

設定するとこのように同じ文字列が二度表示されます。これの嬉しいところは

画像5

このように横幅を決め打ちで決めているような画面で長い文字が表示されてしまう場合のレイアウト崩れを発見しやすいということです。例えば日本語や中国語などの漢字を利用する国の場合、とても短く表現可能な場合でも、英語など他の言語に翻訳するととても長くなってしまう恐れがあるのでそういう場合に便利です。

Right-to-Left Pseudolanguage

画像6

こちらはアラビア語など右から左に表示する言語をシミュレートするものです。これの嬉しいところは、上記の画像を見て分かる通り、tableViewのaccessoryViewに設定させている画像が左右反転されていなかったり、Auto Layoutが適切に設定されていないなどの不具合を発見する時に役立ちます。

Accented Pseudolanguage

画像7

パッと見てバグかと思いますがちゃんと英語として読めますね。こちらはスペイン語など上下にアクセント記号が表示される言語をシミュレートするものです。例えばlineHeightを狭く設定してしまったがために、複数行表示させると上下の文字が近すぎたり被ったりしてしまう場合の不具合を発見する時に役立ちます。

Bounded String Pseudolanguage

画像8

こちらの正しい利用方法は不明ですが、Double Lengthと同様に文字列が長くなった事をシミュレートしているのではないかと思います。文字の前後に[# #]という記号が付与されます。

Right-to-Left Pseudolanguage With Right-to-Left Strings

画像9

先述したRight-to-Left Pseudolanguageに加えて文字列まで左右逆転して表示されています。こうなってくると頑張らないと読めないですね...ちなみに矢印などの反転を修正するには UIImage().imageFlippedForRightToLeftLayoutDirection() というメソッドを利用します。

画像10

無事修正できました

まとめ

そもそも何故擬似言語でテストをする必要があるかというと、実際に端末の設定をアラビア語などに設定してしまうと、最悪の場合元の設定に戻せないなどのリスクがあったり、キーボードに使用しない言語のキーボードが残り続けたりと、端末の設定に無駄な影響を及ぼす可能性があります。そういう時に言語の特徴だけを生かしつつ、言語としては普段見えてるものとほぼ変わらないので、動作に迷うことがない擬似言語はとても利用する価値があります。
公式ドキュメントとしては下記の記事が詳しかったです。CLIからどのように擬似言語で起動するのかを探している中で見つけました。(擬似言語を再現するには言語コードがあるのでは無くNSForceRightToLeftWritingDirectionなどの属性を設定するようです)

WWDCのセッションでは2018年に触れられていることを発見しました。


いいなと思ったら応援しよう!