土日で作るWebサービス入門

f:id:toyoshi:20130615005055p:plain

「給与明細.net」というWebサービスを先週日曜日にリリースをしました。これは給与支払明細書のPDFをWebで簡単に作れるWebサービスです。
シンプルな内容なので開発を開始してから8時間以内の作業でリリースできました。このエントリではサクッとサービスを開発してリリースするまでの僕なりの方法を紹介します。

特長

  • 無料
  • 会員登録不要
  • Excelから一括作成できる(CSVではない)
  • オープンソース(MITライセンス)

目次

  1. 解決したい課題を見つける
  2. ドメインを取得する
  3. サイトマップとURLを決定する
  4. よいツールを集める
  5. まずデプロイ(公開)する
  6. そこそこのデザインにする
  7. 最低の機能をつけたらリリースする
  8. 広めるための準備をする
  9. おまけ:コードをかく

解決したい課題を見つける

これがないとそもそもWebサービスを作りたいと思わないですよね。
今回はExcelで作れと税理士に指示された給与明細だったのですが、「Excelコピー=>数値入力=>PDF出力=>メール送付」というのを毎月やるというのが絶対に嫌だったので作ることにしました。
それぐらいのことなにが面倒なんだ?と思う人もいるかもしれませんが、とにかく嫌だとか楽しいとか思ったら作ればいいです。
人がなんと言おうとそれがあなたの個性です、面白いサービスってそういう個性からしか生まれないと僕は思います。

ドメインを取得する

まずはドメインを取りましょう、今回はお名前.comで取得しました。サービスできてからでいいじゃんって思うかもしれませんが、これは重要です。たとえ.netが480円といえどもお金を払うことで完了させようという動機がより強くなります。

サイトマップとURL(URI)を決定する

僕がサービスを開発していて悩むのは名前です。特にURIとDBのテーブル名、カラム名は悩みます。
途中で集中力が途切れないように、サイトマップを書いてついでに最初にURIをすべて決定してしまいましょう。
URIの設計にはWebを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)RESTful Webサービスがといった本が参考になります。

よいツールを集める

RubyRuby on Railsがいかに凄いかということはここでは置いておいて、Herokuは後で説明するのでThinReportについて簡単に説明したいとおもいます。
これは帳票生成のためのオープンソースプロジェクトで超簡単にPDFが作れるのが特長です。
基本的にはThinReportEditorというPDFの雛形を作るアプリケーションと、ThinReportGeneratorというRubyからThinReportEditorで作った雛形を使ってPDFを出力するライブラリで構成されています。

まずこのThinReportEditorがすごい。以下の画像みたいな感じでマウス操作メインでPDF出力のための雛形がつくれます。

f:id:toyoshi:20130615001335p:plain

さらにこの雛形を読んでPDFを出力するのも超簡単で、今回のサイトもActiveRecordインスタンスをpdfにするのは下記のような単純なコードで表現できます。

  def to_pdf
    reports = ThinReports::Report.new layout: File.join(Rails.root , 'app', 'reports', 'basic')
    reports.start_new_page do |page|
      page.item(:name).value(self.name) #雛形のnameというラベルのテキストエリアに値をいれる
      #その他のラベルについては省略
    end
    reports.generate
  end

まずデプロイ(公開)する

これもドメインを最初に取ることと同じぐらい大事です。
Hello worldしか表示できなくてもまずは本番環境を用意してデプロイする。デプロイは面倒な作業なので最初にやっておかないとつらい。ローカルで動いたけど本番では動かないなんてことは当たり前です。
本番環境としては普通に個人向けサービスで考えると、さくらインターネットの980円VPSのコストパフォーマンスがずば抜けすぎていて比較対象がないのだけど、今回は2点においてHerokuが勝っているのでHerokuを使うことにしました。

  • 制限があるしサーバが海外にある都合でレスポンスが遅いが無料で使える
  • 環境設定がほぼ不要、デプロイが超簡単

Herokuは超簡単なのが最高なのですが、海外にサーバがある都合でどうしても遅い。たとえばMisocaのサービスサイトでもHerokuを使っているのですが高速化のためフロントにはAWSのクラウドフロントを使っていたりします。優しいし頭もいいから好きだけど不細工な友だちみたいな感じです。Tokyoリージョン楽しみにしてます。

デプロイがどれぐらい簡単かというと、最終的にはpushするだけで関連ライブラリの導入(bundle install)、データベースマイグレーション、コードの配置、リスタートまでやってくれます。

$heroku create # <= これでHeroku上にアプリが1つホスティングされる
$git push heroku master # <= デプロイされる

そこそこのデザインにする

デザインが悪いとコードを書いて動いた時の感動に差が出るし、デザインが悪いとそれだけで使ってくれない人がでるので気をつける、最近だとBootstrapを使ったり、テーマを買うのがいいと思う

最低の機能をつけたらリリースする

今回のサイトだと最低限の機能は「フォームに値を入れてボタンを押したらPDFがでてくる」でした。
なのでまずはそれだけ実装してリリースしました。あとは気になったら増やせばいいんです。例えば今回は、固定の項目以外の項目を入力できるようにしたり、Excelでアップロードというのはあとから追加しました。くどいようですがとにかくリリースを優先します。

広めるための準備をする

TwitterボタンやFacebookのいいねなどは必ずつけておきたいですね。あとは基本的なSEOということで、Googleキーワードツールなどを使って、検索の多い関連キーワードを調べておきそれらをサイトに入れておくようにします。とにかく1語でもいれておかないと検索されませんからね。

  1. 基本的なSEOをする。
  2. サイトのアクセス解析をおこなう(Google AnalyticsとNew Rerickをいれた)
  3. ソーシャルブックマークTwitterなどのボタンをつける
  4. 連絡先を明記する
  5. Twitterで告知する
  6. ブログで告知する
  7. googleにクロール申請をする(http://www.google.co.jp/addurl/
  8. google webmaster toolsに登録(https://www.google.com/webmasters/

おまけ:コードをかく

Ruby on Railsのコードを書きましょう。入門者は
RailsによるアジャイルWebアプリケーション開発 第4版
の最初のチュートリアルをやったり、
HerokuではじめるRailsプログラミング入門
を最初から最後までやってみるのがいいと思います。

あと学び方については以前まとめましたのでそちらも参考になると思います。

まとめ

参考になったでしょうか、この程度のサービスであれば良いツールやサービスを組み合わせることで短時間でリリースできることがイメージできたんじゃないかと思います。
肝心のコードはオープンソースという形でGithub toyoshi/kyuyoにて公開していますのでよければみてください。

それでは、総額480円、作業時間8時間のサービス「給与明細.net」をよろしくお願いいたします。