Amazon Production Advertising APIとCocoa 第1回

2009年8月4日火曜日 0 コメント
5月ごろだったでしょうか、AmazonのWebservicesからメールが届きました。8月からAPIには認証を含める必要があるから準備せよと。その時はまだ先だし、春の忙しい時期だったので、放置していたのですが、Amazonは本気だったのです。
しばらくして「あなたのリクエストには認証が含まれてない」旨のリマインドメールが日本語で2度、英語で1度ほど届き、ようやく数日前に重い腰を上げたのでした。

ちなみに私がAmazon APIを使っているのは、近日発売予定の本のISBNをリスト化しておいて、Amazonに在庫が出てくるのを定期的にチェックするためのソフトウェアです。
言語はRubyCocoa。ただ、今回ようやくHillegass著"Cocoa programming for Mac OS X 3rd ed."を読み終わり、Objective-Cでも書けそうと思えたので、無謀にもObjective-Cを使ってCocoa(XCode 3.1)で作成しています。

なんとかXMLを取得するところまで行けたので、自分の覚え書きの意味合いも込めて、書いておきたいと思います。ちなみに配布する予定がないソフトウェアなので、互換性とか全く考えていません。かつ、Objective-Cは初心者です。ご注意を。

やることの流れは、このページ(Ajax Tower)が最もまとまっていて、わかりやすかったです。

※最初にすること
アクセスキーの他に、署名を作成するための秘密キー(Secret Access Key)が必要です。ここを見て確認してください。


1. 今まで通り、RESTのリクエストを作成してみます。例えば、ISBN9784844323457の本を検索するのであれば、
http://ecs.amazonaws.jp/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=[アクセスキー]&Operation=ItemLookup&ItemId=9784844323457&IdType=ISBN&SearchIndex=Books&ResponseGroup=Medium&Version=2009-03-31

FirefoxなどでそのURLを叩いてみると、XMLが返戻されてくると思います。文字列で検索をしたいとか、他のResponseGroupが欲しいとか、細かいことはAmazonのドキュメントを見て下さい。

2. 1.にTimeStampを加える
さらに、タイムスタンプを加える必要があります。しかも日本時間ではなく、GMTの時間が必要です。以下のように作ってみました。標準形式だそうなので、もっと簡単にできるのかと思ってドキュメントを散々探しましたが、これで力尽きました。まあ出来たからいいか。



NSTimeZone *zone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
NSCalendarDate *timeStamp = [NSCalendarDate calendarDate];
[timeStamp setTimeZone:zone];
NSString *time = [timeStamp descriptionWithCalendarFormat:@"%Y-%m-%dT%H:%M:%S.000Z"];



とりあえず署名を作るのに必要な項目が揃いました。

次回は、項目名と項目内容を対にした配列を作成と、URLエンコードです。



新iMacはGeForce搭載

2009年3月4日水曜日 0 コメント



待ってたNVIDIA GeForce搭載のiMacが出ました。が、思ったよりも早かったですね。。。Snow Leopardの登場を待つのかと思ってました。ただ24インチでも20万切ってるのはすごいなー。

引っ越し前に買うことはないですが、実を言うとEOS 40Dを買い増ししてからファイルサイズが大きくなったからか、今のiMacにやや限界を感じてたんですよね。Snow Leopardの動向を待ちつつ、検討しようかなーと思います。待ってるうちに夏になるような気もしますが。


GoogleカレンダーとiPod touchを直接同期(オフィシャル版)

2009年2月11日水曜日 0 コメント



待っていた機能がようやく正式な形で出てきました。これでJailbreakしなくてもGoogle CalendarとiPod touchを同期できます。オンラインでもオフラインでも使えて、オフラインのときはオンラインになったときに同期してくれます。NemusSyncには本当にお世話になったけど、オフィシャル版はさすが速いですね。

Google Sync (Beta) for your iPhoneを見ればSync方法は分かるのですが、単純にSync: Set Up Your iPhone or iPod Touchだけをやると、メインカレンダーしか同期してくれません。メインしか使っていない方は問題ないと思いますが、そうじゃない人は、iPhoneまたはiPod touchで、一度http://m.google.com/syncにアクセスし(そのとき日本語バージョンだとログイン画面が出ないので、言語を選択してEnglishを選ぶ)、ログインしてどのカレンダーを同期するか、設定をしなければなりません。私はその設定をしなければならないことが分からなくて、しばらく右往左往しました。ただ選択できるのが5つまでというのがちょっとつらい。せめて10個くらい選択できればいいのに。

設定をし終えたら、iPod touchのカレンダーを開くと自動的に同期します。かなり速いです。自宅の無線LANだったからかもしれませんが、全くストレスを感じませんでした。

カレンダーと一緒にコンタクトも同期してくれるそうですが、私はMacのアドレス帳をかなりいじってるので、そちらとの同期にしていますので使ってません。なのでそちらの感想はまた別のところでどうぞ。

試しに無線LANを停止させてからカレンダーを更新、再度無線LANと繋いで同期したところ、ちゃんとGoogle Calendarに反映されました。カレンダーの選択もできるし、今まで、カレンダー関係はベータというと日本語の問題が散見されるというイメージがありましたが、日本語でも全く問題ありません。ただ通知機能はちゃんと同期してくれないようでした。iPod Touchで作成した通知は、Pop-upとしてGoogle Calendarに同期されましたが、逆はダメみたいです。まあ通知機能はほとんどメールにしてるので、Google Calendarのほうで設定されてれば十分なんですけど。あと欲を言えば、カレンダーの色、せめてGoogle Calendarと揃えて貰えると嬉しいんだけどなー。うーん。

iPhoneだとさらに便利ですよね。ほぼ常時接続でしょうから、オンラインであればずーっと同期してくれるようなものですし。