不格好エンジニア (引っ越しました)

wordpress.comから引っ越しました。

Herokuを用いて、ひとりでWeb APIを構築した時にやった事、やるべき事

※旧ブログからの転載記事です。

まえがき
最近、個人でもWebAPIと連携するiPhoneアプリの開発を進めており、サーバサイドではHerokuを利用していました(現在は、さくらVPSに移行しています)。これから、個人開発や小規模チームでの開発を始めようと思っている方に、必要となりそうな情報や、
記事をまとめてみました。

まずHerokuで公開してみる

プロトタイプでも何でも、まずは数時間程度で、サクッと公開できないとモチベーションが上がりません。
環境構築で悩みすぎると、Herokuのメリットも感じられません。
とりあえず、この2つの記事とgoogle先生を駆使して、サンプルアプリをherokuで公開するところまでやってみると、取っつきやすいのではないでしょうか。

HerokuでWebアプリ開発を始めるなら知っておきたい10のこと
紹介されているリンクがすばらしいです。Herokuに少し触れ始めた時に、読んで、非常に為になりました。

Ruby on Rails 4 でアプリを新規作成してherokuで公開するまで
Railsにある程度、触れている方なら、問題なく環境構築できるかと思います。

Getting Started With Heroku
Herokuの公式チュートリアルです。運用上、必要なHerokuの独自コマンドなども記載されています。一通り目を通しておくと良いと思います。
heroku login, heroku open, などなど。。。

個人開発でHerokuを使うメリット
 インフラやミドルウェアの導入にかかる経費(というより時間)が圧倒的に削減できる事がメリットになると思います。
個人的には、ソースから色々コンパイルしてミドルウェアを導入してみたりする事も、勉強にはなると思います。
そういう勉強も必要だとは思います。
 ただ、やってみるとわかりますが、ちょっとした環境構築だけでも、ハマると半日くらい費やしてしまいます。こうなると、個人開発のスピード感は大きく失わます。
 このような背景があり、優秀なインフラエンジニアをひとり雇うような感覚で、Herokuの採用に踏み切りました。また、社内では制約が大きくて触れられないような技術にも、いち早く触れる事ができるため、「その技術で何が出来るのか」考えるきっかけになるように思います。

ソースコードの公開について
 基本的には、サーバサイドのソースコードや、サーバと連携するようなネイティブアプリのソースコードGitHubで公開しないようにしています。
configファイルなど、おいそれと公開できないものもあるためです。
 機密情報のみ、非公開にしてGitHubに公開するような手法も色々とあるようですが、そういった作業に慣れていない為、現在はこのようなスタンスで開発を進めています。

無料で、どこまでの機能を使用できるのか
 基本的には、個人開発で小規模なWebアプリケーションを作成して、ひとつのdynoで動かす分には、ほぼ無料で使用できます(2014年8月現在)。
ただ、スケジューラによるバッチ処理や本番環境でのコマンド実行を行いまくっていると、知らず知らずのうちに課金される事もあるようです。
このあたりは注意が必要です。

学習コスト
Dyno, Slugなどの用語はHeroku独自のものだとおもいますが、それ以外のものは、Heroku独自の用語や技術というものは、あまりないように思います。ですから、別のフレームワークやプラットフォームでお仕事をする際にも、勉強した事は無駄にはならないと思います。

優良アドオン
未使用のものも含まれます。良さげなものをリストアップしてみました。

Deploy Hooks
これは指定したサービスのデプロイ時に通知を行うものです。通知方法はHipChat, IRC, Email, HTTP Postなどが選べるようです。

New Relic
モニタリング、トラブルシュート、チューニングなどに用います。

Logentries
ログをWeb上でグラフィカルにエラー表示をしたり、検索機能を提供してくれるようです。

https://addons.heroku.com/scheduler
事前登録した処理を指定した時間帯に実行させるためのスケジューラです。バッチ処理の実行に用いています。

BitbucketとWerckerを用いた継続的インテグレーション
Bitbucketと連携できて、しかも無料、セットアップが簡単なCIサービスを探していたところ、こちらの記事にたどり着きました。手順もわかりやすく記載されているので、おすすめです。

Githubのプライベートリポジトリでも無料で使えるCI、Werckerを使ってrails newからHerokuのデプロイまでやってみる


今後、やっていきたい事
独自ドメイン
Memcachedの使用
・ステージング環境の構築