読者です 読者をやめる 読者になる 読者になる

mixi engineer blog

ミクシィ・グループで、実際に開発に携わっているエンジニア達が執筆している公式ブログです。様々なサービスの開発や運用を行っていく際に得た技術情報から採用情報まで、有益な情報を幅広く取り扱っています。

Appleカラー絵文字文字コード表(UTF-16)

iOS

期末のお忙しいところ失礼致します。iPhoneアプリ開発担当の七尾です。
iOS5がリリースされてしばらく経ちましたが、iOS5の新機能のひとつである、Appleカラー絵文字についてUTF-16な文字コード表を作りましたので、お知らせ致します。

iOS Emoji - GitHub Pages

テーブルの横幅が大きくなってしまったので、GitHub Pagesに乗せてしまいました。
また、画像数が多いので、GitHub Pagesで公開しているものは、カテゴリごとのhtmlに分割しています。統合版htmlはmasterブランチに入っていますので、必要な方はそちらをご利用ください。

iOS5からどこでも入力できるようになった絵文字は見た目はSoftbankのUnicode絵文字ですが、実体はAppleカラー絵文字(Unicode6互換)に変わっています。
ちなみに従来のSoftbank Unicodeも表示はできます。

そして絵文字キーボードで入力した文字から実際に以下のような処理で文字コードを拾ってみると、Appleカラー絵文字の文字コード(UTF-16)が取れます。
- (NSString *)getCharCode:(NSString *)input {
    int stringLength = [input length];
    NSString *codeString = @"";
    for (int i = 0; i < stringLength; i++) {
        unichar c = [input characterAtIndex:i];
        codeString = [codeString stringByAppendingFormat:@" 0x%02X",c];
    }
    return codeString;
}

ただ、いかんせんUTF-16で取れてしまうので、なかなか調べものをするにも辛い。というわけで、iOS開発者の為の一覧表というこでUTF-16の表を作りました。
後ほど、UTF-8の文字コードも足していこうと思います。

そもそもなんでこんな事をしているのかというと、NSStringは文字数が絵文字だとちゃんと取れないのです。
絵文字キーボードで入力した絵文字でlengthメソッドを実行すると、絵文字は1〜4文字、要はバイト数で取れてしまうという現実に阻まれ、文字コードから絵文字判定して字数をカウントする。。。だと。。。?というわけで色々頑張っています。

ちなみにhtmlの作成には先日メジャーアップデートされた、twitterのCSSフレームワークbootstrapを使わせて頂きました。
設置して、ちょっとひと手間加えただけでオシャンティなページが出来るので、大変助かります。ありがたい!!
テーブルも、フォーム系のパーツも、スマフォ対応までもバッチ来い!な仕様に惚れます。

ただ、ver2でクラス名など大幅に変わっているので、私のようにver1.xから使ってる人はtableとかナビゲーションとかでハマるかもしれないので要注意です。ver1.xから既に利用している方はUpgrading from 1.4というページが用意されているので、参考にしてみて下さい。