SlideShare ist ein Scribd-Unternehmen logo
1 von 19
Unicode絵文字とキャリア絵文字
大橋 宏章 NAL-6295
profile
 大橋 宏章
 NAL-6295(なるひろと読みます)
 @nal_6295
 http://blog.nal-6295.biz
 株式会社グラニ所属
 C#が好き
agenda
 携帯絵文字って?
 Unicode絵文字って何?
 携帯電話とスマートフォンが対応している絵文字って?
 相互変換を行うために
 状態を識別しやすくするために
 Unicode絵文字とMySQLの美味しくない話
 最後に
携帯絵文字って?
 Docomoが最初にi-mode絵文字をはじめて、各キャリアがそれに追従す
る形で始めたもの。
 追従するときに互換性を考えればよかったのに、全く互換が無い。
 それぞれ、shift-jisおよびUnicdeの外字として登録されている。
 現在、Softbank,docomoはunicode,auはshift-jisで出力すれば、それぞ
れの携帯で表示される。
 参考:携帯電話の絵文字
http://ja.wikipedia.org/wiki/%E6%90%BA%E5%B8%AF%E9%9B%BB%E8
%A9%B1%E3%81%AE%E7%B5%B5%E6%96%87%E5%AD%97
Unicode絵文字って何?
 Apple,Googleが主導となってdocomo,Softbank,kddi3社の絵文字を
Unicodeに収録しようというプロジェクトemoji4Unicodeの成果。
(なぜ、当の本人たちが参加していないのか・・・)
 Unicode6.0で収録
 これで、各キャリアの絵文字を変換するための共通言語ができる。
 Unicode絵文字とキャリア絵文字の対応については以下ページに表がある。
 http://www.unicode.org/~scherer/emoji4unicode/snapshot/full.html
 UTF-8の追加面に定義されている4バイトのものが存在する
 2文字あわせて合字で表現されているものがある
Google定義の絵文字もあるよ
 Unicode絵文字が合字を採用していることに対して、こちらは1文字で表
現するようにマッピングされている。
 Unicode絵文字はGoogleとAppleが中心となって作られたものなのに更
に作ってどうするつもりなのか。
携帯及びスマートフォンの対応状況
 Docomo,Au
Unicodeで定義されたものを解釈できる機
種もあるが全体としてはShift-jisで定義され
た絵文字を解釈する
携帯及びスマートフォンの対応状況
 Softbank
Unicodeで定義した絵文字を解釈できる
携帯及びスマートフォンの対応状況
 iOS
 5以前
Softbank絵文字での入力となる。
出力はSoftbank絵文字及びUnicode絵文字に対応して
いる
 5以降
Unicode絵文字での入力となる。
出力はSoftbank絵文字及びUnicode絵文字に対応して
いる
携帯及びスマートフォンの対応状況
 Andoroid
4以前
Google絵文字に対応
4以降
Google絵文字、Unicode絵文字に両対応
基本はUnicode絵文字
携帯及びスマートフォンの対応状況
 PC
 Windows8
 OSX
 ともにUnicode絵文字に対応している
相互変換を行うために
 中間言語およびiOS5以降の入力としてUnicode絵文字を使う
 docomoとauはshift-jisでsoftbankはunicodeでの入出力を想定する
 便利なことにUnicode絵文字との相互変換定義が存在
 https://code.google.com/p/emoji4unicode/source/browse/trunk/data/
emoji4unicode.xml
 しかしながらdocomoとauもUnicodeになっている
 更に便利なことにUnicode絵文字とshift-jisの対応テキストが下記にそのその後
変換定義も存在(しかしながらcsv形式のテキスト)
 https://code.google.com/p/emoji4unicode/source/browse/trunk/gener
ated/EmojiSources.txt
相互変換を行うために
 実行時に上記2つの定義ファイルを解釈しても良いがコストがかかる
 ということで、定義クラスを実装することにした
 入力定義、出力定義をそれぞれDictionaryで持つ
 Key?
 符号点を利用して2文字で一文字とする絵文字があるので、バイト配列をBEで
ulongに変換したもので定義
 この時、定義ファイルとulongの値に差があるとめんどくさいのでUTF32を2文字束
ねたものに変換する想定
 Value?
 Unicode絵文字にあってキャリア絵文字にない文字は代替テキストを表示したいの
で変換後のbyte配列と代替テキストとしてのStringを持った簡単なクラスを用意し
た。
相互変換を行うために
 次に実際の変換部分
 符号点を利用して2文字で定義されている絵文字はString型では2文字として
解釈されてしまうという問題
 最初は自分で解釈するロジックを組んでいたが煩雑だった
相互変換を行うために
 System.Globarization.StringInfoクラス
 GetTextElementEnumeratorメソッドを使うと合字を利用した絵文字も1文字
として扱ってくれるので、これにStringを食わせることに・・・
相互変換を行うために
 入力は各キャリアの絵文字からUnicode絵文字に
 出力はUnicodeから各キャリアの絵文字に変換
 定義されているDictionaryのKeyがBEで定義されたUTF32を2文字束ねたulong
 1文字を8バイトの配列に変換し、LEだったら反転させたあとulongに変換
 その後は両方共定義クラスのDictionaryに1文字ずつ当てていくだけ
状態を識別しやすくするために
 Stringのままで扱い続けていると、今、どの状態の文字列を扱っているの
かがわからなくなる
 そのため、変換クラスで入力時は別途定義したクラスに変換出力時に
Stringに戻すという事をしていました
 こうすることで、出力時の変換忘れなどを防ぐようになっています
 出力時はその型を引数としたHelperを用意することで、絵文字表示が行
われるようにしました。
MySQLとUnicode絵文字の美味しく
ない話
 Unicode絵文字は一部、 4バイトUTF-8に定義されている
 MySQLの通常のUnicodeはUTF-8 3バイトまで
 なので、Unicode絵文字を扱うときはMySQL5.5.3以降にし、character
setをutf8mb4という4バイトUTF-8を扱うものに変更する必要がある
最後に
 日本のキャリアが最初から互換性を維持してくれれば、めんどくさいこと
は起きなかった
 Unicode絵文字が登場したことで、それを中間言語とすることで相互変換
が楽になった
 System.Globarization.StringInfoクラスは便利

Weitere ähnliche Inhalte

Andere mochten auch

人種差別の指摘にゆれるUnicodeの絵文字
人種差別の指摘にゆれるUnicodeの絵文字人種差別の指摘にゆれるUnicodeの絵文字
人種差別の指摘にゆれるUnicodeの絵文字Katsuhiro OGATA
 
TeX言語の展開制御による文書の構造化(TeXユーザの集い2014)
TeX言語の展開制御による文書の構造化(TeXユーザの集い2014)TeX言語の展開制御による文書の構造化(TeXユーザの集い2014)
TeX言語の展開制御による文書の構造化(TeXユーザの集い2014)T. Suwa
 
とある制作会社の目次索引作成技法
とある制作会社の目次索引作成技法とある制作会社の目次索引作成技法
とある制作会社の目次索引作成技法Kenshi Muto
 
Unite2015 uGUIの拡張と応用
Unite2015 uGUIの拡張と応用Unite2015 uGUIの拡張と応用
Unite2015 uGUIの拡張と応用Ryohei Tokimura
 
mosaic:「キャリア:キャリアの軸と、キャリア展望の視点」
mosaic:「キャリア:キャリアの軸と、キャリア展望の視点」mosaic:「キャリア:キャリアの軸と、キャリア展望の視点」
mosaic:「キャリア:キャリアの軸と、キャリア展望の視点」Hisashi Yamada
 
書籍向け汎用マークアップのあり方―Re:VIEWの開発を通して
書籍向け汎用マークアップのあり方―Re:VIEWの開発を通して書籍向け汎用マークアップのあり方―Re:VIEWの開発を通して
書籍向け汎用マークアップのあり方―Re:VIEWの開発を通してKenshi Muto
 
みんなで市場変化を予測して自分のキャリアを考える会
みんなで市場変化を予測して自分のキャリアを考える会みんなで市場変化を予測して自分のキャリアを考える会
みんなで市場変化を予測して自分のキャリアを考える会Mariko Hayashi
 
10年後のために考える、キャリアの戦略 先生:村尾 佳子
10年後のために考える、キャリアの戦略 先生:村尾 佳子10年後のために考える、キャリアの戦略 先生:村尾 佳子
10年後のために考える、キャリアの戦略 先生:村尾 佳子schoowebcampus
 
MySQLの文字コード事情
MySQLの文字コード事情MySQLの文字コード事情
MySQLの文字コード事情Masahiro Tomita
 
Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.jsScala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.jstakezoe
 
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
10+ Deploys Per Day: Dev and Ops Cooperation at FlickrJohn Allspaw
 
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいことMySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいことyoku0825
 
データベース設計徹底指南
データベース設計徹底指南データベース設計徹底指南
データベース設計徹底指南Mikiya Okuno
 

Andere mochten auch (13)

人種差別の指摘にゆれるUnicodeの絵文字
人種差別の指摘にゆれるUnicodeの絵文字人種差別の指摘にゆれるUnicodeの絵文字
人種差別の指摘にゆれるUnicodeの絵文字
 
TeX言語の展開制御による文書の構造化(TeXユーザの集い2014)
TeX言語の展開制御による文書の構造化(TeXユーザの集い2014)TeX言語の展開制御による文書の構造化(TeXユーザの集い2014)
TeX言語の展開制御による文書の構造化(TeXユーザの集い2014)
 
とある制作会社の目次索引作成技法
とある制作会社の目次索引作成技法とある制作会社の目次索引作成技法
とある制作会社の目次索引作成技法
 
Unite2015 uGUIの拡張と応用
Unite2015 uGUIの拡張と応用Unite2015 uGUIの拡張と応用
Unite2015 uGUIの拡張と応用
 
mosaic:「キャリア:キャリアの軸と、キャリア展望の視点」
mosaic:「キャリア:キャリアの軸と、キャリア展望の視点」mosaic:「キャリア:キャリアの軸と、キャリア展望の視点」
mosaic:「キャリア:キャリアの軸と、キャリア展望の視点」
 
書籍向け汎用マークアップのあり方―Re:VIEWの開発を通して
書籍向け汎用マークアップのあり方―Re:VIEWの開発を通して書籍向け汎用マークアップのあり方―Re:VIEWの開発を通して
書籍向け汎用マークアップのあり方―Re:VIEWの開発を通して
 
みんなで市場変化を予測して自分のキャリアを考える会
みんなで市場変化を予測して自分のキャリアを考える会みんなで市場変化を予測して自分のキャリアを考える会
みんなで市場変化を予測して自分のキャリアを考える会
 
10年後のために考える、キャリアの戦略 先生:村尾 佳子
10年後のために考える、キャリアの戦略 先生:村尾 佳子10年後のために考える、キャリアの戦略 先生:村尾 佳子
10年後のために考える、キャリアの戦略 先生:村尾 佳子
 
MySQLの文字コード事情
MySQLの文字コード事情MySQLの文字コード事情
MySQLの文字コード事情
 
Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.jsScala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.js
 
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
 
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいことMySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいこと
 
データベース設計徹底指南
データベース設計徹底指南データベース設計徹底指南
データベース設計徹底指南
 

Ähnlich wie Unicode絵文字とキャリア絵文字

C#でiPhoneアプリ開発 with MonoTouch
C#でiPhoneアプリ開発 with MonoTouchC#でiPhoneアプリ開発 with MonoTouch
C#でiPhoneアプリ開発 with MonoTouchShin Ise
 
嗚呼、素晴らしき哉 MonoTouch
嗚呼、素晴らしき哉 MonoTouch嗚呼、素晴らしき哉 MonoTouch
嗚呼、素晴らしき哉 MonoTouchhIDDENxv
 
スマートフォンサイトのトレンドとユーザビリティ
スマートフォンサイトのトレンドとユーザビリティスマートフォンサイトのトレンドとユーザビリティ
スマートフォンサイトのトレンドとユーザビリティSwapSkills
 
デベロッパー視点での3大スマホの違い
デベロッパー視点での3大スマホの違いデベロッパー視点での3大スマホの違い
デベロッパー視点での3大スマホの違いMakoto Kubota
 
ロボットアプリ開発におけるNode-REDの活用
ロボットアプリ開発におけるNode-REDの活用ロボットアプリ開発におけるNode-REDの活用
ロボットアプリ開発におけるNode-REDの活用岡田 裕行
 
Metroアプリの作り方 (COD2012)
Metroアプリの作り方 (COD2012)Metroアプリの作り方 (COD2012)
Metroアプリの作り方 (COD2012)Yasuhiko Yamamoto
 

Ähnlich wie Unicode絵文字とキャリア絵文字 (7)

C#でiPhoneアプリ開発 with MonoTouch
C#でiPhoneアプリ開発 with MonoTouchC#でiPhoneアプリ開発 with MonoTouch
C#でiPhoneアプリ開発 with MonoTouch
 
IIJmio meeting 10 みおふぉん教室 スマホの引っ越し方
IIJmio meeting 10 みおふぉん教室  スマホの引っ越し方IIJmio meeting 10 みおふぉん教室  スマホの引っ越し方
IIJmio meeting 10 みおふぉん教室 スマホの引っ越し方
 
嗚呼、素晴らしき哉 MonoTouch
嗚呼、素晴らしき哉 MonoTouch嗚呼、素晴らしき哉 MonoTouch
嗚呼、素晴らしき哉 MonoTouch
 
スマートフォンサイトのトレンドとユーザビリティ
スマートフォンサイトのトレンドとユーザビリティスマートフォンサイトのトレンドとユーザビリティ
スマートフォンサイトのトレンドとユーザビリティ
 
デベロッパー視点での3大スマホの違い
デベロッパー視点での3大スマホの違いデベロッパー視点での3大スマホの違い
デベロッパー視点での3大スマホの違い
 
ロボットアプリ開発におけるNode-REDの活用
ロボットアプリ開発におけるNode-REDの活用ロボットアプリ開発におけるNode-REDの活用
ロボットアプリ開発におけるNode-REDの活用
 
Metroアプリの作り方 (COD2012)
Metroアプリの作り方 (COD2012)Metroアプリの作り方 (COD2012)
Metroアプリの作り方 (COD2012)
 

Unicode絵文字とキャリア絵文字