ホーム ブログ ページ 60

Ruby On Rails 画像アップロードプラグイン file_column

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

ども〜rickです。

今回は、画像を簡単にアップロードできるようになるプラグインの紹介をします。

環境

rails2.2.2
ImageMagick6.4.8
RMagick2.9.1

migration

画像を入れたいところに

t.string image
でカラムを追加する。

model

file_column :image, :magick => {
:versions => {
:icon => {:size => “16×16”},
:thumb => {:size => “40×40”},
:medium => {:size => “120×120”}
}
},
:web_root => “images/”,
:root_path => File.join(RAILS_ROOT, “public”, “images”) //この場所に作られる

View

form文に下記追加

<% form_for(@blog, :html => {:multipart => true}) do |f| %>
// multipart => trueを忘れずに
<%= file_column_field ‘image’, ‘image’, ‘icon’ %>
//これはプラグインのヘルパー、第三引数はなくてもいいしあったらモデルに書いたサイズになる

おまけ

“320×240″、”320×240>”、”320×240!”の違い
“320×240” 縦横比を維持して、このサイズに収まる大きさにする。
“320×240>” これより小さい画像は小さいまま、拡大しない。
“320×240!” 縦横比を無視して、このサイズぴったりに合わせる。
:small、:medium、:largeは自分の好きなキー名に出来る。
極端な話、:s、:m、:l、:xlなんてキー名でも良い。

以上!

Rubyを1.9にするとrakeコマンドで例外が発生する問題とその対処法

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

 こんにちは。

 KBMJでRuby on Rails を使ったweb開発に携わっているyoppiといいます。

 今回はRuby1.8で動いていたRailsのプロジェクトをRuby1.9にした時に出た問題とその対処法について書こうと思います。

 まず、今回の現象が出た時の環境を書いておきます。

 OS: Windows Vista Home Basic SP1

 Ruby:1.9.1

 Rails:2.3.2

 rake:0.8.4

 問題は、ruby1.9にしてプロジェクトのルートディレクトリでrakeコマンドを実行したときに起きました。

 rakeコマンドの引数が何であっても、「invalid byte sequence in Windows-31J」という例外が発生します。調べてみるとどうやらconfig/boot.rbの「 File.read(“#{RAILS_ROOT}/config/environment.rb”)」(Railsのバージョンによっては、IO.read・・・になってたりします)で発生していたようです。

 config/environment.rbは、UTF-8なのですが、Windows-31Jとして読み込もうとして、文字コード関連の例外が発生しまっているみたいですね。

 例外の原因はファイルの文字コードの扱いがRubyの1.8と1.9で変わったということのようです。

 Ruby 1.9 m17n リファレンス (不完全版) – diary of a madman

 「Ruby 1.9 文字コード」で検索して、上記サイトを発見しました。どうやら、OSの標準の文字コード以外をファイルの読み書きに使う場合、明示的に指定する必要がありそうです。

 やり方として思いついたのは2つ。

  1. config/environment.rbにマジックコメントを追加する(参考:Ruby 1.9リファレンスのマジックコメントの説明)
  2. config/boot.rbの該当の例外が出る直前に「Encoding.default_external = ‘UTF-8’」を記述する

 結果から言うと、1は駄目で2はできました。マジックコメントにはまだ理解が足らないようです。

 ということで、2の方法を採用します。プロジェクト全体で同じ問題が発生しそうなので、記述はファイルの先頭に挿入しました。同じような現象が出た場合に参考にしていただけると幸いです。

 今回調べてわかりましたが、Rubyは1.9になって、多言語化対応で、色々と手が入っているようです。それで便利になる反面、今回のように1.8で動いていたものについては、例外が発生するようになってしまうこともあるようです。1.8から移行する場合はこの辺も気をつけておいた方がいいようです。

Google Analyticsで自分(自社)のIPアドレスを除外する方法

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

アクセス解析チーム中林です。Google Analyticsを使用してデータ活用していく上で気になる点として、
自分や会社からのアクセス数がカウントされてしまうということが有ると思います。

本日紹介するのは、

web制作担当会社や、自社からの社内アクセスを

『GoogleAnalyticsのデータから除外したい』

といった場合に、指定したGroval IPアドレスをGoogleAnalyticsのデータから除外する方法です。

IPアドレスの除外方法はフィルタを使用

IPアドレスを除外する場合に、プロファイルの編集によって

プロファイルにフィルターを掛ける必要があります。

GoogleAnalyticsのIP除外の流れ

①Google Analyticsにログインしてプロファイルの「編集」

GoogleAnalytifcsプロファイルの編集

②プロファイルに適用したフィルタから

「+フィルタを追加」を選択

GoogleAnalyticsプロファイルのフィルタ追加

③「プロファイルに新しいフィルタを追加」にチェックを入れます。

GoogleAnalyticsに新しいプロファイルを追加する

④フィルタ名は任意のものを入力(ここでは「社内IPアドレス除外」とします。)  フィルタの種類を「IPアドレスからのトラフィックを全て除外」

 該当する社内IPアドレス(Groval IP)を入力してください

※仮に除外したいIPアドレスが192.168.0.1の場合

  この入力欄では、正規表現を使っているので、「192\.168\.0\.1」と入力してください。

GoogleAnalyticsのフィルタのIP除外設定

これで「変更を保存」すれば、指定したIPアドレスからのアクセスを

GoogleAnalyticsのデータから除外することが可能となります。

IPアドレスを除外をする前に

今回の作業をする場合は、Google Analyticsのプロファイルから

指定するIPを除外すると、指定IPを除外設定したあとの該当アクセスについては

プロファイルのデータとして2度と取得することができません。

新しくキャンペーンページを作って、データが取得できるかのチェックをする場合

自分でアクセスして、データが反映されるか確認する場合などがあるならば、

IPアドレスを除外しない設定のプロファイルを作成して、

別のプロファイルで管理することが好ましいかもしれません。

今週は以上となります。

■無料かつ高性能のアクセス解析ツール「Google Analytics」について

GoogleAnalyticsトラッキングコードの設置方法

Googleアカウント・Google Analyticsアカウントの取得方法

Google Analyticsで複数ドメインのサイトを計測する方法

Google Analyticsで同じURLのページの遷移のデータを取得する方法

GoogleAnalyticsのユーザー絞り込み機能アドバンスセグメントとは?

KBMJ GoogleAnalyticsのスクールも開催中です!

Google Analyticsスクールでは、セミナーやブログではお伝えしきれない細かな設定方法やアクセス解析手法について、徹底的に解説いたします。 少人数のスクール形式だから、状況やレベルに合わせてインタラクティブに、より詳しく、実用的な活用術を徹底指導いたします!

Google Analyticsのユーザー絞り込み機能アドバンスセグメントとは?

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

Google Analyticsのユーザー絞り込み機能アドバンスセグメントとは?

こんにちは。KBMJアクセス解析チームの長谷です。

無料のアクセス解析ツールで有名な「GoogleAnalytics」ですが、解析の上で非常に便利な機能を順次追加していることはご存知でしょうか。

2008年10月に追加された「アドバンスセグメント」「カスタムレポート」はGoogleAnalyticsをさらに使いやすくし、深い解析を可能にした驚くべき機能となっています。

そこで今回は、特定のユーザーを絞り込むことができるアドバンスセグメントについてご紹介します。

——————————————————————————

  1.Google Analytics の追加機能 アドバンスセグメントとは?

——————————————————————————

Gooogle Analyticsの追加機能となり、様々な条件でフィルタリングしてデータの閲覧を可能にします(もちろん無料で使用可能)。

例えば下記の分析が可能になります。

● Google Adwordsの検索連動型広告からのユーザーで絞り込み

● 新規ユーザーまたはリピーターがよく閲覧している人気ページのランキング

● アクセス地域毎にどれくらい商品を購入したのか、購入率はどれくらいか

● はてなブックマークからの訪問者が閲覧するページやサイト滞在時間

——————————————————————————

  2.今までのGoogle Analyticsと違って何ができるのか?

——————————————————————————

従来のGoogel Analyticsでは、新規ユーザーやディレクトリ毎にデータを分けるためには、新しくプロファイルを追加し管理画面からフィルタを適用する必要がありました。

ですが、アドバンスセグメントを使うことで新しくプロファイルを追加する必要がなくなり、今までのプロファイル内で、楽に様々な条件でのユーザーデータを追うことができるようになったのです。

●左図が従来の管理方法

●右図がアドバンスセグメントの管理方法

アドバンスセグメントのメリット

①何度もプロファイルを変える必要がなくなるので、解析の際に非常に楽になります。

②ユーザーの絞り込みにより効果測定の精度が向上しサイト改善のヒントが見つかりやすくなります。

——————————————————————————

  3.Google Analytics アドバンスセグメント設定方法

——————————————————————————

それでは、実際にアドバンスセグメントの設定方法を解説していきます。

アドバンスセグメントの設定方法は下記の3ステップで設定することができます。

①Google Analyticsのレポート画面右上の「アドバンスセグメント 全セッション」をクリック

GoogleAnalyticsアドバンスセグメント設定方法

②既存設定の「デフォルトのセグメント」または「カスタムセグメント」の項目を選択し「適用」をクリック

GoogleAnalyticsアドバンスセグメント設定方法

③レポートデータに選択したアドバンスセグメントのフィルターが適用され絞り込まれデータを表示GoogleAnalyticsアドバンスセグメント設定方法

アドバンスセグメントで1度絞り込むことで、他のレポート項目である「キーワード」「上位コンテンツ」にも

同じ条件で絞り込まれたデータを閲覧することができます。

また、一度に複数の設定項目にチェックを入れることでレポート上に同時に表示することができます。

GoogleAnalyticsは使いやすさや無料であることがメリットとして評判を集めていますが、ユーザーの絞り込み分析が気軽にできないという点から、深い解析をする上では使い勝手少し悪い印象がありました。

その弱点である、気軽にできるユーザー絞り込み機能が「アドバンスセグメント」 であり、「アドバンスセグメント」の登場により飛躍的に分析力が向上したといえます。

—————————————————————————

  補足:既存のフィルター(デフォルトセグメント)で設定できるフィルターリスト

——————————————————————————

 ● 全セッション:

 フィルターを掛けていない通常通りのセッション

 ● 新規ユーザー:

 GoogleAnalyticsを導入してから、サイトに初めて訪れたユーザー

 ● リピーター:

 GoogleAnalyticsを導入してから、サイトに2回以上訪れたユーザー

 ● 有料のトラフィック:

 GoogleAdwordsまたはその他の検索連動型広告からのユーザー

 ※各検索連動型広告とGoogleAnalyticsの連携設定をしている場合にのみ取得可能です。 

 ● 無料のトラフィック:

 検索連動型広告以外の検索エンジンからの自然流入で訪れたユーザー

 ※有料トラフィックの取得設定をしていない場合、検索連動型広告の数値もこちらに入ります。

 ● 検索トラフィック:

 検索エンジンから訪れたユーザー(有料トラフィックと無料トラフィックの合算値)

 ● ノーリファラー:

 リファラー情報がないブックマーク、ブラウザからのURL直打ち、メルマガなどから訪れたユーザー

 ● コンバージョンしたセッション:

 設定したあるゴール設定(購入完了や資料請求など)したページに至っているユーザー

 ※あらかじめGoogleAnalyticsのコンバージョン設定が必要になります。

 ● トランザクションが発生したセッション

 あらかじめ登録しているネットショッピングの商品に対して注文したユーザー

 ※GoogleAnalyticsのeコマース分析機能を使用できる環境の場合のみ有効

 ● iPhone からのセッション

 ※ブラウザ情報からiPhoneを識別してユーザーを特定

 ● 直帰以外のセッション

 最初にサイトに訪れたページで離脱をしていない2PV以上のユーザー

—————————————————————————

  4.おわりに

—————————————————————————

あらかじめ設定してある上記デフォルトセグメントでも十分にフィルタリングをかけることができますが、さらに条件を細かく設定するためには、フィルターの条件を任意にカスタムする「カスタムセグメント」機能で設定する必要があります。

そこで次回は、アドバンスセグメントの醍醐味でもあるカスタムセグメントの設定方法をご紹介します。

今月のはじめに隅田公園でお花見をしましたが、ちょうど散り際でとても風流でした。

勿論ビールもご一緒に…それでは。

■バックナンバー

【第1回】優良顧客で売上げ増加!キーワード選びから考えるアクセス解析活用術

【第2回】優良顧客で売上げ増加!キーワード選びから考えるアクセス解析活用術

■無料かつ高性能のアクセス解析ツール「Google Analytics」について

GoogleAnalyticsトラッキングコードの設置方法

Googleアカウント・Google Analyticsアカウントの取得方法

Google Analyticsで複数ドメインのサイトを計測する方法

Google Analyticsで同じURLのページの遷移のデータを取得する方法

SEOのために知ってておいて損はないタグ知識

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

どうも。

アクセス解析チームのバッチです。

本日はSEOに有効な(X)HTMLのコーディング、主にタグの効果について、いくつかチョイスして解説しようと思います。

■SEOに有効なタグ

<title>タグ

読むとおりページタイトルをあらわす非常に重要なタグとなります。
ブラウザや検索エンジンのSERP(検索結果ページ)に影響し、ユーザーがページ内容を把握する手段にもなります。
<meta name=”keyword”>タグで指定したキーワードを含めてタイトルを決めることで検索エンジンが内容を把握しやすくなります。
また、タイトルを指定する際にはサービス、キーワード名を前におき、サイト名は後ろに配置することで検索されたワードに対して検索結果が上位表示されやすくなります。
Googleであるなら全角20文字程度、Yahoo!であれば全角40文字程度が表示限界とされているので、できるだけ文字制限数以内で表現することがユーザーが把握することからも望ましいですね。

<meta name=”keyword”>タグ

ページにおいて、重要なキーワードを定義するタグです。ここで定義したキーワードは<title>タグ、<meta name=”description”>、 ページ全体、において重要なワードであると解釈され、検索エンジンがページ内容を把握するための指標となります。7つ前後が使用限度であるといわれ、 多く設定するとキーワード一つ一つの重みが弱くなり、キーワードとしての役割を果たしにくくなってしまいます。

<meta name=”description”>タグ

ページ内容を表す文書を記述するタグです。キーワードを混ぜながら80文字程度で説明文を記述するのが理想とされています。
ここで記述した内容はSERP(検索結果ページ)において、スニペットとして表示されるので、ユーザーがサイト、ページ内容を把握する際にチェックする可能性が高いです。
設定しない場合はKWIC形式で表示され、キーワードを含む文脈が抜き出され表示される形となります。(場合によってはこちらのほうがいいこともありますが)
また、Yahoo!で検索した場合、カテゴリ登録をしてあるならばそちらに登録したサイト説明文が優先されるので、キーワードを含んだものを設定しておく必要があります。

<hx>タグ

よく言われる見出しタグですね。<h1>から<h6>まで存在し、それぞれ重要度が変わってきます。
<h1>はページのテーマを定めるものであり、1ページにつき一度のみ使えます。何度も使ったり、別のタグなどを間にはさむことを行うと検索エンジンの評価が落ちるので注意してください。
<h2>からは使用回数に制限はありませんが、構造体の深度に注意して使用してください。
<h2>より先に<h3>を使用したりすることで検索エンジンの評価が下がってしまいます。

<p>タグ

文書の存在を検索エンジンに認識させるためにも<p>タグでくくりましょう。
<br/>タグは<p>タグの中で改行する際に用いてください。
また<br/>タグを連続で配置すると文法的にエラーになるので、<p>タグで行間調整を行うことが望ましいです。

<acronym>タグ

あまり見ないタグかもしれませんが、頭文字の略語を表す際に使うタグです。
例えばSEOという言葉ですが、本来は”SearchEngineOptimization”という言葉です。
通常であれば表記ゆれで記述に悩むところですが、<acronym title=”SearchEngineOptimization”>SEO</acronym>と書くことで SEOとはSearchEngineOptimizationの略ということを検索エンジンに説明できます。
また、マウスポインタを当てることでユーザーにもポップアップで説明可能となります。

<address>タグ

主に住所や電話番号などの連絡先を示すものであり、URLなどをくくったりもします。
<address>タグで住所をくくった場合、住所を交えた検索結果において上位表示されやすくなります。

<strong>タグ

強調タグであり、<b>タグが見た目の強調であるのに対して、「重要なワードである」という意味での強調なので、 検索エンジンにも効果があり、キーワードと交えて記述することが重要です。
使用限度はないですが、あまりにも多く使うと効果が下がりますので、重要な部分やワードのみにしておくべきです。

<table>タグ

テーブル、つまり表を生成するタグです。あくまでも表なので<table>タグでWebサイト全体を構築することは構造体的に間違っています。
また、Webサイト全体を構築するとなると、レイアウトを作成する際に複雑な入れ子状になってしまい、HTMLソースが検索エンジンに正しく解釈されないという障害もあります。
何よりも重要なソースの読み込む順番を変更できなかったり、ファイルサイズが大きくなるといったデメリットがあります。
間違ってしまいがちですが、<table>タグを表に用いる分には全く問題ありません。
正し、summary要素をつけ何の表なのかということを検索エンジンにアピールする必要があります。

などなど、いくつか簡単に説明させて頂きました。

論理構造体と視覚構造体を分けてWebサイトを作るということですね。

簡単にいえば検索エンジンとユーザー、それぞれに合った手法でWebサイトを構築するということです。
注意しなければならないことは、どちらか一方のみに絞ったWebサイト構築です。

SEOのためにユーザーが見えない部分に大量のテキストを挿入したり、 デザインのために<table>タグのみでレイアウトを作るなどといった行為は良いWebサイトと認識されにくくなります。

いいWebサイト作成の参考になれば幸いです。

■アクセス解析担当者の記事

+—————————————————————————+

+—————————————————————————+

外部URLを偽装するテスト用ライブラリ「FakeWeb」

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

ご無沙汰しています。KBMJのプログラマのx5rです。

最近、私が携わるプロジェクトでは、外部APIを利用したい、一部の機能を外出しにしてサービス間で連携したいという要望が徐々に増えつつあります。

ただし、その外部システム(サービス、API)と連携する機能を実装はするものの、その機能をテストする場合、テストケース毎に毎回外部連携する訳にはいかないので、どうすればいいのかわかりませんでした。

仮に、毎回そのシステムにリクエストを投げてテストするとしても、その外部システムも並行している開発する場合、そのシステムが出来上がるまで待っていなければなりません。

みなさんこういった外部連携のテストをどうやって行っているのか調べていたところ、FakeWebというWebリクエストを偽装するgemライブラリがあることを知りました。

そこで、今回はこのFakeWebというgemライブラリについて紹介したいと思います。

インストール


sudo gem install fakeweb

サンプルプログラムとして、「みんな大好きgithub」ということで、先日Issue Tracker機能が追加され、また先日バージョンアップしたgithub APIを叩くプログラムを書いてみました。

はい、私が試したかっただけです。。。

github APIについて詳しくはDevelop.GitHubを参照してください。

以下は、自分のアカウント名とリポジトリ名を引数として渡すとリポジトリ情報をYAML形式で取得するプログラムになります。

試しに動作するか確認してみましょう。
私のアカウント「mat5uda」にあるリポジトリ「dotfiles」の情報を取得してみましょう


# github_api.rbのディレクトリで
$ irb
irb(main):001:0> require 'github_api'
=> true
irb(main):002:0> GitHubApi.new.repository('mat5uda', 'dotfiles')
=> {"repository"=>{:owner=>"mat5uda", :homepage=>"http://matsuda.wordpress.com/", :name=>"dotfiles", :private=>false, :fork=>false, :forks=>0, :description=>"My configuration files", :url=>"http://github.com/mat5uda/dotfiles", :watchers=>1}}

うまく取得できることが確認できました。

さて、それでは本題のテストを書いてみます。

最近はRSpecを利用するのが流行のようですが、自分の携わっているのはTestUnitなので、これを利用します。

※ github_api.rbとgithub_api_test.rbは同じディレクとにあるとします。

・使い方


FakeWeb.register_uri(:get, "http://github.com/api/v2/yaml/repos/show/foo/hoge", :string => response)

という箇所がrequestを偽装している処理になります。


FakeWeb.register_uri(method, uri, options)

のmethodにHTTPメソッド、uriに偽装するURI、optionsに:stringキーでレスポンスとして期待する値を渡します。

その他のoptions指定や詳しい使い方はFakeWeb API Documentationを参照してください。

では実際にテストする前に、テストで使用するアカウント「foo」にあるリポジトリ「hoge」を実際に確認してみます。


$ irb
irb(main):001:0> require 'github_api'
=> true
irb(main):002:0> GitHubApi.new.repository("foo", "hoge")
=> {"error"=>[{"error"=>"repository not found"}]}

実際には存在しないので、該当なしという結果が返ってきます。

では、テストを実行してみましょう。


$ ruby github_api_test.rb 
Loaded suite github_api_test
Started
.
Finished in 0.001169 seconds.

1 tests, 4 assertions, 0 failures, 0 errors

期待したとおりにテストが通りました。

このように、もし連携先のシステムがまだ(実装中などで)存在しない場合で、そのシステムにHTTPアクセスするような機能のテストでは、スタブとしてFakeWebを利用することで、その機能自体のテストができるようになるので、利用してみてはどうでしょうか?

Ruby On Rails グラフ表示 Gruff

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

ども、rickです。

今日は、グラフを簡単に表示できるプラグインの紹介です。

環境

rails 2.2.2
ImageMagick 5.1-3
RMagick 2.9.1

Install

$gem install gruff

設定

configer/enviroment.rb

require ‘gruff’

app/controllers/??.rb

def xxx
@gruff = Gruff::Pie.new 500
@gruff.title = ‘test’

@gruff.data(‘Good’, 80)
@gruff.data(‘Bad’, 20) @gruff.write(‘votes.png’)
#send_data(@gruff.to_blob, :type => ‘image/png’, :disposition => ‘inline’)
end

表示

app/controller/xxx.html.erb

<%= tag(“image”, :src => url_for(:action => ‘xxx’, :controller => ‘???’)) %>
or
<img src=”<%= url_for :controller=>’???’, :action=>’xxx’ %>>>

こんなかんじで、一応表示できます。
はっきりってまだ大して調べていないのでもちょっと調べたらまた書きたいと思います。

以上〜

関連コンテンツのサイトを作る場合のドメインの使い分けについて

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

関連コンテンツのサイトを作る場合のドメインの使い分けについて

こんにちは。アクセス解析チームの大山です。

前回、複数ドメインのサイトを計測する方法をご紹介しました。
今回は、そもそも関連サイト間でのドメインの使い分けに
どのような効果があるのかご紹介しようと思います。

関連したコンテンツのサイトを作る場合には、下記3つの方法があります。

  1. 同ドメイン名
  2. 別ドメイン名
  3. サブドメイン名
関連コンテンツのサイトを作る場合のドメインの使い分けについて

以下、①~③のメリット(○)、デメリット(×)になります。

  1. 同ドメイン名
  2. 別ドメイン名
  3. サブドメイン名

上記のように、現状あるサイトのドメインを分ける、統一することにSEO効果を見出すことは難しいのかもしれません。

  1. 1ドメインにつきサイトテーマの統一性
  2. テキストボリュームの最適化
  3. ユーザが迷わない構造(ユーザビリティ)

上記の基本的な点をクリアできるのであればドメインを分け、クリアできないのであれば同ドメインでの運営が望ましいのではないかと思います。

※私の知る情報や推察を含めた情報なので間違いがあるかもしれません。予めご了承下さい。

■バックナンバー・‥‥━━★

■アクセス解析関連記事・‥‥━━★

テーブルをcssで立体的にアレンジする

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

テーマ:【テーブルをcssで立体的にアレンジする】

使用:【XHTML/CSS  photoshop 透過png】

それでは早速やってみます。 >

使用するhtmlはこちら。<table>
<caption><span></span>テーブルのデザインアレンジ</caption>
<tr>
<th></th>
<th>セレス</th>
<th>パラス</th>
<th>ジュノー</th>
<th>ベスタ</th>
</tr>
<tr>
<td class=”row”>火星</td>
<td>opposition</td>
<td>square</td>
<td>trian</td>
<td>trian</td>
</tr>(ーーーー以下くりかえし)
</table>

これによく使うcssをはめ込んでみます。

caption {
    padding: 2px 0 2px 8px;
    margin-bottom: 5px;
    border-left: 5px solid #d94800;
    text-align: left;
    font-weight: bold;
}

table {
    width: 506px;
    border-collapse: collapse;
    font-family: Georgia, “Verdana”, “MS Pゴシック”, sans-serif;
    color: #333333;
}
th {
    width: 100px;
    padding: 0.5em;
    border: 1px solid #cccccc;
    background: #739999;
    color: #ffffcc;
}
td.row {
    width: 100px;
    padding: 0.8em 0.5em;
    border: 1px solid #cccccc;
    background: #e2e2e2;
    font-weight: bold;
    color: #333333;
}
td {
    width: 100px;
    padding: 0.8em 0.5em;
    border: 1px solid #cccccc;
    text-align: center;
    font-weight: bold;
    color: #d94800;
}

この状態でブラウザを見ると、

普通ですね。 

では、少し工夫を加えたcssにしてみます。

caption {
    position: relative;
    padding: 5px 0 5px 45px;
    background: url(../img/caption.png) no-repeat left top;

  /* 背景に双葉の形をした画像を指定 */    
    text-align: left;
    font-size: 18px;
    font-weight: bold;
    color: #333333;
}
caption span { /* テキストに透過pngを使ってグラデーションをつける */

    background: url(../img/touka.png) repeat-x left top;
    position: absolute;
    display: block;
    width: 100%;
    height: 30px;
}
table {
    width: 506px;
    border: 3px solid #e2e2e2;
    border-collapse: separate;
    border-spacing: 0; /* ボーダー同士の隙間をなくす */
    font-family: Georgia, “Verdana”, “MS Pゴシック”, sans-serif;
    background: url(../img/table.png) repeat-x left top;

  /* 背景にグラデーションの画像をひいてテーブル全体に変化をつける */

  color: #333333;
}
th {
    width: 100px;
    padding: 0.5em;
    border: 1px solid;
    border-color: #a3cccc #558080 #558080 #a3cccc;

    /* borderの4辺の色指定をそれぞれ違う色にし立体的にみせる */

  background: #ffcccc url(../img/th.png) repeat-x left top;

  /* 背景に画像をひく */

    color: #ffffcc;
}
td.row {
    width: 100px;
    padding: 0.8em 0.5em;
    border: 1px solid;
    border-color: #e2e2e2 #b3b3b3 #b3b3b3 #e2e2e2;
    background: #ffcccc url(../img/td.png) repeat-x left top;
    font-weight: bold;
    color: #333333;
}
td {
    width: 100px;
    padding: 0.8em 0.5em;
    border: 1px solid;
    border-color: #e2e2e2 #bfbfbf #bfbfbf #e2e2e2;
    text-align: center;
    font-weight: bold;
    color: #d94800;
}

これをブラウザで見ると、

 立体的になりました。

 こんな風に簡単に、cssを使って単調なテーブルを美しくみせることができます。

 少しでもユーザーにとって心地の良い見た目に近づけられればいいかなーと思います。

 以上、【テーブルをcssで立体的にアレンジする】でした。

Ruby On Rails 国際標準化機能 I18n その2

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

ども。5日目rickです。

では早速、昨日紹介したRuby On Rails 国際標準化機能 I18n その1の続きのその2の紹介です。

今回の環境説明

前回と同じ

Install

$sudo gem so -a http://gems.github.com
$sudo gem i amatsuda-i18n_generators

設定

$ ./script/generate i18n ja
  debug updating environment.rb …
  debug fetching ja.yml from rails-i18n repository…
  exists config/locales
  update config/environment.rb
  create config/locales/ja.yml
  debug 0 models found.
  debug 0 translation keys found in views.
  info No translation keys found. Skipped generating translation_ja.yml file.

するだけ。
あとは自動で日本語になる。
カラムが日本語になってないとかおかしいときは

config/locals/ja.yml
config/locals/translation_ja.yml

に追加してください。
今回の場合、下記の方法で書いた場合表示が変更されません。(自分だけ?)

<% @member.errors.each do |error, i| %>
<%= error + i %>
<% end %>

なので下記のような方法で書いてください。

<% @member.errors.each do |error, i| %>
<%= I18n.t(error) + i %>
<% end %>

以上、便利なI18nでした〜。

Ruby On Rails 国際標準化機能 I18n その1

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

ども、4日目のrickです。

今回は、Rails2.2以降から標準装備されている国際標準化機能(単語を置き換える機能とでもいうのかな?)について説明します。
なんでその1なのかは、最後を読んでみてね。
ちなみにi18nというのはinternationalizationの頭と後ろのiとn、文字数が18文字というところから来てるらしい。

環境

rails2.2以上

設定

config/environment.rb

# 最下行に追加
I18n.default_locale = “ja”

日本語以外もあるかもなので取った値によってみるページを替える

# app/controllers/application.rb

before_filter :set_locale
def set_locale
I18n.locale = params[:locale]
end

日本語用のページ作成

$cp config/locales/en.yml config/locaes/ja.yml

言葉入力

ja:
genre: ジャンル
models:
book_mark: Booker
attributes:
book_mark:
url: URL
link_name: Booker名

※空白や段落に気をつける

View画面

<%= I18n.t :genre %>

これでジャンルが表示される。

Error文

#config/locales/ja.yml

ja:
site_title: サイトタイトル
activerecord:
errors:
template:
header: “{{model}}でエラーが発生しました。”
body: 以下のエラー内容を確認してください。
messages:
blank: が空白です。
models:
entry: エントリー
attributes:
entry:
title: タイトル
body: 本文

こんな感じにするとデフォルトのエラー表示の英語のところも日本語になる。

以上が、I18nの説明です。
さてなぜその1なのか?という答えは、もちろん次回その2があるからです。
その内容は、はっきり言ってそっちを先に教えろよって感じかもしれませんが、
今回のは、勉強がてら見てもらえると嬉しいです。
もちろん次回のも見てほしいですけどね。

んでわぁまた。

Google Analyticsで同じURLのページの遷移のデータを取得する方法

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

Google Analtyicsで同じURLの遷移のデータを取得する方法

アクセス解析チーム中林です。

Google Analyticsを使用していてコンバージョン測定をする際に

目標到達プロセスを設定する際にページのステップのURLが同じとなっていて

プロセスを取得することができないなんてことがまれにあります。

今日はそういったURLが同じページ遷移が有った場合に

Google Analyticsでデータを取得する方法です。

ページの遷移が全て同じURLで有る場合

たとえば、CGIページとか、

レンタルカートの買い物かごから購入までのステップに同じURLがあったりして、

Google Analyticsでデータが正しく取得できないなんてことが有ったりします。

同じURLのページ遷移

 このような場合、GoogleAnalyticsのデフォルトのままでは

同じURLでの遷移回数が増える度に、PV数が増加してしまうことになり、

正しい数値が取れなくなってしまうし、

コンバージョンにおける目標到達プロセスを設定する場合に非常に困ります。

このような場合にGoogleAnalyticsでは仮想的にURLをページに持たせて、

データを取得することができます。

Google Analyticsで仮想的にURLを持たせてデータを取得する方法

GoogleAnalyticsで仮想的にURLを持たせる場合には

onload関数を使って仮想的にURLを呼び出しす必要があります。

先ほどの全て同じURLのページの箇所を下記のように仮想的にURLとして持たせてみます。

買い物かご ⇒/kago.html

入力画面  ⇒/edit.html

入力確認  ⇒/confirm.html

違うURLのページステップ

わかりやすく今回は、タグにOnLoadイベントを埋め込んでみます。

買い物かごページの場合

 onLoad=”pageTracker._trackPageview(‘/kago.html’);”>

入力画面ページの場合

 onLoad=”pageTracker._trackPageview(‘/edit.html’);”>

入力確認ページの

 onLoad=”pageTracker._trackPageview(‘/confirm.html’);”>

それぞれページの中に埋めこんであげることで、

仮想的にページのURLを指定することができます。一点注意する点として、

_trackPageviewの関数を使用して仮想URLを持たせる場合は、

GoogleAnalyticsのトラッキングコードは、

ソースコード上_trackPageviewの関数より上に持ってこなければいけないので注意してください。

以上、Google Analtyicsで同じURLの遷移のデータを取得する方法でした。

◇バックナンバー

Google analyticsでPDFファイルをカウントする方法

◇その他アクセス解析関連記事

・Google Analyticsで複数ドメインのサイトを計測する方法

・Yahoo! Web Analytics とは? ~レポート機能を解説(日本語)~

・SEOって何ですか

KBMJ GoogleAnalyticsのスクールも開催中です!

Google Analyticsスクールでは、セミナーやブログではお伝えしきれない細かな設定方法やアクセス解析手法について、徹底的に解説いたします。 少人数のスクール形式だから、状況やレベルに合わせてインタラクティブに、より詳しく、実用的な活用術を徹底指導いたします!

Ruby On Rails エラーの英文を日本語に変換するプラグイン Ruby-GetText-Package

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

ども、3日連続(休日はなしね)投稿中rickです。

今回は、Validateの英文を日本語にするプラグインの解説です。

これは、rails2.1以前まで使用可能です。
gettext2.0.0は、rails2.3.2対応してるらしいですが、バグあるらしいです。

gettext1.9.3はrails1.2.6に対応してないので、gettext1.90.0を入れるのがいいと思います。

今回の環境説明

Ruby 1.8.6
Rails 1.2.6
gettext 1.90.0
MySql 6.0.9-alpha

install

$gem install gettext –version=1.90.0

事前準備

htmlのヘッダーに

<meta http-equiv=”content-type” content=”text/html;charset=UTF-8″ />
database.ymlに

encoding: utf8

config/enviroments.rbに

$KCODE = ‘u’
require ‘jcode’

はやっておきましょう。
日本語表示・入力だよ〜っていう宣言です。

設定

config/enviroments.rbに

require ‘gettext/rails’

を加えます。
app/controllers/application.rbに

class ApplicationController < ActionController::Base
 init_gettext “test”
 省略
end

を加えます。
全ての場所で設定ファイルを読込めるようにしてるだけですね。
“test”の部分は後から出てくるpoファイルの名前なので何でもいいです。
次に、app上のRakefileに、

desc “Update pot/po files.”
task :updatepo do
require ‘gettext_rails/tools’
GetText.update_pofiles(“test”, #テキストドメイン名(init_gettextで使用した名前)
Dir.glob(“{app,config,components,lib}/**/*.{rb,erb,rjs}”), #ターゲットとなるファイル
“test 1.0.0” #アプリケーションのバージョン
)
end

desc “Create mo-files”
task :makemo do
require ‘gettext_rails/tools’
GetText.create_mofiles
end

を加えます。
そして

$rake updatepo
$make po/ja
cp po/test.pot po/ja/test.po

します。
次にtest.poの編集

# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE’S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR , YEAR.
#
#, fuzzy
msgid “”
msgstr “”
“Project-Id-Version: test 1.0.0\n”
“POT-Creation-Date: 2009-04-17 09:27+0900\n”
“PO-Revision-Date: 2009-04-17 09:27+0900\n”
“Last-Translator: FULL NAME \n”
“Language-Team: LANGUAGE \n”
“MIME-Version: 1.0\n”
“Content-Type: text/plain; charset=UTF-8\n”
“Content-Transfer-Encoding: 8bit\n”
“Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n”

もともとこんなんが入っていますので、一番下に

#: app/models/test.rb
msgit “Test|title”
msgstr “タイトル”

というように入力します。
そして

$rake makemo

を実行すると

local/ja/LC_MESSAGES/test.mo

というファイルが作成されます。

実行

あとは起動してエラーを出すだけです。
私の場合ここで
~/Ruby/Gems/1.8/gems/gettext-1.90.0/lib/gettext/iconv.rb

if __FILE__ == $0
puts Iconv.iconv(“EUC-JP”, “UTF-8”, “ほげ”).join
begin
puts Iconv.iconv(“EUC-JP”, “EUC-JP”, “ほげ”).join
rescue Iconv::Failure
puts $!
puts $!.class
end
end

とかがsyntax errorを起こしていたんですが、特に必要なさそうだったのでコメントアウトしときました。
__FILE__は”~/Ruby/Gems/1.8/gems/gettext-1.90.0/lib/gettext/iconv.rb”で、
$0は、”script/server”なんですがねぇ。。
なんで通るんでしょうかねぇ。

最後は、自分じゃよくわらからないですが、
以上がRuby-GetText-Packageの解説でした〜。

でわまた。

Ruby On Rails ログインのプラグイン restful_authentication

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちわ〜。

2日続けてのプラグイン紹介で、今回はログインのプラグインの紹介です。
前はacts_as_authenticationというプラグインがよく使われてたらいいんですが、
サポートが打ち切られたらしくrails2.0系からは、restful_authenticationを代わりに使ってほしいそうです。

とゆうわけで解説の始まり始まり〜。。。。

restful_authenticationのインストール

$ruby script/plugin http://svn.techno-weenie.net/projects/plugins/restful_authentication –force

acts_as_state_machineのインストール

$./script/plugin install http://elitists.textdriven.com/svn/plugins
このプラグインは、会員の状態管理などを行ってくれる。

コントローラーなど作成

$ ./script/generate authenticated user sessions –include-activation –stateful

設定

config/rootes.rb
# 次の4行を書く。1行目はactivate(本会員)にするために必要、

map.activate ‘/activate/:activation_code’, :controller => ‘users’, :action => ‘activate’, :activation_code => nil
map.signup ‘/signup’, :controller => ‘users’, :action => ‘new’
map.login ‘/login’, :controller => ‘sessions’, :action => ‘new’
map.logout ‘/logout’, :controller => ‘sessions’, :action => ‘destroy’
controllers/sessions_controller.rb

# Be sure to include AuthenticationSystem in Application Controller instead
include AuthenticatedSystem

この2行を削除してcontrollers/application_controller.rbにコピーする。

localhost:3000/signupなどで仮会員を作成その後rootへ戻るのでどこかで本会員へするためuser/activateへ飛ばさなくてはならない、
飛ばすときに仮登録したuserのactivation_codeを持たせてあげないと反応しない、これではじめてloginが可能となる。

acts_as_state_machine

作成されたusers_controllerの中に今の説明中に説明していないsuspend,unsuspend,destroy,purgeメソッドが存在する。
これは、acts_as_state_machineの機能で、model/user.rbの20行以降で定義されている。

acts_as_state_machine :initial => :pending
state :passive
state :pending, :enter => :make_activation_code
state :active, :enter => :do_activate
state :suspended
state :deleted, :enter => :do_delete

これは、初期状態のときstate :pendingへ移行して:enter => :make_activation_codeから

def make_activation_code
self.deleted_at = nil
self.activation_code = Digest::SHA1.hexdigest( Time.now.to_s.split(//).sort_by {rand}.join )
end

こいつを呼び出している、これは、仮登録状態のためのキーを発行している このキーを受け取ってactivateへ行くと本登録をしてくれる。それと同時に、仮登録のキーを

def do_activate
@activated = true
self.activated_at = Time.now.utc
self.deleted_at = self.activation_code = nil
end

これで削除している。
suspend,unsuspendは、状態変化ぐらいかな?
あ、状態変化は、userテーブルのsateカラムが変化してます。
destroyは、状態変化とdeletd_atカラムに現在時間を入れています。
purgeは、物理削除です。ちなみにpurgeは追放とかいう意味です。

これがrestful_authenticationの一通りの流れです。仮登録のときメール飛ばして返ってきたのを本登録にするとかもいろいろできるらしいです。(今回は、そこまでやってません)

というわけで終しまいです。

Google Analyticsで複数ドメインのサイトを計測する方法

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

Google Analyticsで複数ドメインのサイトを計測する方法

こんにちは。アクセス解析チームの大山です。
春を楽しむ間もなく、夏を予感させる暖かい日が続いていますね。

今日は、2つのドメインを持つサイトをGoogle Analyticsに設定する方法についてご説明します

Google Analyticsで2つのドメイン構成のサイトデータを取得しよう

通常、ドメイン数が1つの場合は、Google Analyticsより発行されたトラッキングコードをコピーし、
トラッキングする各ページの タグの直前に貼り付ければ完了します。

2つのドメインを持つサイトをトラッキングするには、
通常のトラッキングコードの貼り付け作業に2つのポイントが加わります。

  1. 全てのトラッキングコードに下記の命令を追加します。
    1. トラッキングcookiesのドメイン特定
    2. 2ドメイン間のリンクを有効化
  2. 2つのドメイン間のリンク全てのリンクに_link関数を加えます。

◎Google Analyticsで複数ドメインのサイトを計測のポイント◎
2の_link関数を有効にするには、2よりも上に1を配置する必要があります。
</head>タグの直前の配置することで有効となります。
※</head>タグ直前の配置は_link関数を持つトラッキングコードのみ有効です。

複数のドメイン構成のサイトを登録する際に注意するポイント

複数のドメイン用のトラッキングコードを埋め込んでいない場合でも
(通常のトラッキングコードを複数のドメインを持つサイトに埋め込んだ場合でも)
そのサイトの数値はGoogle Analyticsに記録されます。
しかし、取得された数値は異常値であり、少なくとも下記の項目に影響があると考えられます。

  1. セッション
  2. 一人当たりのPV数
  3. 直帰率
  4. 参照元

Google Analytics上で数値がトラッキングされているからといって安心はせきません。
上記の項目が異常値である理由と確認方法をご説明しましょう。

  1. セッションが2重に取得される
  2. 一人当たりのPV数が少ない
  3. 直帰率が高い
  4. 参照元に同プロファイルのサイトがトラッキングされる

あなたのサイトには思い当たる部分はありませんでしたか?
上記のような間違ったデータで施策を打たないように、まずは正しい設定を心がけましょう。

以上、Google Analyticsで2つのドメインを正しく取得する方法でした。

■バックナンバー・‥‥━━★

■アクセス解析関連記事・‥‥━━★

vimの配色の設定をしてみる

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

最近vimを使っています。
とりあえず見た目を格好良くしたかったので、配色を変えてみることにしました

環境:ubuntu 8.10
vimエディタ GVim 7.1.314

ちなみに現在の配色はこんな感じ。すごくデフォルトです。

今回はすでに用意されているカラースキーマを利用することにします。
カラースキーマの場所
~/vimfiles/colors

ホームディレクトリにvimfilesディレクトリがない場合は作成します。
mkdir vimfiles
mkdir vimfiles/colors

ウェブで配布されているものもしくは、/usr/share/vim/vim71/colorsにあるカラースキーマを
~/vimfiles/colors内にコピーします。

今回は、巷で人気のzenburnを設定します。

cd ~/vimfiles/colors/
wget http://slinky.imukuppi.org/zenburn/zenburn.vim

ファイルを配置したらvimの設定ファイルを開きます。
gvim ~/.vimrc

設定ファイルの一番下に以下を追加します。
colorscheme zenburn
色が変わりました。簡単です。

カラースキーマを変更するといろいろ変わります。

でもこれだけでは味気ないので、
今度ちょっと手を加えてみようと思います。

Ruby On Rails 論理削除のプラグインacts_as_paranoid

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちわ〜。
今回はacts_as_paranoidというRailsのプラグインについてお話します。

以前x5rさんがRuby on Railsでacts_as_paranoidを使い倒すという記事を書いてまして、それをみて今回大体おこなったので基本はこちらを見ていただければ大体わかると思います。
私の記事では、その記事を見てできなかったところや、こんな動作してるなどを少しメモ程度に書いてあります。

まず、今回のrailsのversionは、1.2.6です。

とりあえずinstall前までは、x5rさんの記事と同じです。
installのコマンドをたたいてもinstallされなかったので、

ruby script/plugin install http://svn.techno-weenie.net/projects/plugins/acts_as_paranoid –force
でinstallする事ができました。
このプラグインを使う事で、find文を行うときに常に

SELECT ・・・ FROM ・・・ WHERE
deleted_at IS NOT NULL OR deleted_at > time.now ・・・
とうように条件がついてくるようになります。
この条件を外すために、:with_deletedオプションが有る訳ですね。

次は、ページネートの拡張です。
これは、自分が間違えただけだったのですが、pagination_extend.rbの内容をx5rさんの記事を参考に書いて作動させたところ
・かえってくる値が配列じゃない
・取得する情報が1つしかない
なんていう状態になりました。
これは、本当に初歩的なミスで、

def paginator_and_collection_for_with_deleted(collection_id, options) #:nodoc:
klass = options[:class_name].constantize
page = params[options[:parameter]]
count = count_collection_for_pagination_with_deleted(klass, options)
paginator = Paginator.new(self, count, options[:per_page], page)
collection = find_collection_for_pagination_with_deleted(klass, options, paginator)
return paginator, collection
end

return paginator, collection
を書き忘れていただけでした。。。値返さないじゃんっていう。。。。

少し思った問題点としては、
・ページ読込み時に関係ない所でもinitファイルが読込まれるので、全体的に動作が遅くなる。
・多対多のMapテーブルでは、動作しないので物理削除のまま。
といったところがあげられる。
他にも結構バグが多いといもいわれているので、大きくなったプロジェクトを後から・・・というならしょうがないかもしれませんが、最初からこのプラグインを使って論理削除を行うということは、あまりしたくはないですね。

・・・installの事しか書いてないじゃん。。。
まぁ、今回は以上でっす。

Google analyticsでPDFファイルをカウントする方法

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

Google AnalyticsでPDFファイルのカウントをする方法

KBMJアクセス解析チームの中林です。

今日はgoogle analyticsでトラッキングコードが埋め込めない

PDFファイルなどのダウンロード数をカウントする方法についてご説明します。

Google Analyticsでアクセス数をカウントする場合

サイトのページ内にGoogle Analyticsのトラッキングコードを埋め込まなければいけません。

しかし、PDFなどファイルについては、トラッキングコードを埋め込むことが出来ないため

Google Analyticsでダウンロード数を取得するためには、

デフォルトの設定では取得できないため、ひとつ工夫が必要になります。

それではKBMJのサイトを例に説明します。

下記はKBMJのプレスリリースです。

PDFファイルダウンロード

リンクの部分については、Google Analyticsのタグを埋め込めば

もちろんセッション数やPV数を取得することはできるのですが

上記の赤枠箇所のPDFについては通常のままでは

Google Analyticsでデータを取得することはできません。

何回ダウンロードされたかをGoogleAnalytics上で取得するためには、

リンクそのものに修正が必要です。

現状のPDFファイルへのリンクは下記のものです。

 <a href="./../index/community.pdf" target="_blank">PDF 45 KBa>
 カウントを取得するためには、下記のようにリンクに色がついている部分を追加します。
■トラッキングタグにurchin.jsを使用している場合
 <a href="./../index/community.pdf" target="_blank" onclick="javascript:urchinTracker('/download/community');" >PDF 45 KBa> 
■トラッキングタグにga.jsを使用している場合
  <a href="./../index/community.pdf" target="_blank" onclick="javascript:pageTracker._trackPageview('/download/community');">PDF 45 KBa>
※赤字の部分は任意の文字列を記述してください(URLを仮想的に持たせます。) 
 【注意点】
このように_trackPageview関数を使用する場合、
トラッキングコード内に含まれる 下記の関数を_trackPageview関数よりも
ソースコードで上に記述しなければいけません。
var pageTracker = _gat._getTracker("UA-xxxxxx-x");  
pageTracker._initData();  
はやい話が今回の例でいうと、PDFダウンロードのリンクよりも
上にトラッキングコードを貼り付けなければいけないわけです。
データが反映されたあとGoogleAnalytics上で「上位のコンテンツ」から先ほど記述した
PDFダウンロードのリンクの_trackPageviewに設定した任意の文字列を検索すれば
数値が取得されていると思います。
以上GoogleAnalyticsでPDFファイルのダウンロード数をカウントする方法でした。 
 ■バックナンバー
 GoogleAnalyticsの「サイト上のデータを表示する」機能でクリック率をみる

■その他アクセス解析担当の記事 【最新の3記事】

Yahoo! Web Analytics とは? ~レポート機能を解説(日本語)~

アクセス解析で見るユーザビリティ -目的のコンテンツへの道筋を整えよう!-

SEOって何ですか?

KBMJ GoogleAnalyticsのスクールも開催中です!

Google Analyticsスクールでは、セミナーやブログではお伝えしきれない細かな設定方法やアクセス解析手法について、徹底的に解説いたします。 少人数のスクール形式だから、状況やレベルに合わせてインタラクティブに、より詳しく、実用的な活用術を徹底指導いたします!

resource_controller で RESTful, DRY 実践

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

Rails 2.0 からの RESTful 指向により、ほとんどのコントローラは index, show, new, create, edit, update, destroy の基本的なアクションを持ちます。
コントローラはモデルとビューの中継ぎをするためのコードを持ち、ビジネスロジックはモデルに持つという思想を実践すれば、コントローラのコードはほとんど同じコードになります。
このコントローラの状況は、Rails の DRY (Don’t Repeat Yourself)の法則に反することになります。
そこで今回紹介する resource_controller の出番です。

script/generate scaffold post で作成したコントローラは以下のようになります。

class PostsController < ApplicationController
  # GET /posts
  # GET /posts.xml
  def index
    @posts = Post.find(:all)

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @posts }
    end
  end

  # GET /posts/1
  # GET /posts/1.xml
  def show
    @post = Post.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @post }
    end
  end

  # GET /posts/new
  # GET /posts/new.xml
  def new
    @post = Post.new

    respond_to do |format|
      format.html # new.html.erb
      format.xml  { render :xml => @post }
    end
  end

  # GET /posts/1/edit
  def edit
    @post = Post.find(params[:id])
  end

  # POST /posts
  # POST /posts.xml
  def create
    @post = Post.new(params[:post])

    respond_to do |format|
      if @post.save
        flash[:notice] = 'Post was successfully created.'
        format.html { redirect_to(@post) }
        format.xml  { render :xml => @post, :status => :created, :location => @post }
      else
        format.html { render :action => "new" }
        format.xml  { render :xml => @post.errors, :status => :unprocessable_entity }
      end
    end
  end

  # PUT /posts/1
  # PUT /posts/1.xml
  def update
    @post = Post.find(params[:id])

    respond_to do |format|
      if @post.update_attributes(params[:post])
        flash[:notice] = 'Post was successfully updated.'
        format.html { redirect_to(@post) }
        format.xml  { head :ok }
      else
        format.html { render :action => "edit" }
        format.xml  { render :xml => @post.errors, :status => :unprocessable_entity }
      end
    end
  end

  # DELETE /posts/1
  # DELETE /posts/1.xml
  def destroy
    @post = Post.find(params[:id])
    @post.destroy

    respond_to do |format|
      format.html { redirect_to(posts_url) }
      format.xml  { head :ok }
    end
  end
end

resource_controller を使えば、上記のコードは次の様になります。

class PostsController < ApplicationController
  resource_controller
end

また、/post/1/comments の様なネストしたコントローラにも対応しています。

class CommentsController < ApplicationController
  resource_controller
  belongs_to :post
end

belongs_to を使えば、/post/1/comments の様な URL で Comments コントローラにアクセスした場合に、自動的に @post インスタンス変数に親オブジェクトを生成してくれたりします。

resource_controller プラグインをインストールするには以下のコマンドを実行します。

script/plugin install git://github.com/giraffesoft/resource_controller.git

こちらのブログでさらに詳細が書かれていますので、興味ある人はご覧下さい。
resource_controller で RESTful, DRY な生活を送りましょう!

Amazon の電子書籍リーダー「Kindle 2」を使ってみた

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは。

KBMJの佐藤です。

Amazon の電子書籍リーダー「Kindle 2」を触る機会があったので、今回はその感想を書いてみたいと思います。

http://farm4.static.flickr.com/3548/3425035461_98f67338bd.jpg

Amazon Kindle 2 とは

Amazon Kindle 2 は、米 Amazon が販売している電子書籍リーダーです。

Kindle 最大の特徴は、EV-DOを利用した、PCを介する必要のない電子書籍のダウンロード機能。携帯会社との契約は不要というのが素晴らしいです。つまり本を読みたくなっても書店に行かずに購入・読書が可能ということです。まさにユビキタスなサービス。Kindle向けの書籍だけでなく、Wikipediaや新聞、雑誌、ブログなどを購読することも可能なようです。

ハードウェアキーボードも装備されており、書籍の検索やノートの入力などにも使えます。

端末の省電力設計も特徴で、バッテリーが非常に長持ちするようです。無線機能を有効にした状態でも、1回の充電で4,5日は使用可能とのこと。「いつ充電したのか?」などを気にしなくてもよいくらいに電池がもつということで、非常に好感がもてます。

359ドルと、端末の値段が高いのが残念。

画面は6インチ。解像度は600×800ピクセルと、かなりいい感じです。iPhoneにPDFを転送して読むと画面が狭くてかなり悲しいことになるので、電子書籍リーダーとしてはこれくらい広い画面がないと使う気になりません。

2Gバイトのメモリを搭載し、1500タイトル以上の電子ブックを保存できるとのこと。音楽と違って書籍をそんなに保存できてもなあ、とは思いますが、読書の虫にとっては移動中に読む本が無くなるとやることがなくなってしまいますし、かといって複数冊の本を持ち歩くと荷物になりますので、この軽いデバイス1つに集約できるのは嬉しいかも。

Kindleはまだ日本では販売されていないようですが、Kindle本体から電子書籍を直接購入できるなど、ユーザー体験の面で今までの電子書籍リーダーとは一線を画する製品であると思います。

アップルのiPodのように、垂直統合の良さが際だった、ユーザー体験を非常に重視したサービス・製品だと思います。

従来機との比較

従来機に比べてかなり薄くなっています。以下、比較写真。

http://farm4.static.flickr.com/3310/3425035603_031ccbec0f.jpg
http://farm4.static.flickr.com/3570/3425844618_8b1aa257fe.jpg

厚みが0.91センチ。相当薄い。重量は289グラム。前モデルよりも軽くなったようですが、片手で気軽に読書を楽しむにはまだまだ重いという印象。キーボード部分をばっさりと切り捨てて、もっと軽くしてほしいですね。そういった思い切りが欲しいです。

新モデルではページをめくるためのボタンが両サイドに配置されたのですが、これが非常に良いです。デジタルガジェットを使っているとその形状によって使い方が縛られるという面があるかと思うのですが、両サイドにめくるボタンがついたことにより、そこが改善されていると感じます。

iPod touchとの比較

http://farm4.static.flickr.com/3551/3425844316_74898335f2.jpg
http://farm4.static.flickr.com/3559/3425036205_8c857d85a7.jpg

新型kindleとiPod touchとの厚さ比較。新型はかなり薄いです。バッグに入れておいてもまったく気にならないレベル。

現在「Kindle for iPhone」というアプリが利用可能となっていますが、小説などならともかく、技術書などを読むのは画面の大きさの問題もあってかなり厳しいようです。

まとめ

やはり既存の紙媒体のコンテンツであれば、画面の大きなデバイスで楽しみたいものです。というわけで、Kindleには非常に期待しているのですが、デバイスの価格が高かったり日本で買えなかったり非常に残念ですね。日本のメーカーが電子書籍リーダーを作ると様々な事情で非常に高機能かつ高価なデバイスになってしまうので、やはりKindleのように思い切った設計のデバイスを出して欲しいものです。

iPodの大ヒットを見ても分かるように、これからの一般消費者に向けたサービスではアップル的な「垂直統合」が非常に重要だと思います。あのマイクロソフトも音楽配信においては「Plays For Sure」による水平統合がうまくいかず、「Zune」などによる垂直統合へと方針を変えたようです。デバイス製品単体だけではなく、その周囲にあるコンテンツ・ネットサービス・実店舗などを一体化したユーザー体験を提供していく企業こそ、今後のデジタルライフスタイル時代では消費者に受け入れられるのだと思います。そういう意味で、Kindleというデバイスが出てきたことは非常に興味深いと考えます。

Special Thanks : 三浦印刷株式会社 代表取締役社長 三浦久司様、下町めぐり.jp

Google analyticsの「サイトのデータを表示する」機能でページのクリック率をみる

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

アクセスログ解析チーム中林です。

今日はGoogle Analyticsの機能紹介ということで

サイト上のデータ表示」でページごとのリンクのクリック率をみる機能をご紹介したいと思います。

◆サイト上のデータ表示 

まずGoogleAnalyticsにログインして、レポートを表示します。

GoogleAnalyticsレポートサマリー

次に、左ナビの「コンテンツ」をクリックしてください

Google Analyticsコンテンツサマリー

「コンテンツ」の中に、「サイト上のデータ表示」というのがでてきます。

それをクリックしてください。

するとレポート表示しているサイトが表示され、

オーバーレイでリンクのクリック率が表示されます。

GoogleAnalyticsサイト上のデータ表示

 リンクの一つひとつにパーセントとメーターが表示されました。

 これがクリック率になります。

他にもコンバージョン設定をしている場合は、

コンバージョン率や、コンバージョンバリューを表示することができます。

・サイトのどの場所がクリックされているか

・どのコンテンツが人気あるのか

・どのコンテンツからコンバージョンに達しているのか

といったことが視覚的にみることができるので、

サイトのなかの配置などを変更する時に有効なデータになると思います。

注意点としては、

例えばヘッダーとフッターにTOPページへのリンクが有り

リンク先のURLが

htt://www.dorouby.kbmj.com/index.html

とヘッダー、フッターで同じであった場合

「サイト上のデータ表示」の結果で出てくるクリック数は

ヘッダーとフッターのTOPページのリンクの数は同じ数となります。

※あくまでクリック前のページから、URLに対しての通信があった回数(トラッキングコードが読み込まれた回数)を算出しているため、

もしもどうしても、ヘッダーとフッターでクリック数を分けたいという場合は、

http://www.dorouby.kbmj.com/index.html?header

http://www.dorouby.kbmj.com/index.html?footer

のようになんらかのパラメーターをつけることで通信数を分けることができます。

以上、本日は、Google analyticsでページのクリック数・率を表示する方法でした。

■バックナンバー

 google analyticsで使う アクセスログ解析用語 その2

■その他アクセス解析担当の記事 【最新の3記事】

Yahoo! Web Analytics とは? ~レポート機能を解説(日本語)~

アクセス解析で見るユーザビリティ -目的のコンテンツへの道筋を整えよう!-

SEOって何ですか?

KBMJ GoogleAnalyticsのスクールも開催中です!


Google Analyticsスクールでは、セミナーやブログではお伝えしきれない細かな設定方法やアクセス解析手法について、徹底的に解説いたします。
少人数のスクール形式だから、状況やレベルに合わせてインタラクティブに、より詳しく、実用的な活用術を徹底指導いたします!

最近人気な記事