はじめに
初めまして、Yuma Yoshidaと申します。
現在はSES企業に所属し、バックエンドエンジニアを目指しています。
少し前のことですが、2024年1月から3月末までの3ヶ月間レバテックキャンプというプログラミングスクールでPHPやLaravelなどを学習していました。
その成果物として作成した、好きな音楽を簡単に共有できるWebアプリMeesicを紹介します🎉
Meesicとは
Meesicは、好きなアーティストのリストを作成し、簡単に共有することができるWebアプリケーションです。
URL
GitHubリポジトリ
使い方
- 編集ページの検索フォームからアーティストを検索
- 検索結果の中から好きなアーティストをアーティストリストに追加
そして、ホーム
タブのURLを共有することでアーティストリストを簡単に共有できます。
作成経緯
音楽関連のWebアプリを開発したいと考える中で、最初に思い浮かんだアイデアは「バンドリスト」というサービスでした。そこで、既に存在しているか確認するため、Google検索したところ1件のYahoo知恵袋の質問がヒットしました。
この回答の中では以下のWebアプリが紹介されていましたが、もう機能していないようでした。
また、最近POTOFUやlit.linkなどのSNSリンクまとめサービスが普及し始めているので、これらのサービスのように好きな音楽のリストを簡単に共有できることを目指して作り始めました。
技術構成
フロント・クライアント技術
- HTML
- CSS
- Tailwind CSS
- JavaScript
サーバーサイド技術
- PHP 8.2.16
- Laravel 10.43.0
DB
- MariaDB
インフラ/その他専門技術
- Amazon Lightsail
- Spotify Web API
工夫した点
Spotify Web APIとの連携
アーティスト追加時、Spotifyの各アーティストに紐づいているIDのみをデータベースに保存しておき、アーティスト名やアーティスト画像などの詳細なデータは、Spotify Web APIからアーティストデータを取得することで、アーティスト情報を正確に検索・保存し、常に正しい音楽情報を共有できるようにしました。
この仕様は便利な反面、Spotifyに登録されているアーティストしか追加できないという問題があります。そこで、アーティスト検索フォームの下にアーティスト名を手入力で追加するフォームも用意しました。
ゲストログイン機能
新規登録する手間を省く目的でゲストログイン機能を実装しました。
実装した理由としては、このMeesicというWebアプリはポートフォリオとして公開する予定だったため、メインユーザーは採用担当者の方であると考えたからです。
ゲストログイン機能は以下のような仕様にしました。
ゲストログイン機能の仕様
ゲストログインボタンをクリックした時
- ゲストユーザーが新規作成される
- 作成されたゲストユーザーでログインする
さらに、ゲストユーザーはプロフィールの編集はできないように権限を設定しました。
ゲストログイン機能で工夫した点
ゲストユーザーが増え続けないようにした
ゲストユーザーを新規作成する仕様にした場合、使用されていないゲストユーザーのデータが増え続けるという問題がありました。
そこで、ゲストユーザーの自動削除機能を実装しました。
ゲストユーザーの自動削除の仕様
ゲストユーザーの削除は以下のような流れで、cronジョブとして自動実行されます。
具体的には、cronジョブがLaravelのschedule機能のprune
メソッドを呼び出すという仕様です。
- ゲストユーザーを自動削除するための
prune
メソッドが1日1回のスケジュールで実行される -
prune
メソッドが実行された時点で、作成後3時間が経過しているゲストユーザーは削除される
今後の課題
- パスワードリセットができない
- 現在、パスワードを忘れた場合ログインできなくなってしまうのでメール認証を可能にして改善したい
- アーティストが追加した順にしか並ばない
- 好き度順に並び替えたり、ジャンルごとに並び替えたりできるようにしたい
今後の展望
将来的にはユーザー同士の音楽の好みをマッチングする機能や、おすすめの音楽をレコメンドする機能などを追加したいです。
さいごに
最後までお読みいただきありがとうございました!
もし興味がありましたらゲストログイン機能を試してみてください🤗
URL
GitHubリポジトリ