I am うるぞー

エンジニアがより良く生きる方法

Rails初心者とスタートアップはHerokuが圧倒的にオススメ

f:id:uruoikun:20180518011720p:plain

どうも、うるぞーです。
今回はRailsを勉強している人, Railsで作ったサービスで起業しようとしている人向けです。
過去のRails開発を振り返ったときに困っていたデプロイ問題をふと思い出し、同じように困っている人がいるんじゃないかと思って記事にしています。

「Railsで作ったサービスをリリースしたいんだけど、どうやってデプロイしたらいいんだろ?」
「これから起業するんだけど、Railsのアプリケーションってサーバーコストどのくらいかかるんだろ?」
「よくAWSって聞くけど、ちょっと難しそうだしハードル高そう・・・」

そう思い不安を感じているあなたに言いたい。
「Herokuを使えば5分ほどで素早くサービスを世に出すことができ、開発に集中できる『スタートアップ・初心者の味方』である」ことを。

サービス/プロトタイプできた!でもどうやってリリース/運用しよう問題

僕が大学生時代、初めてRailsでサービスを作った際に困ったのが「どうやってサービスをリリースすればいいんだ」という肝心なところでした。

僕は独学でRailsを学んだので、RubyとRailsは本屋さんで売っていた書籍を元に勉強していました。
自分でコードを書いてエラーを吐きながらも、ひたすら調べて一生懸命にサービスを作り、いざ世に後悔するぞ!となったら次はサーバーを構築しなくちゃいけない。

初めてWebサービスを開発する人にとってデプロイは大きい壁なんじゃないかと感じています。

不慣れなターミナルやgitとも格闘しながらの公開作業は非常に苦労しました。 慣れてしまった今でこそデプロイの恐怖が減ったものの、当初は遥かに高い壁のように感じていたんです。

当時ググりながらAWSにチャレンジしたものの、細かい設定が理解できず、設定があっているのかを確認するすべもなく、デプロイ環境を整えるためにコードを修正し、エラーが出て...と泣きそうになったのが懐かしい。(笑)

おそらくこの記事を見ている人の中にも「デプロイの仕方わからない!AWS怖い!」と不安に思っている人も少なくないはず。

そんな人のためにこの記事があります。Herokuを使えばその不安とはおさらばです。

Herokuをオススメする理由

Herokuを知らない人はいないかと思いますが、念のため簡単に説明しておくと、『エンジニアがサーバー構築を意識せずにサービスをリリースすることができ、最も大切な開発にフォーカスすることができるための便利なサービス』です。

Herokuもうたっていますが、「余計なことは気にせずアプリ開発に集中する」ことができます。

僕が運営している「BLOMU」もHerokuで運用していますし、仕事でサービス開発するときも9割がたHerokuを使っています。Herokuを使うことで重要な開発に集中して素早くPDCAを回すことができますし、何よりサービス運営に関するストレスがかからなくて済みます。

gitの基本的な知識を押さえて、Heroku特有の設定になれれば5分ほどでサービス公開できます。
僕は最初gitの知識が乏しかったのですが、「rails heroku」などとググって出てきたサイトを参考に、コードをコピペするだけでリリースすることができました。

技術が大好きでAWSを学ぶのだって苦じゃない人にはピンとこないかもしれませんが、「頼むから大変なのは勘弁して...orz」「スタートアップで人手も時間も足りない中で手間をかけたくない」って人はHeroku一択でいいんじゃないかというのが僕の意見です。スケールしたり様々な理由からAWSなど別の手段に切り替える場合はそのとき考えればいいので、最初は開発に集中する方が大事だと考えています。

実際に趣味でも仕事でもHerokuを使っている僕がオススメする理由は以下の通りです。

  • スピード感もって開発できる
  • 無料で使用することもできる
  • DBを始めとして、関連ツール(addon)が便利
  • 非エンジニア以外も使いやすい管理画面
  • 独自ドメインを設定できる
  • SSLを無料でつけられる
  • githubと連携し、デプロイを自動化できる
  • ReviewAppを立てることでデザイナーや関係者に開発内容を共有できる

スピード感もって開発できる

Herokuでサービスを公開するのが簡単なのはお伝えしましたが、日々の開発内容の反映も簡単に行えます。
インフラのことを気にしなくて良い、ということとも関連していますが「企画・課題→開発→反映・チェック→反応を見る」のサイクルを高速で回すことができます。

例えば「プロフィールページでレイアウト崩れが出ている」という問題があった場合に、該当ページのコードを修正して再度サーバーに反映する必要があります。
ここの反映作業に手間がかかってしまうとストレスですよね...。

Herokuであれば以下のようにgitを叩くだけでデプロイ作業が完了です!

git add .
git commit -m "プロフィールページのレイアウト崩れ対応"
git push heroku master

たった3行のコマンドでHerokuにpushすることができ、変更を反映することができます。
スピーディーに開発ができるのでスタートアップや個人でサービス運営していこうとしている人にオススメしている1番の理由がこれです。

無料で使用することもできる

Herokuは無料で使用することができます。
無料プランだと一定期間アクセスがないとサービスが眠り、立ち上がりに時間がかかるなどの制約がありますが、「プロトタイプ作り終えたから周りの人に使ってもらってフィードバックをもらいたい」「趣味サービスだからお金をかけて運営するまででもない」といった人に最適です。

後術しますが、有料プランだと速度が速くなったり独自ドメインを設定できたりSSLを無料でつけることもできます。

DBを始めとして、関連ツール(addon)が便利

f:id:uruoikun:20180518011814p:plain

Herokuを使えばDBを始めとして関連ツールをすぐに導入することができます。
DBはPostgreSQLだと10,000レコードまでは無料で使えますし、MySQLも少ないレコード数ではありますが無料で使用することができます。
昔はMySQLのアドオンを入れていましたが、最近はデフォのPostgresを使用しています。

他にも一定時間おきに処理を実行してくれるschedulerや、画像サーバーのcloudinary、メール機能のSendGrid、ログ管理のPapertrail、エラー通知のBugsnagなどなど、ボタン一つで便利ツールを導入することができます。

非エンジニア以外も使いやすい管理画面

f:id:uruoikun:20180518011837p:plain

初めて管理画面を見たときはどこがどうなっているのかサッパリwでしたが、慣れてきた今では見やすいしわかりやすいと感じています。

非エンジニア以外の人も使いやすい管理画面なので、例えばサービスのアクセスが増えてきたときにアクセスに耐えられるように設定を変更したりとかが簡単に行えます。

独自ドメインを設定できる

これは有料プランを利用している場合になりますが、お名前.comなどで取得したドメインをHerokuでも利用することができます。
ちなみに無料プランの場合だと、○○○.herokuapp.comといったURLになります。

SSLを無料でつけられる

独自ドメイン同様に有料プランの場合になりますが、SSLを無料で導入することができます。
通常は証明書の設定をごにょごにょとやってあげてと設定が必要で、証明書の期限が切れてアクセスができない!みたいなことがあったのですが、そのストレスもなくなって本当に快適です。

やっぱりサービスとしてhttps化は必須なご時世なのでSSLをワンクリックで無料でつけられるのはありがたいです。

githubと連携し、デプロイを自動化できる

少しtips的な話になります。
通常開発時にgithubやbitbucketなどを使って管理していくことになるかと思いますが、Herokuはgithubと連携することができまして、githubにpushすることで自動的にHerokuにデプロイすることも可能です。

例えばgithubでPR(pull request)を作成して変更内容をmasterブランチにマージしたらHerokuにも自動的に反映するというものです。
github flowにのっとった開発をスムーズに行うことができます。

Herokuのパイプラインという機能でstagingとproduction環境をわけ、masterブランチにマージされたら自動的にstagingに反映するようにしています。
あとはリリースタイミングを見てstagingの内容をproductionに反映するだけで管理もしやすくなります。めちゃ便利です。

ReviewAppを立てることでデザイナーや関係者に開発内容を共有できる

こちらもtipsですが、HerokuではReviewAppと呼ばれるgithubのPRに連動した専用のアドレスを立ち上げることができます。

ちょっとわかりにくいかもしれないので具体例で説明します。

ミーティングで「投稿にはいいね!をできるようにしよう」という機能追加が決まり、エンジニアがいいね!実装を終えたとします。
これをビジネスサイドの人間やデザイナーが挙動の確認をする際に、いちいちブランチ切ってローカルで確認するのってめんどくさいですよね。エンジニア以外の人がRailsの環境構築からしないといけない、みたいな話になるし、ただ機能の確認をしたいだけなのに面倒なことはしたくない。

だからといって確認が済んでないのにstagingやproduction環境に反映してチェックし、再度修正のPRを立てるのは手間がかかります。(ケースバイケースでありかとは思いますが)

そんなときにそのPR上でサクッと確認できるための役割がReviewAppです。
確認を行い、そのPRをマージすると勝手に削除されるのでエンジニアはReviewAppのURLを関係者に送ってチェックしてもらうだけで、スムーズに機能の確認や認識のミス、利用者としての意見を出すことができるのです。初めて使ったときは感動しました...!

【まとめ】Herokuを使ってストレスフリーな開発ライフを

ものすごくざっくりとですが、Herokuがいかに小規模スタートアップや初心者に向いているかが伝わったかと思います。

昔の自分を思い出して「デプロイで苦しむ人を減らすぞ!!」と意気込んで書いた記事ですので、同じように苦労している方はぜひHerokuを使ってみてはいかがでしょうか。

実際のHerokuの設定方法などは「rails heroku」などで検索したら良記事が出てきますし、今度僕もHerokuへのデプロイ方法をブログなり動画なりでご紹介して、Herokuで苦しむ人をなくしたいなと思っています。

Railsでのデプロイに困っている人の役に立てれば幸いです。


余談ですが、スタートアップや個人でサービスを開発する際に必要なサービスの考え方やプログラミング技術をまるっとわかりやすく学べる「起業のWeb技術」がオススメです。

初めてWebサービスを作って起業する人が、

  • どのようにビジネスを考えて
  • どのような技術が必要で
  • どのように開発を進めていき
  • どのようにマーケティングするのか

などなど、全体像を知ることができます。