BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ アーティクル MOleプラグイン

MOleプラグイン

ブックマーク

コーン・オブ・サイレンス

最近、企業がアジャイルプロセスに対して献身すべきだと要求する傾向が、多くの企業で見られます。我々は皆、気を遣い、早く納品をすることを誓わされるが、そのこと以上に長く頻繁にイテレーションを繰り返しスクラムミーティングで座ったり立ったりします。しかし、実際のところ、あなたが作ったアプリケーションが成功しているのか、または失敗しているのかどうかなんてことを、どのようにして判定することが出来ますか?ページヒットやヒート・マップが、マーケターやユーザービリティの研究を行っているPHD保持者のみに有効であることを我々は皆知っています。あなたが作ったアプリケーションの中で必須だと言われた機能が実際使用されていることや、あなたの顧客が実際それらをどのようにして使用しているかということを、どうやって正確に判断していますか?より重要なことは、あなたの製品や会社の成功のために正しい方針を繰り返し行っているということを、どのようにして正確に判断していますか?そして間違った方針でないことをどのようにして判断していますか?

MOleプラグインはまさに上記の問題を解決するために生まれました。つい最近のことですが、私が構築していたアプリケーションの納品時期が迫っていました。このアプリケーションの機能は沢山あり、コードのテストを行い、そして早く納品するよう催促されました。製品要求事項に基づいたオプション機能がいくつかあり、我々はそれらを実装するために長時間あくせくと働きました。機能の内の一つは、洗練されたAjaxベースのスライダーでした。そのスライダーを使うと、ユーザはランキングアルゴリズムに基づいたコンテンツを取り出すことが出来ます。顧客はスライダーを使うのだろうか?もし使うとすれば、どの設定を使うのだろうか?と我々は思いました。2、3千ドル相当のユーザビリティ測定器を使用したり、無数の時間をかければ、上記のような疑問も明らかになるでしょう。しかし金と時間の浪費に耐えることが出来る人なんているのでしょうか?結果として、子守りをする時間が不足し、ログも不足し、何千もあるアクションのひとつを変更しようとする試みをしなくなるので、我々は特定の機能をインターセプトし、イベントを記録する方法を必要としました。その結果我々は、この価値がある機能を測定しレポートする方法を確立しました。我々は、我々が作ったアプリケーションで活動するスパイのような存在が必要でした。言い換えると機能をインターセプトし重要なイベントを記録する機能が必要でした。MOleプラグインを使用して、ユーザが入力した貴重な情報を集めることが出来ました。MOleプラグインは我々に次のイテレーションで調整を行うのに必要なフィードバックを提供してくれました。結局のところ、必要と思われた機能の内の幾つかは実際全く使われなかったということが分かりました。同様に注意を向ける価値があることと言えば、MOleプラグインはテストサイクルで、我々QAチームのカバレッジと効率さを評価するのに役立つということが分かったことです。

始め方

MOleプラグインを使ってみたくなったことでしょうから、ここからはあなたのアプリケーションを監視するのに必要なステップを書いておきます。

  1. プラグインのダウンロード:
    ruby script/plugin install svn://rubyforge.org/var/svn/liquidrail/plugins/mole/trunk
    上記のコマンドを実行し、MOleプラグインをインストールすると、mole_features及びmole_logsというテーブルがアプリケーションが使用しているデータベースに作られます。

  2. MOleプラグインの設定config/environment.rbファイルに以下の設定を行います。:
    MOLE = File.new( "#{RAILS_ROOT}/config/mole.conf" )
    MOLEABLE_APP = true
    MOLE_PERF_MAX_TIME = 5

    MOleプラグインを組み込んだアプリケーションのやりとりは全て、mole.confファイルを経由して行われます。プラグインのインストール時に、mole.confファイルのサンプルファイルがconfigディレクトリに保存されます。MOLEABLE_APP変数の値をtrueにするとMOleプラグインが有効になり、falseにするとMOleプラグインが無効になります。MOleプラグインには長時間動作しているアクションを記録する機能がビルトインされています。後に取り上げますが、MOLE_PERF_MAX_TIME変数にて、デフォルトのパフォーマンス閾値を5秒に設定しています。

  3. MOleプラグインの設定をロード:

    ApplicationControllerクラス(application.rb)に以下の一行を追加してください。:
    loadMOLE.path ifFile.(MOLE.path) and MOLEABLE_APP 

    この一行をApplicationControllerクラスの中に追加することにより、MOleプラグインの設定がロードされ、あなたのRailsアプリケーションの何をどうやって監視すれば良いのかを教えてくれます。たった一ファイルに設定を書くだけで、MOleプラグインのやりとりが全て行われます。コントローラクラス全てにMOleプラグインの設定を書く必要はありません。ユーザによって特定の機能が使われた時に、どこの何をキャプチャーするかを設定ファイルに書いておきます。

  4. コントローラクラスのアクションを監視:
    MyController.before( :feature => :show ) do |context, feature, args|
      Mole::DbMole.mole_it( context, feature, context.session[:user_id],
          :some_var => context.instance_variable_get('@myVar'))

    これは、MyControllerクラスのshowアクションを、showアクションが呼ばれる前にインターセプトします。そしてMyControllerクラスの状態を、インスタンス変数myVarをデータベースに記録します。従ってアクションが呼ばれたという履歴を記録出来るだけでなく、特定の呼び出しが行われた時のコールの状態を記録することも出来ます。.

    或いは...
    MyController.after( :feature => :show ) do |context, feature,ret_val, args|
      Mole::DbMole.mole_it( context, feature, context.session[:user_id],
          :some_var => context.instance_variable_get('@myVar'), :return => ret_val))

    先程と同じ考え方ですが、上記のコードは、showアクションが呼ばれた後に、showアクションをインターセプトします。

  5. MOleプラグインの使い方は以上!

コンソールのサポート

SnitchとYahoo! Widget MOlet版のコンソールを使用すると、GUIでアクションを監視出来ます。

Snitchのソースコードは、以下のサイトでダウンロード出来ます。:

svn://rubyforge.org/var/svn/liquidrail/plugins/mole/samples/consoles/snitch

Snitchをダウンロードしたら、インストールを終えるために以下のコマンドを実行する必要があります。:

rake setup

ユーザを管理しているテーブルと、どのカラムを使用してユーザ名を表示しているかを特定することによって、アプリケーションにユーザモデルにアクセスする方法を伝えます。上記のコマンドを実行すると、usersテーブル及びそのテーブルのどのカラムを使用してユーザ名を表示すればよいかを指定して下さいと促されます。また同様にアプリケーションが使用しているデータベースを使うようにsnitch/config/database.ymlファイルを編集する必要があります。このコンソールアプリはあなたのアプリケーションのデータベースを変更することはないので心配はいりません。

このウィジェットアプリケーションを実行するには、プラットフォーム毎のYahoo! Widget Engine(サイト・英語)をインストールする必要があります。また以下のコマンドを実行しMOlet Widgetをダウンロードして、それをウィジェットがインストールされたディレクトリへ保存する必要があります。ウィジェットがインストールされたディレクトリはプラットフォーム毎に異なるので注意して下さい。具体的にはMACの場合、Documents/Widgetsディレクトリへ保存してください。Windowsの場合は、Documents and Settings/user/widgetsディレクトリへ保存してください。

svn://rubyforge.org/var/svn/liquidrail/plugins/mole/samples/consoles/widgets/molet

結論

MOleプラグインに興味を示し、ここまで読んでくれてありがとうございます。中身がぎっしりと詰まった要求仕様書を読むことや、ダイエットの講習会なのに肥満の原因になるピザを見つける方が簡単だなと思っても、試しにMOleプラグインを使って頂けたらよいなと思っています。あなたのMOleプラグインを使ったアプリケーション監視体験を聞かせて頂けたら幸いです。そして我々はあなたがMOleプラグインを正しく動かせるようお手伝いすることに最善を尽くします。MOleプラグインを改善するのに役立つコメントや提案がある場合は、思い切って言ってみて下さい。

リソース

著者について

Fernand Galiana氏(サイト・英語)は、Imhotep Software LLCのオーナで、Imhotep Software LLCはコロラド州デンバーにある、コンサルティング及びRailsのトレーニングを行っている会社です。Galiana氏は主にユーザインタフェースとmiddle tier周りに関するソフトウェア開発の経験が15年あります。彼はまたRailsのチャートプラグインZiYa(サイト・英語)の作者でもあります。現在Galiana氏は、Rails ユーザーグループ デンバー支部のホストを務めています。

原文はこちらです:http://www.infoq.com/articles/intro-to-the-mole
(このArticleは2007年5月5日に原文が掲載されました)

この記事に星をつける

おすすめ度
スタイル

BT