61
XperiaなWalkmanアプリに iTunesなライブラリを インポートしたことによって 身についたUnicode周りの知識な話 2015/02/21 第2回G-Study発表資料

2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

Embed Size (px)

Citation preview

Page 1: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

XperiaなWalkmanアプリに iTunesなライブラリを

インポートしたことによって 身についたUnicode周りの知識な話

2015/02/21 第2回G-Study発表資料

Page 2: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

自己紹介• ハムスターとペペロンチーノをこよなく愛する自称GNU/Linux&PHP使いのエンジニア(かわいい系男子)

• 株式会社グロージェントという会社でお仕事してます。

• PHP向けフレームワーク「Risoluto」の自称プロマネやってます

• そろそろココにネタ仕込むのが辛くなってきたお年頃

• 詳しくはこちら! http://about.me/yuta.hayakawa

Page 3: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

Disclaimer• 今回は、色々時間がなかったのでライトなネタでお届けします_ノ乙(、ン、)_

• 知ったかぶり成分100%でお届けするので、間違ってるところがあったら優しく教えてね(‘-'*)

• ……ってか、ロング枠分の時間いらなくね?

• (;́Д`)

Page 4: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

思いもよらなかった出来事から

意外な知識が身についた事って

ありませんか?(Y/n)

Page 5: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

今日はそんなお話

Page 6: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

スマートフォン壊れた(つ_T)

• 若かりし頃の大槻ケンヂさんのメイクみたいに画面にひびが入って、1/3くらい操作不能に

• 保証サービスに入ってたからお安く直せた

• ポイント使ったからさらにお安く!

• 在庫の関係で2世代新しいブツになった

Page 7: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

なんていうか……

「万事塞翁が馬」だよね(`・ω・́)b

Page 8: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

せっかくだから

XperiaのWalkmanアプリを使って

MusicをEnjoyしようとTryした

Page 9: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

さて、ここで問題です

Page 10: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

iTunesのライブラリを取り込みたいときに

Windowsからは「Media Go」を使えばOK

ではMacならどうすればいい?

Page 11: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

答え

「Sony Bridge for Mac」 を使う

Page 12: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

Sony Bridge for Macの使い方• 普通にインストールして起動

• XperiaをUSBでPCに接続

• Syncしたい曲やプレイリストを選択して「同期」をポチッとな

• しばし待つ

• キタ━━━ヽ(∀゚ )人(゚∀゚)人( ゚∀)ノ━━━!!

Page 13: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

さあ、音楽を持って出かけよう!

Page 14: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

あれ?なんかおかしくね?• プレイリストで再生なう

• あれ?あの曲が流れるはずなのにその次の曲が流れ始めたぞ……?

• Sync失敗してる?

• 否、「アルバム」単位で見るとちゃんといる……

• なぜぢゃ……

• 天狗か……天狗の仕業なのか……【イマココ】

Page 15: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

で、調べました。

Page 16: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

結論

プレイリスト(*.m3u)の中身がおかC

Page 17: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

プレイリストがおかしいと思うn個の理由

• 濁音や半濁音が離れてる……

• 例えば……「ば」なら「は」と「○」や「”」が分離してる

Page 18: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

なんぢゃこりゃぁ!?

(CV:松田優作さん)

Page 19: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

で、調べました。

(2回目)

Page 20: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

出典:http://shirokai.hatenablog.com/entry/itunes-playlist-xperia

Page 21: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

ん?

「UTF-8-MAC」から「UTF-8」に

iconvで変換かけてる?

Page 22: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

ふむふむ……

要は変換すれば良いんでしょ?(Y/n)

Page 23: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

せっかくなのでPHPで

変換プログラムを作ってみました

https://gist.github.com/hayakawa/87357cf69b75b8b59d7d

Page 24: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

変換プログラムの使い方

• XperiaをUSBでPCと接続

• 「/Music/*.m3u」ファイルをPC上のどこかのフォルダに保存

• 変換プログラムの第1引数に前述のフォルダのパスを指定して実行

• 変換される

• 変換されたプレイリストファイルをXperiaに戻す

Page 25: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

無事、全部の曲が再生されるようになったよ!

(*゜∀゜*)

Page 26: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

やったね!

Page 27: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

……これで終わるのは2流の仕事。

(いやLTならここで終わりだけどね)

1流の仕事はここから始まる。

……と、3流の私が申しております(キリッ

Page 28: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

CAUTION!• ここから長いつまらない話が始まります

• お花を摘みに行ったり、たばこを吸いに行ったり、飲み物買いに行ったりするなら今!

Page 29: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

警告したからね?(́・ω・`)

Page 30: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

で、「Unicode」ってなんなの?

Page 31: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

Unicodeってなんなの?

• 符号化文字集合や文字符号化方式などを定めた、文字コードの業界規格

• 有名企業が集まって決めたよ!

• 世界で使われる全ての文字を共通の文字集合として使えるように……って目標で16bit(2 Octet)で表現する壮大な計画(もちろん無理)

Page 32: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

で、「文字集合」ってなんなの?

Page 33: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

文字集合ってなんなの?

• 文字の集合体

• 「なんの文字を取り扱うか」を決めたもの

• いわゆる商品カタログ(?)

Page 34: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

で、「コードポイント」ってなんなの?

Page 35: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

コードポイントってなんなの?

• 文字集合に付与した番号

• 商品カタログの各商品に付けられた整理番号(?)

Page 36: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

で、「UTF-8」ってなんなの?

Page 37: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

UTF-8ってなんなの?

• Unicodeを実際にコンピュータ上で取り扱うときにどのようなバイト列で表現するかを取り決めたもの

• エンコード方式

• UTF = UCS Transformation Format

• UCS = Universal Coded Character Set

• 商品カタログ中の型番(?)

Page 38: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

で、「UTF-8-MAC」ってなんなの?

Page 39: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

出典:http://macwiki.sourceforge.jp/wiki/index.php/UTF-8-MAC

Page 40: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

なるほど、わからんorz

Page 41: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

要は

「UTF-8」のエンコード手法には

「NFC」と「NFD」の2種類ある

……ってこと?

Page 42: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

否 エンコードというよりは……

Page 43: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

NFCとかNFDとかなんなの?

• 「NF」=「正規化形式 (Normalization Forms)」

• 「C」=「Composition (合成)」

• 「D」=「Decomposition (分解)」

Page 44: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

コードを分解したり結合したりする?

なにそれ?(́・ω・`)

Page 45: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

なるほど、わからんorz

(2回目)

Page 46: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

キーワードは「正規化」

Page 47: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

出典:http://nomenclator.la.coocan.jp/unicode/normalization.htm

Page 48: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

Unicode Standard Annex #15(UAX#15)を見ろ!

出典:http://unicode.org/reports/tr15/

Page 49: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

だが断る(キリッ

Page 50: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

要は

Unicode的にはある文字を

複数の方法で表現できる

……っていうざっくりとした理解

Page 51: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

例えば……

「ぱ」は「ぱ」でもあるし、

「は」と「○」を合わせたものでもある

Page 52: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

この場合……

「は」を「基底文字(Base Character)」

「○」を「結合文字(Combining Character)」

という

Page 53: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

複数の表現方法があるから

ある基準を設けないと厳しい

(ファイルソートとか文字列比較とか)

出典:http://ja.wikipedia.org/wiki/Unicode%E4%B8%80%E8%A6%A7_3000-3FFF

Page 54: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

「ある基準」=NFCとかNFD

Page 55: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

ちなみに……

Windows/Linux(Android)=NFC

Mac=NFD

Page 56: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

とどのつまり

Mac(NFD)からAndroid(NFC)にアップしたから

おかしな事になった

Page 57: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

(#́Д`)

Page 58: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

結論

ボクの悩みは全部Macのせい

Page 59: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

単に手持ちのスマートフォンに

iTunesライブラリ内の曲を

入れようと思っただけなのに

こんな知識が身についた

Page 60: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

……身についた? 壁|_=)

Page 61: 2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身についたUnicode周りの知識な話

ありがとうございました