アプリのメタデータのデフォルト言語を変更する方法

iTunes Connectで、メタデータ(AppStoreに表示される紹介文など)のデフォルト言語をアプリごとに指定できるようになりました。
これまでは、最初のアプリ登録時に選択したデフォルト言語が、その後追加されるすべてのアプリに適用されてしまい、かつ、変更もできなくて、苦労していました。

以下に、変更の手順を、簡単に説明します。

各アプリの情報設定を行う画面左上にあるApp Informationというタイトルの横、[Edit]というボタンをクリックします。

すると、以下のような設定パネルが表示されるので、そこで、そのアプリのデフォルト言語を選択することができます。

Localizeしたリソースを登録していない地域のAppStoreでは、アプリの紹介文やスクリーンショットが、このデフォルト言語で表示されます。そのため、デフォルトを[Japanese]にしていると、そこで日本語の紹介文やスクリーショットが表示されてしまいます。
なので、デフォルト言語は[English]にしておき、Localizationで[Japanese]を追加するのが無難だと思います。

私も、早速、そのように変更して、正しく適用されていることを確認しました。
同じような状況の方は、ぜひ、試してみてください。

SysStats Monitor / SysStats Lite 3.2 アップデートのお知らせ

先程、SysStats Monitor/SysStats Lite 3.2が、AppStoreにリリースされました。
主な変更点は、以下の通りです。

  • iOS5への対応
    • CPU使用率のUserとSystemの値が合算されるようになったことへの対応
    • デフォルトのプロセスブックマークに追加された標準アプリを反映
  • 強制的に英語モードで実行する機能を追加
    設定は、標準の設定アプリから行ってください。
  • その他
    いくつかのマイナーバグの修正と改善を行いました。

有料版のSysStats Monitorは、Facebook Feed Dialogの仕様変更があったようです - The iPhone Development Playgroundでお知らせしたFacebookの問題も解決しました。

これから使ってみようと思われる方は、以下のAppStoreをクリックして、AppStoreからダウンロードしてみてください。

SysStats Monitor (有料版) SysStats Monitor

SysStats Lite (無料版) SysStats Lite

どうぞ、よろしくお願い致します。

iOSの絵文字に関するAppleのサポート情報

前回の記事(iOSと絵文字について - The iPhone Development Playground)で、絵文字に関することを書きましたが、Appleの公式サポート情報でも、絵文字を使う時の注意事項が説明されています。

iOS:絵文字の使用
iOS:絵文字に関する問題のトラブルシューティング
iPhone:SMS メッセージがほかのデバイスで正しく表示されないことがある

元々、メールの時に文字化けが起きたりすることは、iOSだけの問題ではないので、かなり周知されていることだと思います。

iOS5では、あらゆるところで絵文字が使えるようになったので、Webサイトに入力する時などに、使っても問題ないかどうか、少し意識する必要があると思います。

iOSと絵文字について

iOS4.xまでは、絵文字キーボードが使える場所は、SMS/MMSと、i.softbank.jpのメールに限定されていました。このときの絵文字は、Unicodeの私用領域(PUA: Private Use Area)を使って表現されていました。

そのことは、以下の記事でわかりやすく説明されているので、参考にさせていただきました。

  • いまの段階では、iPhone絵文字は主にSMS/MMSなどシフトJISの世界で使われるものだが、Unicodeで表現することもできる。iPhoneでは、文字化けを防ぐために、絵文字キーボードは絵文字が使えるシーン(シフトJISの世界)でしか出てこないようになっている。しかし、たとえばSMS/MMSで絵文字を入力した上でクリップボードにコピーし、Unicodeの世界に連れてくることは可能である。
  • Unicodeでは、iPhone絵文字は基本的に私用領域(PUA)の符号位置で表現される。それに加え、日本のケータイ絵文字がUnicodeに収録されたことを受けて、iOSはこちらの(PUAではない)符号位置もサポートしている。おそらくiOS 5では、PUAではない符号位置のほうがデフォルトになるものと思われる。
iPhone絵文字についてUnicodeの視点からまとめてみた - Mac OS Xの文字コード問題に関するメモ

ここで、「おそらくiOS 5では、PUAではない符号位置のほうがデフォルトになるものと思われる。」というように言及されていますが、まさに正解ですね。

携帯電話の絵文字 - Wikipedia

iOS5からは、どこでも絵文字キーボードが使えるようになりました。そこで使われているのは、Unicodeに正式に収録された方の絵文字になっているようです。
ただし、そこで入力された絵文字は、どこでも思った通りに表示されるわけではないというのが現実です。
いわゆる、機種依存文字」と同じような問題が、そこに潜んでいます。

Twitterに投稿した場合を例に、具体的に見てみましょう。

SysStats Monitorでは、現在のデバイスの状況をTwitterに投稿する機能を備えています。そこに、バッテリーの状態を示す絵文字を入れるように機能追加する予定です。*1

まずは、SysStats Monitor画面の下の方にある、「シェア」というボタンをタップします。

すると、以下のようなTwitterに投稿する画面が開きます。

ここで送信ボタンをタップすると、表示されているメッセージが、Twitterに投稿されます。

実際に投稿した内容を、いろいろなビューワで見てみると、Unicode絵文字のサポート状況が見えて来ると思います。

iPhoneTwitter公式アプリ

まずは、定番のiPhoneTwitter公式アプリから見てみましょう。

問題なく表示されていますね。

Mac版のTwitter公式アプリ

Mac版のTwitter公式アプリではどうでしょうか?

「⚡」だけ、少し違う絵柄になっていますが、何とか表示されていますね。

Safari

Safariではどうでしょう?

Twitter公式アプリと同じですね。
Macの場合、10.7 Lionで、「Appleカラー絵文字」というフォントが使われるようになっている場所でないと、カラーの稲妻は表示されないようです。
MacOSX標準のテキストエディットをリッチテキストモードに設定し、「文字ビューア」で絵文字を入力しながら、フォントを確認してみると、そのことがわかると思います。

Firefox(Mac版)

では、最後に、Firefox(Mac版)はどうでしょう?

こちらは、残念ながら、全く表示されないようです。
chrome(Mac版)も同じような結果でした。


現時点では、こういった状況であることを意識しつつ使う必要があるようですね。

ちなみに、そういうことがわかっていながら、SysStats Monitorで絵文字を入れるようにしたのは、そもそもiOSユーザをターゲットにしているとともに、環境によって表示に問題が出る場合があったとしても、致命的な問題とはならないと思ったからです。

なお、今回はSysStats MonitorとTwitterを例に説明しましたが、これは特定のアプリやWebサービスに依存する問題ではなく、他のWebサービスやアプリでも起こりうるということを、ご理解ください。

*1:この記事を書いている段階では、まだアップデートの申請中ですので、次のバージョンが出るまでは、まだ絵文字は入りません。

日本語キーボードの変換候補表示方法の変更への対応

iOS5で、日本語キーボードの変換候補表示方法が変わったことに、みなさんすでに気付いていることと思います。

iOS4.xでは、以下のように、カーソルの近くに表示される仕様でした。

iOS5では、以下のように、変換候補の表示領域が固定で確保されるようになったので、画面の一部のボタンなどが隠れてしまうようになりました。

それに対応できるようにするために、iOS5から、キーボードの大きさが変わったことを、アプリで検知するためのNotification(UIKeyboardWillChangeFrameNotification)が新たに追加されました。

それを使って、隠れてしまう部分のサイズや、表示位置を調整する必要があります。
SysStatsMonitorで、その対応を実施中なのですが、その結果、以下のようになる予定です。

具体的なコーディングについては、以下の記事を参考にさせていただきました。

画面いっぱいのUITextViewがキーボードに隠れないようにする « LANCARD.LAB|ランカードコムのスタッフブログ

あと、1点注意すべきことがあります。
UIKeyboardWillChangeFrameNotificationは、iOS5から追加された機能なので、iOS4.xをターゲットとするアプリの場合は、OSのバージョンをチェックして、iOS5.0以降のときだけ、有効になるよう考慮が必要です。(iOS4.xでこのNotificationを使用すると、アプリが異常終了します)

チェックの方法は、前回の記事(iOSのバージョンチェック方法 - The iPhone Development Playground)で説明していますので、必要であれば、参考にしてください。

iOSのバージョンチェック方法

今週は、iPhone 4Sの発売が控えていますが、開発者にとっては、もう1つ重要なポイントがあります。それは、iOSが、5.0にバージョンアップされることです。
SysStats MonitorとSysStats Liteでは、バージョンアップの影響を受ける部分があります。
過去に、2.2.1でビルドしたアプリから、3.0で追加されたAPIを使ってみました - The iPhone Development Playgroundで、メソッドが定義されているかどうかをチェックする方法を紹介しましたが、今回は、実行中のOSのバージョンをチェックするより他に方法がありませんでした。
簡単な処理ですが、そのチェック方法について、メモを兼ねて、書いておこうと思います。

    NSString *currentSystemVersion = [[UIDevice currentDevice] systemVersion];

    if ([currentSystemVersion compare:@"5.0" options:NSNumericSearch] == NSOrderedAscending) {
        
        // 5.0より前のバージョンと判定されたとき
        NSLog(@"currentSystemVersion(%@) < 5.0", currentSystemVersion);
        
    }
    
    if (([currentSystemVersion compare:@"5.0" options:NSNumericSearch] == NSOrderedSame) ||
        ([currentSystemVersion compare:@"5.0" options:NSNumericSearch] == NSOrderedDescending)) {
        
        // 5.0以降のバージョンと判定されたとき
        NSLog(@"currentSystemVersion(%@) >= 5.0", currentSystemVersion);
        
    }

-[NSString compare:options:]メソッドのoptionsにNSNumericSearchを指定すると、中に含まれている数字を考慮して比較してくれるので、楽ですね。

Facebook Feed Dialogの仕様変更があったようです

SysStats Monitorには、Facebookにデバイスの状態を投稿する機能があります。
それは、Facebookが提供しているFeed Dialogというコンポーネントを使って実現しています。

Feed Dialog

具体的な画面のイメージは、以下の通りです。

本来ならば、画面上部のテキストエリア(Say something about this の下)に、

<>
[Uptime]: 0 day(s), 12:17:38
[Memory(MB)]: free= 17.4, other=329.1, wired= 69.7, active= 53.9, inactive= 32.8
[Battery]: 85% [Process]: 39

という感じの情報が表示され、Facebookに投稿されるはずですが、ここに情報が設定されなくなっていることに気付きました。
調べてみたところ、原因が判明しました。Facebook側の仕様が、いつのまにか変わっていたようです。

以下に、前述のFeed Dialogから、該当箇所を引用します。

このmessageというプロパティが、該当する箇所なのですが、最近、そこに設定されている内容は無視するようになっていたのですね。。

もしも、この機能を使っていただいている方がいらっしゃいましたら、こういった事情があることをご理解いただければと思います。
現在、対応方法を検討中ですので、しばらくお待ちください。