もふもふ技術部

WEBエンジニア一人だけでサービスを作りきる方法-夫婦のための自動ごはん予定お知らせサービス「GoHaaan」制作でやったこと


couple-1-3bc34ea900cf8909a8149fbf63feeea9

夫婦のための自動ごはん予定お知らせサービス「GoHaaan」を2月末にリリースしました。パチパチパチ。
https://gohaaan.com/

どんなことができるかっていうと、Googleカレンダーの予定タイトルに[LUNCH]とか[DINNER]っていう文言を含めておくと、自動的に予定の前日16:00に指定のメールアドレスへ「ごはん食べてきますよー」っていう旨のメール通知を送ることが出来ます。

嫁さんのメアドとか設定しておけば、自宅で食べるかどうかの確認を忘れずに済むので、

「外で食べて来たけど家帰ったらごはん準備してあった…」とか
「お昼は外でランチミーティングの予定だったのにお弁当作ってた…」とか

を減らせるんじゃないかな。

startapp.jpに作った経緯とか載せてるので読んでみてね。

夫婦のための自動ごはん予定お知らせサービス「GoHaaan」 開発者、スーパーRubyist原田敦氏は語る
http://startapp.jp/2015/03/02/gohaaan.html

色々書いてありますが、実は言うとここだけの話、本当はvimを覚えるために作ったんですよね。

当時はSublime Text(今はAtom)なんですが、Rails界隈はvimmerが多くてですね、vimでどれだけ開発効率アップできるんだろうと思ってたから試したかったわけです。ぼくも「それvimで出来るよ(キリッ」て言いたい。

まあ結論はここで言うのはやめておくことにします。亡くなったおじいちゃんから政治とテキストエディタの話は外でするなと教わったのでね。

それはさておき、個人サービスってエンジニアはよくチャレンジすると思うんですが、途中で飽きちゃったりしてなかなか続かなかったりするじゃないですか。

前々からいくつか個人サービスを作っていたりして、そこらへんの経験値がちょっと蓄積されてる気がするので公開してみようかなと思って。

誰かの役に立てばいいなー。

作るにあたって、こちらのエントリはめっちゃ参考になるので一読すべし。開発で詰まったら適宜振り返るべし。

非デザイナーエンジニアが一人でWebサービスを作るときに便利なツール32選
http://qiita.com/okappy/items/119e31cae9aa9bd9da6d

以前に発表したぼくが個人サービス作った時のスライド。

「楽しいことだけやる」のがプログラミングの勉強のコツ

1日30分で作れる個人サービスのススメ

やったことの全貌目次

まずは全体を箇条書きしてみます。

  • 計画・設計フェーズ
    • アイディア出し
    • 既存サービスの調査
    • ターゲット設定
    • サービス名の決定
    • フィードバック設計
    • 手書きワイヤーフレーム作成
    • 技術選定
  • 開発フェーズ
    • vim力強化
    • ひたすら開発
    • サーバ契約
    • メールサーバ設定(sendmail,postfix)
  • リリースフェーズ
    • コピーライティング
    • PR計画
    • OGPタグ設定
    • Analytics導入
    • 各種SNSでシェア
    • Twitterのプロフィールにリンク入れる
    • startapp.jpにインタビュー記事載せる
    • プレスリリース送信
    • Twitterで関心持ちそうな人のツイートをふぁぼる
    • 制作した話のブログを書く

開発速度を上げるためには計画をすること

当然のことながら作り出す前にまずは計画・設計します。これをやっておかないと開発している最中に何度も振り返って考えてないといけなくなるのでスピードが落ちます。

アイディア出し

アイディア出しのやりかたはそれぞれやりかたはあると思うけど、ぼくの場合は、普段の仕事の帰りの電車であれこれ考えて、思いついたのをEvernoteに残しておいて、あとで蓄積したアイディアをふるいにかけて選定するっていう具合の一人ブレストみたいなやり方してます。

今回出た候補。

  • Slack連動の定時退社数計測bot
  • 嫁専用プライベートKPTツール
  • 遺言.jp(WEBに自分の遺言を残しておく)
  • 決まった時間に一通のメッセージしかやりとりできない出会い系サービス

取捨選択の基準は「費やせる日数の制約の中、他人が使うことが出来るサービスレベルまでもっていけるかどうか」という点で見ます。

今回は年末年始の時間を使う計画だったので約1週間弱くらい。不慣れなvimで作るスピードダウン分も含めて考えると、今回のGoHaaanのコンセプトがシンプルでちょうどハマった。あと「自分で使って便利」っていうのも判断材料の一つになったかも

手書きワイヤーフレームを作る

別に手書きでもなくてツールでもいいんだけど、ツール覚える時間を考えるとパパッと書ける手書きがオススメ。

ワイヤーフレーム意外と大事っす。実際に画面を実装する段階でワイヤーフレームがないと「この辺どうしようかなー」とか「こうした方がいいかなー」っていう具合に、開発脳と想像脳が行ったり来たりしちゃいます。

人間は一度に並行して複数のことをこなすのは苦手だというのは周知の事実だと思います。なので、ひとつひとつのことをモジュール化して、ひとつずつ着実にこなしていくのがスピードアップのコツです。

実際に書いたものがこちら。

TOP
top

ダッシュボード
dashboard

お問い合わせ
contact

使い方
usage

オレはマルチタスク余裕でこなせるから同時にやっちゃうぜ☆っていう聞き分けのない人は、この動画で白い服を着た人が何回パスしたかでも数えてろ!

どう?何回パスした?

技術を選定する

まずは個人でサービスを作る場合、もっとも手強い敵は「モチベーション低下」であるという前提があります。

なんせ作ったってお金になる確率は非常に低いので、最初はワクワクして取り組んでたのに、ふとこの事実に目を向けると途端にやる気がなっちゃうのはしょうがないです。これは人間のさがですから根性で乗り切ろうとしてもムリです。

つまりは全速力で駆け抜けて作り切るのが得策なので、技術選定の基準は「新しく覚える技術は1つだけにする」という点を守りましょう。多くても2つですかね。それ以上はイバラの道です。あえてひのきのぼうを装備してボス戦に挑むアリアハンのゆうしゃみたいなもんです。

ぼくはRailsエンジニアなので、こんな感じで慣れた構成を選択して、開発エディタのみvimに変更しました。

  • Ruby 2.2.0
  • Rails 4.2.0
  • CentOS6(ServermansVPS)
  • Unicorn + Nginx + MySQL

間違っても自宅サーバとかにしないように。高いし手間だしめんどくさいし。アリアハンの勇者も一撃死するレベルの強敵です。あとクリフトはボスにザラキすんな。

開発フェーズは開発だけやる

前述したように開発フェーズはいかに開発作業だけに絞れるかが明暗をわけるポイントです。

なのでワイヤーフレーム通りのガシガシ作っていくのが正です。直したいところ工夫したいところなど出てくるとは思うのですが、一旦どこかメモでもしといて、可能な限り開発中に開発以外のことを思考するのを排除しましょう。

特にキャッチコピーなどの文言が気になってきたりするんですが、この時点で考えちゃダメです。適当な思いつきのそれっぽい文言を入れておいて先に進めるのがベスト。

あとキレイなコードを書こうとするのもなるべくあきらめましょう。そもそもキレイなコードを書く目的は保守性の維持だったりするので、長く保守する可能性の低い個人サービスなら作り切ることを優先した方が全然いい。

それなりに本気でやろうとしているWEBサービスだとしても、リリースしてフィードバックを得て手応え掴んでから、リファクタリングするか作り直すかすればいい。

メールサーバはヤバイ

GoHaaanはごはん予定をメール通知するサービスなので、当然メール配信機能が必要です。外部サービスと連携したりGmailから送信したりとか色々手段はあるのですが、今回はvpsからPostfixで送信させることしました。

これがまあ強敵でしてね。WEBサービス開発やったことあるひとであれば比較的知られていると思うのですが、DMなどの類のEメールはとにかく迷惑メールフォルダに入れられしまうのですよ。特にGmailは。

GoHaaanも例に漏れずことごとく迷惑メール扱いされてホトホト困りました。最初はSendmailでごにょごにょやりながら試行錯誤していたのですが、設定値をメンテするのだるいので、もうちょっと使いやすいPostfixに変更したけどやっぱりうまくいかず。

対策として、

  • SPFレコードの設定
  • DKIMの設定
  • Return-PathとかSenderの統一

とかやったんですが、どれやってもダメで、最終的には送信元のメールアドレスをa.harada@〜に変更したらうまくいったっていう。。。意味がわからん。なんでnotify@〜じゃダメなんだ。

リリースフェーズ

一旦作りきったら、リリース前にやるべきことの確認と、リリース後にやるべきことを計画します。

コピーライティング

開発時に後回ししていたのをこのタイミングでやります。この辺は得意分野ではないのであまりためになる話はできませんが、だいたい意識しているのはこの辺。

  • ターゲットは誰か?
  • ターゲットが見て価値を創造できる言葉か?
  • わかりやすい簡潔な言葉か?

少なくとも、ページタイトルとメインビジュアル周りの見出しは、不得意でも自分なりに考えてもっともベストと思われる文言を探し出すと良いと思います。

OGPタグ

当たり前すぎて言うまでもないかもですが、FacebookでシェアするときにOGPタグの情報が参照されます。必ず設定しましょう。

この辺を参考にすると良いかと思います。
http://webdesignerwork.jp/web/facebookogp/

プレスリリース送信

これはぼくも初めての試みですが、テック系メディアにプレスリリースを送ってみました。

書き方はこちらのエントリを参考にしました。
http://yusukebe.com/archives/20120322/100646.html

ググったら送信先の候補とかは見つかるので探してみてください。効果があるかどうかわかりません。自己責任で。

プロモーションは泥臭い作業で、効果があるかどうかもわからんけどアレコレ考えながら愚直にやり続けることが唯一の正攻法だよって亡くなったおばあちゃんに教わったので忠実に守ってやってます。先人の知恵袋は偉大です。

制作した話をブログにする

まさに今書いてます。言わせんな。

最後に

せっかくだからやったこと全部書き残したかったんだけど、超大作になっちゃいそうなので、ひとまずこのくらいにします。もっと色々聞きたいこととかあればGoHaaanの問い合わせページからお気軽にどうぞ。出来たらGoHaaan使ってみてね。

お問い合わせ
https://gohaaan.com/contact/new

TOP
https://gohaaan.com

The following two tabs change content below.
原田 敦

原田 敦

日本CAWのエンジニア。もふもふ部の部長。得意分野はRuby on Railsを使った小規模WEBアプリケーションを高速で開発すること。週末の楽しみは一人お菓子パーティー。三度の飯より小動物をもふもふするのが好きです。