iPhoneアプリをリリースしました

2010-06-20
このエントリーをはてなブックマークに追加

やっと初めてのiPhoneアプリをリリースすることができました。

iPhoneアプリが作りたくてmac買ったのにiPhoneの母艦としてしか使わずに早一年。実際の開発期間は一ヶ月以下という情けないだらしなさです。申し訳ない。

「Answer9」

単純なパズルゲームです。3秒間の間にパネルの場所覚えてめくっていくだけ。ノーマルモードだと1から順番に9までめくっていきます。ハードモードの場合はめくる順番をランダムに指定されます。ハセテツはハードモードをクリアしたことがありません。w

リリースしてから24時間程度ですが、アメリカですでにレビューを書いていただけました。2件あって、両方とも五つ星!最高にうれしいです。開発屋にとって、こういうのが最高の報酬なんだろうなと思う瞬間です。

「It’s a great memory game for all ages!」

「Very simple, but it’s a nice memory exerciser.」

感涙です。

このまま勢いに乗って調子に乗って、次のアプリ開発に着手します。次はタスク管理アプリ。タスク管理はシンプルじゃないと意味がないんですよ。偉い人にはそれがわからんのです。

Tags:

RubyonRailsでOAuth経由でTwitterのタイムラインを取得する

2010-06-18
このエントリーをはてなブックマークに追加

OAuthを使えるようになっておけば今後いろいろなマッシュアップに便利だろうと思い、試してみました。RoRで書いたのは、最近ご無沙汰過ぎてあまりに覚えてなかったのでリハビリを兼ねたわけです。

class TwitterAuth
require ‘oauth’

def self.consumer

OAuth::Consumer.new(
[Consumer key],
[Consumer secret],
:site => “http://api.twitter.com”
)

end

def self.request_token(_token, _secret)

OAuth::RequestToken.new(
consumer,
_token,
_secret
)

end

def self.access_token(_token, _secret)

OAuth::AccessToken.new(
consumer,
_token,
_secret
)

end

end

まずは上記のクラスを作成。OAuth関連の処理はこっちにやらせます。で、次がコントローラー。

require ‘rubytter’

class AuthController < ApplicationController

def index

request_token = TwitterAuth.consumer.get_request_token(:oauth_callback => “http://#{request.host_with_port}/auth/callback”)
session[:request_token] = request_token
redirect_to request_token.authorize_url

end

def callback

_token = session[:request_token]
request_token = TwitterAuth.request_token(_token.token, _token.secret)
access_token = request_token.get_access_token(
{},
:oauth_token => params[:oauth_token],
:oauth_verifier => params[:oauth_verifier]
)
session[:request_token]=nil
_account = {
:user_id => access_token.params[:user_id],
:token => access_token.token,
:secret => access_token.secret
}
session[:account] = _account
redirect_to :action => “timeline”

end

def timeline

_account = session[:account]
token = TwitterAuth.access_token(_account[:token] , _account[:secret])
_twitter = OAuthRubytter.new(token)
@user_timeline = _twitter.user_timeline(_account[:user_id],:count => 100)

end

end

def timelineが自分のタイムラインを取ってくるところで、「:count=>100」と指定しているのは「新着100件取ってきて」っていうことです。ここを指定しないでおくと規定値では20件取得してくれます。def callbackでセッションに入れたuser_id、token、secretをデータベース等に保存しておけば次回以降はこれらだけで認証とツイートの取得ができます(というか認証自体はtokenとsecretだけでOK)。

Twitterのアプリケーション登録申請で登録する際、コールバックURLを指定しないとWebアプリケーションとして登録されません。「開発中だからURLなんて決まってないよ」っていうケースでも、適当なURLを登録しておいてください。どうせ実際のコールバックURLはRubyのスクリプトで指定しなおしています。ハセテツはここに気が付かず、そこそこの時間を浪費しました。

で、タイムラインを表示するviewは

<ul>
<% for item in @user_timeline do -%>
<li><%= item.text %></li>
<% end -%>
</ul>

こんな感じです。