40歳からのキャリアチェンジ

20代はエンジニア・PM、30代はWeb系エンジニア向けのキャリアアドバイザー。40代の今はフリーランスで開発含めて色々やってます。技術ネタとしてはRuby/RailsとJavaScript関連あたり

Rubyのmechanize使ってGoogleReaderにアクセスするツール(仮)GR4Ruby

この前Rubyを使ってGoogle Readerの情報を取得するというエントリでgooglereaderというgemのパッケージを使ってGoogle ReaderAPIにアクセスするやり方書いたけどStarredのアイテムの取得方法がどうもわからないので、路線変更してmechanizeを使うことに急遽今朝、スタバで勉強している時に決めてしまいました。

ツールの名前だけどあんまりいけていないけど、Google Reader for Ruby をちょっと省略してGR4Rubyっていう感じにしようかと思いますが気が変わって違う名前にするかもしれないけど、そんなことを考えていて実際に作り始めるまでに時間がかかるのは本末転倒なのでまずは思いついたテストはこんな感じ

require 'test/unit'
require '../GR4Ruby'

class GR4RubyTests < Test::Unit::TestCase
  def setup
    @GR = GR4Ruby.new("xxxxx@gmail.com","passwd")
  end
  def test_generate_SID
    # http://code.google.com/p/pyrfeed/wiki/GoogleReaderAPI
    # SID : Session ID. SID is generated each time you login to Google
    # (any service). The SID is valid until you logout. 
    assert_equal("", @GR.get_sid)
  end

  def test_config
    assert_equal("xxxxx@gmail.com", @GR.userid)
    assert_equal("password", @GR.passwd)
    # tokenはとりあえずスタティックに設定。
    assert_equal("xxxxxxxx",@GR.token)
  end
end

肝心のGoogleReaderにログインするテストケースも書いていないし正直これじゃほとんど意味ないんだろうけど、なにせ自分自身テスト駆動開発っていうのがよくわかっていないんだよね。。

まぁそんな細かい事は気にしないで、こんな感じでちょっとづつだけどテストにパスするためのコードを書きました。

class GR4Ruby
  def initialize(userid, passwd)
    @userid = userid
    @passwd = passwd
    @token = "xxxxxx"
  end
  attr_reader :userid, :passwd, :SID, :token
  def get_sid
    # this.open(@userid, @passwd)のような感じ?
    
  end
  def open
    # mechanizeを利用して、GoogoleReaderのAPIにアクセスする
  end
end

実際書きながら
「設定情報は、この前チェックしたconfigatronを使った方がスマートな感じがしそうだなぁー」
「tokenを得るにはログインしている状態ならこれにアクセスすれば取得できるし、ついでにconigaration使って設定ファイルに書き込むとかやれるとかっこいいかも」

と色々考えつつも、その場で解決しない事なんかも色々出て来てしまったのと、出社時間が迫ったこともあり今朝の所はこれまで。

明日の朝も頑張って勉強したいので、その時までに

  • configatronをインストールする
  • オフラインで開発するために、GoogleReaderにアクセスしたかのように振る舞うモックオブジェクトを生成できる環境をローカルに構築する(これがよくわかっていない)
  • mechanizeのドキュメントを読む

をクリアーしないといけないけど、一気にここまでやるのはたぶん無理なのでちょっとづつやっていく