僕は発展途上技術者

Ruby 製クラウド用 CMS「Lokka」のプラグイン Redirect_if_heroku を書いてみた

打倒 WordPress をうたう Ruby 製クラウド用 CMS「Lokka」を Heroku に置いて使っている。


独自ドメインを取ってアクセスできるようにしているのだが、そうなると example.com と example.heroku.com の両方でアクセスできるようになってしまう。example.heroku.com へのアクセスは example.com へリダイレクトしたいので、そのような処理をおこなうプラグインを書いてみました。



これを以下のように public/plugin/lokka-redirect_if_heroku/lib/lokka 以下に置きます。


TextMate
Uploaded with Skitch!

リダイレクト先は SITE_URL という環境変数で指定できるようにしました。


% heroku config:add SITE_URL=http://example.com


のように heroku コマンドで指定してください。


いくつかポイント。


1) いくつかあるプラグインのサンプルでは def self.registered(app) 以下にたとえば app.get '/hello' do (/hello にアクセスすると hello と表示される)などと書いて、特定の URL にアクセスした場合の挙動を書いてあるものが多い。Rails の before_filter 的な処理はどうやるのだろうと sinatra のドキュメントなどを漁っていたのですが、見よう見まねで app.before で処理を囲んであげたらうまくいきました。


2) redirect_if_heroku.rb 内での module 名を最初、Rails 風に RedirectIfHeroku と書いていたところどうもうまく動かない。lib/lokka/app.rb のプラグインをオートロードしている部分のソースコードを読んでみたところ


register ::Lokka.const_get(name.capitalize)


とあったので、Redirect_if_heroku("redirect_if_heroku".capitalize => Redirect_if_heroku だから)と書き直したところ、うまくプラグインが読み込まれました。 さっそく lokka の最新ソースで、capitalize => camelize に修正されていたので、RedirectIfHeroku というモジュール名で動くようになりました。


3) リダイレクト先は環境変数で設定するようにしましたが、本当は管理画面などから指定できるようにしたい。@komagata さんに今度聞いてみる。


ちなみに Lokka で設置したブログはこちら↓


» エピソード7 | スターウォーズの情報・旬なネタを日本語で届けます


Libron 2.1.1 で大学図書館が選びやすくなりました

Libron を 2.1.1 に更新しました。


カーリルが次々と大学の図書館に対応しているので、Libron の図書館選択のメニューに「図書館(大学)」というカテゴリを新たに設け、選択しやすくしました。


Libron2_1_1
Uploaded with plasq's Skitch!

これで、大学生にも


» Libron(リブロン) - 図書館をもっと身近に


が使いやすくなったと思います。


ほかにいくつか細かなバグを修正しています。以下、リリースノートの抜粋です。



2.1.1

- 図書館選択用プルダウンに新たに「図書館(大学)」カテゴリを用意しました。

- Twitterへのつぶやき機能改善(長すぎるタイトルの省略。不要なHTMLタグの削除)


ひらがなゲーム「かなぶん」(iPhoneアプリ)を日本以外の App Store でもリリースしました

» ひらがなゲーム「かなぶん」


のiPhone版は今まで日本の App Store でしかダウンロードできなかったのですが、UI やヘルプ画面を英語化し、日本以外の App Store(数えたらなんと90ヶ国もありました)でもダウンロードできるようにしました。



盤面のひらがなを使って(日本語の)単語を時間内にたくさん作る、というゲームの内容はそのままなので、ターゲットは日本語に興味を持ち学習している外国の方です。


ニッチなターゲットではあるのですが、日本語教育 - Wikipedia によると国外の日本語学習者は300万人!「かなぶん」のおかげで日本語に興味を持ったとか日本語を学ぶのに一役買うことができたらうれしいと思います。


もし海外にiPhoneユーザーのお知り合いがいたら、良かったら勧めてみてください。


» ひらがなゲーム「かなぶん」


Libron の Firefox Add-on 版をリリースしました

Amazon の検索結果画面より簡単に図書館の蔵書検索ができる Libron、おかげさまで累計 60,000 ダウンロードを超えました。Twitter やブログなどでご紹介いただいた方々、「便利だよー」と直接人に勧めてくださった方々のおかげです。どうもありがとうございます。


» Libron(リブロン) - 図書館をもっと身近に


いままで Greasemonkey という Firefox のアドオン上で動くスクリプトだったのですが、単体で動く Firefox Add-on 版として今回リリースしました。


アドオン
Uploaded with plasq's Skitch!

Libron を使うには、これまでは 1) Greasemonkey をインストールした上で、2) Libron Greasemonkey 版をインストール、という2つのステップが必要でしたが、Firefox Add-on 版は 1) Libron Add-on 版をインストール、というステップだけ。手間が少なく簡単にインストールできるようになりました。


また、体感速度もこれまでの Greasemonkey 版より速くなっています。


今後の機能追加やバグ修正は Add-on 版でだけおこなっていき、Greasemonkey 版はサポートいたしません。これまで Greasemonkey 版をご利用になっていた方にはお手数ですが Add-on 版に入れ替えていただきたくお願いいたします。


冒頭すぐに紹介した Libron ホームページの右側、Firefox Add-on のバナーをクリックすれば、ダウンロードページにジャンプします。


バグ修正や機能要望などなんでも何かあればコメントに残して下さい。今後とも Libron をよろしくお願いします。


スピッツのオフィシャル PV をエンドレスで視聴できる Endless Spitz(エンドレススピッツ) をリリースしました

プログラマが本気だしてファンサイトを作ってみたら。。というコンセプトで作ってみました。


» Endless Spitz(エンドレススピッツ)


スピッツ、YouTubeで全PV公開 - ITmedia News というニュースが流れ、公開されたPVを観ていたのですが、いちいち次の動画をクリックして観ていくのが面倒くさい。開発しているときなどに、傍らで流しっぱなしにしておきたいと思い作りました。サイトにアクセスしたら、あとはそのまま。何もしなくても、スピッツのオフィシャル PV が次々再生されます。


また、再生中の曲について Twitter でつぶやいているユーザーとそのつぶやきをリアルタイムで表示するようにしました。つまりは同じスピッツファンのつぶやきです。当然、フォローしたくなると思うので、Twitter @Anywhere を使い、サイト上で簡単に即座にフォロー出来る仕組みにしました。


これ、実際にやってもらったらわかるのですが、@jishiha のように @ がついている Twitter アカウント名の上にカーソルを持っていくと、Follow ボタンがついた吹き出しが表示され、すぐさまフォローできます。あまりに手軽過ぎで、どんどんフォローしてしまいます。


Endless Spitz
Uploaded with plasq's Skitch!

さらにサイト上から、Twitter のサイトに移らなくても、そのままつぶやきを投稿できるようにしました。曲の感想などをつぶやくと、そのつぶやきがすぐにその下のつぶやき一覧に表示されるので、ファン同士の交流ができるかも。。


スピッツファン限定のかなり個人的趣味が強いサービスですが、よかったら使ってみて下さい。


Libron の重要なお知らせ、2.0.5 に更新してください

Libron をご利用の方々に重要なお知らせです。


アップデート通知機能があるので、使っていればそのうち自動的にお知らせが表示はされますが、その前にこのお知らせを読みましたら、お手数ですが 2.0.5 にアップデートしてください。


» Libron(リブロン) - 図書館をもっと身近に


これまで、Amazon の検索結果に表示される各書籍の個別ページへのリンクに Libron のアソシエイトIDを付加していましたが、ユーザーの方から規約違反ではないかというご指摘を受けました。Amazon に確認したところ、「未申請サイトでのリンクの使用は禁止」という回答を得たので、2.0.5 にてアソシエイト ID を付加しないように修正しました。


ご協力よろしくお願いいたします。


「かなぶん」が日本語学習ポータルサイト「NIHONGO eな」で紹介されました

Kanji-Fandom に続き


ひらがなゲーム「かなぶん」


が、国際交流基金関西国際センターの運営する日本語学習ポータルサイト「NIHONGO eな」で紹介されました。


30723089304C306A30FB30AB30BF30AB30CA306E30B230FC30E0309296C63081307E3057305FFF01FF08FF12FF09 | NIHONGO e306A - Portal for Learning Japanese -
Uploaded with plasq's Skitch!

» ひらがな・カタカナのゲームを集めました!(2) | NIHONGO eな - Portal for Learning Japanese -


» Hiragana/katakana game compilation! (2) | NIHONGO eな - Portal for Learning Japanese -


一緒に紹介されていたひらがなジグソーなど、へーこんなのあるんだあ、という感じで面白いです。ジグソーパズルはカチッとはまったときがうれしい。


Android 版かなぶんは、すでに外国の方が紹介動画を Youtube にアップしてくれていたりして、日本語を学ぶのに一役買っているのかもしれません。


6:20 あたりから「かなぶん」が紹介されています。



iPhone 版かなぶんも、説明などを英語化して日本以外の App Store でも公開したいと思っています。


「こども健康倶楽部」にフェニルケトン尿症(PKU)のページが追加されました

患者さんとご家族のための情報サイト「こども健康倶楽部」に、先天性甲状腺機能低下症(クレチン症)に続いて二つ目の疾患、フェニルケトン尿症(PKU)のページが追加されました。


» こども健康倶楽部


こども健康倶楽部|フェニルケトン尿症講座|病気の説明〜初級編〜
Uploaded with plasq's Skitch!


「こども健康倶楽部」で扱う成育疾患の2番目は、

フェニルケトン尿症(PKU)となりました。


新生児マススクリーニング(先天代謝異常等検査事業)により、

1977年(昭和52年)からわが国では早期発見・早期治療の

対象となっています。


日本先天代謝異常学会の専門家の皆様のご協力で、

Q&Aのページは作られました。


お子さんが理解しやすいように工夫された、

キッズページもあります。


フェニルケトン尿症(PKU)の患者さんとご家族に正しい情報を提供し、少しでも不安を取り除くお手伝いができれば本望です。


このブログを読んでくれる方のことを考え、少しだけ技術的な話をします。


2年前にオープンしたサイトに手を加え、Rails 1.x から Rails 2.x に、また複数疾患に対応できるようデータ構造を変更しました。


rails 標準の paginate から will-paginate に、表示テキストを外出しするのに gettext を使っていたところを rails 標準の i18n 機能にうつしかえたあたりが少々手こずりましたが、その他はスムーズに移行できました。


また、apache + mongrel で動かしていたところを nginx + passenger に、ソースコード管理は svn から git へと移行し、よりメンテナンスがしやすくなりました。


Libreq(リブレク)がカーリルAPIコンテストで準グランプリをいただきました

カーリルAPIコンテストで


» Libreq - 読みたい本を図書館にリクエスト


が準グランプリをいただきました!


選んでいただいた方々、ありがとうございます。


calil t-shirt


グランプリ作品のかーりるん始めTwitterをうまく使ったもの、Flashで見せるクラベルライブラリ、携帯サービスの一語一絵、iPhoneアプリやAndroidアプリなど、バラエティに富んでいて作品発表を見ているのが楽しかった。技術的なハードルが低くなってきているとは言え、ひとつのアプリを開発しリリースするというのは少なくない開発者の情熱を必要とするもの。それが短期間のうちに約20作品も揃ったというのは、僕も含めてだけれど、カーリルAPIの魅力にとらわれたのだと思います。


コンテストが終了したら終わりということにしないで、これからサービスを育てていくのが重要。各サービスが大きくなって、カーリルを盛り上げていくという動きに、僕もこれから参加していきたい。


P.S.

もう一つエントリーしていたLibron、貢献していただいている方が多いし、すでに使っていただき応援もいただいているだけにどちらかというとこちらの方で受賞したかったのですが、ほかのアプリに比べたら斬新さやインパクトで劣っていたかもしれません。でも変わらず、便利ツールのまま、よりたくさんの人に利用してもらえるよう改良していきたいと思っていますので、Libronの方もよろしくお願いします。


» Libron - 無料で本が読めるライフハック


Libreq - 読みたい本を図書館にリクエスト をリリースしました

Libreq(リブレク) - 読みたい本を図書館にリクエスト


というサービスをリリースしました。


Libronに続く、カーリルAPIコンテストにエントリーした図書館シリーズ第2弾です。


読みたい本が図書館にないときにTwitterでつぶやいて本のリクエストができるサービスです。本が図書館にあるかを定期的にチェックし、もし蔵書に追加されて読めるようになったらリプライを送って通知します。


使い方


LibreqはLibronの姉妹サービスです。いまのところは、Libronから使ってください。


LibronはAmazonの検索結果ページから簡単スピーディに図書館の蔵書を検索でき、予約ページへと案内する便利ツールです。


Libron - 無料で本が読めるライフハック


Libronで検索した結果、本が図書館にないというときにLibreqあてにつぶやくリンクが表示されます。



クリックするとTwitterの画面にジャンプし、つぶやく内容が表示されます。四角で囲まれた部分は変更せず、あとは自由に編集してつぶやけばリクエスト完了です。



Libreqはリクエストされた本が図書館で借りられるようになったかを定期的にチェックしています。


もし借りられるようになったら、以下のように、リクエストした本人のTwitterアカウントあてにリプライを送ってお知らせします。



どうして作ったか?


Libron 1.xのコードをもとにカーリルAPI対応やChrome Extension対応を実装して、アイデアを動くコードで示してくださった@kojimiyaさんのLibronに対する提案がきっかけです。


カーリルAPIコンテストの当初の期限が一週間ほど遅れ、これはLibron以外にも作れということかとつぶやいたら、カーリルの中の人から「その通り」と言われるしで、作ることにしました。


とはいえ、作り始めてすぐに壁にぶつかりました。Libreqは読みたいと思った本が図書館にないときに利用者がTwitterでリクエストするわけですが、別に図書館と協力しているサービスではないですから、なんとなくリクエストが図書館の人に届けばいいなあ、くらいの感覚で。。でもそんなあいまいな目的でユーザーはわざわざリクエストのつぶやきしてくれるだろうか、と思ったのです。また図書館側の人の立場に立ってリクエストがどんな風に表示されたら汲み取りやすいのかなあ、と考えても、僕は図書館のユーザーに過ぎず、中の人ではないからうまく想像できないのです。(この点に関して、図書館の運営に関わっている方で、「こうしたらもっといい」などいろいろと提案していただける方がいましたら大歓迎ですので連絡ください)


そんなとき、rails に関するエントリーでちょくちょくブログを読ませてもらっている@satokoさんのつぶやきで、「読み終わった本を図書館に寄付したら喜ばれた」という話を読んで「これだ!」と思いました。


» Twitter / satoko: そういえば昨日、読み終わった1984 book3を図 ...


リクエストする側は一般ユーザー、それに応えるのが図書館の人、と考えていたので、応える側の立場が想像できなくて悶々としていたのですが、応える側に同じく一般ユーザーも加えたら、つまり自分も応える側に含まれるんだ、と思えるようになったら一気に楽になりました。


まだそのあたりは現状の実装には反映されていないかもしれませんが、頭の中に「こうしたらもっといい」といった改善案がどんどん湧いてくるようになったので、ご期待ください。


Libreqを通して、読みたい本が図書館にない利用者、利用者がどんな本を読みたいかを知りたい図書館、さらに本を図書館に寄付してもいいと思っている利用者を結びつけることを目指したいと思っています。


LibreqはHerokuで動かしています


ここからは技術的な話。


LibreqはRuby on RailsのPaaSと言えるHerokuで動いています。


運営しているサービスの開発などを手伝ってくれているid:kililiくんの


» Herokuがすごい - Wing my life


を読んだのがきっかけ。


チュートリアル通りやって最初のテストアプリが動いたとき感動しました。Railsを使えば10分でブログが作れるかもしれないが、Herokuを使えば10分で作れて、なおかつ世界中に公開できてしまう。「作れる」から「公開」がRailsだと意外に大変なのですが、それがあっさり出来てしまうのです。


パフォーマンスを心配していたのですが、意外と良好。体感的にはSlicehostやLinodeのVPSで運営している他のサービスとあまり大差ないかもしかしたらHerokuの方が速く感じます。実際に計測してみないとわからないところではありますが、Slicehostよりも速いといったブログのエントリーもみつけました。


Heroku Overview and Performance comparisons | Simply Excited – Technology, Outdoor and Design


ある程度の規模までは無料プランでいけそうな気がしています。しかもひとつだけでなく複数のアプリを作成できてしまって、これじゃあ儲からないんじゃないかと心配です。


Libreqでは定期的にlibreqあてのつぶやきを取り込んだり、あるいはリクエストされた本が図書館にあるかどうかをチェックする必要があるのですが、Herokuはcronもサポートしているので問題ありません。cron.rakeをlib/tasks以下に用意し、その中に実行したい処理を書くだけという簡単さ。ただ無料プランだと一日一回しか実行できないので、月々3ドルの、Hourlyつまり一時間に一回実行するプランにアップグレードしておきました。


Libreqでは、Twitter APIを使うのにtwitter gem、Amazon APIにはamazon-ecs gem、またカーリルAPIにアクセスして取得したxmlをパースするのにNokogiriといったgemを使っています。そうしたgemをHerokuで使えるようにするのも超簡単です。.gemsというファイルに



witter --version '= 0.9.5'

amazon-ecs --version '= 0.5.7'

nokogiri --version '= 1.2.3'


と書いておいて、git pushするだけ。Heroku上で勝手にインストールされます。


他にも無料プランの中で使えるAdd-onが充実していて、バックアップだったりエラーメール送信だったり、運用に入ろうとすると必要になり自分で用意しようとすると結構面倒なところが、ポチポチ「Add-on追加」のボタン押していくだけで済んでしまうのが楽しいです。


Ruby on Railsで自分のサービスを作りたいと思っている人はHerokuを使ってどんどん世に出したらいいと思いました。そしてサービスがはやってきたら、有料プランに切り替えHerokuを支えましょう :-)


プロフィール

株式会社まちクエスト代表、つくる社LLC代表。

Scratchで楽しく学ぶ アート&サイエンスRaspberry Piではじめる どきどきプログラミングを書きました。

オンラインコンテンツ: 大人のためのScratch

Amazonから図書館検索 Libron、iPhoneアプリ ひらがなゲーム かなぶん を作っています。

Email: webmaster at champierre dot com

Twitter @jishiha

最近のエントリー

アーカイブ