iPad用GoogleReaderクライアントFFGRCをリリースしました。

iPadGoogleReaderのようにフィードをサクサク読み進めることができるようにしたくてクライアントアプリを作りました。

http://itunes.apple.com/jp/app/ffgrc/id386153165?mt=8

サイドバーに配置したコマンドボタンをポチポチすることでGoogleReaderのようなサクサク感が味わえるように作りました。特に目玉になるような機能はないですが大量のフィードを読むのは結構らくだと思います。

今後もVerUpをしていきますので是非こういう機能が欲しいなどがありましたらコメントかTwitterでおはなしいただけるとありがたいです。

あと以前作ったaBookViewerも現在改善中です。いろいろなご意見を頂いたのでそのうち私の拙い技量でできることから組み込み中です。もうちょっとお待ちください。

内蔵ブラウザからZipなどをダウンロード出来る電子書籍閲覧アプリiPhone&iPadアプリ「aBookViewer」をリリースしました。

iPadを買ったのでそれで使えるアプリを作ってみました。
特徴としては

  • 内蔵ブラウザでZip、pdf、jpegのダウンロードが可能。
  • PCとの連携にFTPiTunesのUSB転送(iPadのみ)に対応。
  • 閲覧はZip(jpegを固めたもの)、PDF、epubに対応。
  • パスワード付きZipとPDFに対応。
  • 本の読み終わり時に次の本の閲覧を自動で開始できる。

これからはいろんな電子書籍サービスが群雄割拠するはずなのにわざわざ母艦でダウンロードしてそれをiPadに転送する手間が嫌だったので作りました。
これでiPadだけでダウンロード&閲覧が可能になります。

ページめくりはアニメーションにするか迷ったけど現状はタップでページがかわるだけにしました。
今後要望があればオプションでアニメーションも実現しようかなと思います。

aBookViewerのダウンロード
aBookViewer

Pabo-Tana for iPhone 1.1 を登録申請しました

はやくも多くのバグを教えていただきましたので早速修正してver1.1を登録しました。

現在InReviewなので早ければ来週の頭にはリリースされると思います。
修正点は以下のとおりです。

  • 特定の条件下で検索画面の検索結果の次の10件が検索出来ない不具合を修正
  • 棚とカテゴリの一覧画面で編集状態のままスクロールした場合に文字が画面をはみ出る不具合を修正
  • 並び替え中通信が終了する前に完了ボタンをクリックするとアプリが終了する不具合を修正
  • カテゴリ一覧画面で編集を繰り返すとカテゴリがなくなる不具合を修正

Pabo-Tana for iPhone1.0リリース

やっとできました。

途中ソースコードを一切合切消してしまうというパプニングがあったけどなんとか乗り越えました。
Pabo-Tana

このアプリの特徴は、

  • 大量に登録するときに苦にならないように複数を一度に登録できる
  • バーコードから登録できる
  • メールのアプリのようにキーワードから登録したアプリを自動で棚わけできる
  • 新着管理ができる
  • 新作があると登録したメールアドレスへお知らせする

といったところです。

もし漫画を買っている人や、この作者の作品を定期的にチェックしたいと思っているひとがいらっしゃれば是非つかってみてください。
iPhoneをもっていない方は、Web版Pabo-Tanaをお願いします。

WebサイトをiPhone用に変換して表示するサイトMovProxyを作った

追記
movproxy.netというドメインがmovproxy.heroku.comに変わりました。

iPhoneでWebを見ているとイライラするので見ているサイトを変換するサービスを作りました。

とにかくシンプルにすることだけを考えて作ったのでほんとに簡単なんですがとりあえず公開します。
MovProxy : http://movproxy.net

MovProxy : http://movproxy.heroku.com

使う人がいるのかわかりませんがバーコードも貼っときます。

MovProxyの特徴

MovProxyで表示されたサイトは可能であればAutoPagerizeされます

AutoPagerizeではos0xさんのxAutoPagerizeを使用させてもらいました。最小化して多少変更して最小化したSITEINFOを使用するようにしています。
変更したxAutoPagerizeのソースは こちら
変更したSITEINFOは こちら

変換後の上部にある[tweet Original Page]リンクをクリックするとTwitterでつぶやくことができます
YourFileHostの動画を表示したときはiFileHostへのリンクが出現します

使い方

Topページのフォームを使う

MovProxyにフォームがあるので変換したURLを入力してconvertボタンをクリックしてください。

ブックマークレットにして使う

iPhoneからの場合

  • MovProxyをブックマークします。
  • 以下の文字列をコピーする。
javascript:(function(){window.location=%27http://movproxy.heroku.com/i?mturl=%27+document.location;})();
  • ブックマークのURLをコピーした文字に置き換える。
  • 変換したいサイトを表示してブックマークレットを使う。

PCからの場合

MovProxy

URLを編集する。

以下のようにURLを編集します。

http://movproxy.heroku.com/i?mturl=変換したいURL

例:このblogを変換して開く場合

http://movproxy.heroku.com/i?mturl=http://d.hatena.ne.jp/amacou/

もし不具合を発見されたり、もっと欲しい機能などがある場合はtwitterで@amacou宛につぶやいてもらったり、MovProxyで変換後のページ上部にあるError Reportのリンクから報告していただけるとありがたいです。

追記

段落ごとのタイトル(h1,h2,h3)へのジャンプ機能をつけました。
下部にメニューエリアを作りました。

sinatraでrspecをautospecで使うメモ

最近sinatraを使い始めました。
rspecsinatraで使い始めるまで右往左往したのでその時のメモ
cucumberも使おうかと思ったけど、あれはお客さんに見せる事ができるテスト仕様だから美味しいんであって、個人の趣味プログラミングで、しかもsinatra使ってサックリとサイト作るには手軽さが損なわれる気がしたのでとりあえず保留。

sinatraをインストール

$ sudo gem install sinatra
$ sudo gem install rack

appを作成

$ mkdir myapp
$ cd myapp
$ touch app.rb

/myapp/app.rb

require "rubygems"
require "sinatra"

get '/' do 
 "hello"
end

get '/hoge' do 
"get params #{params[:huga]}"
end

rspecとかいろいろインストール

$ sudo gem install rspec
$ sudo gem install ZenTest
$ sudo gem install autotest
$ sudo gem install autotest-fsevent
$ sudo gem install rack-test
$ sudo gem install shotgun
  • rspec
    • 割愛
  • ZenTest
  • autotest
    • テストを自動で実行してくれる素敵ライブラリ
  • autotest-fsevent
    • ファイルを保存したタイミングでautotestを走らす
  • rack-test
    • rackアプリのテスト用メソッドが詰まっている
  • shotgun
    • ファイルを修正した後サーバを上げなおさなくても適応してくれる

config.ruを作る

$ touch config.ru

/myapp/config.ru

require 'app'
#set :environment, :production
set :environment, :development
run Sinatra::Application

shotgunでsinatraを起動

shotgun config.ru

config.ruを作らなくても

shotgun app.rb

でも動くみたい

.autotestの作成

自分のHomeフォルダに.autotestを作成
$HOME/.autotest

# -*- ruby -*-
require 'autotest/fsevent'

specの置き場所を作る

$ cd myapp
$ mkdir spec

specの設定ファイルとか作る

$ cd sepc
$ touch spec.opts
$ touch spec_helper.rb

/myapp/spec/spec.opts

--colour
--format progress
--loadby mtime
--reverse

/myapp/spec/spec_helper.rb

require File.join(File.dirname(__FILE__), '..', 'app.rb')

require 'rubygems'
require 'sinatra'
require 'rack/test'
require 'spec'
require 'spec/autorun'
require 'spec/interop/test'

set :environment, :test
set :run, false
set :raise_errors, true
set :logging, false

appのテスト用specを作る

$touch app_spec.rb
$ls
app_spec.rb    spec.opts      spec_helper.rb

/myapp/spec/app_spec.rb

require File.dirname(__FILE__) + '/spec_helper'

describe "App" do
  include Rack::Test::Methods

  def app
    @app ||= Sinatra::Application
  end

  it "should respond to /" do
    get '/'
    last_response.should be_ok
  end
  it "should return the correct content-type when viewing root" do
    get '/'
    last_response.headers["Content-Type"].should == "text/html"
  end
  it "should return 404 when page cannot be found" do
    get '/404'
    last_response.status.should == 404
  end
  describe "hoge" do
    it "post "huga" do
      get "hoge", { :huga => 'piyo'}
      last_response.status.should == 200
      (last_response.body =~ /piyo/).should_not be_nil
    end
  end

end

autospecの実行

app.rbのある場所で以下のコマンド

$ autospec

とりあえずこんな感じで動くようになる。
あとRailsで使っていときのメソッドとは少し違ってきちゃうのでrak-testのメソッドを確認したほうが良いと思います。
http://gitrdoc.com/brynary/rack-test/tree/master

基本的に使うのは

  • get(uri, params = {}, env = {})
  • request(uri, env = {})
  • last_request
  • last_response
  • follow_redirect!
  • header(name, value)
  • authorize(username, password)

ぐらいかな。