サービス紹介
私は趣味でバンドをやっているのですが、練習場所のスタジオを選ぶときは大体普段行く場所から選んでいます。
スタジオも食べログみたいに口コミ等から探せればいいのになあ、と感じたのでDIY精神で作ってみました。
スタサーチ
https://sta-search.herokuapp.com/
バンドスタジオを路線名or駅名、スタジオ名、特徴、価格帯などから絞り込み検索することができます。
ユーザー登録することで口コミ投稿やスタジオのお気に入りリストに入れることもできるようになります。
作ってみた感想
制作期間はRailsの勉強から始めて50日間くらいです。ProgateとRailsチュートリアル各1週ずつしていきなり制作に取り掛かりました。
Webアプリケーションを公開するのは初めてだったのですが、意外となんとか形にすることができました。
HTML/CSS/Railsはもちろん勉強になりましたが、APIについてもかなり勉強になりました。
Google Places APIを使うことで初期データとして多数のプレイスを登録することができたり、写真まで持ってくることができました。
個人的に音楽が好きなので、次回はSpotify APIを使った何かを作ろうと検討しています。
反省
・テストを書くべきだった
学習コストがかかること、また早く完成させたい気持ちから今回テストを書かずに実装に入りました。
結果は一つ変更するたびに至る場所でエラーが出る惨状。急がば回れとはまさにこのことです。。。
Railsチュートリアルで学んだテストドリブン開発は安心感があってよかったと今更気づきました。
RSpec勉強しなきゃ…と強く感じております。
・もっと詳細に設計するべきだった
一応初めに簡単なワイヤーフレーム、URL設計、ER図を作ってから制作に取り掛かりました。
しかし、途中からあれもこれもと色々な機能を追加して初期設計とは大幅に異なった物が出来上がりました。
もっと実装したい機能を真面目に検討してから製作に入ればよりスムーズに進んだと思います。
もちろん、最初から全ての機能を上げるのは難しいと思いますが、次回からはより機能検討に時間を割くべきだと感じました。
・開発環境と本番環境でDBを統一するべきだった
今回開発環境では初期設定DBのSQLite3を使用しました。
デプロイまで特に不都合を感じていなかったのですが、いざHerokuにデプロイした後のデータ移行にかなり手間取りました。
結果としてCSVに書き出してインポートして対処しましたが、初めから開発環境でもPostgreを使っていればpg:pushコマンドが使えて便利だったと感じました。
・Gemの選定をしっかりするべきだった
Deviseを使うかSorceryを使うか、Will_paginateを使うかKaminariを使うかといった話です。
今回認証は勉強も兼ねて自分で実装、ページネーションはRailsチュートリアルで使ったWill_Paginateを使いました。
認証はともかく、ページネーションは明らかにKaminariの方が多機能で失敗した感が強かったです。
ここらへんは経験がモノを言う世界だと思うのでもっと色々なGemを触って吟味できるようになりたいと思います。
・Bootstrapは3を使うべきだった
あまりフロントエンドコーディングが得意ではないので、Bootstrapにおんぶにだっこで乗り切りました。
バージョンは新しいほうがいいっしょwくらいの軽い気持ちでBoostrap4を選択したのですが、意外にも3と4で変更点が多いので困惑することが多々有りました。
特にcol-xs-xxがcol-xxになっているのには相当苦しめられました。xsサイズでもレイアウト変わらなくてかなりハマりました。。。
初心者のうちは文献が多いCSSフレームワークを選択するのが賢いと思います。
終わりに
プログラミング学習に関してはインプットも大事ですが、アウトプットも同等か、それ以上に大事だと感じました。
一通りのインプットが済んだ時点でまずは手探りでなにか作ってみるといいかもしれないですね。
この記事が私と同じような駆け出しのエンジニアの参考になればと思います。