Google Cloud VisionでOCRする

CLOUD VISION API

PHP用のライブラリを使ってみる

Cloud Vision API Client Libraries
(APIリファレンス)Google\Cloud\Vision\VisionClient

$ composer require google/cloud
$ gcloud auth application-default login
$ vim cv.php
$ php cv.php

サンプルコード

cv.php

gcloudの設定がうまくいかなかった(プロジェクト指定ができなかった)ので、サービスアカウントを作成して、ダウンロードしたjsonファイルを下記のように設定したらできた。

Vimeo APIをPHPで使ってみる

createmyapp

VimeoのAPIを使ってみます。ドキュメントは、https://developer.vimeo.com/です。twitterとかfacebookとかと同じでappをつくったら、キーとかシークレットとかもらえて、それ使ってOAtuh2で認証して、RESTAPI使います。

https://developer.vimeo.com/appsから新しいAPPを作成する。

PHPとかpythonとかandroid、iPhoneとか用にSDKもあります。シンプルです。javascript用SDKはないようですが、割と人気な使いやすいのがあります。利用用途によって修正は必要かなと思います。

PHPとかの公式SDK(Libraries)

javascriptのライブラリ的なやつ
websemantics/vimeo-upload

Android – Google Static Maps APIで地図画像を取得して表示する

最初にgoogle static map apiを有効にし、APIキーを取得・設定する必要がある。
https://console.developers.google.com

下記のように表示したい地図情報をパラメタに含めたURLを作成し、地図画像を取得する。
下記コードのmContextは、コンストラクタで、引数で取得したContextを入れたprivate変数。

DownloadImageTaskクラスは、下記。
(参考:http://stackoverflow.com/questions/5776851/load-image-from-url
下記コードの、getCroppedBitmapは、Bitmap画像を角丸にする関数。

getCroppedBitmap関数は、下記。
(参考:ImageView を 簡単に 角丸 にする

facebookのいいねボタンの設定

いいねボタンを配置するのは簡単なのですが、昔調べたコードをそのまま利用しており、古くなったりしてないか気になった。あと、テストユーザでいいねすると、いいねが反映されない。あと、デフォルトのいいねボタンではなく、独自の画像なりタグなり、ボタンなりをいいねボタンとして使う方法も知りたい。

■いいねボタンを独自デザインにする
参考:SNSボタンをオリジナルデザインにする方法

なんか、すごく簡単そうだ。facebookのいいねボタンを設置する場合、javascriptのコードも配置してたけどいらないのかな??普通のaタグを使っているだけのようだ。ogp設定はしっかりしておく必要があるらしい。

FacebookやGoogle+はogp設定をしていないと正しくシェアできません。

参考:facebook いいねボタン設置時のOGP設定方法♪

OGPの設定は、まずタグにxmlnsというのを追加するらしい。

次にmetaタグを追加します。

localeは、日本語の場合は、ja_JPと記載するようです。
画像サイズは、180px × 180px以上のjpg or pngだそうです。

OGPの設定チェックは、debuggerというのでやります。
https://developers.facebook.com/tools/debug/

さて、ソーシャルボタンの独自デザインですが、aタグ使うと簡単でした。facebookのいいねボタンをjavascriptで表示させると読み込み遅延があり微妙でしたが、これだとそういうこともありません。でもfacebookだとシェアボタンであり、いいねボタンは難しいのかもと思いました。あと、カウントについてどう読み込んでいるのか調べてみたいと思います。

zipcloud – 郵便番号データのAPI

郵便番号検索機能をWEBサービスで提供してくれています。

http://zipcloud.ibsnet.co.jp/doc/api

登録などは一切不要みたいです。
getで、http://zipcloud.ibsnet.co.jp/api/search?zipcode=1540017のように郵便番号を与えると、jsonで返ってきます。

不正な郵便番号を与えるとエラーが返ってきます。

http://zipcloud.ibsnet.co.jp/api/search?zipcode=15400171

桁数が正しいが存在しない郵便番号を与えると、エラーではないがnullが返ってきます。

http://zipcloud.ibsnet.co.jp/api/search?zipcode=1540099

また、郵便番号にハイフンがあってもきちんと対応してくれている。
http://zipcloud.ibsnet.co.jp/api/search?zipcode=154-0017

あら、でもAjaxでgetで取得しようとしたらエラーになる。クロスドメイン関係のエラーなので、Ajaxのアクセスできないのかもしれない。仕方ないのでPHPでつくってみる。

今fuelphp使っている。

これにjavascriptでAjaxでアクセスする。

これに郵便番号が変わったらonchangeでアクセスする。

難義な決済

決済とはややこしいです。単純なECサイトを運用するなら、難義ではないのですが、Baseみたいなものをつくろうとするとややこしいです。決済サービスはPayPalだと結構お手軽ですが、日本の決済サービスだと審査が必要で結構時間かかったりします。WebPayはすごく早いらしいのですが、仮売上期間45日がネックで使えない状態です。あと早いとはいえ審査は必要となります。

Baseで作成された個々のECはBaseのお店ではなく完全に作った人名義のお店になっており、特定商取引法なども作った人名義になっております。たしか。決済サービスの人曰く、この場合、基本的に店舗所有者別に審査が必要となるということでした。まあ、言われてみればそうだなと思うわけですが、Baseという大きなサービスがあったので、てっきり問題ないと思って作っており、非常に残念な気持ちになりました。かといって、何店舗も自社名義のショップを第三者が勝手に作成・運営できるというのは確かにちょっと怖いです。まあそう考えると、決済会社さん(カード会社さん)もそりゃリスク考えるよなーとは思いました。

でもBaseでいいなら、別のものでもいいじゃないかという気持ちがどうしてもあります。Baseだって今はでかくなってますが、最初は小さかったはずだし。と思ってたらそういえばBaseも最初はPaypalだったなと思いました。PayPalならいいのかもと思いました。PayPalもサポートほぼないけど利用規約逸脱してるとお金凍結したりするという噂を聞いたのでちょっと怖いのですが。まあそういう決済フロー(仕組み)的な質問なら返答があるのかもしれない。聞いてみようかな。

googleで祝日取得(php)

参考:Google Calendar API で日本の祝日データを取得

$holidaysの中身

スクリーンショット 2014-03-26 8.44.41

要修正ですが、これで取得できた。googleありがとう。

cakePHP2.3 GMOペイメントのモジュールをつかう

app/Vendorにモジュールのディレクトリを配置して、require_onceする。

モジュールディレクトリの場所をインクルードパスに入れる必要があるので、上記のような感じにした。

参考: App::import() でファイルをインクルードする

尚、GMOペイメントのモジュールは、コンストラクタが2つある。PHP5.4だとRedefining already defined constructorというエラーがでた。だからcore.phpの下記を修正して、エラーがでないようにした。

PHP5を試してみる – コンストラクタの名称の統一
CakePHP2.xとPHP5.4でStrict Errorが出た場合の対処法

YouTube API

cakePHPのviewでYouTubeAPIを初めて使った。divのid=”videoDiv”内に動画が自動で再生される。閲覧中断していた動画は中断したところから再生される。閲覧中断ボタンと、閲覧完了ボタンに対応している。といったようなことをした。

google map api ジオコード取得時のステータスコード

  • “OK”: エラーが発生せず、住所が正常に解析され、少なくとも 1 件のジオコードが返されたことを示します。
  • “ZERO_RESULTS”: ジオコードは成功しましたが、結果が返されなかったことを示します。遠隔地にある存在しない address または latlng がジオコードに渡されると、このような状態になることがあります。
  • “OVER_QUERY_LIMIT”: リクエストが割り当て量を超えていることを示します。
  • “REQUEST_DENIED”: リクエストが拒否されたことを示します。通常は、sensor パラメータが指定されていないことが原因です。
  • “INVALID_REQUEST”: 一般的に、クエリ(address または latlng)が不足していることを示します。