野球観戦日記を作成できるWebサービスをリリースしました
フィヨルドブートキャンプの最後の課題「自作サービスをリリースする」として、プロ野球(NPB)の観戦日記を作成できるWebサービス「My Ground」をリリースしました。
使っていただけると嬉しいです!!
今日はサービスの紹介と開発の振り返りを書きます💪
なぜこのサービス?
自分が欲しいものを作りました。
私は広島東洋カープを応援することをライフワークにしており、球場で観戦することも好きです。近年はコロナや自分の経済事情であまり足を運んでいませんが、球場で観戦するのは家で中継をみるのとは違った楽しさがあります。
球場で観戦したときはちょっとした感想を写真とともにTwitterにつぶやいて、関連するニュース記事をいいねしたりしますが、私のいいねはカープ関連のニュースでいっぱいなので、観戦した日のニュースがどれなのかわかりません。(※裏アカでやっています)
誰かの2000本安打などのメモリアルな出来事は記憶に残りますが、菊池涼介の好守のことが書かれているとそんなことは日常なのでいつのだっけ?となるわけです。
また、試合の感想といっしょにその日の試合結果をみたいと思っていました。観戦日記をブログに書いて公開していたこともありましたが、手動でスコアを貼ったりするのが面倒になりました。そこでこのサービスです。
利用方法
概要
会員登録・ログインすると観戦日記を作成・編集・削除することができます。
画面と操作
トップページ
観戦日記の作成
次の操作をして観戦日記を作成することができます。
1. カレンダーから試合を選択するとスコア等の試合結果が表示される
観戦日記の作成画面は、まずこのようにカレンダーが表示されます。
下線がついている日が試合のあった日(試合データが保存されている日)です。
日記を書きたい試合の日付をクリックすると対戦カードが表示されます。
試合を選択すると、試合データの下に入力欄が表示されます。
2. 感想と関連ニュースを保存する
試合の感想と関連ニュースのリンクを入力し保存すると日記が作成されます。
リンクを保存する場合は、「リンク追加」ボタンを押してください。(※「リンク追加」ボタンを押さずに「保存」ボタンを押すとリンクは保存されません)
「リンク追加」ボタンを押すと、以下のように関連記事にタイトルが表示されます。
なお、試合終了から30分~1時間経過後を目処にカレンダーから試合を選択できるようになります。
できないこと
- 写真の保存
- 自分以外のユーザーの観戦日記をみること
開発について
リポジトリ
https://github.com/udaikue/myground
開発環境
- Ruby 3.0.2
- Ruby on Rails 6.1.5
- PostgreSQL 14.1
- Vue.js 2.6.14
- Bulma
- RSpec
- Heroku
感想
自作サービスとして何を作るか考えるところから、リリースに至るまで大変でした。
と書くと、自分だけが大変だった風に聞こえるなぁと思い違和感が...🙄
たくさんの人を巻き込んで作ってもらった感じがするので、自分で作ったけど自分で作ったわけじゃないよなぁ...というのが正直な感想です。
思いつくままに書いたら長くなってしまうので、なるべく簡潔に考えたこと・知ったことを書いていきまぁす!
何を作るか問題
人によっては最初に出した案ですぐ決まりますが、私の場合は最初はフィヨルドブートキャンプ(以下、FBC)の人に使ってもらえるサービスを作りたいという思いがあり、自分の趣味に全振りしたサービスを作ろうとは考えていませんでした。
考えはじめてからどんなサービスを作るか決めるまでに大量のボツ案を生み出してしまってもどかしさもあったし、アドバイスを受けるとこうやって考えて判断するのか〜、おもしろいけど難しいからひとりじゃできないなぁなどと思いました。
結果的にリリースまでめちゃくちゃ時間がかかってしまい、そんなときに「好きなものを作っている」という気持ちがプラスに働いたので、今となっては自分で使いたいものを作ることにしてよかったと思っています。
できないのにあれこれしたくなる
好きなものを作っているとあれこれしたくなるので、最低限の機能に絞ることが大事。と聞いてもなかなか決められませんでした。
いつおわらせる(リリースする)かはとても難しい。まわりの人へ相談することで自分の考えも整理されるし客観的なアドバイスももらえるので、やっぱり質問は偉大ですネ。
しかしこの、できもしないのにあれこれしたいという気持ちだけは強いのは自作サービスやプログラミングに限ったことじゃなくて、私の人生において常にこうなんだよなあ..........
accepts_nested_attributes_for
メソッドを使った
ニュース記事のリンクを保存するところで、diariesテーブルと同時にlinksテーブルも操作したかったのでaccepts_nested_attributes_for
メソッドを使いました。これ難しかった。
この件に限らずペアプロして教えてもらいまくったので、このサービスは半分以上まわりに作ってもらったような感覚でいます。
ActiveRecord::NestedAttributes::ClassMethods
gemのusername_not_reserved_validator
ユーザー情報としてユーザー名を登録できるようにし、パスにも/:username/diaries
などとユーザー名を使うようにしています。ユーザー名として登録できるとまずい単語があるよな...と気づいて調べているとgemがあることを知りました。ありがてぇ
感謝の気持ちが自然と湧き上がってきたのは久しぶりのことでした。(冗談です)
環境の違い、データの取り扱いに混乱した
development環境、test環境の違いを今まで深く考えてなかったことがわかりました...。初めてデプロイの作業をして、環境のことを考えて混乱しました。
あとは本番環境でも使いたいチーム名や球場名などのデータとテストデータをどうやってわけるのか等に悩みました。
デザインやユーザーインターフェースの難しさがすごい
デザインについてきちんと勉強したことがないので当たり前といえばそうなんですが、何をどうすればサービスの見た目がもっとよくなるのかが自分の想像以上にわからなかった。
「これをこうしたいけど方法がわからない」もたくさんあったけど、その前のレベルの「なんか気に入らないんですけど...(でもどうやったら良くなるかわからない)」ということが多くてひとりで何もできないことを実感しました。結局プロ(デザイナーであるメンターの方)にほとんどやってもらいました...
CSSの課題はこれまでにやってきたけど忘れたしBulmaを使うことは別の難しさがあったし、この経験のおかげでデザインの超基本的なところを学びたいという気持ちが生まれました。
チーム開発とは違った楽しさがある
自作サービスを作る前にチーム開発を経験しました。実務に近いということでチーム開発も楽しくて難しくて苦労しました。
自作サービスは何もないところからはじまるし自由さもあるので、チーム開発とは違う難しさと楽しさがあると思いました。どちらの体験も必要ですね〜。
総復習だった
ここまでFBCのプラクティスをこなしてきたけど理解できたと言えることがどれだけあるんだろうか、自分は何か基本的で根本的な知識が欠けてるな、と思いながらもプラクティスを先に進めないといつまで経っても卒業できないし...という葛藤があって、それらの問題についてじっくり考えていませんでした。
自作サービスの実装をはじめると勉強したはずなのにわからないことが多くて、途中でどうにもならんと思ってVue.jsの復習をはじめたりして開発がとまってしまい時間がかかりました。 先に進めるためには今まであまり考えずにいたことから逃げられなくなって、自分のことを見つめ直すのはけっこう気が重いものでした。
ですが、復習の時間をとれたこと(とらざるを得なくなったこと)については満足しています。これまでのプラクティスできちんとできていれば...と思ったことは多々ありましたが、やっぱり必要に迫られたほうができるので、自作サービスが復習のきっかけになってそこからもっと知りたいという気持ちになり、勉強することが前より楽しくなった気がします。
どこまでわかればいいの??
上に書いたように一度やったはずなのに覚えてないとか人に聞くまでわからなかったというのは日常茶飯事でしたが、それに加えて、これまでのプラクティスで勉強してないのでわからなくて当然では?みんなどうやったの?とかみんないつ知ったの?ということも多々ありました。
例えばMVCモデルについて理解しておかないとあとで困るであろうことは想像できます。だけどそれ以上になると自分で判断できないことが多くて、これは今すぐ理解しておかなきゃマズいのか、何度か出てきたら理解できたというレベルでいいのか誰か教えてーとよく思っていました。そりゃ知ってることは多ければ多いほどいいでしょうけど...
未知のことに対して不安になり、終わりがわかってると安心できるんですよね。だから「これみんな知ってるんですか?」とみんなって誰やねん、というふわっとした質問をよくしていました。
経験しないとわからない
振り返るともっとこうやればよかったかなぁと考えてしまうことばかりあります。学習面だけに限らず、人との関わり方も含めて。いろんな人にもっと相談しておけば、今になってわかったことをもっとはやく知っていたかもしれません。
だけど悔やむ気持ちよりも、いくら他人に言われたところで自分が経験することに勝るものはない(ので最初からうまく事を運ぶのはムリ)という気持ちのほうが大きいです。できなかったことへの言い訳に聞こえるかもしれませんが、、、これからも知っていると経験するの間の壁を越えていきたいものです。
これからやりたいこと
自作サービスに取り組んでいたここ数ヶ月は濃い日々だったので思い出話はまだありますが、長くなってしまうのでこのへんで。
せっかく自分のために作ったので、よりよくなるように今後も改善できればいいなと思っています。 自分の好きなチームを登録して「○勝×敗△分」みたいなシーズン成績を表示させたいです⭐️
Canvaを使って自作した素人味溢れるロゴは、最初は外注でもしてもっとかっこよくしたいと思っていましたが今ではなんだか愛着が湧いてきました。
でも今、何よりもやりたいのは「球場に野球みに行く」かな!!