筆者は昨年8月、サンプルではない“意味のある”アプリを生まれて初めて作った。情報系の大学に通って多少はプログラミングの経験があったが、記者になってから20年間、1行もコードを書いていなかった。一念発起して作ったアプリは、筆者が属する日経Linux編集部内で、校正原稿のステータス(進捗)を管理するものである。

 「何とか業務を効率化したい」。そんな殊勝な心掛けもあったが、より大きな理由は「作ってみたかったから」である。もっと正確に言えば、新しい技術に直に触れてみたかったのだ。

 きっかけは、クラウドだった。アプリは、米Googleの巨大なWebシステムをプラットフォームとして利用できるPaaS(Platform as a Service)「Google App Engine(GAE)」上で作った。GAEでは、RDB(リレーショナルデータベース)よりもスケーラビリティーが高いNoSQLの先駆者「Bigtable」をサービスとして使える。東京都内で開かれるGAEの勉強会に参加するなどして、最新の技術を学び、開発者の方と触れ合ううちに「自分でも作ってみたい」と思った。

 今回、そのアプリをさらに改良することにした。幸い、作ったアプリは「ないと困るもの」として編集部内で普通に使ってもらっている。そのアプリの「運用費を無料にする」のが今回の目的である。

 そのため再び新しい技術に挑戦する。今度は、Webアプリケーションフレームワーク「Ruby on Rails」(以下Rails)で作るアプリを、Amazon Web Services上のPaaSとして注目を集めている「Heroku」で動作させる。専門家から教わったHerokuでの開発方法を簡単に紹介するので、ぜひ挑戦してみてほしい。

Googleでは運用費が掛かる

 開発環境の構築方法を紹介する前に、「運用費を無料にする」という意味を説明しよう。

 多くのPaaSは、開発者など向けに無料で使える「無料枠」を用意している。GAEでは、Webアプリを動かす仮想マシン(インスタンス)の稼働時間や、NoSQLへのアクセス数などで料金が決まり、それぞれに無料で使える範囲が決まっている。そのうち今回のアプリで引っ掛かったのは、メールの送信数だった。

 開発した進捗管理アプリでは、編集部と制作会社の間で、「出稿した」「1回目の校正を出した」「1回目の校正を戻した」・・・と進捗を更新するたびに、メンバーが属するメーリングリストにメールを飛ばす(写真1)。一方GAEの無料枠では、1日に送れるメールは最大100通だった(スパムの悪用を避けるため、かなり低く設定されている)。

写真1●記事進捗管理アプリの画面
写真1●記事進捗管理アプリの画面
[画像のクリックで拡大表示]

 これが、すべての編集作業を終える校了日でだけ微妙に引っ掛かった。細かい記事も含め、数十本の校正を一気に終わらせるため、メールの数がちょうど100通前後になるのだ。日経Linuxは月刊誌なので、1カ月に1日だけ100通を超えることがあった。

 メール送信の料金は、1宛先当たり1セントと安いので大したことはない。校了日で超えるのは多くて10~20通程度なので、10~20円というレベルだ。ちょっと痛いのが、無料枠の限定を解除する場合に掛かる月間約8ドルの基本料金だった。1カ月に1日だけ、ほんの少し無料枠を超えるせいで700円ほど掛かるのだ。せっかくなので、これも無料にならないかGAE上で色々と工夫してみたが、うまくいかなかった(奮闘の経緯は、GAE勉強会「ajn」の発表資料参照)。

 そこでPaaSであるHerokuの登場だ。Herokuでは「SendGrid」というメール配信サービスのお試し版として、1日当たり最大200通まで無料で送信できることを先ほど知った。Heroku上でWebサービスを開発し、メール送信の部分だけ任せれば、すべて無料にできるという算段だ。