Laravel+Vueのアウトプットとして、WEBサービスを自作しました。
開発にかかった時間や苦労&工夫した点なども載せてますので、よければ何かの参考にしてください。
目次
以下のURLにて公開しています。
https://yutanpo-output2.com/
※AWSにて公開してましたが、現在は以下のURL(Heroku、無料プラン)にて公開しています。
https://match-herokuapp-ce828bc5f416.herokuapp.com/
(※Herokuも解約したため現在は非公開になっています)
1. サービス概要
エンジニア向けの単発案件やサービス立ち上げ案(レベニューシェア案件)を「気軽に」投稿、案件への応募ができるようにしたサービス。
クラウドソーシングサイトのオプションや入力項目などの煩雑さを軽減して、簡単かつ気軽に依頼・受注ができるように。というコンセプト
2. AWSの構成
サービスはAWSで公開をするにあたって以下の構成図のような形にしています。
<補足>
・EC2を3台、DBはRDSを使用。
・Bastionサーバーを管理用として使用(図右上のEC2)。
・メール関連はMailサーバー(図左上)を作成し使用。
・WEBサーバー(図左真ん中)やMailサーバーへの振り分けはALBを使用。
3. DB構成
MySQLを使用。AWSではRDS、herokuではJawsDBを用いています。DBの構成は以下のようになっています。
<補足>
DBテーブルのうち、users(の一部)やpassword_resetsは、Laravelの「make:auth」にて作られるデフォルトのAuthを使用しています。
4. ソースコード
ソースは以下。(Herokuのバージョン)
https://github.com/mubunryu-yutanpo/match_heroku
5. 開発環境など
a. 使用言語
・HTML
・CSS
・JavaScript
・php
b. フレームワーク
● Vue.js (2.7.14)
● Laravel(5.8)
c. 使用したツールやライブラリ等
● CSSはSCSSを使用(クラス設計としてFLOCSSを採用)
フロント開発環境として、npm、babel、webpackを使用しています。
その他ライブラリ等はこんな感じ。
6. 開発について
● ユーザー関連
ログイン・ログアウト・退会処理・パスワードリセット(カスタマイズ)・マイページなどなど
● 内容関連
案件の登録・削除・Xへのシェア・応募・コメント、DM機能などなど
をサービスの中身として実装しています。
a. 開発にかかった時間
日数として42日。135時間ほど。(実機テスト、公開までを含みます)
以前作ったサービスを一部使い回したので、時間的にはまずまず?
だといいがニャ・・・。
b. 苦労した点
○ パスワードリセット・通知等で使うためのメールテンプレートの日本語化(カスタマイズ)
色んな方法があるようで、色んなブログや、chatGPT先生にもお手伝いしてもらったものの、なかなかうまくいかず。
なんとか以下の方法で実装できたが、もうちょいサクッと作れるようにしたいな。と思った部分。
c. 工夫した点
○ HTML・CSS
・FLOCSSで設計するにあたって、開発途中からUtilityが増えてしまいがちなので、できる限り使わない。という方針で、ほぼ使わずにできた。(と思うが自信はない。。)
○ javascript(Vue.js)
・主に、Laravel側で渡されたデータをもとに表示する画面などは、Laravelのレンダリングをなるべく使わず、(Vueで)コンポーネント化するようにした。
・API(Ajax)を使用し、非同期でデータを取得し、表示するようにしている。
例 :1
(見づらいですが)DMが存在する際、まだ未読のものは「メッセージを確認してください」と赤文字で表示されるが、そのメッセージを確認する(開く)と、「既読」のようになる。
例 : 2
案件内のコメントもAjaxを使用し、非同期で表示している。コメントは即時反映される。
○php(Laravel)
・ログインはメール認証、プロフィール変更時、応募完了時などの通知もメールを送る形にしている。
・実務では不可欠。ということで、エラーハンドリングをしっかり各メソッドに。
・単体&機能テストを導入。テストはPHPUnitを使用。
7. まとめ
今回、こういったサービスを開発・公開するにあたって、工夫して上手く出来た!と思える部分ももちろんあったが
その反面、もっと良くできるよなー。。と感じながら開発した部分も多かったため、そういった部分の改良、「質を上げる」ということを今後ももっと意識しながらやりたいと思う。
また、やはりこれ系のサービスは「世に出て」ビジネスの役に立ってなんぼ。
とも思うので、決済なり課金なりを含めて実際に利用して役に立つようなレベルのものを作りたいと思った。