できるだけコストをかけずにサービスを開発するためにしていること


# 概要
- 個人開発adcalの記事
- 個人でサービスをするときに効率良くサービスを作るために使っている技術をまとめる


# 前提
- なるはやでリリースして、使ってもらうことを第一に考える
- web/androidエンジニア
- 得意技術 Java == Ruby > JS > golang
- コスト = (かかった時間 x 普段の時給) + かかった費用

# 冒頭にちょこっと宣伝🙇🙇
この記事の要領で作ったアプリです。
AmazonのウィッシュリストとToDoリストを組み合わせたようなサービスになっています。
ぜひ使ってみてください。

[wwish　みんなのやりたいこと](https://wwish.org)
[![wwish](https://qiita-image-store.s3.amazonaws.com/0/34831/ecf2961a-13dd-e576-bec3-fadf8519fb34.jpeg)](https://wwish.org)

サービスに対する思いはこちらに書きました。よければこちらも読んでください。
[世界は意外と優しいという話 fablog](http://fablog.hatenadiary.com/entry/2017/12/22/160326)


# プラットフォームの選定
特に理由がなければWebを選ぶべきだと思っている。
アプリになると Android, iOS の両方を書かなくてはいけないのでどうしてもコストが高くなりがちになってしまう。
過去にReactNativeとかでアプリを作った経験もあるが、どうしても各OSによってデザインを変える必要がでたり、OS依存のバグが起きたりして時間がかかってしまいがちである。
最近だとPWAなども活発になってきているので、とりあえず使ってもらいたいという意図であるならばWebを使うのがいいと思う。

# フレームワークの選定
作る目的が技術習得ではなく、サービスを作ることであるならば自分が最も得意なものを使うべきであると思う。
新しい技術を触れるのはとても楽しいのですが、やはりどんなフレームワークにでもハマりどころは存在する。
ある程度の使い方がわかっているフレームワークを使うのが一番です。

ちなみに僕はRailsをよく使います。
ReactでSPAとかもやってもいいのですが、DBとサーバーとフロントがガッチャンコされているフレームワークのほうが楽チンです。


# デザインの選定
使用経験のあるCSSフレームワークであればなんでもいいと思います。
僕は'material-lite'とかをよく使います。
凝ったデザインを作る場合はフレームワークを使うと意図していないCSSがかかって修正に時間がかかってしまうのでオススメしませんが、とりあえずサービスを作るのであればCSSフレームワークはとても便利です。
modalとかsnackbarとかを自分でデザインするのは時間がかかりますからね。
僕はとりあえずリリースして、もし流行ったら凝ったデザインにすればいいのかなと思っているタイプなので最初からこだわるようなことはあまりしないです。


# インフラの選定
基本的にはHerokuみたいなPaaSを使うのがいいと思います。VPSを借りて自分でやったほうが安い時もあるのですが、意外と値段は変わらなかったりします。とりあえず動かすだけでしたらherokuも無料でできますし、仮にバズったときに簡単にインスタンス増やすこともできます。SSL対応とかも全く考えなります。
インフラ関係に1日使うくらいでしたら、heorkuを使って思考放棄したほうがコスパがいいと思います。
(herokuの有料枠 月 7$ x 12 = 9000円くらいとすると、普段日給1万超えてるならherokuを使ったほうがコスパがいい)


ただ、DBのレコードを大量に生成するタイプのものに関してはEC2を借りてその中でやることにしています。
herokunのdbとしてよく使われるpostgresの無料枠は10000レコードまでで、それを越えると追加課金が必要になってしまうからです。
VPSを使う場合は docker を使用するのが良いです。'https-portal'というdocker-imageを使うと証明書の自動更新とかを全部やってくれるのでオススメです。docker-imageの内部で使用してるっぽいnginx?の設定とかも環境変数で簡単にいじれます(validationをかけるファイルサイズとか)
最近ですとビットコインの自動売買ボットを作ったときは過去の板情報を大量に保存しておく必要があったので、VPSを借りています。

https://qiita.com/kuboon/items/f424b84c718619460c6f


# 採用をオススメする便利技術
analyticsとかみたいなのは勿論なんですが、他の人があんまりまだやってなさそうなことを紹介。


## ServiceWorker
キャッシュとかまで考えてこいつを使うと大変ですが、とりあえずwebpushを使えるようにするためにこいつを使うことは大変オススメします。iosはまだ対応していませんが、chromeやfirefoxを使っている人は割と多いはずです。Edgeも対応予定ですし、今後は全プラットフォームで対応されるのではないかと思います。


### こんな感じの挙動になります。
<iframe width="560" height="315" src="https://www.youtube.com/embed/JbBoItDu2cc" frameborder="0" gesture="media" allow="encrypted-media" allowfullscreen></iframe>



## manifest.json
jsonの設定ファイルを一枚置くだけなので、これも採用しといたほうがいいと思います。
serviceworker, https対応, の状態でmanifest.jsonを配置しておくと、androidで二回以上そのサイトを訪れたときにこんな感じのポップアップが出るようになります。
ホームに追加した後のアイコンも設定できますし、スプラッシュアニメーションも勝手につきます。

jsonを配置するだけでここまでできるので、コスパは割といいと言えるのではないでしょうか。

### 動かすとこんな感じです。
<iframe width="560" height="315" src="https://www.youtube.com/embed/nJEIXvJVAYk" frameborder="0" gesture="media" allow="encrypted-media" allowfullscreen></iframe>



# 感想
割と個人でも簡単にサービスが作れるいい時代だなぁと思う（まだ学生だけど）
peingとかは6時間でサービス作ったとか言っているし、本当にいい時代。

僕はまだ2週間くらいの時間をかけちゃうけど、6時間でwebサービスが作れたらアイデア試したい放題で素晴らしいなと思いました。


# 最後に告知again🙇🙇
この記事の要領で作ったアプリです。

ぜひ使ってみてください。

[wwish　みんなのやりたいこと](https://wwish.org)
[![wwish](https://qiita-image-store.s3.amazonaws.com/0/34831/ecf2961a-13dd-e576-bec3-fadf8519fb34.jpeg)](https://wwish.org)