【個人開発】爆速でWebサービスを開発した感想と裏側でやったこと

# はじめに

ついにNPBが開幕しましたね！[^1]

[^1]: 時候の挨拶

野球が開幕する喜びのため、Vue.js + FirebaseでWebサービスを開発しました。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">こういうの作りました。<a href="https://t.co/BnfX6n75XB">https://t.co/BnfX6n75XB</a></p>&mdash; しまっち@育児時短中 (@ShimayuSti) <a href="https://twitter.com/ShimayuSti/status/1272847361396453377?ref_src=twsrc%5Etfw">June 16, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

[ぼく将オーダー](https://battingordermaker.web.app/)

[どういうモチベーションで作ったとかっていう話はnoteで書きました](https://note.com/shimayu22/n/n299e1e9fc9e0)[^2]ので、この記事ではどうやってVue.js+FirebaseでWebサービスを公開にこぎ着けたかの泥臭いお話をしようと思います。

[^2]: [NPB開幕が決まったのでWebサービスを作った話 ](https://note.com/shimayu22/n/n299e1e9fc9e0)

ちなみに「爆速」は釣りタイトルです。言ってみたかっただけなんやすまんな。[^3]

[^3]: この規模で11日（40～50Hくらい？）かかってるのを爆速とはいいづらい

# お前誰よ[^4]

[^4]: 青い球団に怒られそう

- 大学（情報系学科)→メー子（コード書かない方）→空白の期間→iOSアプリ開発→非エンジニア兼業主夫三十路おじさん
- サーバとかフロントエンドとかは2000年初期くらいの知識
- 直近だとPython/Djangoでアプリを作った
  - [栄冠ナインデータベース](https://github.com/shimayu22/Eikan-Database)

「このDjangoアプリ、せっかくデータ貯めてるんだからデータ切り替えたりチャート表示したりしたいな・・・」
「せや！Vue使ったろ！」
「でもよく考えたら最近のHTML/CSS/JavaScriptってよく分からんな・・・」
「地道にキャッチアップするかぁ」
ということで、だいぶ長い道のりを歩むことになったのであった。

# リリースにいたる道のり
## MDNのチュートリアルをやる
[MDNチュートリアル](https://developer.mozilla.org/ja/docs/Web/Tutorials)

まずはここで現代のHTML/CSS/JavaScriptについてキャッチアップ（実質学びなおし）をしました。
ちなみにMDNとは、
> MDN Web Docsは、ウェブ標準及びMozillaプロジェクトの開発文書のためのMozillaの公式ウェブサイトである。

です（Wikipediaより）

ただ読むだけだと眠くなるし頭に入らないので、実際にコードを写経したりちょっと変えてみたりして動作を確認していました。章末の課題もちゃんとやったり。

無料だけど網羅的に学べるのでお勧めです。はぇーCSSだけでこんなにできるんか・・・ってなりました。
並行してDjangoアプリをやってたのもあるのですが、完走まで約3か月かかっていました。みっちりこれだけやるならもっと早く終われると思います。

## Vue.jsのチュートリアルをやる
[Vue.jsチュートリアル](https://jp.vuejs.org/v2/guide/)

HTML/CSS/JavaScriptのキャッチアップができたので、Vue.jsの公式サイトを写経していました。
実は当初、いきなりVue.jsから入ったのですがよくわからず撤退しました。基礎大事。
こちらは1週間くらいで完走しました。

フロントエンドに疎いおじさんなので、入力したら即反応してくれるのが楽しかった（小並感）

## 入門書をやる

以下の2冊を読みました。

- [動かして学ぶ！Vue.js開発入門](https://www.amazon.co.jp/%E5%8B%95%E3%81%8B%E3%81%97%E3%81%A6%E5%AD%A6%E3%81%B6%EF%BC%81Vue-js%E9%96%8B%E7%99%BA%E5%85%A5%E9%96%80-NEXT-ONE-%E6%A3%AE-%E5%B7%A7%E5%B0%9A/dp/4798158925/ref=tmm_pap_swatch_0?_encoding=UTF8&qid=&sr=)

この本でもう一度お勉強しました。だいたい4日くらい。
あとは辞書的にたびたび読み返しています。

- [改訂新版　Vue.jsとFirebaseで作るミニWebサービス](https://www.amazon.co.jp/%E6%94%B9%E8%A8%82%E6%96%B0%E7%89%88-Vue-js%E3%81%A8Firebase%E3%81%A7%E4%BD%9C%E3%82%8B%E3%83%9F%E3%83%8BWeb%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9-%E6%8A%80%E8%A1%93%E6%9B%B8%E5%85%B8%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA%EF%BC%88NextPublishing%EF%BC%89-%E6%B8%A1%E9%82%8A-%E9%81%94%E6%98%8E/dp/484439861X/ref=tmm_pap_swatch_0?_encoding=UTF8&qid=&sr=)

この本でVueで作ったものをFirebaseへデプロイする一連の流れを学べました。ちょいちょいFirebaseの仕様が変わっててそのままでは動かないところがありましたが、落ち着いて調べれば大丈夫です。

## N予備校のプログラミング入門 Webアプリコースをやる（番外編）

ちょうど時期的にN予備校が無料開放されていたので、「プログラミング入門 Webアプリコース」を完走しました。
入門だと思って~~ちょっと侮って~~いましたが、MDNでやったことの復習以外にも仮想環境構築、Slack Bot作成、Node.jsでアプリ作成など、学びが多かったです。

想定180時間と書かれていていつ終わるか心配でしたが、知ってるところはサクサク飛ばしたりしてなんとか3週間くらいで完走できました。

# ようやく開発に着手

ここまでの学習は今回リリースしたサービス用のためにやった訳ではなく、どちらかというと副産物ですね。卒業課題的な何か。
習熟のために何か自分で考えたモノを作ろうと思い、生まれました。

## なにこれ？
[ぼく将オーダー](https://battingordermaker.web.app/)

野球ファンなら1年で334回[^5]は考えるであろう「ワイならこうやって打線組むわ！」をオーダー表のような画像にするサービスです。
選手名は入力しなくてもプルダウンから選択することができます。

[^5]: な阪関無

## 使った技術
- Vue.js(Vue CLI)
- Firebase
- Bootstrap4

## 割り切った点
- バックエンドを用意せずデータはJSONを読み込むようにした

FirebaseのRealtime Databaseがよく分からなかったので、どうせ読み込みだけだからいっか！
ということでJSONでデータを用意して読み込むようにしました。
今後困りそうな気がするので、移行に取り組みたいと思います。

- App.vueに処理は全部書いた

規模が小さいのでひとまず全部App.vueに書きました。
こちらは現在進行形でコンポーネント化するなどリファクタリングを進めています。

- 最低限見やすければいいやの精神

あまり見た目にはこだわらず、シンプルに並べました。
ただシンプル過ぎるので、見やすさを維持しつつスタイリッシュにしたいです。

## 案外難航した点
- ファビコン作成
- サイト自体のOGP画像作成

最後の最後まで残しました。というか2日くらいリリースが伸びた理由がこれです。デザインセンスの欠片もないので難航しましたが、やっぱ無いよりはそれっぽさが格段にあがりますね。

- 利用規約とか説明文とか

これも最後の方まで残しておいてどこまでちゃんと書くべきかわからず結局お茶を濁した結果に。これからもサービスを世に出すなら避けては通れないと思うので熟成させていきたいです。

- 使ってくれそうな層にリーチできていない（重要）

さらっとTwitterに流したりnote書いたりしたくらいでは全然使われません。多少閲覧してくれたっぽいですが、画像をツイートまでは導けていませんでした。

# 完走した感想ですが[^6]

[^6]: RTA界隈でよくみる激うまギャグ

個人開発は十種競技みたいだな、なんて感じました。[^7]

[^7]: 元陸上部員（跳躍系）としてはあいつらマジでおかしなことやっとる

こんだけ小さいプロダクトでも途中で心折れそうになりましたが、私の場合ではありますがその原因の多くは実装部分ではなく、デザインとか、画像作成とか、説明文書いたりとか、宣伝の部分でした。や、実装できなくて機能削ったりもしたけどもさ。[^8]

[^8]: 人によってはそもそもそんな時間取れない、とかもあるでしょう

まぁでも全部自分でやらなきゃいけないという環境で拙いながらも全部やったので、いい経験でした。
自分はここ強い/弱いんだな、とかあーこういうのあるんだ興味出たなーとかわかるので、次学びたい事とか具体的になりますね。

また、この経験をもとに色々作っていくということを続けていきたいとおもいます。

# さいごに

個人開発はいいぞ！

[GitHub](https://github.com/shimayu22)
[note](https://note.com/shimayu22)

# 参考

[「中年の危機」ど真ん中のオッサンがWEBサービス作ってみた。](https://qiita.com/hiroz31/items/d7f2f9b7d02f9be1ca92)
[「ツイッターでつぶやけるボタン」を簡単に作成できるサービスをリリースしました【個人開発】](https://qiita.com/retoruto_carry/items/d6a173701c8e40f0c294)
[ぼくのかんがえたさいきょうの配色Webサービスを公開した話](https://qiita.com/azukisiromochi/items/4d07e1b247baed01f11b)
[Nuxt.js使って個人開発やってみた　〜時間割を円グラフで表示するサービスをリリースした話〜](https://qiita.com/mitsudaman/items/b30b5e905ff348bf35bc)
[Vue.jsとFirebaseでOGP画像生成系のサービスを爆速で作ろう](https://qiita.com/serinuntius/items/3017fb6ef51cd47352f6)