はじめに
はじめまして、yamamotoooonと申します。
今回は個人製作アプリとして草野球の募集掲示板を作成しました。その中での技術選定やよかった点、また悪かった点などを記録としてまとめます。これがどなたかの参考になれば幸いです。
実際のURL
触ってみていただけると嬉しいです。
前提
なぜ草野球の募集掲示板を作成したのか?
以下の理由で草野球の募集掲示板をテーマに選びました。
-
0→1での開発経験を積む
当時は上流工程の経験が浅かったため、技術選定やアーキテクチャ設計の経験を積みたかった。 -
CI/CDを個人プロジェクトで活用
当時参画していたプロジェクトでJenkinsを使用しており、それ以外のCI/CDツールを触ってみたかったため。 -
UIの良い草野球の募集掲示板が欲しかった
自分自身が草野球をしており、広告がなく、直感的で見やすい募集掲示板が欲しかった。
システム概要
簡単なシステム構成図は上記の通りです。バックエンドとフロントエンドを分離し、デプロイ環境に適した設計を心掛けました。
選定技術
個人製作において最も重要な課題の一つはコストだと思います。
理想はAWSやGCPでのホスティングでしたが、費用面で断念しました。そのため、既存のリソースを活用する方向で進めました。
バックエンド
Laravel/PHP
- 選定理由
一度クローズドのWEBアプリを個人製作した際、さくらサーバーにLaravelをデプロイした経験がありました。さくらサーバーは既に契約しているので、ほかの言語触ってみたいという気持ちを押し殺し今回もバックエンドはLaravelに決めました。
さくらサーバーにLaravelをデプロイする際、参考にさせていただいた記事
- 振り返り
普段バックエンドはJavaばかり触っていて、PHPは久しぶりに触ったのでなかなか苦労しました。
言語やFWの特徴を考慮した設計が必要だと改めて実感しました。
サービスとリポジトリの依存度が高すぎる形になってしまったことが反省点です。(ソースもいずれ修正していきたいと思います)
フロントエンド
Vue/TypeScript
-
選定理由
当時プロジェクトでVueを使用しており、スキルをさらに伸ばしたかったため。
TypeScriptを導入することで、型定義による開発効率向上を図ることができたため。 -
振り返り
せっかくなのでNuxtにしておけばよかったなと思いました。
あとは状態管理がうまくいっていないこと(修正したい)、
IPhoneで実機確認ができなかったためリリースしてからいくつか問題を発見しました。
CORSやsamesiteあたりにも苦しめさせられました。
CI/CD
GitHub Actions
productionブランチプッシュ時
さくらサーバーにSSHで接続し、pull
migrationファイルが追加された場合はartisan migrateを実行
こちらは別途記事を執筆したいなと考えています
その他サードパーティーなど
PUSHER
チャット機能があったためwebsocketを使用するために使いました。
websocketは今まであまり触ったことがなかったので勉強になりました。
完全に理解した記事(理解していない)
Google OAuth
ユーザビリティを考えたときにサードパーティーでのログインが1つは必要だと思いました。
個人的にも経験がなかったので勉強になりました。
自分で使ってみても便利だなと思ったので実装してよかったです。
toCのアプリであれば今の時代は必須なのかなと思います。
FCM (Firebase Cloud Messaging)
WEBプッシュ通知は実装したいと考えていたので、FCMを選びました。
ただ、safariではPWAインストール後ではないと使えないことや、PWAとしてインストールできるのかどうか視覚的にわかりにくい部分からiosでのPWAはまだ実用的ではないと感じました。
HTTP v1での実装について
よかった点
触ったことのない技術などをモリモリに使ったのでかなり学びがありました。
スクラッチでの開発経験は少なめ、ない方にとっては個人開発を1度本気でやってみるのはありだと思います。
また、自分の好きなもの、作りたいものを作成できたので非常に楽しかったです。
悪かった点
知らない技術などが多かったため、後から見直すとあまりよろしくない実装が多々あります。
一応一般公開しているアプリとしては低いクオリティになってしまったことが反省点です。
もっとしっかりリサーチをすべきだったと思います。
さいごに
だらだらとしたポエムになってしまいましたが読んでいただきありがとうございました。
これが誰かの個人開発の参考になってくれたらうれしいです!