2008年11月アーカイブ

モバイル用に Server Side Google Analytics な感じで Google Analytics を(やろうと思えば)できる様なので、やってみようかとしているわけですが、全くもってできる気がしません。

考え方として、ビーコン(GIF Request)へのリクエストをサーバ側でやっとけば、統計情報を Google に送信できるわけで、そうすればいい、というのは分かります。そのパラメータ一覧も Google で公開されているので、必要に応じて渡したらいいだろう事も分かります。ただ、このパラメータ一覧の2つ目のutmccの意味が分かりません。

Google Analytics がブラウザに食わせた Cookie の内容を、ビーコンで送信するためのものだという事は分かります。分からないのは、その中身の値をどうやって決めるのかという事です。以下でそれらしき情報が公開されていたので、読めば分かるのかと思いましたが、具体的な値の仕様までは書いていない様な気がするわけです。
Cookies & Google Analytics - Google Analytics Tracking Code - Google Code

ブログ記事やGoogle Analyticsのフォーラムで、いくつかその辺の情報を見かけはしますが、それが何を根拠にしたものかよく分かりません。
Tracking from server side - Tracking Your Site | Google グループ
ある程度割り切ってしまえば(最低限何を記録できればいいのかはっきりさせれば)、十分な情報ですが、それなりに機能を追随させようとすると、心もとないわけです。ググって見つけた以下のコードでは、きっと割り切って、目的を絞った結果じゃないかと思ってみたりしています。

で、とりあえず、ga.jsを読んでみればいいのかなと思い、Online beautifier for javascriptを使って整形してから読んでみたわけですが、さっぱりです。アルファベット1文字の変数が沢山あり、かつそのスコープがあれこれしててよく分かりません。ただでさえ、JSを理解しきれていないので、大混乱です。utmcc 関連の処理を追いかけて、Cookie に書き込むところまではおおよそで把握できましたが、肝心の値を決定している部分がまだ分かっていません。正直、やる気が起きません。疲れます。

で、コードを読んでいって思ったわけですが、結局、コード読んでまじめに Server Side Google Analytics の実装を目指してしまうと、不毛で無駄で無茶な作業になるのではないでしょうか。出来上がればそれはそれで価値があるとは思うんですが、とはいえ、Google が明確に仕様を公開していない(と思われる; 見つけられていません)ものを、コード(実装)を見てどうにかするというのも、なんだか今いちスッキリしません。

まあ、なんと言いますか、JSのコード自体読み慣れていないのに、あんな意味不明な変数名ばっかりのコードにつきあいきれない、というのが本音です。ソースコードの読み方を間違えて、無駄に苦労している様な気もしますけど。あと、(JSによるトラッキングから) Google Analytics でとれるレポートにできる限り対応した方がいいのかと考えてしまっているのも、問題を無駄に複雑にしているんでしょうね。

と、延々愚痴っていますが、気分転換(神頼み的)に出来上がりものがないかググっていた中で、以下にたどり着いたわけです!

13.  財産権表示 UTM 及び Google Analytics ソフトウェア等を含む本サービス及び本サービスの全知的財産権は、全て Google (及びその 100 %子会社)の財産であり、かつあり続けるものとします。 Google (及びその 100 %子会社)が有するプロセシングソフトウェア及び付属文書の単独所有権等を含め、 Google Analytics ソフトウェアに関する権利であって本契約においてお客様に対して明示的に付与されていない権利は、全て無制限に Google 及びそのライセンサーがこれを明示的に留保・保有するものとします。前記規定の一般性を限定することなく、お客様は、以下の行為をせずかつ第三者にさせないことに同意します。 (a) 本サービスをサブライセンスし、配布し、又は本契約において付与された本ライセンスの範囲を超えて使用すること。 (b) プロセシングソフトウェアのコピー、改変、改作、変換、派生著作物の作成、リバースエンジニアリング、逆アセンブルを行い、又は逆コンパイルその他の方法で本サービスのソースコード若しくは本サービスに関連する営業秘密を探ろうとすること。 (c) 目的を問わず本サービスに関連する商標、商号、サービスマーク、ロゴ、ドメイン名及びその他の明確なブランド特性又は著作権若しくはその他の財産権を、 Google の書面による明示的な同意なしに使用すること。 (d)Google (又はその 100 %子会社)に関連する商標、商号、サービスマーク、ロゴ、ドメイン名及びその他の明確なブランド特性又は著作権若しくはその他の財産権を Google (又は場合によってその 100 %子会社)の名義以外で登録し、登録を試み、又は他人が登録するのを支援すること。又は (e) 本サービスに含まれるアイテムに表示されている著作権、商標又はその他の財産権表示を削除し、不明瞭にし、又は改変すること。
Google Analytics - Features

全く意識せずにソースコードを読んで、あわよくば移植とかも視野に入れていたわけですが…。躊躇せずオープンソースなノリで取りかかっていましたが、ga.js には(再利用可能を示す様な)ライセンスなんて無いわけです。(読める以上は)読むのは自由でしょうが、それ以上の事はサービス利用規約の制限内でやらないと駄目ですね。

正直、現時点で既に(b)の『リバースエンジニアリング、逆アセンブルを行い、又は逆コンパイルその他の方法で本サービスのソースコード若しくは本サービスに関連する営業秘密を探ろうとすること。』に抵触してしまった気がします。

営業秘密とは、秘密として管理されている生産方法、販売方法その他の事業活動に有利な技術上または営業上の情報であって、公然と知られていないもののこと(不正競争防止法2条4項)。

営業秘密を不当に使用した場合、一定の要件で不正競争行為となり、不正競争防止法違反となる。
営業秘密とは 〜 exBuzzwords用語解説

さて、どうしたものでしょうか。Google がオープンソースで、Pythonか何かのサーバサイドで動作するものをリリースしてくれませんかね?もちろん、JS だからこそとれている情報はとれなくなるでしょうけど、それはそれで。

モバイル端末用サイトでアクセス解析がしたければ、それに公的に対応しているサービスを使うべき、という事でしょうか。

rake を yum でアップデートして、Passenger のワーカーをリスタートしたら、gem のバージョンコンフリクトで例外になった件。

あれこれ調べる前にたてた推測は、Spawner とかの常駐(?)している部分が抱えている rake が(メモリに)残ったまま、新しい rake が追加され、リスタートしたワーカー側で新しい rake を読み込もうとしたところ、gem のアクティベートに関する例外が発生した、というものです。

gem のアクティベートの例外メッセージは、ちょこちょこ見かけつつ、コードレベルで深追いしてこなかったので、適当に追いかけておきました。
KOSHIGOE学習帳 - [Ruby] Kernel.gem についてメモ

さて、気になっているのは、Passenger が Kernel.gem を使った gem の読み込みをしている様だということです。Apache のモジュールということでか、Ruby で書いたライブラリという事を忘れてしまっていたわけですが、Rails フレームワークを先読み(?)常駐(?)させる仕組みなわけだし、そもそも gem パッケージで配布されているわけだし、(Rails で使うリクエストハンドラとかの)Ruby コードを見た事があるわけだし、忘れてた自分が意味不明です。

まあ、なんと言いますか、「Web アプリケーションの部分で rake って使ってるんだ!?」という、個人的に盲点なところを突かれてまいったな、と。コンソールでの作業で rake が使われるのは分かるんですが、ウェブアプリケーション(Apache)の方に影響がある、というのがなんだかすっきりしません。

で、Passenger の gem パッケージの中を`ack "^[\s]*gem"`とかして探ってみると、テストコード以外では rails を Kernel.gem で読み込んでいる様です。

さて、gem のアクティベートについて調べた中で、依存関係にある gem もアクティベートする事を知りました。Rails をぼーっと使っているだけだったので、勝手にロードしてくれる事に慣れきって、Kernel.gem でやってくれる事の詳細に気が回っていなかったのは内緒です。

早速、以下のコードで、rails を Kernel.gem した場合に読み込まれるパッケージが何か調べてみました。

普通に、`gem dependency rails --version=2.1.2`とかして依存関係を調べるのと変わりませんね。

$ gem dependency rails --version=2.1.2
Gem rails-2.1.2
  rake (>= 0.8.1, runtime)
  activesupport (= 2.1.2, runtime)
  activerecord (= 2.1.2, runtime)
  actionpack (= 2.1.2, runtime)
  actionmailer (= 2.1.2, runtime)
  activeresource (= 2.1.2, runtime)

type が runtime なやつが、Kernel.gem での依存解決(ロード)の対象になるんですね。多分。そこは詳しく見てませんが。

後は、Passenger の Spawner だか Pool だかの所と、ワーカーの所でのあれこれを調べれば、rake のバージョンコンフリクトがどのようにして発生したかが分かるはずです。が、疲れたので、これ以上は気が向いたときに調べようと思います。その日が来るか知りませんが。

今回の収穫は、Kernel.gem した時の動きを多少知れた事ですかね。そんな事すら知らなかった自分に絶望するのはいつもの事なので、もう気にしません。スルー力ってやつですね。

わけが分からないまま、FontForgeを使ってみたけど、どうにもならない。

(やっていいのかすら分からないまま)U+E63Eからの絵文字部分を既存のフォントにコピペしてみましたが、そもそもEmacsでのフォント設定がよく分かっていないので、特殊な文字に関してどうしたらいいのか全く分かりません。

OSXのCarbonEmacs.appで絵文字を普通に扱うためには、どうするのがベターなんだろうか?OSレベル(?)で外字だか特殊文字だかを編集(設定)できたりするんでしょうか。

絵文字を含んだフォントを生成して、そのフォントを正しくEmacsで設定することくらいしか思いつきません。本当にそれでできるのか、そうする方法はどんなか。さっぱりです。

プロフィール

このアーカイブについて

このページには、2008年11月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2008年10月です。

次のアーカイブは2008年12月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。