google analyticsを携帯サイトで使う

当然の事ながら今のところruby書きとしては全く役に立てないんで、まずは毎度おなじみのgoogle analyticsの導入などをしてます。


GAが携帯に対応ってのは前に見た覚えがあったんだけど、GAの管理画面から設定が見つからない(あと配布してるはずのPHP/perlのコードも)。調べるとどうも最近無くなったらしい。


戸惑ってたら
Google-Analytics-for-Mobile--python-/ga.py at master · b1tr0t/Google-Analytics-for-Mobile--python- · GitHub
を見つけて、さらにググったらどんぴしゃのを発見した。
http://rememo.seesaa.net/article/132845355.html


中見ると、要は携帯だとセッションが上手く拾えないんで一回自分のサーバーでproxyして、ガラパゴス的なヘッダーからユニークなuser keyを作ってあげてgoogleに投げる、って事のよう。


上のrails用のコードをcontrollerからlibに移して、とりあえず動くところまでは来た。
ただ全ページ2リクエストになるんで、軽くストレステストをした結果、リジェクト…。
最初のリクエスト時に既に必要な情報は取れてるんで、ページリクエスト時にブラウザ経由せずに直でGAに投げるように改修した。これだとPVトラックとは言えなくなっちゃう(リクエストのトラック = ログ集計ですね)んだけど、会員サイト内なんでとりあえずはいいか、と。
リダイレクトやflash(動的生成なんで、appを通ってる)をカウントしないよう気をつけさえすれば。


ん?、書いてて思ったけどページリクエスト時にGA用user keyが作れるんなら、素直にimgタグにそのparam載せてあげて、ブラウザからGAに送信してもらえばいいんじゃないのかな?
もう明日リリースだけど…。次回に廻すか。


というかなんでgoogle公式はそうしないんだろう? 静的なページも想定してるからかな?
そして管理画面から設定が無くなったのは何故なのか。まさか機能終了のフラグ?

転職した

むくり。


純正ニートとして清く正しく引きこもってましたが、家賃が払えなくなるくらい貧乏になったんで転職しました。
携帯オープンソーシャルアプリの開発エンジニア。


nginx + unicorn + rails + mysql on AWS の、モダーンな環境です。
git使いまくり、redmineのチケットが飛び交いまくり、1週間に1度はデプロイするアジャイルwなチーム。
作業環境はmac。とうとうwindowsを一秒も使わなくなった。


とにかくrubyが分かんないrailsが分かんないrspecが分かんないで、迷惑かけまくってます。
一番痛いのはユニットテストを書く習慣が今まで無かったこと。何を書くべきかさえも分からず、とにかく無駄に時間を費やす。

Whenever young guys ask me what they should do to get better, I always say try to be the worst guy in whatever band you’re in. That’s the secret.

Pat Metheny Interview

を地でいっております。全くもってyoung guyじゃないんだけど。


js/html/cssを触る機会が無くなったのは正直ちょっと残念だけど、まぁ自分でなんか作ればいい話ですね。
そっちも今かなり面白い時期なんだけど、逆に言うと仕事にすると混乱に振り回され過ぎるんで、ある意味ちょうどいいのかも、と。
IE6/7とガラパゴス携帯がきちんと消えて、web制作のメインがスマートフォン/PCブラウザのハイブリッドになった頃に華麗に復帰したい、出来れば。
2年後、とかになるのなぁ。もっとかな。
少なくとも情報だけは追ってくつもり。


エンジニアとして使い物にならずに結局フロントエンドに廻されて、ガラケー用のhtml/cssを書かされるハメになるのは何としても避けたいんで、見放されないよう頑張ってついていくつもり。

mixiアプリ「リスニンなう」のサイトを作成しました。

last.fm のプレイリストをプロフィールページに表示するmixiアプリ
リスニンなう」を使用して頂いてる方へのお知らせです。

サーバーを移転しました。

以前の記事の通り、xml等の配信をdropboxからgoogle app engineに移しました。

一通りの動作確認はしましたが、不具合等ありましたら遠慮せずにお問い合わせください。
キャッシュの仕組みは、上手く行きませんでした。gaeのmemcachedがexpireを無視してるみたいで…。
技術的な話は相変わらずここでチマチマ書いて行こうと思っています。

webサイトを作成しました。

移したgaeで、webサイトも作りました。
http://listenin-now.konk303.com/
試しにhtml5で書いてます。

ちょっと解説間に合ってない所が沢山あるんですが(特に肝心のフォーラムについての説明)、徐々に書いていくつもりです。




以上、お知らせでした。
何か思うこと等あれば遠慮せずお問い合わせください。
個人でやってるんで動きがスローでイラッと来るかもしれませんが、一つ長い目でよろしくお願いします!

last.fmのメンテに伴い、mixiアプリ「リスニンなう」が止まります

mixiアプリリスニンなう」を使用して頂いてる方へのお知らせです。

今週末に動作が不安定になります*1

9/19〜9/20 に、last.fmのメンテナンスがあります。

This downtime will also affect the Last.fm desktop and mobile clients as well as third-party applications using our API.

http://blog.last.fm/2009/09/15/site-maintenance-19th-20th-september

APIが止まる(両日の間で、計9時間を予定しているそう)なので、週末の間、動作しない時間帯があります。
誠にすいません(特に18日に登録して下さった方、ごめんなさい…)。
それとは関係なく不具合があるんじゃない?と思われた方、遠慮せず画面下の「提供者に問い合わせる」からお問い合わせください。

今後について

サーバーを移転します

現在はDropboxに静的ファイルを置くだけの運用方法なのですが、last.fmに怒られる前にデータをキャッシュする仕組みを作りたいと思っています。
なので、プログラムが動くGoogle App Engineに来週中を目処に移行するつもりです。
来週は移行のみですが、上手く行けば個人ランキング等の情報も表示できるようにしたり、出来る事少しは広がってきそうです。

紹介webサイトと、フィードバックを受ける掲示板を開きます

mixiの中でやっても良いんですが、折角他サイトとのマッシュアップなんだし、mixi内から始まってどんどん外のサイトへ飛び出て行けるような物を作れたらなぁと思ってるんです。
これも来週中を目処に頑張ってみようかと思います…が、「こりゃ間に合わん」と思ったら最終的にはmixi内にコミュを作るかもしれません。




以上、お知らせでした。
繰り返しになりますが、何か思うことがあれば遠慮せず画面下の「提供者に問い合わせる」からお問い合わせください。
個人でやってるんで動きがスローでイラッと来るかもしれませんが、一つ長い目でよろしくお願いします!

*1:9/20 メンテナンスおわったようです http://twitter.com/lastfm/status/4104481844

自作のlast.fmの再生履歴を表示するmixiアプリが公開申請を通った

と言う事で無事公開アプリになりました!

リスニンなう
http://mixi.jp/view_appli.pl?id=7793
last.fm のプレイリストをプロフィールページに表示するアプリです。
last.fmを使ってる方のみが対象のニッチなアプリですが、良かったら使ってみて下さい。



先週の水曜に公開申請をした後、規約を初めてまじめに読んでたら

アプリの中で、mixiのものを含め、他サービスのID・パスワードの入力を要求しないでください。

http://developer.mixi.co.jp/appli/pc/terms_guideline_pc/mixiapp_category_guideline_pc

とあって、あらダメかと思ったり、でも他のマッシュアップ系のアプリでユーザー名入力してるのもあるよな、と思ったりしてたんですが、まぁ何とか通ったんでこの話題は2度としないようにしたいと思いますw。
規約はまじめに読むべきですね、と反省しつつ、読んだら申請する前に心折れてたかなぁ、結果オーライなのかなと思ったり。


現在100名超の方にインストールしてもらいました。まぁ満足してもらえるかはこれからだし、上位の何10万単位のユーザーがいるアプリと比べたら全然アレなんですけど、自分個人が書いたコードを使ってくれる人が100人いるってのは、率直に言ってものすごくうれしいですね。
皆様ありがとうございます。もうちょっと頑張ります、ハイ。


このタイミングでlast.fmが明日から2日間のメンテというorz状態なんですが、これからどうしようと思っているか別エントリに書こうと思います。
とりあえずよろしくお願いします!

yahoo! pipesとfeedburnerでblogのfeedをまとめた

ここ数ヶ月色んなサービス試したりしてるうちに、自分のタイムラインがとても汚くなって嫌な感じだったので整理してみました。

こんな感じにした
  • 複数blogのfeedを1つのrssにまとめる
  • facebookmixiにはそれだけ設定。blogの更新のみポストする。
  • friendfeedには他にlast.fmとかdeliciousとか諸々追加。
    ライフストリーム的なのはここで。
  • twitterにはfriendfeedから「ブクマった」情報を除いてポスト(量が多すぎてうざくなるので)。
yahoo! pipesを使ってみた

と言う訳で整理のためにまた違う物に手を出すw。
http://pipes.yahoo.com/pipes/
良い良いとは聞いてたけど、これ本当に凄いですね。
今回は

  1. d.hatenaのfeedのitem.titleから[*]を削除。
    はてなダイアリーはタイトルに[tag]が付くようになってて、ページ上ではともかくfeedはseoもクソもなくて見にくくなってるだけなんで削除
  2. d.hatena/wordpress どちらの記事か分かるようにtitleにprefixをつける
  3. 両方をマージして、pubDateでソート。

で、やりたかった事が出来ました。

プログラマじゃなくても、と言うかプログラマじゃない人の方が使いこなせそう。
fetch元にwebページのhtmlも使えるんで、ecサイトとかで

  1. ランキングのページからランキングのデータ拾って
    (またはqueryで載せたいページurlの一覧を送って)
  2. そのデータ元に各商品詳細ページから写真や解説をフェッチして
  3. 1つのfeedにまとめる

みたいな事出来そう。前職の時試せば良かった。

後、javascriptから他サービスのapi叩く時に、ソースに認証キー書いてるとだだ漏れになっちゃうしapi側の規約的にも違反になっちゃう事が多いんだけど、これかませば解決出来そう。ちょっとやってみよっと。

ちなみに、編集画面がflashじゃなくてjavascriptだけでやってて、これは相当な力作ですね。無駄に凄い。
作った人の趣味が入ってる気がしますw。

feedburner経由で各サービスに登録

feedburnerは本当はいらない(ブログのsubscriber見ても、各種リーダーが並ぶだけであんまり面白い事ないような)んだけど、pipesを新ファイルに変更してもfeedburnerの設定だけ変えればurl変わらなくて済むんで、かましてみました。


これで思ってたようになったと思うんで、これからこの記事投稿して試してみます。

last.fmの再生履歴を表示するmixiアプリを作った

opensocialの勉強がてら作ってみました。

リスニンなう (source js)
良かったら使ってみて下さい。
last.fmの再生履歴を表示するだけの簡単なお仕事。じゃあんまりなんで、iTSの検索結果を表示してみました。

色々思った事

どうにもテストがしにくい

viewrとownerとがfriendかどうか・viewrがアプリインストールしてるかどうか、で挙動が変わるのでテストしたいんだけど、mixiは一人一アカウントに結構厳格なんで原則に従うと自分のアカウントでしか動作確認できないんすよね。
常にviewer.isOwner == true。
というか規約違反承知で新規登録しようとしたんだけど、携帯の認証が必要(いつ頃からだろう?)でなんとiPhoneはNG、登録不可能。
中々素敵な仕様ですね。
ちなみに法人なら10アカウントテスト用にくれるらしい。しばらくしたら個人にもくれるようになるのかな。
まぁ'open'socialな訳で、他のプラットフォームでもっと試すべきだった。

非同期の連続でこんがらがる

ユーザー情報を使うには必ずapiを叩く事になるんで、複数の非同期処理の協調動作の連続になる。今回はお勉強目的だったんでゴニョゴニョ書いてみたけど、JsDeferred的なライブラリ必須だと思います。
この手の非同期処理連携のベストプラクティスって言うかデザパタ的な物ってないのかな?
と言うかJsDeferredのソースをまじめに読んでみようかな。

persistence apiは使い方難しい

データの保存が出来るんで、jsで全部やれるかなぁ、とか想像してたんだけどこれは中々難しかった。
データの保存には「誰が」保存するかを宣言する必要があって、mixiの場合(他のcontainerも同じポリシー多いみたい)はこれがviewerのみに制限されてる。誰かがページ表示した時にownerのデータをちょろっと書き換えるってのはNG。
KVSが自由に使える、って感覚とはかなり違うと。
結局裏にバックエンドを立てて簡単なapi用意して、データはそこ使うのが良さそう。実際そういうアプリが多いですね。
簡単なapiとデータの保存、gaeがぴったりな気がします。python勉強しよっと。

カンプ・素材を自前で作成してみた

fireworksで。
前職ではこの辺完全にデザイナーさんの仕事だったんで、超久しぶりでした。楽しいもんですね。
でもやっぱりパワポよりfireworksより、html/cssでのプロトタイピングが一番効率が良い気がするなぁ。前2つは途中でどうしても「これは最終成果物にはならない」と思って、作業がいい加減になるんすよね。



後はgit使ってみてるんだけど、自由度が高くていいっすね。
まぁコマンドが多すぎるんで逆に忙しい時に「俺はコミットがしたいだけなんだよ!キィ!!」みたいになりそうな気もしますけど。

ってなわけで今からpythonの勉強をします。

初めてのPython 第3版

初めてのPython 第3版