Monthly Archives: 12月 2013

ZendService\Amazonを使う

GithubのContributions Graphって素敵やん。yukiです。

この記事はAdvent Calendar 2013とは何の関係もありません。

ZendFrameworkにはフレームワークのコアとなるZendの他に、他サービスとのインターフェイス用のZendServiceというパッケージがあります。

大体の有名なサービスには対応していて、Composerにも対応しているので利用価値はあります。

さて、今回はその中にある、ZendService\Amazonというライブラリを使いましたので、一通りの使い方をまとめたいと思います。

 

インストール

Packagistに登録されているので、Composerにてインストールできます。
次のようにcomposer.jsonに設定を書きます。

 

サービスの初期化

ZendService\Amazonにはサービスへのアクセス方法が二通り用意されています。

基本的なのはZendService\Amazon\Amazonです。
もう1つはZendService\Amazon\Amazonを流れるようなインターフェイスで利用できるようにするための、ZendService\Amazon\Queryです。

どちらも初期化方法は一緒で、次のようになります。

第2引数はAPIのネームスペースの指定で、次のような定義になっています。

初期化されたサービスを利用してAmazonの各APIとやり取りしますが、気をつけなければいけないのは、AssociateTagの指定が必須になっていることです。

 

商品の検索

アマゾンから商品を検索するにはItemSearchというAPIを利用します。

$resultsには検索結果として、ZendService\Amazon\ResultSetが入ります。

ResultSetは\SeekableIteratorが実装されているので、foreachで回すことができます。

ResultSetから取得できるのはZendService\Amazon\Itemです。

 

商品の詳細情報の取得

商品の詳細情報を取得するにはASINを用いてItemLookupというAPIを利用します。

$resultsには、検索結果がエラーや複数のアイテムがある場合はResultSetが、1つだけの場合はItemが返されます。

 

画像について

取得した情報の中にある、画像の情報はZendService\Amazon\Imageとして取得されます。

URLを文字列で取得したい場合は次のようにします。

Image#UrlはZend\Uri\Uriなので、文字列として扱われる時に自動でtoString()が呼び出されるため

としても同じ結果となります。

 

RequestThrottled問題

バージョン2.0.2の時点で、アクセス超過の場合RequestThrottledがエラーとして返されますが、ネームスペースがecs.amazonaws.comと古いネームスペースのため、ZendService\Amazon\ResultSetが理解できず、空のResultSetが作られてしまうという問題があります。

また、それを回避するためにResultSet#totalResults()を使って件数の確認を行なおうとすると、NOTICEが出てしまいます。

NOTICEが出る問題は既に修正されているのですが、まだ正式バージョンとしてはリリースされておりませんので、気になる場合はdev-masterを利用しましょう。

 

だいたいこんな感じでした。

データの可視化

こんにちは、フロントエンドのJです。

今日はデータの可視化について述べたいと思います。

> 可視化とは、人間が直接「見る」ことのできない現象・事象・関係性を「見る」ことのできるもの(画像・グラフ・図・表など)にすることをいう。
> 視覚化・可視化情報化・視覚情報化ということもある。
> 英語の “visualization”, “visualize” に相当し、そのままビジュアリゼーショ<<ン・ビジュアライゼーションと称されることもある。 > 流れの可視化のように分野や領域に結びついて生まれた呼称も多い。
wikipedia

google chart

最初に断っておきますが、GoogleのPR記事ではございません(笑)
google chartは、システムで良く利用されるグラフ描画のjavascirptのライブラリで、Googleアナリティクスなどで使用されます。

ドキュメント
Visualization: Line Chart
https://google-developers.appspot.com/chart/interactive/docs/gallery/linechart

データの取り扱い
> Data Policy
> All code and data are processed and rendered in the browser. No data is sent to any server.

google chart を使用でのグラフ描画

      HTML

 

  • chart_divに描画されます
  • chart_divのdata属性に表示する値のjsonのURLを埋め込んでいます

draw_chart.js

PHP
jsonをレスポンスで返す
数値の出力に関しては、数値型で出力であること

データの可視化で新たなる発見があり、
ビジネスチャンスに繋げていくことも可能になるかもしれません。

Laravel4の導入

こんにちは、フロントエンドのJです。

今日は、Laravel4を導入したいと思います。
魔法少女ララベルとは関係ありません。

Laravelは比較的新しいPHPフレームワークで、2013年5月28日(日本時間5月29日早朝)にLaravel4がリリースされました。

Laravel4 の特徴

  • Composer上に乗っかったことで、ある程度方針が決まっていれば、環境を整えることが容易
  • Symhonyのコンポーネントを更に取り込むことでテストアビリティーが向上
  • PSR-1準拠のため、キャメル記法に(前バージョンLaravel3と違いは大きい)
  • Eloquent ORM
  • Bladeテンプレートエンジンは、拡張子を.blade.phpにするだけで、控えめなシンタックスでphp構文を作成

ドキュメント

前提条件

  • PHP5.3.7以降のバージョンが必須
  • Composer
  • php-mcrypt

php-mcrypt
暗号とハッシュの生成に利用、phpinfo()の出力情報にmcryptが見つからない場合は追加

laravel4インストール

symfony/console,symfony/http-foundation の強力なsymfonyコンポーネントがインストールされるのでかなりアツいです。

configファイルの初期設定

app/routes.php

とりあえず、表示できた、簡単です。

Symponyのコンポーネントで内部実装を行うという点はSilexと似ている思われますが、
ビルドインライブラリを一通り揃えたフルスタックフレームワークで
個人的には、これからの小中規模の案件には向いてそうです。

次回は、Eloquent ORMとBladeテンプレートエンジンに試していきたいと思います。