2014年11月1日土曜日

Android5.0での絵文字の変化

Android 4.4 KiatKatで導入された絵文字は、Unicodeの絵文字として作成されてはいますが、元はGoogleハングアウト用にデザインされたものでした。
そのため、Unicodeの定義とはズレたデザインになっていたり、表示に問題があったりしました。

Android 5.0 Lollipopでは、絵文字がUnicodeに寄せる形で色々と変更・修正されていますので、まとめてみました。

まぁ、どうせメーカー製機種では絵文字フォント差し替わってるから、Nexus機のだけ見てもしゃーないんだけどね!

絵文字についてはこちらの記事もどうぞ ↓

Androidが4.4で絵文字にちゃんと対応した
http://mstssk.blogspot.jp/2014/02/emoji.html

比較対象はN5(Android 4.4 ビルド:KTU84P)と、2013年版N7(Android 5.0 ビルド:LPX13D)です。
N7には http://developer.android.com/intl/ja/preview/index.html#Start の razor-lpx13d-preview-ae4f461f.tgz を焼きました。

大本のニュアンス的には間違ってはいなかった系

WOMANS HATは、元になったガラケーの絵文字がむぎわら帽子なのですが、emoji4unicodeでWOMANS HATという名称で正規化され、そのままUnicodeに入ってしまった様です。

Unicode文字KitKatLollipop名称/注釈
U+1F452👒WOMANS HAT
U+26F3⛳FLAG IN HOLE
U+1F52B🔫PISTOL

本来のニュアンスが失われてしまった系

1つ目は、ドコモの「かわいい」という名前の花びらを象った絵文字なんですが、元のドット絵が花っぽくなくてよくわからない名称になり、そしてLollipopで名称に忠実によくわからない絵文字になりました。

鳥の絵文字は、ガラケーでは「ひよこ」だったり黄色い鳥だったりしましたが、ただの鳥になってしまいました。
別にひよこの絵文字はあるので、整理しただけかもしれません。

Unicode文字KitKatLollipop名称/注釈
U+1F4A0💠DIAMOND SHAPE WITH A DOT INSIDE
U+1F426🐦BIRD

デフォルメし過ぎていた系

完全にマンガ肉。けど、N5の方が美味しそうに見える…

Unicode文字KitKatLollipop名称/注釈
U+1F356🍖MEAT ON BONE
U+1F357🍗POULTRY LEG

なんかもう勝手に作っていたのを直した系

色違いよりは、バリエーションがあった方がたしかに良かったですね。

Unicode文字KitKatLollipop名称/注釈
U+1F499💙BLUE HEART
U+1F49A💚GREEN HEART
U+1F49B💛YELLOW HEART
U+1F49C💜PURPLE HEART

名称に忠実に・シンプルにした系

絵文字じゃなくただの記号っぽくなってしまった。

Unicode文字KitKatLollipop名称/注釈
U+1F170🅰NEGATIVE SQUARED LATIN CAPITAL LETTER A
U+1F171🅱NEGATIVE SQUARED LATIN CAPITAL LETTER B
U+1F17E🅾NEGATIVE SQUARED LATIN CAPITAL LETTER O
U+1F17F🅿NEGATIVE SQUARED LATIN CAPITAL LETTER P
U+1F18E🆎NEGATIVE SQUARED AB
U+1F191🆑SQUARED CL
U+1F192🆒SQUARED COOL
U+1F193🆓SQUARED FREE
U+1F194🆔SQUARED ID
U+1F195🆕SQUARED NEW
U+1F196🆖SQUARED NG
U+1F197🆗SQUARED OK
U+1F198🆘SQUARED SOS
U+1F199🆙SQUARED UP WITH EXCLAMATION MARK
U+1F19A🆚SQUARED VS
U+1F21A🈚SQUARED CJK UNIFIED IDEOGRAPH-7121
U+1F22F🈯SQUARED CJK UNIFIED IDEOGRAPH-6307
U+1F232🈲SQUARED CJK UNIFIED IDEOGRAPH-7981
U+1F233🈳SQUARED CJK UNIFIED IDEOGRAPH-7A7A
U+1F234🈴SQUARED CJK UNIFIED IDEOGRAPH-5408
U+1F235🈵SQUARED CJK UNIFIED IDEOGRAPH-6E80
U+1F236🈶SQUARED CJK UNIFIED IDEOGRAPH-6709
U+1F237🈷SQUARED CJK UNIFIED IDEOGRAPH-6708
U+1F238🈸SQUARED CJK UNIFIED IDEOGRAPH-7533
U+1F239🈹SQUARED CJK UNIFIED IDEOGRAPH-5272
U+1F23A🈺SQUARED CJK UNIFIED IDEOGRAPH-55B6
U+1F250🉐CIRCLED IDEOGRAPH ADVANTAGE
U+1F251🉑CIRCLED IDEOGRAPH ACCEPT
U+261D☝WHITE UP POINTING INDEX
U+2600☀BLACK SUN WITH RAYS
U+2601☁CLOUD
U+260E☎BLACK TELEPHONE
U+267B♻BLACK UNIVERSAL RECYCLING SYMBOL
U+26A0⚠WARNING SIGN
U+2709✉ENVELOPE
U+270C✌VICTORY HAND

消えた丸が帰ってきた系

そもそもなぜ丸が無かったのか。

Unicode文字KitKatLollipop名称/注釈
U+3297㊗CIRCLED IDEOGRAPH CONGRATULATION
U+3299㊙CIRCLED IDEOGRAPH SECRET
U+24C2ⓂCIRCLED LATIN CAPITAL LETTER M

差別問題に配慮した系

肌の色が抜かれたり、人物がすべて謎のキャラクター進捗さん(1)になったりしています。 NAIL POLISH(マニキュア)も、人の指が写っていたので変更されています。
しかし一方で、GUARDSMANは英国の近衛兵の図柄のままになっていたり中途半端?です。
Unicode文字KitKatLollipop名称/注釈
U+1F440👀EYES
U+1F442👂EAR
U+1F443👃NOSE
U+1F444👄MOUTH
U+1F445👅TONGUE
U+1F466👦BOY
U+1F467👧GIRL
U+1F468👨MAN
U+1F469👩WOMAN
U+1F46E👮POLICE OFFICER
U+1F46F👯WOMAN WITH BUNNY EARS
U+1F470👰BRIDE WITH VEIL
U+1F471👱PERSON WITH BLOND HAIR
U+1F472👲MAN WITH GUA PI MAO
U+1F473👳MAN WITH TURBAN
U+1F474👴OLDER MAN
U+1F475👵OLDER WOMAN
U+1F476👶BABY
U+1F477👷CONSTRUCTION WORKER
U+1F478👸PRINCESS
U+1F47C👼BABY ANGEL
U+1F481💁INFORMATION DESK PERSON
U+1F483💃DANCER
U+1F485💅NAIL POLISH
U+1F486💆FACE MASSAGE
U+1F487💇HAIRCUT
U+1F48F💏KISS
U+1F491💑COUPLE WITH HEART
U+1F38E🎎JAPANESE DOLLS
U+1F4AA💪FLEXED BICEPS

合成文字の不具合を修正した系

以前にAOSPのIssue Trackerに上げた問題が解決したようです。
https://code.google.com/p/android/issues/detail?id=66045

Unicode文字KitKatLollipop名称/注釈
U+1F1E8 U+1F1F3🇨🇳REGIONAL INDICATOR SYMBOL LETTERS CN
U+1F1E9 U+1F1EA🇩🇪REGIONAL INDICATOR SYMBOL LETTERS DE
U+1F1EA U+1F1F8🇪🇸REGIONAL INDICATOR SYMBOL LETTERS ES
U+1F1EB U+1F1F7🇫🇷REGIONAL INDICATOR SYMBOL LETTERS FR
U+1F1EC U+1F1E7🇬🇧REGIONAL INDICATOR SYMBOL LETTERS GB
U+1F1EE U+1F1F9🇮🇹REGIONAL INDICATOR SYMBOL LETTERS IT
U+1F1EF U+1F1F5🇯🇵REGIONAL INDICATOR SYMBOL LETTERS JP
U+1F1F0 U+1F1F7🇰🇷REGIONAL INDICATOR SYMBOL LETTERS KR
U+1F1F7 U+1F1FA🇷🇺REGIONAL INDICATOR SYMBOL LETTERS RU
U+1F1FA U+1F1F8🇺🇸REGIONAL INDICATOR SYMBOL LETTERS US
0U+20E30⃣KEYCAP 0
1U+20E31⃣KEYCAP 1
2U+20E32⃣KEYCAP 2
3U+20E33⃣KEYCAP 3
4U+20E34⃣KEYCAP 4
5U+20E35⃣KEYCAP 5
6U+20E36⃣KEYCAP 6
7U+20E37⃣KEYCAP 7
8U+20E38⃣KEYCAP 8
9U+20E39⃣KEYCAP 9
#U+20E3#⃣HASH KEY

それはミスじゃないのか系

「?」が先にくるのは「⁈」(QUESTION EXCLAMATION MARK)じゃないのかな…

Unicode文字KitKatLollipop名称/注釈
U+2049⁉EXCLAMATION QUESTION MARK

シャープになった系

文字のプロポーションがスッキリしつつ良くなったりしています。

Unicode文字KitKatLollipop名称/注釈
U+2194↔LEFT RIGHT ARROW
U+2195↕UP DOWN ARROW
U+2196↖NORTH WEST ARROW
U+2197↗NORTH EAST ARROW
U+2198↘SOUTH EAST ARROW
U+2199↙SOUTH WEST ARROW
U+21A9↩LEFTWARDS ARROW WITH HOOK
U+21AA↪RIGHTWARDS ARROW WITH HOOK
U+2660♠BLACK SPADE SUIT
U+2663♣BLACK CLUB SUIT
U+2665♥BLACK HEART SUIT
U+2666♦BLACK DIAMOND SUIT
U+2668♨HOT SPRINGS
U+2B50⭐WHITE MEDIUM STAR
U+2B55⭕HEAVY LARGE CIRCLE
U+3030〰WAVY DASH
U+303D〽PART ALTERNATION MARK
U+25FB◻WHITE MEDIUM SQUARE
U+25FC◼BLACK MEDIUM SQUARE
U+25FD◽WHITE MEDIUM SMALL SQUARE
U+25FE◾BLACK MEDIUM SMALL SQUARE
U+26BD⚽SOCCER BALL
U+26BE⚾BASEBALL
U+2702✂BLACK SCISSORS
U+2934⤴ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS
U+2935⤵ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS

太ましくなった系

マッシヴに。

Unicode文字KitKatLollipop名称/注釈
U+25B6▶BLACK RIGHT-POINTING TRIANGLE
U+25C0◀BLACK LEFT-POINTING TRIANGLE
U+26AA⚪MEDIUM WHITE CIRCLE
U+26AB⚫MEDIUM BLACK CIRCLE
U+2712✒BLACK NIB
U+2714✔HEAVY CHECK MARK
U+2716✖HEAVY MULTIPLICATION X
U+2757❗HEAVY EXCLAMATION MARK SYMBOL
U+2764❤HEAVY BLACK HEART
U+27A1➡BLACK RIGHTWARDS ARROW
U+2B05⬅LEFTWARDS BLACK ARROW
U+2B06⬆UPWARDS BLACK ARROW
U+2B07⬇DOWNWARDS BLACK ARROW
U+270F✏PENCIL
U+2744❄SNOWFLAKE
U+2708✈AIRPLANE
U+2747❇SPARKLE

あやうく違いに気付かなかった系

雪だるまは口角が上がり、カクテルはサクランボのヘタの色が変わったりしています。

Unicode文字KitKatLollipop名称/注釈
U+26C4⛄SNOWMAN WITHOUT SNOW
U+1F378🍸COCKTAIL GLASS

単純な改善系

N5では何のための絵文字がわかりませんでしたが、新しい方だとピンときます。

Unicode文字KitKatLollipop名称/注釈
U+2139ℹINFORMATION SOURCE

なんとも言い難い系

元になったauの悪魔の絵文字は笑っているというよりムッとしている感じで、N5の図柄の方が近い気がします。
しかしemoji4unicodeで笑った感じの絵にされてしまい、そのままUnicodeに入ってしまったようです。

U+1F608😈SMILING FACE WITH HORNS

表情の表現の仕方の違い系

笑顔はともかく、焦り顔系は色がどぎつい…

Unicode文字KitKatLollipop名称/注釈
U+1F603😃SMILING FACE WITH OPEN MOUTH
U+1F606😆SMILING FACE WITH OPEN MOUTH AND TIGHTLY-CLOSED EYES
U+1F630😰FACE WITH OPEN MOUTH AND COLD SWEAT
U+1F631😱FACE SCREAMING IN FEAR
U+1F635😵DIZZY FACE

その変更は必要だったの?系

なぜ小さくした。

Unicode文字KitKatLollipop名称/注釈
U+2B1B⬛BLACK LARGE SQUARE
U+2B1C⬜WHITE LARGE SQUARE

参考

追記 2014-11-27

REGIONAL FLAGSが増えてた。

追記 2015-03-06

228じゃなく、229だった。EUも追加されている。
  1. 某所で勝手にこう呼ばれています。

2014年4月21日月曜日

Nexus5の画面を割ったので修理に出した

なので、修理に出してみたよという話。

※以下の内容については、2014年4月時点ではこうだった、というだけのものです。サポート体制の変更などあり得ると思うので、修理についてはまずイー・モバイルまたはGoogle Playのサポートに問い合わせて下さい。

やらかしました

屈んだ拍子にアスファルトの上にNexus 5が落下し、画面のガラスが残念なことになりました。カーディガンのポケットという、とても不安定な所に入れていたので自業自得です。

出掛ける途中で落っことしたので、ガラスが割れた状態のまま一日過ごす羽目になりました。

本当なら割れたガラスで危ないんですが、画面保護フィルムを貼っていたので破片の飛散もなく、ガラスが割れている以外は不具合がないようだったので、帰宅するまでそのまま使っていました。たまに見かける、画面バッキバキのiPhone使ってる人の気持ちが少し分かりました。

「ちょっと割れた隙間にインク染み込ませてみてよ」(1)とか酷いこと言われましたが、僕は強く生きています。
つーか割れたのフロントやっちゅーねん。

とりあえずググった

Nexus 5はGoogle Playから購入したものだったので、GIAZINEの記事がドンピシャでした。LGに修理を依頼すれば良いようです。

ちなみに、上記は約4ヶ月前の記事なので、今は何か変わっているかもしれないと思い、一応最初はGoogle Playハードウェアサポートチームに問い合わせてみました。結局「LGに問い合わせを」と案内されたので、無駄な手間をサポセンの人にかけさせてしまっただけでしたが…(2)

修理に出した

LGのモバイルお客様相談センターに問い合わせたところ、以下のような感じ。

  • 落下による破損はユーザ過失で有償修理
  • 今回は明らかに保証外なので、保証書などは不要で、本体だけ送ってもらえばOK
  • 修理には2週間程度かかる
  • 付属品は捨ててしまうので、外して送ってほしい。ケースとか保護フィルムとか。
  • 実物を見て見積りしないと正確な金額はわからないが、画面割れの場合は最低でも23,000円(部品代+工賃)と送料がかかる。あと消費税(合計約25,000円)。
  • 見積り後に修理をキャンセルする場合も、3,000円(手間賃的なもの?)はかかる。
  • 連絡先などは宅配便の伝票の記載内容(住所,氏名,電話番号)で充分なので、特に書類を送ってもらう必要はない
  • 電話や郵送などではなく、メールで見積りをお知らせすることも可能。メールアドレスのメモを一緒に送ってもらえばOK

ガラスの破片が怖いので保護フィルムは貼ったまま、見積り宛先のメールアドレス書いたメモと一緒にプチプチに包んで適当な箱に入れて、近所のコンビニからサクッと発送しました。

帰ってきた

先週末に送ってから、数日で見積りメールが来たので、ソッコーで修理代金を振り込み。金額は、問い合わせた時に聞いた最低金額でした。

そして週末には我が家にNexus 5が帰って来ました。2週間なんてもんじゃなく、運送含めて実質5・6営業日しかかかりませんでした。多分、2週間というのは閑散期と繁忙期の期間を均した数字だったんでしょう。

ちなみに、画面の端がアスファルトにぶつかったらしくベゼルも少々傷ついていましたが、それも直っていました。明細を見ると交換した部品として「フロントケース(液晶一体型)」と載っていて、かつ問い合わせ時に聞いた最低金額だったので、画面の修理の場合は必ずベゼル(フロントケース)ごと交換されるようです。

高いよね

画面割った直後はもう一台買ってやろうかと思っていたんですが、4.5万払って新品買うより、2.5万払ってしまおうということにしました。

修理代がもっと安ければいいなぁ、とは思いますが、キャリア外で携帯電話を買う以上はメーカー保証しかありません。Googleが保証サービス始めるとも思えません。量販店で買えるなら店舗独自の保証サービスがあったりするんですが…

iPhoneもガラス割っちゃうと2万円ほどかかるそうですが、Apple Careに入ってると数千円で済むそうです。Appleが主導して販売・サポートやっている強みですね。他のメーカーもこういうことしてくれないかな、とちょっと思いました。

まとめ

  • 携帯電話を落とさないために、変な所に入れたり置いたりしないよう気をつけよう。
  • 画面保護フィルムを貼っておくと、万一画面割れた時も比較的安全。
    勿論、使わなくて済むようにすぐ出来るならしましょう。
  • Google Playで購入した場合の、Nexus 5の画面修理は最低2.5万。
  • タイミングが良ければ割りと早く修理から戻ってくる。
  • メーカーの保証サービスはもうちょっと何とかして欲しい。

  1. 【画像】背面の割れたiphoneをお洒落にリメイクする方法が話題に!実際にやってみた人も。 - Togetterまとめ http://togetter.com/li/442382
  2. サポセンのお姉さんの声が可愛かったので、個人的には満足しています。

2014年2月24日月曜日

Androidが4.4で絵文字にちゃんと対応した

というわけで、随分前のことなんですが、

絵文字を入力できるマッシュルームアプリを作りました!

絵文字マッシュ - Google Play の Android アプリ
https://play.google.com/store/apps/details?id=jp.mstssk.emoji_mush
公開したのは2013年11月18日なんですが、サボってblog書いてませんでした。

※以下、絵文字について知ってることをつらつら書いています。間違ってたら、Twitterかコメント欄でツッコんでください。

KitKatで絵文字を改めてサポートした

2013年10月31日にリリースされた Android 4.4 KitKat にて、絵文字への対応が一新され、カラフルな絵文字がしっかり表示されるようになりました。
Android - 4.4 KitKat
http://www.android.com/versions/kit-kat-4-4/
4.3 Jelly Bean 以前でも絵文字は表示できていましたが、いくつかのものが白黒で表示されるのみで、殆どが表示できていない状態でした。
※メーカーのカスタムにより絵文字フォントがなくなってしまっている機種もあります。

ガラケーの絵文字に対応したわけではない

KitKatで対応したのは、Unicode 6で定義された絵文字です(最終的にUnicodeに含まれなかったものもサポートされています)。
ガラケーの絵文字については、各キャリアから販売されているAndroid端末は元々対応しています。

今回の絵文字対応というのは、ざっくり言ってしまえば「iPhoneで使ってる絵文字がAndroidでも表示されるようになったよ」という事だったりします(絵は違っています,後述)。
元々、iPhoneの方が先行してUnicodeの絵文字を表示・入力できるようにはなっていました。
そもそもUnicodeの絵文字は、ガラケーの絵文字を元にGoogleとAppleが共同でUnicodeに提案したものが元になっているのです。
絵文字の符号化提案は Google および Apple 社によって共同提案され、2009 年 2 月 6 日に Unicode 技術委員会にて正式に了承されました。

Google Japan Blog: 絵文字の Unicode 符号化に関するアップデート
http://googlejapan.blogspot.jp/2009/03/unicode.html

そのため、iPhoneではUnicodeの絵文字(最終的にUnicodeに含まれなかった物も含めて)をサポートしており、遅れながらもAndroidも対応するようになりました。

勿論、ガラケーの絵文字をそのまま国際的な規格に持っていけるわけがありません。
そのゴタゴタについて特集したコラムがあります。読み物としても面白いのでオススメです。
特集 : 絵文字が開いてしまった「パンドラの箱」 - CNET Japan http://japan.cnet.com/sp/column_emojipandora/

ガラケーの絵文字は?

国内のJelly Bean以前のAndroid端末では、ATOK for Androidなどの絵文字入力機能を使うことで、従来のガラケーの絵文字を入力できていました。
実はこの時入力しているの絵文字は、Unicodeのものではなく、Googleが独自に定義したコードポイントだったりします。これは、Unicodeへの提案より前にGmailでガラケーの絵文字を相互置換するようにした際の、中間コードとして定義されたコードポイントです。
相互置換機能の成果物が emoji4unicode として公開され、それを元にUnicodeへの提案も行われました。

emoji4unicodeによる、各キャリアとGoogleの定義したコードポイントの対応表は、Unicodeコンソーシアムのサイト上で公開されています。
Emoji Symbols: Background Data
http://www.unicode.org/~scherer/emoji4unicode/snapshot/full.html
※サイズが大きいページなので注意!

ちなみに、キャリアメールソフト上での絵文字入力機能については、手元に環境が無いし普段使ってないので調べてません。
同様にGoogleのコードポイントで入力しているか、何かゴニョゴニョしてるんでしょう。いずれにせよ、メールサーバ側で各キャリアの絵文字の相互置換が必要なので、あまり変なことはしていないと思います。

デザインしたのは日本の会社

Googleが Googleハングアウト で使われていた絵文字を AOSP にポーティングしたことで、Androidでこんなに綺麗な絵文字が使えるようになりました。
そして、このハングアウトの絵文字は日本の IC4DESIGN という会社が作ったものでした。すごい!
日本の絵文字を世界へ: 日々の日記
http://ic4design.cocolog-nifty.com/ic4design/2013/05/post-f655-5.html
google hongout of IC4DESIGN'S WORKS
http://ic4design.com/top4/Coner/pg839.html

ちゃんと表示されない絵文字もある

至れり尽くせりかと思った絵文字対応ですが、「数字の囲み文字」と「国旗絵文字」はまだちゃんと表示されない様です。

「数字の囲み文字」と「国旗絵文字」自体については、下記ページを読んでいただければ面倒くさいことがわかると思います。
絵文字だョ! 符号化文字集合(後編) | mixi Engineers' Blog
http://alpha.mixi.co.jp/2012/10663/

つまりは、特別な文字の組み合わせで1つの絵文字を表すものが軒並みちゃんと表示されていないんです。
Nexus5(4.4.2 KitKat)で実際どのようになっているかちょっと調べてみました。
Unicode 文字 数値参照 期待している表示 実際の表示 期待している表示が実際に割り当て
られている文字(Googleによる独自定義)
U+0031 U+20E3 1⃣ 1⃣







U+FE82E
U+1F1EF U+1F1F5 🇯🇵 🇯🇵







U+FE4E5
※画像はNexus5(4.4.2 KitKat)でのハングアウトアプリ上の表示のキャプチャ。日の丸のみWebのハングアウトのキャプチャ。

囲み文字はちゃんと直前の文字と結合していないし、国旗も Regional Indicator Symbol の代替アルファベット表示になっています。
その代わり?に、本来表示されて欲しい文字シンボルはGoogle独自定義のコードポイントに割り当てられています。
かと言って、Google独自定義のコードポイントの方ならすべてちゃんと表示されるかというと、そうではありません。Nexus 5で試したところ、Google独自定義のコードポイントで表示されるのは、この囲み文字と国旗絵文字だけでした。

ちなみに、問題の絵文字はKitKatのデフォルトのキーボードの絵文字パレットにも含まれていません。「あぁ、結合文字対応するの諦めたんだろうなー」と思ったりしましたが、ちゃんと表示されてくれないのはやっぱり嫌なのでAOSPにチケットは投げておきました。是非皆さん★を付けましょう。
Issue 66045 - android - Several emoji symbols(Keycap numbers and Regional flags) are not correctly with KitKat. - Android Open Source Project - Issue Tracker - Google Project Hosting
https://code.google.com/p/android/issues/detail?id=66045

アプリ作成時の愚痴



参考

  • List of iOS Emoji http://www.grumdrig.com/emoji-list/
  • Emoji unicode characters for use on the web http://apps.timwhitlock.info/emoji/tables/unicode
  • emoji4unicode - Emoji for Unicode: Google Emoji private use mapping data and tools - Google Project Hosting https://code.google.com/p/emoji4unicode/
  • Emoji Symbols - Unicode Symbols https://sites.google.com/site/unicodesymbols/Home/emoji-symbols
  • Unicode絵文字とキャリア絵文字 http://www.slideshare.net/hiroakiohashi148/unicode-24674603
  • NotoColorEmoji.ttf - platform/external/noto-fonts - Git at Google https://android.googlesource.com/platform/external/noto-fonts/+/kitkat-release/NotoColorEmoji.ttf

    ↓サイズが大きいページなので注意
  • Emoji Symbols: Background Data http://www.unicode.org/~scherer/emoji4unicode/snapshot/full.html
  • Emoji unicode characters for use on the web http://apps.timwhitlock.info/emoji/tables/unicode

    変更履歴

    修正 2014-04-11
    Nexus 5のAndroidのバージョンを間違えていたので修正。
    4.4.3 -> 4.4.2
  • 2013年7月26日金曜日

    gitはじめて勉強会

    先日、内輪でgitの勉強会で講師をやってきました。

    資料

    当日使ったスライド。
    あまりgitはどうだなんだという説明はせず、とにかくハンズオンでやってみる事が目的でした。


    反省点

    講師っていうのは初めてだった事もあり、諸々反省点がありました。
    • 内容が参加者に合っていなかった
      講師の都合でterminal上での操作前提の内容にしていたけど、慣れていない人に教えるにはやはりSourceTreeなど使った方がいいかもしれない。
      自分では commit や diff 見る程度はEclipse上でやるけど、その他はterminal上でばっかり操作していて、他のやり方を教えられるほど知らないのがネック。

    • つめこみ過ぎた
      git init から push まで粗方詰め込んだ上で、その他のコマンドの説明も諸々…という内容にしたら、目的が何処かに行ってしまった感じになった。
      色々やるより、必要最低限をしっかりやる方が最初のとっかかりとしては良さそう。
      細かい説明はいちいちせずに「○○をするにはどうするか」という目的ベースで進めた方が覚えやすいかな。

    • 脱線し過ぎた
      ただでさえ詰め込みすぎて時間の余裕があまり無いのに、途中途中の質疑応答に時間をかけすぎた。push の話をする頃にはタイムオーバーだった…
      場合によってはバッサリ時間を切って進めて、時間配分をずらさないようにしないと、なかなか話が進まない。

    第2回があるかどうかは皆の声援次第。

    2013年5月16日木曜日

    PlayMusicアプリが新しくなってた

    Google I/O 2013の開催と同時にPlayMusicのAndroidアプリが更新されてたのでちょろっと書きなぐった。

    所感メモ


    String.prototype.replaceのコールバック関数

    jsの String.prototype.replace メソッドは正規表現とコールバック関数を使った時、コールバック関数の引数が正規表現のマッチグループの数によって変わる。
    知らなかったので、ちょっと試して確認した時のメモ

    GoogleChrome バージョン 24.0.1312.52 で動作を確認したもの

    ただの文字列:

    1:マッチした部分
    2:マッチしたインデックス
    3:元の文字列全体

    グループの無い正規表現:例 /[a-z]/

    ただの文字列の場合と同じ

    グループが1つの正規表現:例 /a([a-z])/

    1:正規表現マッチした部分
    2:マッチしたグループ部分
    3:マッチしたインデックス
    4:元の文字列全体
    試したコード
    "abcd".replace(/a([a-z])/, function(a,b,c){console.log(a,b,c);return a;});

    グループが2つの正規表現:

    1:正規表現にマッチした部分
    2:マッチした1つ目のグループ部分
    3:マッチした2つ目のグループ部分
    4:マッチしたインデックス
    5:元の文字列全体
    試したコード
    "abcd".replace(/a([a-z])([a-z])/, function(a){console.log(arguments);return a;});

    グループが3つの正規表現:

    マッチした部分の引数が増えて、インデックス・元の文字列全体が後ろにずれる。

    まとめ

    正規表現にgオプションを付けた場合も、それぞれのマッチ部分に対してそれぞれ上記同様にコールバック関数が呼ばれる。

    仕様書を読むと、
    第1引数:マッチした部分文字列
    マッチグループ(captures)の数分の引数
    マッチグループ(captures)の数+2番目の引数:マッチしたインデックス(マッチした文字列までのoffset)
    マッチグループが無いなら第2引数。1つあれば第3引数。2つあれば第4引数。
    マッチグループ(captures)の数+3番目の引数:元の文字列

    MDNのページに大分詳しく載ってる。

    参考

    2013年2月7日木曜日

    UbuntuでのEclipseのツールチップの色を変更する

    Unity採用以後のUbuntuで使われているGnomeのAmbianceテーマは、Eclipse上でのツールチップ表示の背景が真っ黒になってしまって見辛いったらありゃしない。
    背景色を変更する方法を見つけたのでメモ。

    テーマの色を変更する方法

    themes - How to change tooltip background color in Unity? - Ask Ubuntu
    http://askubuntu.com/questions/70599/how-to-change-tooltip-background-color-in-unity
    上記Q&Aでは、回答として大別して3つの方法が寄せられている。
    1. テーマの設定ファイルを直接書き変える
    2. gnome-color-chooser を使う
    3. ~/.gtkrc-2.0 に記述する
    今回は3つ目を採用。/usr/の下を直接書き換えるのは気が引けるし、~/.gtkrc-2.0 は作ってあってコピペできる記述例もあったので、gnome-color-chooserをインストールするより早いだろう、と。

    設定ファイルの内容

    ~/.gtkrc-2.0 に以下を記述する。
    style "gnome-color-chooser-tooltips"
    {
      bg[NORMAL] = "#FFFFAF"
      fg[NORMAL] = "#000000"
    }
    widget "gtk-tooltip*" style "gnome-color-chooser-tooltips"
    

    参考ページにある例では、~/.gtkrc-2.0-gnome-color-chooserという別ファイルに記述して、そのファイルを読み込む設定(include ".gtkrc-2.0-gnome-color-chooser")を~/.gtkrc-2.0に記述するようになっているが、手っ取り早く直接記述した。
    これでツールチップが見覚えのあるクリーム色になった。

    環境

    • Thinkpad x201s
    • Ubuntu 12.04.1 LTS Precise Pangolin
    • Eclipse 3.7 Indigo

    2013年1月23日水曜日

    GoogleChromeはページを指定してPDFを開ける

    GoogleChromeの内蔵PDFビューワはページを指定してPDFを開けます。

    PDFのURLの末尾に「#page=5」とか付けるだけ。

    ↓の場合なら、PDFの4ページ目を開いてくれます。
    http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf#page=4

    ページ番号は0から始まるので注意。

    2013年1月18日金曜日

    ちょっと賢いgit graph

    git logコマンドは--graphオプションなどの組み合わせで、良い感じにコミットグラフを表示させる事ができます。
    git log --graph --date-order -C -M --pretty=format:\"<%h> %ad [%an] %Cgreen%d%Creset %s\" --all --date=short
    Gitのちょっと便利な使い方 (ゆめ技:ゆめみスタッフブログ) http://yumewaza.yumemi.co.jp/2010/07/git.html より

    git config --global alias.graph 'log --graph --date-order -C -M --pretty=format:"<%h> %ad [%an] %Cgreen%d%Creset %s" --all --date=iso'
    1 Entry per Day: git graph http://mstssk.blogspot.jp/2012/03/git-graph.html より

    ブランチやオプションの指定をしたい

    上記のままでも良い感じですが、普通のgit log同様にブランチを指定したりなどしたい。
    そこで、シェルスクリプトを作ってそれをgit graphというエイリアスで実行できるようにしてみる。

    gitのエイリアス設定は、!マークを先頭に付けると任意のシェルコマンドを実行させられる。
    git config --global alias.graph '!~/.git-graph.sh'
    
    ※設定出来るシェルコマンドはあくまで1つだけらしい。コマンドをパイプで繋ぐ事は可能だったが、セミコロンが使えないので制御文をワンライナーで記述したりは出来ない。

    .git-graph.sh の中身

    実行例1:オプション無しなら--allオプションを自動で付加して実行する
    $ git graph 
    * <b4840e1> 2013-01-16 22:38:56 +0900 [mstssk]  (HEAD, master) F
    * <93d7f2c> 2013-01-16 22:38:50 +0900 [mstssk]  E
    | * <659324a> 2013-01-16 22:38:28 +0900 [mstssk]  (experiment) D
    | * <1210e5e> 2013-01-16 22:38:18 +0900 [mstssk]  C
    |/  
    * <3251633> 2013-01-16 22:32:08 +0900 [mstssk]  B
    * <4264244> 2013-01-16 22:31:56 +0900 [mstssk]  A
    * <4a0ab4a> 2013-01-16 22:28:16 +0900 [mstssk]  first commit
    

    実行例2:ブランチ名を指定すれば、そのブランチのlogだけを表示
    $ git graph experiment
    * <659324a> 2013-01-16 22:38:28 +0900 [mstssk]  (experiment) D
    * <1210e5e> 2013-01-16 22:38:18 +0900 [mstssk]  C
    * <3251633> 2013-01-16 22:32:08 +0900 [mstssk]  B
    * <4264244> 2013-01-16 22:31:56 +0900 [mstssk]  A
    * <4a0ab4a> 2013-01-16 22:28:16 +0900 [mstssk]  first commit
    

    実行例3:日付形式を変更。※シェルがテキトーなので--allが付かなくなる。
    $ git graph --date=local 
    * <b4840e1> Wed Jan 16 22:38:56 2013 [mstssk]  (HEAD, master) F
    * <93d7f2c> Wed Jan 16 22:38:50 2013 [mstssk]  E
    * <3251633> Wed Jan 16 22:32:08 2013 [mstssk]  B
    * <4264244> Wed Jan 16 22:31:56 2013 [mstssk]  A
    * <4a0ab4a> Wed Jan 16 22:28:16 2013 [mstssk]  first commit
    

    tab補完もしたい

    ここまで来たらtab補完もしたい。
    git logと同じ補完をしてくれるようにするには、以下の設定ファイルを ~/.bash_completion という名前で置いておく。
    既に ~/.bash_completion があるなら、追記すれば良い。

    2013年1月14日月曜日

    UbuntuでGooglePlayの映画を視聴する

    UbuntuでGooglePlayで映画見ようと思ったら全然再生できなくて、ググって初めてGooglePlayの映画の「システム要件」ページの存在を知ったのでメモ。何でサイトフッタにリンク置いておかないんだろう。

    環境

    • Thinkpad x201s
    • Ubuntu 12.04.1 LTS Precise Pangolin
    • Google Chrome 24.0.1312.52

    再生するには

    Ubuntu または Linux OS をお使いの場合は、HAL モジュール(リンク先は英語)もインストールする必要があります。

    というわけで、Ubuntuで一瞬採用されて2バージョン後くらいにすぐ使われなくなったあの hal をインストールする必要があるそう。
    引用内のリンク "HAL モジュール" はAdobeのFlash Playerで保護されたコンテンツを視聴するための要件についてのヘルプページになっている。
    Google PlayではDRMにAdobe Flash Accessを使っていてその動作にHALが必要、という事なんだろう。

    以下、そのページ「Problems playing protected video content | Ubuntu Linux, Flash Player 11」の内容をざっくりと。

    保護されたコンテツを再生する準備


    halをインストールする。
    sudo apt-get install hal

    インストールした後、ブラウザを閉じてから、Adobe Accessのキャッシュをクリアしておく。
    cd ~/.adobe/Flash_Player
    rm -rf NativeCache AssetCache APSPrivateData2
    

    この他、別のディストリビューションや64bit環境向けの説明もあるので、適宜実施。

    保護されたコンテツを再生出来るかテスト


    http://drmtest2.adobe.com:8080/SVP/SampleVideoPlayer_FP.html を開いて、画面上部の"Input the video URL:"というテキストボックスにhttp://drmtest2.adobe.com:8080/Content/anonymous.f4vを入力してから、「Play」ボタンを押す。

    上手く行けば、ランセンス情報などをロードする処理の後にデモ動画が再生される。

    GoogleChromeで再生できない場合


    ここまでやっても、GoogleChromeでは再生できなかった。
    今回だけではなく、GoogleChrome内蔵のFlashプラグインの挙動が怪しいことは以前からあり、その度に「内蔵プラグインを無効にして、システムにインストールされてる方のFlashを使うようする」という対処をしていたので、今回も実施。
    1. chrome://plugins/にアクセス。GoogleChromeのプラグイン設定画面が表示される。
    2. 画面右端のリンクを操作して詳細表示にする。(もともと詳細表示ならそれでOK)
    3. Adobe Flash Playerの項に、2つプラグインが表示されているので1つ目(Chrome内蔵のPepperFlashプラグイン)を無効にする。
    4. 先述の「保護されたコンテツを再生出来るかテスト」を実施して確認する。内蔵プラグイン無効化後に、テストページはリロードしておくこと。

    2013年1月5日土曜日

    UbuntuでSublimeText2の入力補完が出来ない時

    # ハマったので、備忘録としてと同じ轍を踏む人のためのエントリ

    問題

    Q. あれ? UbuntuのSublimeText2で ctrl+space で入力補完出来ないぞ!?
    A. 落ち着け。Linux版だと入力補完のキーバインドの初期値は alt+/ だ

    何故?

    ダウンロードページにあるchangelogに書いてある。正式にVersion 2.0になったタイミングで変わったらしい。 ctrl+space だとIME切り替えのキーバインドと被るからね。
  • Linux: Show Completions has changed from ctrl+space to alt+/, to not interfere with IMEs
  • 「Sublime Text - Download http://www.sublimetext.com/2」から

    普段は半角/全角キーを使うか、mac風に変換キーのキーバインドを変えてIMEのon/off出来るようにしてるので、これにハマった時になかなか思い至らなかった。

    workaround

    今は、以下のような設定をPreferences -> Key Bindings-Userに記述している。
    [
      { "keys": ["ctrl+space"], "command": "auto_complete" },
      { "keys": ["ctrl+space"], "command": "replace_completion_with_auto_complete", "context":
        [
          { "key": "last_command", "operator": "equal", "operand": "insert_best_completion" },
          { "key": "auto_complete_visible", "operator": "equal", "operand": false },
          { "key": "setting.tab_completion", "operator": "equal", "operand": true }
        ]
      }
    ]
    

    Preferences -> Key Bindings-Defaultから入力補完の設定部分の記述をコピーして ctrl+space に書き換えただけ。

    2012年12月28日金曜日

    drawable.xmlで遊んでみる #androidadvent2012

    これはAndroid Advent Calendar 2012の12月28日<表>のエントリです。

    @kinnekoさんの<裏>記事もどうぞ。
    Supersonicで自前のGoogleMusicを実現する http://d.hatena.ne.jp/kinneko/20121228/p1



    こんにちは。最近、公私共に全然Androidの開発やってない@mstsskです。

    昨年のAndroid Advent Calendar 2011では、先にJPPの太鼓持ちjsonというテーマを決めていたので、「Androidアプリで使えるJSONライブラリ比較」という記事を書きました。

    ですが、今回は記事に出来るような事がなーんにもない状態で、勢いでAdvent Calendarに参加を決めちゃいました。

    ううむ。どうしよう…

    そうだ! Androidと言えば、drawableがある。Shape Drawableを使えば、画像ファイルを用意せずともxmlの記述だけで画面解像度に依存しない図形を描画できる。 #小芝居
    でも、描けるのはあくまでも簡単な図形だけらしい… そこで、drawable.xmlで絵が描けるか試してみました。


    ドロイド君を drawable.xml だけで描いてみた



    はい。読み飛ばした方、こんにちは。

    いかかでしょうか。ドロイド君くらいならxmlの記述だけで描けてしまいます。
    colors.xmlだけは作りましたが、1ソースで済ませるという縛りでやってみたので大分冗長になっちゃってるのはご愛嬌。
    まぁ、ちゃんと分けたとしてもあまり綺麗にはならなそうだったというのもありますけど。




    ふー。終わった終わった。これで肩の荷が降りたわー。あー良かった。

    ん。そういえば、他にも同じ事やってる人いたりしないよな… まさかな…


    ………………

    [drawable ドロイド君][検索]

    …………

    検索結果に…

    ……

    XML Drawable onlyでドロイド君を描いてみた - ReDo

    …

    だだ被りじゃねぇか!!!!! ( Д ) ゜ ゜

    XML Drawable onlyでドロイド君を描いてみた http://greety.sakura.ne.jp/redo/2011/12/xml-drawable-only.html via @youten_redo

    しかも、Advent Calender主催者の、Advent Calender関係ない、1年も前のエントリと。


    このままじゃヤバい。ヤクい。これは、何かしら差別化しないと…

    そうだ! 以前にやったこれをdrawable.xmlでやってみたらどうだろう!


    というわけで↓

    わかめねこを drawable.xml だけで描いてみた


    はい、結局いつものネタに走りました。
    drawable.xmlになってもわかめねこのプリチーさは変わりませんね。



    解説のようなもの

    めんどくさい満足したので、これで終わりにしてもいいんですが、一応解説。

    viewを内包せず、全部1つのdrawable.xmlの中でshapeで済ませるにあたって、ミソになったのが以下
    1. layer-listのitemの子要素として直接shapeを書ける
    2. 最も外側のitemを基準にしたpaddingによる相対的なサイズ・位置の指定
    3. itemとshapeの間にrotate要素を入れて回転を設定
    4. ovalのshapeはstrokeのdashGap,dashWidthを調整すれば円弧が描ける


    layer-listのitemの子要素として直接shapeを書ける


    item要素のandroid:drawable属性で別ファイルのdrawableを指定しなくても、子要素としてshapeを記述できます。


    最も外側のitem要素を基準にしたpaddingによる相対的なサイズ・位置の指定


    item要素のandroid:top,bottom,left,rightの各属性は、各辺ごとに一番外側の部分からの距離(padding)を指定します。
    そこで、適当なsize指定をしたitem要素を外枠として、その内側に収まるように他のitem要素のpaddingを記述して位置や大きさを指定しました。
    各itemのpaddingを、外枠にしたitem要素のsizeより大きくなるようにしてしまったり、item要素の大きさが負になるようなpadding指定をしてしまうと、全部のitemが思っきり崩れます。

    これは、ソースからドロイド君の胴体部分と外枠部分の記述だけを抜き出したものです。


    itemとshapeの間にrotate要素を入れて回転を設定


    shapeを回転させるには、item要素の直下にshape要素を置かずに、 item → rotate → shape という具合にrotate要素を挟み、その属性で回転角度・回転軸(pivot)を指定します。


    ovalのshapeはstrokeのdashGap,dashWidthを調整すれば円弧が描ける


    shapeは本来は、矩形・丸・線・円の4つの簡単な図形しか描けませんが、無理やり円弧を描くこともできます。
    stroke要素のdashGap属性,dashWidth属性の記述によって、ある程度は円の切れ方を指定できるので、それを利用します。

    これは、わかめねこの鼻の部分のソースです。
    2つの円弧をずらして配置し「ω」という形にしています。

    これらの手段を組み合わせれば、わかめねこの様なイラストもdrawable.xmlで描けてしまう、という訳です。


    Gingerbread以前では?

    ちなみに、これらのコードはICS以降向けです。
    Gingerbread以前のバージョンでも動きますが、rotate指定の回転の基準点が全く違う箇所になる様で、rotateを使っているshapeがずれてしまいます。※ Honeycombで試してない(てへぺろ


    上記はレイアウトエディタのスクリーンショットですが実機でも同じ様な表示となります。
    左アンテナは上にずれ、右アンテナは下にずれて胴体の下に隠れてしまっています(マウスカーソルのある辺りにあります)。

    ちゃんと確認してはいないんですが、どうやら以下のような違いがあるのでは、と考えています。
    ICS以降
    paddingの内側の描画されている範囲の左上が回転軸の基点
    Gingerbread以前
    paddingの外側の一番大きい要素の左上が回転軸の基点



    まとめ

    勢いだけで、大分役に立たない記事と相成りました。

    ただ、png画像など用意せずにxmlの記述だけでもここまで描けるというのがわかっていただけと思うので、今後アプリを作ったりデザインしたりする方々には是非覚えておいていただきたいです。上手く使えば様々な画面解像度への対応が捗るんではないでしょうか。今後もハードウェアの技術向上は続きますから、HTC J butterflyのxxhdpiみたいなショックが来るかも知れませんからね。

    「Androidもうええねん」なんて声も聞こえますが、まだまだAndroidは続きますよ!
    オレはようやくのぼりはじめたばかりだからな。このはてしなく遠いAndroid坂をよ…

    さて、明日は @awwa500 さんと @takke さんの担当です。
    何故か新年までカウントしていくAndroid Advent Calender 2012。どうぞ大晦日の大トリ記事までよろしくお願いします。



    今回作ったもの