Google Analytics APIのエラー。v2.3からv3移行手順。OAuth2対応とxmlからJSONへ

by codechord. 0 Comments

md_reporting
Google Analytics API v2.3のサポートが2015年5末頃に終了したみたいで、動かなくなっちゃったアプリケーションがあったので、2015年6月時点の最新であるv3に対応させないと行けないということで、書き記します。

次のようなエラーで引っかかった人のための記事です。

User does not have any Google Analytics Account.
Failed to authenticate user.

GA api v3で何が変わった

個人的に思うのは、大きく次の3つ。

  • OAuth2.0対応の必須
  • XML形式⇒JSON形式
  • リクエスト先のURLの変更

この中で特に大きいのはOAuth2への対応。
これまではEmailとPasswordで接続できてましたけど、APIキーを発行して、Analyticsの設定もかえないといけなくなった。プログラム側の修正はその後の話。

OAuthの対応の準備

手順としては、次の通り

  1. APIキーを発行
  2. Google Analyticsの管理画面で追加設定
  3. アプリ側の仕様変更へ対応。
    • OAuth対応(手順1で生成されたメールアドレスや鍵を利用。)
    • JSON形式に対応させるか、xml形式にフォーマットし直す。

[1,2]の手順は、こちらのページで詳しく書かれてますので、詳しくは割愛。
「Google Analytics API v3をPHPから利用する方法 | karakaram-blog」

[3]については、「Data export API」っていうものから「Analytics Core Reporting API」に代わるわけなんだけど、移行させるだけなので、APIの名称なんてどうでも良いです。
一応ドキュメントのリンクを。ちゃんと読みましょう。

コードの修正

さて、準備が整ったところで、実装を。
これから新規でv3アプリ作る人なんかは、composerなんかでよさそうなlibraryで対応したら良いと思います。
今回はcomposer使えない環境だったので手軽なライブラリを探したところ、「GAPI」なるものが良さ気で使った。
OAuth2がとても簡単。

githubのReadmeにあるサンプルの通りで簡単に動きます。簡単です。
https://github.com/erebusnz/gapi-google-analytics-php-interface
自分の場合、そのアプリ側がv2のxmlに最適化されてて、json形式用にフォーマット追加するのが面倒な環境だった。
移行の場合大体そう。
ライブラリ側で面倒みてくれば最高というわけで、このライブラリ側でv2のxml形式風に返すメソッド追加して、マージされるかはわからないけど、プルリクおくりましたという紹介。
https://github.com/tomothumb/gapi-google-analytics-php-interface/

とりあえず、僕のリポジトリつくったらxmlの文字列が返ってきます。
こんな感じです。

最後に使い方というかサンプルをば。ちなみに、xmlの文字列が返ってくるので、echo やver_dumpして、ブラウザ上で閲覧すると真っ白です。ソース表示にするとちゃんとxmlが出力されてるのがわかります。

たぶん、これで、xml前提のアプリとして実装されてた場合は移行がそこまで大変じゃなくなるのじゃないかな。もちろん、v3を活用するにはJSON用に作りなおすのがベストなんでしょうけどね。
ちなみに、v2のXML形式は、こちらのページを参考にしました。

(画像はGoogle Analytics APIのドキュメントページから拝借させていただきました。)

VCCWとWockerの比較。wordpress開発の新しい選び方。

by codechord. 1 Comment

vccw-wocker

2015/05/18、個人的にどっぷりな、wordpressプラグイン本の著者さんがセッションするということもあり、第41回 WordBench 大阪 「VCCW vs Wocker」に行った議事録と感想。

結論からいって、Dockerについてかなり理解が深まった。
きっかけを与えてくれたWockerの作者のKiteさんにはただただ感謝。
触発されて、今日ずっとDockerfileの書き方しらべてた。
あとは、TDDの必要性だとか、CIの必要性だとかへの理解が深まり、ついでに、OSSの貢献の方法というか考え方だとか、いろいろと参考になった。

本題のテーマはvccw vs wocker。つまり仮想環境を利用しての開発環境についてのセッション。
そのまえに、まずDockerについて触れておく。

続きを読む »

vccwとWordMoveでWordPress開発が便利になるし勉強にもなるよという話

by codechord. 0 Comments

20150505vccw

久々に書くよ。2015のGWを使ってざーっと調べたメモとして。
wordpressの開発環境とデプロイに関して調べてて、というかWP-CLI使おうかなーって重い腰を上げただけなんだけど、wordpressでも結構モダンな、いろいろおもしろい発見があるもんだなとおもった。やる人はちゃんとやってんだなーって。(受託のお仕事の場合、意識しなければこれら何一つ触らずに済ませれる)

ひとつひとつ、掘り下げてたらきりがないので、エントリのタイトルのとおり、vccwとWordMoveで開発するのがいいかもって話、なにがいいかってところだけ書いて、一つ一つは別エントリで掘り下げていくことにする。今回はコードは書かない。

続きを読む »

MacとiPhoneとiPadで電子書籍(PDF)を付箋も同期するねん

by codechord. 0 Comments

pdfsync

タイトルのやり方について、自分なりの工夫は一応みつけたんだけど、オライリーメディアさんが半額セールなんかの広告しょっちゅう打ってるもんで、電子書籍として買った技術書が50冊ぐらいに増えてきて、読んでなかったりするのも多く、そろそろもっといい方法みつけたほうがいいかなーってところ。
自分の場合は技術書だけど、PDFの資料なんかをiPhoneやiPadで見たり、メモ残しておいたりしたいって人にも活用できるかもしれない。

やりたい事

  1. [解決済]MacとiPhoneとiPadで電子書籍(PDF)を同期して読む。200ページ、300ページでもサクサク。
  2. [解決済]付箋、アンダーライン、マーキング、ブックマークをつけたり、とにかくどの端末からでも編集でき、編集データも同期できる
  3. 背表紙の画像なんかで、一望して管理できたりする
  4. 複数の本にまたがって、付箋情報などを一度に検索できる。

続きを読む »

WordCamp Kansai 2014に参加した話 #wckansai

by codechord. 1 Comment

2014wordcampkansai

グランフロントで実施されたWordCamp Kansai 2014ですけど、記憶に残ってるうちに忘れないようにメモポスト。
日本語いいね。隅々まで理解できるや。前回きつかったから。。。
というわけで、見たセッション順にレポート。

基調講演

WordPressのco-founderのMattの公演。
元々ミュージシャン志望で、出身高校は音楽系の学校、ビヨンセを送り出した学校でもあり、そこではサックスばっかりしていた。1時間あたり$50のレッスン料が高いので、友人のミュージシャンのwebサイトや自作マシンを作る代わりに、レッスンをしてもらったって話。
過去から、現在、近い将来のはなしへと。

Gigazineが早速記事にしてたので、詳しくはそちらをみたほうがよさそう。
http://gigazine.net/news/20140607-wordpress-matt-mullenweg-speech/

世界中にスタッフがいて、リモートワークで成り立ってる企業だけど、来年150人雇用するとのこと。
日本は大好きだけど、日本のことが一生理解できる気がしない(トイレとか特に)から、現地スタッフはどうしても居るよねって。
リモートで成り立ってるところ、どうやって信用できる人間をえらべてるのか、最近個人的にすごい気になってて、人事まわり結構興味があったんだけど、いっぱい並んでて聞けなかった。

続きを読む »

2014年の抱負

by codechord. 0 Comments

hourse camargue

あけましておめでとうございます。

私の正月はというと、javascriptのprototypeだとかの仕様にらめっこしてて、関数型でクラス設計とメリットについて考えたりしてました。

結果、正直まだわかってません。なぜかって、そりゃHuluを試しに契約してみたからじゃない。昔より安くなってて、コンテンツ増えてたので。
登録したら、英語字幕、英語音声のドラマが少ないながらもあったからはまってしまったってところですが。前まで英語字幕なかったんすよね。フレンズのスロー再生から徐々にスピードアップって学習スタンスは変わらないですがコンテンツにあきるので調度良い感じ。Huluで再生速度変更できれば最高なのになぁ。

さて、すごくどうでもいい前置きでした、今日は思うところと目標を書いてみようかなと思います。

続きを読む »

3つの簡単便利Javascriptテンプレートエンジン。Mustache.js, Handlebars.js, Microtemplating

by codechord. 0 Comments

140bytes @ hhjs

多忙きわまりない2013年初夏でございます。
最近あんまりコードらしいもの書けてなくって、vagrantとかshefとかpjaxとかnodeとか理解するために時間つくりたい、コード書きたい!ってなってます。今回ちょっとajaxまわりのものの実装でjavascriptのテンプレートエンジンに調べる必要あったので、javascriptのテンプレートエンジンに触れてみようかなと。
phpのテンプレートだとsmartyだとか、rubyだとERBとかなんかそういうのですけど、javascriptのテンプレートエンジンについて知らなかったんで。

目次 – Table of Contents

Javascriptのテンプレートエンジンの候補

はじめに申し上げますが、いっぱいあります。ここみるといいです。

癖とかいろいろあって、今回選んだのは3つ(内2つはほとんど似ている)

  1. Microtemplating
    (すごく軽くて、すごく手軽で、すごく早い。作者はjQueryのリードプログラマーだって。はい、すごい。)
  2. Mustache.js
    (Mustacheの書き方を覚えたらたら、いろんな言語でMustache使えますよ。便利ですよっていうやつ。開発者はgithubのcofounder。はい、すごい、すごい。
    ただ、Mustacheだとif文だとかロジックを入れたい場合には非力なため、Mustacheと互換性のあってロジック部分も強化できるhandlebars.jsというものを使う。)

その他候補にあがったのは、

  1. pure.js
    (書き方に癖があるし、雛形となるDOMが生成してある必要があるっぽいので、Ajaxの動的生成には向かないのかな?ということで、今回パス)
  2. underscore.js
    (Ruby使いな人にとってはunderscore.jsでよかったりするのかな。今回は手をだせなかった。)
  3. JsRender
    (簡単そうでjQuery無しで動くけど30kと重い。殆どの場合jQuery導入してるから恩恵がない。ただ、jQueryの本命テンプレートエンジンとして開発されてるっぽいので、jQuery版リリースされたら導入を検討しようかと思ったり。)

(ごく数名の天才エンジニアが提供してくれてるライブラリのおかげで、ほとんどのwebサービスがつくられてるんだなと感じます。)

続きを読む »

Sublime Text 2とCtagsの組み合わせがすごい。開発スピードUP[Mac版]

by codechord. 0 Comments

Sublime Text 2では、Ctagsプラグインを使うことによって、コードナビゲーション(Class/Functionが定義されてるところへジャンプ)できるようになります。
これ、僕のベスト10には入ってくる、お気に入りプラグインです。

コーディング中にふとClassやFunctionの動作を知りたくなった時にいちいちFunction名をサイト内検索したり、ドキュメントサイトを開いて探さなくても、キーバインドで瞬時にそのClass/Functionが定義されてるところへジャンプして確認できると。
(こういった機能のこと、コードナビゲーションとかコードナビゲートと呼ばれているようだ。NetbeansやEclipseなんかでは標準でついてる機能なのかな。Sublime Text 2では標準で付いていない。)
WordPressのテーマ、プラグイン開発などの小中規模の開発や、その他CMSやフレームワークを利用する際、ドキュメントを見るより、コードを見たほうが早く解決できることも多いので、効率的に開発できるようになります。

と、文章で記述しても伝わりにくいので、英語ですが動画見てもらった方がイメージをつかみやすいかなと。(4:10~6:00ぐらいまで)

次の上2つについては以前紹介しましたが、加えてコードナビゲーション機能があると、軽量で高機能のエディタへと進化します。

  1. FTPが使え、保存と同時にアップロードもできる。
  2. Sass/SCSSのコンパイルが簡単。
  3. コードナビゲーションが使える。(←これ)

プラグインは以前からインストールしてマニュアル通り設定していたものの、どうもSublime Text 2からCtagsをリビルドできない状態でして、Terminalから.Ctagsファイルを作っていたのですが、エディタ設定を見なおしたらすんなりSublime Text 2からCtagsをリビルドできるようになりましたので、共有したいとおもいます。(Macでの手順です)

続きを読む »

[Drupal7]既に設定済みのFIELDTYPEをintegerからtextへ変更。

by codechord. 0 Comments

Drupalでサイトの改修していて、既に設定した任意のContent Typesの一部のフィールドの型を変換する必要がありました。(「Integer」型→「text」型へ)
Drupalの管理画面から行えず、Moduleもありませんでしたので、直接データベースの値を修正することになりました。作業時間1時間弱といったところです。検索してもみつからなかったので、せっかくですので、その手順を残しておきます。

手順

この手順は、Integer→textへの型変換の方法です。他の型の場合は手順2,3,4あたりの値が異なってくると思います。

  1. Databaseバックアップ
  2. Table「field_data_field_xxx」の構造を変更
    同様に、Table「field_revision_field_xxx」の構造を変更
  3. Table「field_config」のレコードを変更
  4. Table「field_config_instance」のレコードを変更
  5. フォーマットを指定していた場合、Manage Displayページからフォーマットをリセット。
  6. Drupalキャッシュクリア

続きを読む »

パララックスでのイベントの考察。scroll / throttle / debounce / touchmove / mousewheel

by codechord. 0 Comments

[追記:2015/05] 2012年12月の投稿なので情報がかなり古いです。iOS7ではスクロールイベントが取りやすくなってます。とはいえ、スマホのパララックスは要注意。

こんにちは。Advent Calendar 2012 軽めのjQuery の17日目を担当します。
http://www.adventar.org/calendars/29

パララックスエフェクトを実装するためのイベントについて少し触れてみたいと思います。

パララックスエフェクトで考えること

パララックスエフェクトのような動きを考える時、いくつかの項目を考慮する必要があるとおもうんですが、例えば

  • イベント発火のタイミング
  • パララックスエフェクトの実装
  • スマホで動作する際の妥協点。
  • 如何に心地よくぬるぬると動かせれるか。

などなど。僕の場合このあたりを考えるんですけど、一番最後の、如何に心地よくぬるぬると動かせれるかが、パララックスのエフェクトを実装するなかでの決め手だと思っています。
実際の所写真などを多用すると、どうしても重くなりますし、いろいろ試行錯誤してみて、ある程度のところで妥協点を見つけるという感じになってしまいますが。

軽めのjQueryということで、イベントの発火のタイミングの一部と、心地よくアニメーションする方法の一部を急いで作ったDemoを見ていただきながら少し考えてみたいと思います。すこし重くなるかもしれません。

ここで使用しているDemoファイルは、githubにも置いておきましたので、ご自由にお使いください。

続きを読む »