「Body & Soul」がなぜ問題になるのか

先にプログラミングの進捗についてのエントリを書いたが、技術的見地から見ると、SPEEDの「Body & Soul」がなぜ、どんな問題を起こしたのかを書いておかなければならないと思ったので書き残しておくことにした。
Webアプリに対してデータを送るときは次の形でデータを送る。
key1=data1&key2=data2&key3=data3&…..
で、データの中に「&」などの特殊記号が含まれるとおかしなことになるので、通常はURLエンコードというものを施して送信して、受信するサーバ側アプリ(スクリプト)でデコードして表示なり、データベースへの格納なりを行う。
そのあたりは、各種言語のリファレンスを見たらいいだろう。PHPだったらそのものずばり、urlencode, urldecodeなる関数が存在する。Googleでリファレンスがヒットするはずだ。
で、最初にMacで私が使ったKung-Tunesはこのエンコードをしてくれなかった。生のまま、データを送信してしまったのだ。 
そのデータを受信したサーバは、混乱する。
送った側は、曲名=「Body & Soul」と送ったつもりである。
しかし、サーバ側では、「&」からは次のキーが始まってしまうので、Soulという空のキーが挟まり、次のデータからまた処理される、といったようなことになってしまった。
こればかりはどうにもならないと判断し、iTunes, iPodの再生履歴を自宅サーバへ送るソフトを自作することになったわけである。
そもそも、Kung-Tunes自体、2005年くらいで開発止まっていたようだったし、オープンソースでもなかったので改良という手段はなかった。
AppleScriptによるiTunesからのデータ取得がおもったより簡単だったので、ぷろぷろぐらまぁ、としてはそれほど時間をかけずに作れてしまったという面もある。きれいに作るよりも動くものを作ろうとしたし、仕事と違ってドキュメント要らなかったし。
それにしても、URLエンコードしないアプリって、どうなのよ。信じられない。
それも本で紹介されているんだから。

コメント