プロフィール

メインメニュー

最近の記事

カテゴリー

カレンダー
2012年5月
« 4月    
 123456
78910111213
14151617181920
21222324252627
28293031  

アーカイブ

2004年の日記

ケータイ版URL

http:://toyao.net/xoops/
modules/wordpress/

  カテゴリー ‘Webサービス制作日記’ のアーカイブ
ITに関すること、草野球のことなど。
10月
2010
31

【連載】Webサービス制作日記#09 CakePHPのデータベースアクセスは便利

CakePHPは、PHPの開発でよく使う機能や方法論をフレームワークという形であらかじめ用意してくれていますので、1からPHPでコードを書く必要が無いことが多いです。
データベースへのアクセスは通常はSQLを使いますが、CakePHPを使うとSQLを使わなくてもデータベースの参照や更新ができてしまいます。
僕がとりわけ感動したのは、リレーションの関係になっている2つのテーブルの更新にも対応していることです。
正しく配列に値を入れておけば、その配列を渡すだけで2つのテーブルの更新を同時に行なってくれます。
 
たとえばこんな2つのテーブルがあって、1:nの関係があるとします。
 
201010312010.jpg
 
これらのテーブルに値を入れるには、テーブルを模した以下のような構造の配列(arrayAとします)を作って、saveAll関数に渡すだけです。
 

Array
(
    [Crawlkeyword] => Array
        (
            [user_id] => 18
            [keywordlist_id] => 23
            [Callnum] => 4
            [Rallnum] => 8
        )

    [Crawldomain] => Array
        (
            [0] => Array
                (
                    [domainlist_id] => 201
                    [Cpos] => 0
                    [Rpos] => 7
                )

            [1] => Array
                (
                    [domainlist_id] => 202
                    [Cpos] => 0
                    [Rpos] => 0
                )

          ・・・

 
saveAll関数でデータベースにInsertできます。もし既に同じデータがテーブルに存在する場合はInsertではなくUpdateしてくれます。

$this->Crawlkeyword->saveAll($arrayA);

 
書かないといけないコードは実はこれらだけではなくて、データベースコネクトのための設定や、モデルとよばれるクラスの実装など、考慮しないといけない点はいくつかありますが、それらの下準備をしておきさえすれば、実際のDBアクセスは驚くほど簡潔です。
 
CakePHPによるデータベースのアクセス方法は、このページを大いに参考にさせてもらいました。
分かりやすいのでおすすめです。
 
【libro】 初心者のためのCakePHPプログラミング入門
http://libro99.appspot.com/index2?id=8002
 
 
 
過去のエントリ
【連載】Webサービス制作日記#08 グラフ描画ツールを使う
【連載】Webサービス制作日記#07 cronでスケジュール実行
【連載】Webサービス制作日記#06 jQueryでAjaxする
【連載】Webサービス制作日記#05 HTMLパーサを使う
【連載】Webサービス制作日記#04 データベースを使う
【連載】Webサービス制作日記#03 プラットフォームを決める
【連載】Webサービス制作日記#02 要件を決める
【連載】Webサービス制作日記#01 何を作ろうとしているか

10月
2010
17

【連載】Webサービス制作日記#08 グラフ描画ツールを使う

グラフ描画ツールとして、jqPlotを使うことにします。
jqPlotは、jQueryのプラグインとして動作します。
 
201010171828.jpg
 
javascriptのグラフ描画ツールは最近かなり充実してきている感じがします。jQueryはもちろんですが、prototype.js他のAjaxライブラリでもいろいろなグラフ描画ツールがあります。
昔はグラフを描こうと思ったら、flashを使うくらいしか選択肢がなかったと思います。もしくはgnuplotRなんかを使ってサーバーサイドでグラフ画像を作って、それをイメージとして表示するというような使い方とか。
そういうやりかたに比べれば、JavaScriptベースのグラフツールは格段に楽です。いくつかの[x,y]データを渡してやるだけで、デフォルト状態でもきれいな図を描いてくれます。
 
[参考]ゆっくりと… » データ可視化のためのグラフ描画JavaScriptライブラリ20選
http://tokkono.cute.coocan.jp/blog/slow/index.php/programming/javascript-data-visualization-libs/
 
たくさんあるのでどの描画ツールを使ったらよいか正直迷うところですが、「jQuery」と「折れ線グラフ」の条件で絞り込み、あとは将来性で選んでjqPlotにしました。
去年はflotでグラフを描いたことがあったので、慣れてるものを使う方が楽だしこれを使おうかなと思ったのですが、1年間バージョンアップしてないしなんとなく将来性がなさそうな感じがしたので却下しました。こういうツールはたくさん種類がある分、浮き沈みが激しいです。
 
今回採用する描画ツールの話ではないですが、グラフの描き方は以下が分かりやすいと思います。
 
jQueryで折れ線グラフを表示してみる « エンジニアのためのUI改善講座

http://www.kentarox.com/2010/04/jquery_liner_graph/
 
1つ例をあげると、jqPlotでは以下のjQueryコードだけでこんなグラフが描けちゃいます。
縦軸、横軸の目盛りは自動で計算してつけてくれます。

line1=[0.82, 1.5, 3.4, 4];
plot1 = $.jqplot('chart1', [line1], {});

 
描画したいところにHTMLコードを入れておきます。

<div id="chart1"></div>

 
201010172004.jpg
 
[参考]http://www.jqplot.com/tests/axisAutoscaleTests.php
 
 
こういうグラフ描画ツールを使って簡単にグラフを描いて視覚化できる時代になりましたから、既存のデータを使ってどんどんグラフ化していくと面白くなってくると思います。
どこかの統計サイトからデータだけをとってきてグラフ化したり、独自に収集したデータを視覚化して提供するサイトを作ったら、個人的には流行るんじゃないかなーと思っていたりします。
こういうツールでなんか面白いことができないか考えるとワクワクするんですよ。
 
 
 
過去のエントリ
【連載】Webサービス制作日記#07 cronでスケジュール実行
【連載】Webサービス制作日記#06 jQueryでAjaxする
【連載】Webサービス制作日記#05 HTMLパーサを使う
【連載】Webサービス制作日記#04 データベースを使う
【連載】Webサービス制作日記#03 プラットフォームを決める
【連載】Webサービス制作日記#02 要件を決める
【連載】Webサービス制作日記#01 何を作ろうとしているか

10月
2010
9

【連載】Webサービス制作日記#07 cronでスケジュール実行

スポンサードサーチ検索ツールには、リアルタイムに検索できる機能だけではなくて、過去のデータを遡って表示したり時系列グラフ表示する機能をつけます。
そのためには、過去の順位情報を残しておかなければなりません。
毎日定期的に順位データを自動で取ってきてデータを保存するために、スケジュール実行の仕組みが必要になります。

201010092047.jpg
 

cronは定番のスケジューラ

スケジューリングのツールとして、cronを使います。
シェルスクリプトなどのプログラムを指定した時刻に実行できますが、このための時刻設定は一般的にはUnixのコマンドラインから行います。
しかし、多くのレンタルサーバは管理コンソール画面からスケジュール実行の設定が出来るようになっています。
管理コンソール経由でcronを制御してくれるような仕組みを備えていることが多いので、わざわざコマンドラインから時刻の設定を行わなくても良い場合が多いと思います。
 
例えばお名前.comレンタルサーバの管理コンソールのcron設定はこんな感じです。
 
201010091944.jpg
 
スケジュール実行で動作させるプログラムは、Webアプリケーションと違って表示させる画面は無く、DBに結果データを保存させるだけの機能があればいいです。
したがってWebアプリケーションと言語を合わせる必要はないので、別にPHPで作らなくても構いません。
コマンドラインから実行させるスクリプトは、一般的にはPerlなどで作る場合が多いんじゃないかと思いますが、PHPでもコマンドライン実行はできます。
 
CakePHPには、コマンドラインから実行できる環境も含まれており、これを使うとWebアプリケーションで使っているクラスやライブラリがそのまま利用出来るので便利です。
また、HTMLパーサも同様にPHPのものを使いたいので、コンソールアプリケーションもPHPで作ることにします。
 
CakePHPで
/var/www/app/vendors/shells/ycrawler.php
という名前でファイルを作った場合、以下のコマンドで実行できます。
 

/var/www/cake/console/cake ycrawler -app /var/www/app

 
[参考]CakePHP コンソール :: CakePHPによる開発 :: マニュアル :: 1.3コレクション :: The Cookbook
http://book.cakephp.org/ja/view/1106/The-CakePHP-Console
 
 

保存するテーブルのレイアウト

1回のYahoo検索で複数のドメインについての順位を調べられますので、図にすると以下のような関係になります。
 
201010092030.jpg
 
調べたいドメインの数はいくつであっても柔軟に対応できるようにしたいので、テーブルは以下のようにキーワード用のテーブルとドメイン用のテーブルの2つに分けます。
順位は検索結果画面中央部分に表示される場合の順位なのか、画面右側に表示される順位なのかを区別できるように2列用意しています。
 
201010092025.jpg
 
 
 
過去のエントリ
【連載】Webサービス制作日記#06 jQueryでAjaxする
【連載】Webサービス制作日記#05 HTMLパーサを使う
【連載】Webサービス制作日記#04 データベースを使う
【連載】Webサービス制作日記#03 プラットフォームを決める
【連載】Webサービス制作日記#02 要件を決める
【連載】Webサービス制作日記#01 何を作ろうとしているか

10月
2010
5

【連載】Webサービス制作日記#06 jQueryでAjaxする

スポンサードサーチ検索ツールは、一度に複数の検索を実行出来るようにしています。
ユーザがあらかじめ設定しておいた複数のキーワードごとに、一度に検索を実行して現在順位をYahooからとってきて一度に表示します。
しかしここで問題になるのが処理実行時間です。
たくさんの問い合わせを一度に行うと処理に時間がかかりますので、ユーザのイライラの原因になります。
 
201010052214.jpg
 
これではWebサーバ⇔Yahoo間の通信が全部終わらないとユーザに結果を返せないので、その間ユーザはずっと待たされることになります。
全ての通信の順序が決まっており、1つの通信が終わらないと次へ進めない同期通信なのでそのような動きになります。
 
そこで、体感速度を上げるためにAjaxを使用します。
Ajaxは”Asynchronous JavaScript + XML”の略であり、
Asynchronous=非同期
を意味します。通信順序が特に決まっていない通信ができます。
ユーザに見せる画面を先に送っておいて、あとから結果を返すことで、見かけ上の速度を早めることができます。
何も表示されないままで待たされるよりも、少しずつ何かが出てくる方が待たされ感が少ないということです。
 
201010052229.jpg
 
図では順番に処理が流れているように見えますが、実際はAjax通信をしている紫の矢印の実行順序は決まっていないし、もどってくる順序も決まっていません。
 
Ajaxを実現するツールとして、jQueryPrototype.jsMooToolsなどがあります。
ここでは人気の高いjQueryを使います。
 
JavaScript Framework 人気があるのはどれ? | Diaspar Journal
http://diaspar.jp/node/141
 
jQueryのようなAjaxを使うには、Javascriptについて知っておく必要があります。
このへんが参考になるのではないでしょうか。
【libro】 初心者のためのjQueryプログラミング入門
http://libro99.appspot.com/index2?id=52003

 
 
 
過去のエントリ
【連載】Webサービス制作日記#05 HTMLパーサを使う
【連載】Webサービス制作日記#04 データベースを使う
【連載】Webサービス制作日記#03 プラットフォームを決める
【連載】Webサービス制作日記#02 要件を決める
【連載】Webサービス制作日記#01 何を作ろうとしているか

9月
2010
29

【連載】Webサービス制作日記#05 HTMLパーサを使う

順位検索ツールの処理フロー

スポンサードサーチ順位検索ツールは、以下のようなデータのやりとりをすることになります。
 
201009292147.jpg
 
ユーザからのリクエストをWebサーバで受けたら、それをトリガにしてYahooに検索に行きます。
WebサーバはYahooからの応答受け取ったあと、それを加工して、ユーザに返します。
 
Yahooへの問い合わせは以下のような応答を想定しています。
 
入力:
検索したいキーワード名
検索順位を調べたいサイトのURL(ドメイン名)
 
出力:
順位
 
自然検索(通常の検索)の場合はこういう入出力を提供してくれるAPIがYahooデベロッパーネットワークで提供されていて、それを使うことで上記の結果を受け取れます。
スポンサードサーチを含む、リスティング広告のAPIもリスティング広告のサイトを見ると存在するみたいなのですが、使用するためには法人登録をしなければならず、かつYahooの審査を経てテクノロジーソリューションパートナーというのにならないとダメみたいです。
ということで個人には敷居が高いのでこのAPIを使うのはあきらめようと思います。
 
 

HTMLパーサを使う

そこで仕方が無いので、APIを使わず
1.人が普通にYahoo検索するようにHTTPリクエストを送信して、
2.Yahooから結果をHTMLで受け取って
3.そのHTMLコンテンツの中から欲しい情報を抜き出す
という方法でデータを取ってくることにします。
 
つまり、以下のようにYahooに普通にHTTPリクエストを送信した結果をHTMLで受け取って、自分が必要なデータだけ切り取って加工するというものです。
「スポンサードサーチ」というキーワードで検索すれば、その下にスポンサーのリストが<li>タグで並んでいるということが分かります。
この必要な部分だけを抜き出す、という作業はプログラムでやることができます。
 
201009282202.jpg
 
文字列操作関数で泥臭くやることもできますが、ここでHTMLパーサを使えばもう少しスマートにできます。
パーサとは「解析する」と訳せばいいでしょうか。
HTMLを構文解析してくれるので、これを使えば簡単な指定で欲しい情報を抜き出すことができます。
 
パーサとは【parser】(パーザ) – 意味/解説/説明/定義 : IT用語辞典
http://e-words.jp/w/E38391E383BCE382B5.html
 
今回はこれを使いました。
PHP Simple HTML DOM Parser
http://simplehtmldom.sourceforge.net/
 
探せば他にもいろいろなパーサがあります。
もちろん、今回はPHPで作るのでPHPから組み込めるパーサでなければなりません。
Perlで作ってるならPerl対応のHTMLパーサを使う必要があります。
これを使えば、たとえば<li>の中の文字列だって簡単に取ってこれます。
 
まず、yahooにリクエストを送信して結果を$htmlに入れたあと、

$html = file_get_html("http://yahoo.co.jp/...");

 
こんな風に繰り返し処理で使うと<ul>と<li>を探してリストの中身をとってくることができます。

foreach( $html->find('ul') as $ul )
{
    foreach( $ul->find('li') as $li )
    {
        // $li には<li>と</li>で囲まれた部分の文字列が入っている.
    }
}

 
こうやってWebサーバで抽出した文字列を適当に加工したり、順位を計算したりしてユーザにHTMLデータとして返せばいいわけです。
 
 
 
過去のエントリ
【連載】Webサービス制作日記#04 データベースを使う
【連載】Webサービス制作日記#03 プラットフォームを決める
【連載】Webサービス制作日記#02 要件を決める
【連載】Webサービス制作日記#01 何を作ろうとしているか

9月
2010
25

【連載】Webサービス制作日記#04 データベースを使う

なぜデータベース?どんなデータベース?

制作中の順位検索サイトは、以下の機能を持たせたいと思っています。
・ユーザ管理のしくみ
・ユーザーが設定した検索キーワードや、ドメイン名を保存しておくしくみ
・Yahooから収集したデータを履歴として蓄積するしくみ
 
これらのデータを保存する場所が必要になりますので、データベースを使うことにします。
もっと簡単なサイトなら、データベースを使わずにデータをテキストファイルやcsv形式のファイルにして保存しておく方法でもいいと思います。
掲示板のシステムなんかは投稿したデータをファイルに保存して管理しているものが多いですね。
データベースを使う利点は以下のまとめが参考になります。
 
Linux University :: 第3日目 データベースを使う利点は?
http://www.linux-u.com/modules/database/index.php?content_id=4
 
データベースも種類はいろいろありますが、MySQLが使われることが多いです。
よく使うツールの組み合わせから、LAMPという用語が存在します。
L:Linux
A:Apache
M:MySQL
P:PHPなど
ちなみにデータベースとしての他の選択肢は、PostgreSQLSQLite、有償のものならOracleDB2などがあります。
 

テーブルを作る

MySQLの操作はphpMyAdminからできます。
ユーザーテーブルはこんなイメージです。
 
201009251226.jpg
 
ユーザー名とパスワードが管理できればいいので、username,passwordの列があります。
id は通番、createdとmodifiedはそれぞれレコードの作成時刻と更新時刻です。
password欄はパスワード文字をそのまま保存するのではなく、暗号化して保存します。
 
データを保存するための表を用意するイメージですね。
そんな感じで必要な表をどんどん作っていけばいいわけです。
 
phpMyAdminの使い方は以下が参考になると思います。
 
phpMyAdminの使い方
http://www.dbonline.jp/phpmyadmin/
 
「phpMYAdmin」の使い方
http://kuppo.sakura.ne.jp/database/field.html
 
 
過去のエントリ
【連載】Webサービス制作日記#03 プラットフォームを決める
【連載】Webサービス制作日記#02 要件を決める
【連載】Webサービス制作日記#01 何を作ろうとしているか

9月
2010
20

【連載】Webサービス制作日記#03 プラットフォームを決める

どのツールを使って作るかを決めます。
一度使うと決めたツールは、あとから変えたいと思ってもなかなか変えられないことが多いので、ここはよく考える必要があります。
 

どの言語を使うか? プラットフォームは?

例えばプログラミング言語というツール。
Webプログラミングに適した言語で代表的なものはPHP、Perl、Ruby、Pythonでしょう。
僕はPHPが得意なのでWebアプリケーションはPHPで作っています。
 
簡単にそれぞれの特徴を書くと、
・PHP
 Webプログラミング言語としておそらく最も使われている。初心者が取り組みやすい。
・Perl
 古くから使われている言語なので、歴史のあるWebサービスで使われていることが多い。
 mixiで使われている。
・Python
 歴史は意外と古いらしいが、あまり使われてこなかった。
 Googleが推してる言語なので将来性はあるんかも。YouTubeで使われている。
・Ruby
 国産言語なのでなにかと安心? 実力はあると思うがシェアはそんなに高くないと思う。クックパッドで使われている。
 

プラットフォームを決める

どちらかというと、言語を選択するよりプラットフォームを決める方が先かも知れません。
最近はゼロからガリガリ作り始めるのではなくて、ある程度決まった型(フレームワーク)をうまく利用して作るケースが多いです。
 
今回つくるサービスにはログイン認証機能を導入したいのです。
しかし、この機構をゼロから作るのは結構骨が折れます。
実はログインって、仕組みを考え出すといろいろめんどくさいです。

 
 

上記のように、通常のログインだけでなく以下の考慮が必要です。
・ログインに失敗したらログインできないようにする。
・新規ユーザが登録できるようにする
・パスワードを忘れた人のために、パスワード再発行機能を作る
 
でもこういう処理って、会員制サイトには必ず必要な機能なので、すぐ使える仕組みが用意されていればそれを使う方が便利です。
そういう理由から、すでにログイン機能などが標準で備わっているプラットフォームやフレームワークを使えば楽できるということが分かります。
 
1つの方法としては、ブログシステムのWordPressやCMS(コンテンツマネジメントシステム)のXOOPSを使うという方法。
これらのプラットフォームには既にログイン認証の仕組みは備わっています。
この上にプラグインモジュールとして自作のプログラムを載せれば、自分はログイン機能をわざわざ作らなくても済みます。
 
WordPressはPHPで作られていますし、XOOPSもPHPです。
PHPを使用言語として選ぶ利点は、これらプラットフォームの選択肢が多いという点にあります。
 
しかし、これらはいいことばかりではありません。
CMSやブログシステムは動作が重たくて、ユーザにとって快適ではないかも知れません。
 
そこで、僕の場合はフレームワークという別の手段を使うことにしました。
これはCMSのように完成された形で提供されてはいませんが、ゼロから作るよりは楽です。
お好み焼きで例えれば、
 
CMS、ブログシステム:お好み焼き屋で注文したお好み焼き
プログラミング言語:自宅で作るお好み焼き
フレームワーク:自分で焼く方式のお好み焼き屋
 
しつこく繰り返しますが、うどんで例えれば、
 
CMS、ブログシステム:普通のうどん屋
プログラミング言語:自宅で作るうどん
フレームワーク:セルフ方式のうどん屋
て感じでしょうか… 自分で作らないといけないので完成品をすぐ食べられるワケではありませんが、
自宅で作る場合に比べて皿洗いとか材料調達の手間は省けると。
 
具体的には、
・ログイン、認証の仕組み
・フォームの作成
・データベースへのアクセス
・Javascriptの生成
などが簡単に使える形であらかじめ用意されています。
 

このフレームワークにしても種類がたくさんありますが、僕はこのへんの特徴の違いをよく知らないのでとりあえず有名どころのCakePHPを使うことにしました。
 
言語やプラットフォーム以外にも決めるべきツールがあるので、それは次回に書きます。
 
過去のエントリ
【連載】Webサービス制作日記#02 要件を決める
【連載】Webサービス制作日記#01 何を作ろうとしているか

9月
2010
16

【連載】Webサービス制作日記#02 要件を決める

順位検索ツールの仕様・要件について考えてみます。
 
スポンサードサーチ順位検索ツールで実現できたら嬉しい機能として、以下のような要望をいただいています。
・広告を出している検索キーワードは複数あるので、1つ1つ手で順位をチェックするのはしんどい。
 各キーワードについて、自分のサイトが検索順位のどれくらいの位置にいるのかを簡単に確認したい。
・自サイトの順位の推移を時系列グラフで見たい。
・ライバルサイトと比べて自分のサイトの位置関係を把握したい。
 
これに加えて、
どうせ作るんだったら、ネットショップのオーナーなど同じ機能を欲しがっている人もいそうだから、
不特定多数に公開できる形で作ったらどうかと考えました。
 
そうすると必要になってくる機能は
・複数ユーザに対応できるようにする。
 → ユーザIDでログインする仕組みが要る。
・会員に対して課金して、採算が取れる仕組みにしたい。ただし無料で使えるサービスも同時に
 作っておいたほうがいいだろう。
 → 振込みやクレジットカードなど何らかの手段でお金を受け取れる仕組みがいる。
などです。
 
これらの要件を考えると、システム的にも考慮しないといけない点があります。
・時系列グラフ表示するには、毎日定期的にデータを収集する必要がある。
 → スケジュールでデータを定期的に収集してくる仕組みが必要
・検索データはYahooに問い合わせてとってくるが、その手段を検討する必要がある。
 → 検索用APIが公開されていればよいが、それがなければ、人がパソコンから手で操作するのと
 同じようにブラウザで表示される画面表示イメージ(HTML)から
 必要な情報をこちらで抜き出す方法でやる必要がある。
・そんなことをしてYahooに怒られたりしないのか?
 → 怒られないように微妙なサジ加減でやればなんとかなるんじゃないかとw
 
こういった要件を満たせるような仕組みを考えていくことになります。
 
ちなみにこのような仕様や要件を決める作業を要求分析と言います。
このあと、設計があってコーディング(プログラミング)、テストという流れでやるのが一般的です。
この図はウォーターフォールモデルという、作業が一直線に進むやり方です。基本的に後戻りをしないやり方です。
 
201009162212.jpg
 
これに対して、スパイラルモデルというのもあります。
これは少しずつ作っていきながら機能をどんどん追加していくやりかたで、どちらかというと計画性のない柔軟に開発できるやり方です。
作って考えて、作って考えて、の繰り返しでどんどん大きくしていく形なので、途中で方針を変えることが比較的容易で、作っているものもイメージしやすいという長所があります。
組込み製品などはウォーターフォールモデルでやることが多いですが、Webサービスなんかは簡単にプロトタイプが作れたりするのでスパイラルモデルでやることが多いんじゃないかと思います。
今回私もスパイラルモデルでやっていこうと思います。
201009162217.jpg
 
< 参考>
プロセスモデル
http://www.ics.kagoshima-u.ac.jp/edu/SoftwareEngineering/process-model.html
 
過去のエントリ
【連載】Webサービス制作日記#01 何を作ろうとしているか

9月
2010
13

【連載】Webサービス制作日記#01 何を作ろうとしているか

ちょっとしたWebサービスを作ろうとしているということを数日前のエントリで書きましたが、せっかくなのでこの制作過程を実況中継ぽくブログで連載しようと思います。
百式さんとこのCakePHP修行みたいなノリで出来ればと…
 

作ろうとしているサイト

Yahoo検索で何かキーワードを入れて検索すると、キーワードによってスポンサードサーチの検索結果がいっしょに出てくることがあります。
出てくる場所は検索結果の一番上のところと、右側です。
 
201009132315.jpg
 
そのスポンサードサーチで表示されるサイトの順位を簡単に調べられるようにするWebサービスを作ろうと思っています。
 

順位検索ツールの現状

スポンサードサーチの結果ではない、普通の検索結果(自然検索)の場合は、出現順位を調べてくれる便利なツールが既に世に出ています。
検索したいキーワードと、検索順位を調べたいサイトのドメイン名を入力すると、順位を調べてくれるものです。
Windows用のツールだったり、Webサービスだったりと形態はいろいろあります。探すといくらでも出てきます。
 
検索順位チェックツールGRC
http://seopro.jp/grc/
Windowsにインストールして使うツールです。有名なツールみたいです。
Yahoo,Google,Bingの検索結果が分かります。グラフも出してくれます。
URL数2コ、検索の項目数は5項目までの制限がありますが、無料で利用できます。
ライセンスを購入すれば入力できる項目数の上限が増えます。
 
Google/Yahoo/Bing 順位検索ツール : DW230
http://seo.dw230.com/rank/
Webサービスです。
Yahoo,Google,Bingの検索結果が分かりますが、1つの検索語、1つのURLのみの検索に限られます。
グラフ表示などはなく、単に順位と検索結果が表示されるだけです。
楽天やYouTubeなど、固有のサービスを指定して検索もできます。
 
一括検索
http://seonum.com/
Webサービスです。
ちょっと重い。
Yahoo,Google,Bingに加えBaiduも検索できます。
 
順位チェック | SEO TALK
http://seotalk.jp/
Webサービスです。
無料版は3キーワードまで、有料版は30キーワードまで登録できます。
グラフ出力できます。
サーバーサイドの実装なので、毎日自動検索してデータを蓄積してくれるようです。
法人しか利用できません。個人は不可。
 
他にもいろいろあります。
検索エンジン一括順位チェックツール ランキングチェッカー
http://broadentry.com/rankingchecker/
 
検索順位チェックツールRIO
http://riofu.com/
 
検索順位 | 検索順位チェックツール – ADAMAth(アダマス)
http://www.adamath.com/
 
 

スポンサードサーチの順位を検索してしてくれるツールはまだ無い

こんな感じで自然検索の順位を調べてくれるツールは多数存在するのですが、スポンサードサーチの検索結果について調べてくれるサービスは見つかりませんでした。
そういうスポンサードサーチの検索ツールがあったら嬉しい、というご相談をいただいたので、自分で作ってみることにしました。
 
制作の過程を公開することも、どなたかの役に立つかも知れないと思ったので、途中経過を随時お知らせしていこうと思います。
三日坊主で終わりませんように!