Upload
yuta-hayakawa
View
966
Download
6
Embed Size (px)
Citation preview
XperiaなWalkmanアプリに iTunesなライブラリを
インポートしたことによって 身についたUnicode周りの知識な話
2015/02/21 第2回G-Study発表資料
自己紹介• ハムスターとペペロンチーノをこよなく愛する自称GNU/Linux&PHP使いのエンジニア(かわいい系男子)
• 株式会社グロージェントという会社でお仕事してます。
• PHP向けフレームワーク「Risoluto」の自称プロマネやってます
• そろそろココにネタ仕込むのが辛くなってきたお年頃
• 詳しくはこちら! http://about.me/yuta.hayakawa
Disclaimer• 今回は、色々時間がなかったのでライトなネタでお届けします_ノ乙(、ン、)_
• 知ったかぶり成分100%でお届けするので、間違ってるところがあったら優しく教えてね(‘-'*)
• ……ってか、ロング枠分の時間いらなくね?
• (;́Д`)
思いもよらなかった出来事から
意外な知識が身についた事って
ありませんか?(Y/n)
今日はそんなお話
スマートフォン壊れた(つ_T)
• 若かりし頃の大槻ケンヂさんのメイクみたいに画面にひびが入って、1/3くらい操作不能に
• 保証サービスに入ってたからお安く直せた
• ポイント使ったからさらにお安く!
• 在庫の関係で2世代新しいブツになった
なんていうか……
「万事塞翁が馬」だよね(`・ω・́)b
せっかくだから
XperiaのWalkmanアプリを使って
MusicをEnjoyしようとTryした
さて、ここで問題です
Sony Bridge for Macの使い方• 普通にインストールして起動
• XperiaをUSBでPCに接続
• Syncしたい曲やプレイリストを選択して「同期」をポチッとな
• しばし待つ
• キタ━━━ヽ(∀゚ )人(゚∀゚)人( ゚∀)ノ━━━!!
さあ、音楽を持って出かけよう!
あれ?なんかおかしくね?• プレイリストで再生なう
• あれ?あの曲が流れるはずなのにその次の曲が流れ始めたぞ……?
• Sync失敗してる?
• 否、「アルバム」単位で見るとちゃんといる……
• なぜぢゃ……
• 天狗か……天狗の仕業なのか……【イマココ】
で、調べました。
結論
プレイリスト(*.m3u)の中身がおかC
プレイリストがおかしいと思うn個の理由
• 濁音や半濁音が離れてる……
• 例えば……「ば」なら「は」と「○」や「”」が分離してる
なんぢゃこりゃぁ!?
(CV:松田優作さん)
で、調べました。
(2回目)
出典:http://shirokai.hatenablog.com/entry/itunes-playlist-xperia
ふむふむ……
要は変換すれば良いんでしょ?(Y/n)
せっかくなのでPHPで
変換プログラムを作ってみました
https://gist.github.com/hayakawa/87357cf69b75b8b59d7d
変換プログラムの使い方
• XperiaをUSBでPCと接続
• 「/Music/*.m3u」ファイルをPC上のどこかのフォルダに保存
• 変換プログラムの第1引数に前述のフォルダのパスを指定して実行
• 変換される
• 変換されたプレイリストファイルをXperiaに戻す
無事、全部の曲が再生されるようになったよ!
(*゜∀゜*)
やったね!
……これで終わるのは2流の仕事。
(いやLTならここで終わりだけどね)
1流の仕事はここから始まる。
……と、3流の私が申しております(キリッ
CAUTION!• ここから長いつまらない話が始まります
• お花を摘みに行ったり、たばこを吸いに行ったり、飲み物買いに行ったりするなら今!
警告したからね?(́・ω・`)
で、「Unicode」ってなんなの?
Unicodeってなんなの?
• 符号化文字集合や文字符号化方式などを定めた、文字コードの業界規格
• 有名企業が集まって決めたよ!
• 世界で使われる全ての文字を共通の文字集合として使えるように……って目標で16bit(2 Octet)で表現する壮大な計画(もちろん無理)
で、「文字集合」ってなんなの?
文字集合ってなんなの?
• 文字の集合体
• 「なんの文字を取り扱うか」を決めたもの
• いわゆる商品カタログ(?)
で、「コードポイント」ってなんなの?
コードポイントってなんなの?
• 文字集合に付与した番号
• 商品カタログの各商品に付けられた整理番号(?)
で、「UTF-8」ってなんなの?
UTF-8ってなんなの?
• Unicodeを実際にコンピュータ上で取り扱うときにどのようなバイト列で表現するかを取り決めたもの
• エンコード方式
• UTF = UCS Transformation Format
• UCS = Universal Coded Character Set
• 商品カタログ中の型番(?)
で、「UTF-8-MAC」ってなんなの?
出典:http://macwiki.sourceforge.jp/wiki/index.php/UTF-8-MAC
なるほど、わからんorz
要は
「UTF-8」のエンコード手法には
「NFC」と「NFD」の2種類ある
……ってこと?
否 エンコードというよりは……
NFCとかNFDとかなんなの?
• 「NF」=「正規化形式 (Normalization Forms)」
• 「C」=「Composition (合成)」
• 「D」=「Decomposition (分解)」
コードを分解したり結合したりする?
なにそれ?(́・ω・`)
なるほど、わからんorz
(2回目)
キーワードは「正規化」
出典:http://nomenclator.la.coocan.jp/unicode/normalization.htm
Unicode Standard Annex #15(UAX#15)を見ろ!
出典:http://unicode.org/reports/tr15/
だが断る(キリッ
要は
Unicode的にはある文字を
複数の方法で表現できる
……っていうざっくりとした理解
例えば……
「ぱ」は「ぱ」でもあるし、
「は」と「○」を合わせたものでもある
この場合……
「は」を「基底文字(Base Character)」
「○」を「結合文字(Combining Character)」
という
複数の表現方法があるから
ある基準を設けないと厳しい
(ファイルソートとか文字列比較とか)
出典:http://ja.wikipedia.org/wiki/Unicode%E4%B8%80%E8%A6%A7_3000-3FFF
「ある基準」=NFCとかNFD
ちなみに……
Windows/Linux(Android)=NFC
Mac=NFD
とどのつまり
Mac(NFD)からAndroid(NFC)にアップしたから
おかしな事になった
(#́Д`)
結論
ボクの悩みは全部Macのせい
単に手持ちのスマートフォンに
iTunesライブラリ内の曲を
入れようと思っただけなのに
こんな知識が身についた
……身についた? 壁|_=)
ありがとうございました