2011/09/08

OS X Lionにおける絵文字の混乱

OS X Lionの絵文字はUnicode 6に追加されたコードを使っており、フォントとしてはApple Color Emoji.ttfがバンドルされています。ここまではシンプル。ただ、ふたを開けると大混乱です。

一例として、絵文字の「☀」を取り上げます。 この文字はもともとUnicodeで定義されている「BLACK SUN WITH RAYS」という文字であり、Unicode6の絵文字としても従来の文字が採用されました。

実際に文字パレットで確認すると、同じ「BLACK SUN WITH RAYS」が、絵文字と象形文字で異なる表示になっていることがわかります。この時点でUnicode的には微妙な気がします。



さらに調べて行くと面白いことがわかりました。
これはSafariの検索窓です。「SMILING FACE WITH OPEN MOUTH AND SMILING EYES」「BLACK SUN WITH RAYS」の順で入力すると普通に表示されます。
次に、この二文字をまとめてコピーし、ペーストしてもそのまま表示されます。しかし、「BLACK SUN WITH RAYS」だけをコピーしてペーストすると黒い文字になります。

以下は僕の予想です。
Appleの文字表示ポリシーは「表示する」ことを重視しており、選択中のフォントで表示できない文字があると自動的に表示できるフォントに切り替わります。これは描画レイヤーに近い部分で行われており、フォント選択できない領域でも発生します。
「SMILING FACE WITH OPEN MOUTH AND SMILING EYES」は通常フォントにないためEMOJIフォントに切り替わり、絵文字に存在しない文字が現れるまで絵文字フォントが使用されます。
これで説明はつくのですが、かなり混沌としていますね。

Guice + One-Jar

最近はGoogle Guiceがマイブームです。

One-JarからGuiceを使用する場合には、One-Jarのバージョンを0.98にした上で、META-INF/MANIFEST.MFに下記の記述が必要です。
One-Jar-URL-Factory: com.simontuffs.onejar.JarClassLoader$OneJarURLFactory
One-Jar Frameworks

One-Jarの最新版は0.98 RC-2となっています。 ただ、"release early, release often"といいながら、2010/8/25以降変更がありません。



One-Jarについて詳しくはこちら
One-JARでアプリケーションの配布を単純化

2011/07/20

AWS Tips : EBSのスナップショット

EC2上の外付けハードディスクにあたるEBSには、スナップショットという非常に便利な機能があります。この機能によりEBSの内容を瞬時にS3にバックアップしたり、バックアップから新しいEBSを作成したりできます。

EBSはAvailability Zone内で冗長化されているのに対して、Snapshotが保存されるS3はリージョン内で冗長化されるため、より高い信頼性を得る事が出来ます。また、EBSにSnapshotを作成しておくことで、EBS自体の信頼性も高まるとのことです。

ソース https://forums.aws.amazon.com/thread.jspa?threadID=37676
Taking EBS snapshots is not just for restoring in the event of an EBS failure.  It actually reduces the failure rate of the EBS volume itself as a failed block on the EBS volume will transparently fail through and be read from the EBS snapshot on S3. 

「瞬時に」と書きましたが、スナップショットをとる瞬間は高速ですが、その後のS3への書き出しは非常に遅いです。今実行している800GBのスナップショット作成は24時間で60%程度しか進んでいません。ただ、S3書き出し中もEBSには通常通りアクセスできますし、データを修正してもスナップショットには影響ありません。

ソース https://forums.aws.amazon.com/message.jspa?messageID=108982
When your call to ec2-create-snapshot returns, any future writes to the volume will not be reflected in the snapshot. 

AWS関連まとめ

2011/06/10

ユニコードの文字コードを調べる(国際化ドメイン名)

下記のURLの違いわかりますか?
素朴な疑問 http://example.com  http://еxample.com って表示がわかれるのかな?」

下記ページにコピーしてみると、実際のUnicodeでの表記がわかります。

最初のURLはよく使われるサンプル。
二番目のものはe(U+65)をキリル文字のе(U+435)に置換したものです。このような非ASCII文字を使ったドメイン名は国際化ドメイン名と呼ばれており、内部ではpunycodeと呼ばれるエンコードが行われています。
http://еxample.com -> http://xn--xample-2of.com/

迷惑メール等に含まれるURLはこのような偽装がされている可能性もあるため、原則として怪しいメールのリンクはクリックしない方が良いと思います。

2011/6/10時点で確認した範囲では、facebook、twitterはそのままURLを表示しますが、iphone上のTwitterアプリはpunycodeでの表示を行っていました。

2011/06/06

ユニコードの文字コードを調べる(絵文字)

GoogleとAppleが提唱したマッピングをもとに、携帯電話の絵文字がUnicode6に採用されました。Mac OSX Lionでは絵文字に対応するという噂もあり、絵文字はさけて通れない問題になりつつあります。

Googleのemoji4unicodeプロジェクト
emoji4unicode

Unicode6の正式規格
EmojiSources.txt

標準化により簡単に絵文字を使えると思いきや、Unicode6の定義は意外と曲者です。
Unicode6規格の問題は主に3点

  1. ベンダ固有の記号が符号化されていない
    • ドコモロゴ等は符号化されていないため、独自にPUAに割り当てる必要があります。
  2. 合字の使用
    • 一部の文字は単一のコードポイントではなく、複数のコードポイントによる合字で表現されています。
  3. 定義がShift JISベース
これに対して、emoji4unicodeに含まれるGoogleの定義は、すべての絵文字が定義されているだけでなく、それぞれに単一のコードポイントが割り当てられています。Unicode6という標準は魅力的ですが、内部コードとしてはGoogle PUAの方が向いているようです。