楽してWebサービス個人開発

#はじめに

どうも、@nittannittanです。

趣味でAndroid/iOSアプリを作成しているアニメオタクです。
Webサービスも作れたら楽しそうだなーという思いとWebサービス作ったことないというくだらないコンプレックスを解消したいという微妙な動機でWebサービスを開発してみました。

Android/iOSアプリはライセンス料以外は無料で開発/公開をしていたので、Web版もできるだけ無料で公開することに決めました。

#利用した技術

- PHP
- Javascipt
- Laravel
- Laravel Mix
- Vue.js
- Vue Router
- jQuery
- Bootstrap Material Design
- heroku
- postgres
- Firebase

#楽したポイント

各技術利用時に楽したなーと思ったポイントをまとめておきます。

## Laravel Mix

PHPで簡単な開発はした経験があったため、PHPで一番人気がありそうなLaravelをフレームワークとして選択しました。

そんな中でフロントエンドは古き良きに従ってjQueryを利用する手もあったのですが、どうせなら新しいことにも手を出してみたいと思いLaravelの公式ドキュメントなどを読んでいると[Laravel Mix](https://readouble.com/laravel/5.4/ja/mix.html)を見つけることができ公式ドキュメントに記載されているとおりにまったり実行してみたら動いたのでこれは楽だ！と思い採用しました。

Java/Kotlin/Objective-C/Swiftでコンパイルを経験しているためか下記コマンドで毎回コンパイルをしてくれるというのも違和感なく理解できました。

```
npm run watch
```

https://readouble.com/laravel/5.4/ja/mix.html

## Vue.js + jQuery

ReactかVue.jsかで正直迷ったのですが、Vueの方が学習コストが少なそうだったためVueを選択しました。

ReactはReact Nativeでサンプルアプリを作成したくらいしか触ったことがないため、もしかしたらReactの方が楽だった可能性もあるかもしれません。

jQueryとの共存もVueは特に悩むこともなく自然にできたので苦労することはまったくありませんでした。

Reactの方がVue.jsよりここが楽だよ！という情報があれば知りたいです！私、気になります！（自分では調べない）

なんだかんだでjQueryはかなり普及して資料も豊富にネットにあるためちょっとVue.jsで困ったらjQueryに浮気もできるのは安心感もありました。BootstrapのjQueryで動作している部分ありますしね。

https://jp.vuejs.org/index.html

## Vue Router 

途中まで、SPAとしては作成していなかったのですが、Vue.jsをせっかく利用しているのにSPAじゃないのもなんか残念だなーと思い途中から書き直しをしてみましたが、こちらも楽に変更ができました。ドキュメントも豊富だったので数時間でSPA化もできてとてもテンションがあがりました。

ページ遷移時にヘッダーやフッターは再描画せずに一瞬でコンテンツが変わるのは利用していても気持ちがいいですね。

https://router.vuejs.org/ja/

## Bootstrap Material Design

Bootstrapのみでサイトのデザインを作っていましたが、どうしてもボタンの色が足りずどうしようかーと迷っていた時にアプリデザインでもMaterial Designを採用しているのを思い出しました。どうせなのでBootstrap感覚で使えるBootstrap Material Designを利用しました。こちらもjsファイルを組み込むだけですぐに利用ができたのでとても楽でした。

https://fezvrasta.github.io/bootstrap-material-design/

## heroku

スマホアプリと違いWebサービスは運用するサーバが必須になります。そこはできる限り楽がしたかったのでherokuにしました。コマンド数個で簡単に構築やリリースができるのは個人開発ではすごく嬉しいですね。ミドルウェアのインストールやアップデートなどの運用作業は趣味ではあまりやりたくないですからね。今は無料プランのため30分アクセスがないとインスタンスが停止してしまいますが今の段階ではそれでいいかなーと思います。必要があれば数回ポチポチするだけで有料プランにしてスケールアップできるのは嬉しいですね。はやく無料プランではだめなアクセス来ちゃったーなんで言ってみたいです。

herokuの無料プランだと1万レコードしかデータが登録できないので注意が必要です。

2019/01/26追記：インスタンスをずっと停止せずに利用したい場合は、クレジットカードを登録をすればいいようです。無料領域が開放されて幸せになれます（1アプリ限定）

https://jp.heroku.com/

## Firebase

もう、このサービスなしでは楽して個人開発はできないといっても過言ではないかもしれませんね。
本当に楽させてもらっています。Android/iOSアプリの開発時にもデータ連携とユーザログインのために利用していましたが、Webサービスでもそれらを実現するために利用しています。

パスワードの管理や認証の実装などを全くせずに、ライブラリを利用するだけでユーザログイン画面などなどを実現できるのはとても夢が広がりますね。

https://firebase.google.com/?hl=ja


## 開発しているWebサービス（LAR）について

[LAR](https://larlar.net/)は放送時期（クール）ごとにアニメを一覧で見ることができるサービスです。
ログイン不要で自由にアニメの一覧が作成できる「おすすめアニメメーカー」などの機能があります。

- 放送クールごとの一覧表示
- [おすすめアニメメーカー](https://larlar.net/recommend_maker)
- お気に入り表示（ログイン後のみ）
- MY番組表表示（ログイン後のみ）

LARは、もともとスマホアプリが先にリリースされているため編集機能はスマホアプリで行うことができます。
（今後利用者が増えればWEB版にも編集機能を追加します）

https://larlar.net/

### おすすめアニメメーカー利用例

おすすめアニメメーカーを利用すると下記のような一覧が簡単に作成でき、Twitterに投稿することができます。

- [2018年秋(10月~)おすすめアニメ](https://larlar.net/recommend/2018%E5%B9%B4%E7%A7%8B(10%E6%9C%88~)%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%82%A2%E3%83%8B%E3%83%A1/3944,3941,3999,3968,3970,3938,3947,3956,3959,3963,3986,3967,3960)

- [暇な時に見返したいアニメ](https://larlar.net/recommend/%E6%9A%87%E3%81%AA%E6%99%82%E3%81%AB%E8%A6%8B%E8%BF%94%E3%81%97%E3%81%9F%E3%81%84%E3%82%A2%E3%83%8B%E3%83%A1/1880,1984,1522,641,2005,182,1792,637,1960,1384,874,1127,2088,451,1938,2809,2412,1904,670,2097,968,1306,2165,1307,3880,1905,199,1308,1356,1310,122,624,568,1929,679,1164,2663,124,46,799,995,747,996,1966,214,376,694,1501,173,1827,1940,1941,755,1236,1688,1481,1836,308,653,819,185,10,441,1435,1539,1650,1838,2084,1864,1950,149,830,1922,1973,1545,1729,1572,1549,18,2058,723,671,190,1259,2025,15,1491,255,1098,419,628,1216,3886,2851,168,2231,990,261,296,1851,2577,2527,575,1395,368,578,1531,330,430,1120,1359,264,1644,1854,175,433,585,1239,1613,1723,1125,381,3907,1861,2050,1510,943,2142,2471,1198,2501,718,2089,1140,887,664,1975,324,515,2731,1010,252,429,174,1672,2063,1936,1565,2090,1850,1900,2069,169,1766,1835,1647,939,2045,270,1071,1686,1479,997,1180,65,656,1194,1791,226,1999,1942,268,542,2281,577,1227,2010,500,423,43,1042,343,3254,1077,238,16,1757,1474,764,1597,1915,348,266,1101,1100,1933,1987,746,1719,167,488,5,1875,1928,287,512,576,233,19,3893,42,347,2,593,2004,1495,334,2148,1199,511,386,4046,4047,4045)

- [初心者に自信をもって勧められるアニメ](https://larlar.net/recommend/%E5%88%9D%E5%BF%83%E8%80%85%E3%81%AB%E8%87%AA%E4%BF%A1%E3%82%92%E3%82%82%E3%81%A3%E3%81%A6%E5%8B%A7%E3%82%81%E3%82%89%E3%82%8C%E3%82%8B%E3%82%A2%E3%83%8B%E3%83%A1/1880,1522,641,755,10,441,830,1545,1549,1259,1395,4045,175,4047,3907,1510,2471,2501,1975,1850,1900,1647,1479,1180,423,3254,238,1757,1474,764,266,1100,42,334,2580,859)