えいのうにっき

むかしのじぶんのために書いています

CountDown iTunes!! にWebアップロード機能を搭載しました!

着手してから約4ヶ月(といっても主に休日作業でしたが)、拙作のフリーソフト「CountDown iTunes!!」への、Webアップロード機能搭載がようやく一段落つきましたので、晴れてリリースしてみようと思います。
Webアップロード機能を有したことで、このソフトのバージョンは“2.0”に。奇しくも、昨今(ちょっと古いか)騒がれているweb2.0と符号するではないですか(これが言いたかっただけ)!


ダウンロードする(Win版)
ダウンロードする(Mac版)


また、この情報のアップロード先として、CountDown iTunes!! 専用サイト・「CountDown iTunes!! for Web」も開設しました。
当サイトは、Googleクラウド基盤であるGoogle App Engineを利用して構築されています。技術的な話(といっても、そんな難しい話は出来ないのですが・・・)は後述します。


CountDown iTunes!! 専用サイト・「CountDown iTunes!! for Web」


そもそも、「CountDown iTunes!!」って、どんなソフト??

iPodを利用されている方には欠かせない楽曲管理ソフトウェアである「iTunes」の楽曲管理情報を元に、再生回数ランキングを取るソフトウェアです。取得できるランキング情報は「曲別」「アルバム別」「アーティスト別」の3種類です。
また、取得時点での情報をソフトウェア専用情報として保存しておくことができすので、「xx月からxx月の間の」ランキング情報や、「xx月時点の順位からどれだけの変動があったか」といったような、様々な切り口によって自分の再生履歴情報を確認することができます。

ぜひ、気軽に「CDiT」と呼んであげてくださいね!(`・ω・´)


そんなソフトに、「Webアップロード機能」が搭載・・・って、どゆこと??

利用者の方のPC上に保存してあるCDiT専用情報を、CDiT専用Webサイト(こちら)にアップロードすることで、インターネットが使える環境であればいつでも、自分の再生履歴情報を確認することができます。(表示可能な件数には上限があります。ソフトウェア版では上限はありません。)


情報のアップロードは、「CountDown iTunes!!」の最新版(ver2.0)を介して行います。もちろん、過去のバージョンのソフトで取得した情報も、アップロードすることが可能です!(情報のアップロードには、数秒〜10数秒要する場合があります。)


また、web上にログインした状態で他の人の情報を確認することで、あなたとその人との相性を知ることができます。


さらに、あなたと相性が良い人を検索することもできます(“I'm Feeling Lucky”検索)。


その他、機能は順次追加・拡大していく予定です。(12月に終了するmixiミュージックのエクスポートデータを取り入れるようにも、できたらいいですね〜)

だいたいわかった! 利用するための簡単な流れを教えて!

1.まず、「CountDown iTunes!!」の最新版(ver2.0)をダウンロード(Win版Mac版)し、起動します。(当ソフトの稼動には、別途Java環境が必要です。詳しくは、同梱のreadmeファイルをご覧下さい。)
2.「for Web」タブを開き、ユーザー名とパスワードを入力し「新規登録」する。このとき、一切の情報を他者に公開したくない場合は「再生履歴を公開しない」チェックボックスをONにして下さい。(この際に、専用サイトとの通信が発生します。なお、このときのパスワードの通信は公開鍵暗号方式RSA)により暗号化されます。)


3.ユーザー登録が完了したら、続いてアップロードしたい情報を選択して「アップロード」します。


4.CDiT専用サイト(こちら)を確認します。


5.Webにアップロードしたユーザー登録情報を抹消したい場合には、「削除」ボタンを押します。




専用サイトは、自分の情報をアップロードしなくても(ユーザー登録しなくても)、再生履歴を公開しているユーザーの情報を確認することができます。
ユーザー登録をし、情報をアップロードし、ログインした状態で他人の情報を閲覧すると、その相手との“相性”が表示されます。(上述の通り)
また、ログイン状態で自分の情報を閲覧した場合、グラフ画像を転載しやすいよう、そのimgタグがテキストエリアに表示されます


注意事項など。

  1. 専用Webサイトのトップページや、ソフトウェアと同梱している「readme.txt」は、ぜひご一読下さい。
  2. 通信内容の保護のため、クライアントソフトとサーバーとの通信の際には暗号化(公開鍵暗号方式RSA)を、専用Webサイトとサーバーとの通信の際にはSSLHTTPS通信)を、それぞれ利用していますが、それでも、特別重要なパスワードはご利用にならないようにして下さい
  3. GAE(Google App Engine)は、一定のリソース量までは無料で提供されるというクラウド基盤です。正式リリースに際しサイトへの負荷が不透明なため、現時点において特に追加リソースのための課金などは行っておりません。このため、リリース直後はリソースの枯渇などが発生する可能性があります。ご了承下さい。(多少の有償リソースの追加は考慮に入れています。)
  4. (11/21 12:25追記)とても多くの曲をiTunesに登録している場合、楽曲管理情報のファイルサイズが肥大し、サーバー側が受け付けない可能性があります。(目安:一つのdatファイルが1MB以上)現時点では、回避できない仕様となっております。これに該当する方が多いようであれば、対応を検討したく思います。是非ご意見をお寄せ下さい。
  5. 当プログラム・Webサイトは、まだまだ発展途上なソフト、サイトです。不具合やご意見など、ご遠慮なくお寄せ頂けると幸いです。


Twitter:@a_know



・・・以下、オマケです。

今回の「Webアップロード機能搭載」の動機について

CDiT本体の開発時には、単に「再生記録を整理して確認・管理したいから」という、私的な衝動が動機になっていましたが。。
今回のWebアップロード機能搭載の動機については、おおまかに下記の2点があります。

  1. Google App EngineJavaの獲得
  2. エンジニアとしての、自分の技術力に対する危機感、不安
Google App EngineJavaの獲得

以前より「CDiTをWebアプリ化できたらどうだろうか・・・」ということを考えたことはありましたが、“現在のJavaプログラムの有効利用”ということを考えたときに、サーバーサイドプログラムをJavaで・・・、ということになると、その「サーバー」をどうするか、が最大のネックになっていました(自宅サーバー構築も考えないではなかったのですが、どうしても今年中に実現したかったので・・・)。
そんな折での“Google App EngineJavaの獲得”の報は、この僕にとってこの上ない追い風となりました。・・・というか、これがなければホントにできてなかったと思います^^;。クラウドにも、興味がありましたし。

エンジニアとしての、自分の技術力に対する危機感、不安

現在、僕はSE(システムエンジニア)として働いていますが、現在所属しているプロジェクトにおけるメイン業務は、「基本設計(少し)」「詳細設計」と「COBOLによるバッチプログラミング」,「その後の各種テスト」です(その他、同時にJavaC++シェルスクリプトといった辺りも触ったりはしていますが・・・)。その一方で、現在世間を取り巻くWeb環境・技術の発展は目覚しいものがあると、個人的には感じています。今後において、「Web」を前提としたモノづくりができるようにならないと・・・そのセンスを磨いていかないと、エンジニアとして取り残されてしまうんじゃないか・・・、とも。
仕事としてWebアプリケーション開発に携われる、ということが一番であることはわかっているのですが、それが叶わない現状、どんな形としてでもそれに携わっていなければ、という思いがあったのも、その動機のひとつです。

技術的な話を、すこしだけ。

Google App Engine上に仕組みを構築

何度も書いています通り、今回のWeb側の機能は、Googleの提供するクラウド基盤・Google App Engine 上に構築しています。特に凝ったこと・特別なこと、難しいことはしていませんので、特筆すべきこともそんなにないのですが・・・。

CDiTクライアントからの送信情報の登録の際に、ユーザーを待たせる必要のない登録処理については、Taskqueueを使用するようにしています。(それでも結構待ちが発生してしまっていますが・・・)
また、MailAPIを用いることで、エラー(例外)発生時にはそのエラー内容を自分宛にメールで送信するようにも、しています。(できるだけ迅速に対応できるよう)

それと、データベースアクセスについて。GAEでは、BigTableという独特な技術によりデータベースのようなものを実現しているのですが、今回の仕組みにおけるこれへのアクセスには、JDOを使用してしまっています。Low Level APISlim3?)の有効性を知ったタイミングがちょうど開発ド真ん中だった、ということもあり、今回のリリースに向けての対応を見送りましたが、ゆくゆくはぜひ、これに移行したいと考えています。

GAEとの通信について

CDiTクライアントとサーバーの通信時には暗号化(公開鍵暗号方式RSA)を、Webサイトとサーバーとの通信時にはSSLHTTPS通信)を、それぞれ実施・利用することで、最低限度のセキュアな通信は実現できている・・・と思ってます。

Google Chart APIの使用

専用Webサイトで表示しているグラフには、Google Chart APIを使用しています。URLによりリクエストする形式のAPIなので、渡すことのできる情報量には限りがありますが、このAPIの存在も今回の開発を大いに助けてくれました。

スペシャルサンクス

テストユーザーになって頂いた方々

今回の正式リリースに先立って、期間を設け、簡単なテストを実施しました。このテストに参加して頂いた方々のお陰で、大小様々なミス・バグを拾うことができました。深く御礼申し上げます。ありがとうございました!

僕のTwitter TLの方々

僕自身からの情報発信は殆どできなかったものの、Twitterにて流れていた#appengineタグのついたものを初めとした一連のツイートは、この僕に貴重なノウハウ・エネルギーをたくさん与えてくれました。本当にありがとう!

参考文献

新版暗号技術入門 秘密の国のアリス

新版暗号技術入門 秘密の国のアリス

この本を読んでいなければ、「暗号化を自分のプログラムで実施する」という発想に、また着手の糸口にまで辿り着けなかったかも・・・と思っています。ほんと、この本には何かと助けられてばっかりだ・・・。



Google App Engine for Java [実践]クラウドシステム構築 (WEB+DB PRESS plus) (WEB+DB PRESSプラスシリーズ) (WEB+DB PRESS plusシリーズ)

Google App Engine for Java [実践]クラウドシステム構築 (WEB+DB PRESS plus) (WEB+DB PRESSプラスシリーズ) (WEB+DB PRESS plusシリーズ)

おそらく、GAEに携わる人必携の、この本。やりたいことを実現するためには、まず、何ができないか、を知ることが大事です。
また、ノウハウが少ない・Web上には怒涛の勢いで情報が流れていっている、という中、GAEについて体系立てて解説してくれているこの本は、本当に大きな助けとなりました。



HTML/XHTML&スタイルシートデザインブック

HTML/XHTML&スタイルシートデザインブック

本当に美的センスに欠ける(皆無な)自分。緊急避難的に参考にした本ですが、今後もこうしたサイト開設の際には参考にし続けることになるかもなぁと思っています。
もっと早い段階からデザインを意識しておけば、後々になってからが楽だったかも。



CountDown iTunes!! Windows版 ダウンロード
CountDown iTunes!! Mac版 ダウンロード
CountDown iTunes!! 専用サイト・「CountDown iTunes!! for Web」

2009-11-23 12:02追記

上記注意事項の4.に該当する方(iTunes管理情報のファイルサイズが大きく、CDiTから情報を送信してもサーバーが受け付けない(「サーバーとの入出力に失敗しました」エラーが出る))が多くおられるようです。至急、対策を講じたいと思います。
折角ダウンロードして頂いた方にはご不便をお掛けしており、大変申し訳ございませんが、今しばらくお待ち下さい。