自主制作サイトの作成にあたり考えた事、大変だった事
この記事では、自身で作成したWebサイトの作成にあたり、考えた事、大変だった事等を主にフロントエンド側を紹介します。
作成サイトについて
サイト名はMoneyFlow
といいます。
家計簿管理アプリとなります。
作成理由
初めてSPAシステムの作成を行いました。
その際、実践的なものが一番良いと思い、ログイン機能とCRUD機能があるシステムを作ろうと思い作成しました。
サイト的にはまだまだ不十分ですが、勉強にあたりたくさんのことを学ぶことができたシステムとなりました。
サイトへのアクセス
MoneyFlowへアクセスできます。
使用する際は、下記IDをご使用ください。
USERID : user1@gmail.com
PASSWORD : user1@123
使用技術
フロントエンド
- TypeScript
- React
- Redux
- Material-ui v4
バックエンド
- Ruby
- Ruby on rails
DB
- MySql
IDaaS
- Auth0
インフラ
- AWS
- Docker
- docker-compose
作成機能
ホーム
画面からLOG IN
ボタンを押すとログイン
画面に遷移します。
ホーム
ログイン
ログイン後、一覧
画面に遷移できます。
一覧
追加と書いてある所を押すと、入力項目が表示されます。
一覧 登録
何も入力せず追加
ボタンを押すとエラーとなります。
一覧 登録
入力後、追加
ボタンを押すと下の一覧に表示されます。
一覧 登録前
一覧 登録後
項目の右横にあるメニューバーを押すと編集・削除が選べます。
一覧
編集中
編集後
考えた事
SPAシステムを作る上でログイン後の認証済みをどこに保持させる方法
サーバーサイドシステムでは、セッションに認証済を保持させます。
しかし、SPAではクライアントで基本は動くため、セッションに保持はさせれません。
Cookieに保持されることができますが、脆弱性の観点であまりよろしくないということを知ったため、IDaaSを提供しているAuth0
を使用しました。
公式サイトを貼っておきます。
Auth0公式
認証したユーザのデータを取得する方法
どうやって認証したユーザのデータのみを取得することができるのか、処理の流れを考えました。
上記でも説明した通り、Auth0
を使用してログイン認証を行ったため、API側でログインユーザの情報は保持していません。
ですので、今回はJWT
をAPI通信時に送ることで、API側でもログイン認証を行いデータの取得を行いました。
これで直接APIのURLにアクセスしてもデータは取得できませんし、ログインしたユーザのデータしかいじることができません。
大変だった事
データの取得・保持
React,Reduxを使用する事自体初めてだったため、どうやってデータを保持するのか仕組みを理解するのに苦労しました。
データを取得して表示するまでに、2周間近くかかってしまいました・・・
時間がかかった分、画面に表示できたときはすごくうれしかったです!
APIとの非同期通信で上手く行かない時
システムを作る際、エラーとの格闘が基本かと思います。
その際、非同期通信が上手く行かないときにバックエンドが悪いのかフロントエンドが悪いのか、調べるのに苦労しました。
ある程度知ってしまえば、見つけることができるようになりました。
それまでは、何が悪いのかわからないという深みに何度かハマりました。
終わり
ここまで見てくださりありがとうございました。
今回始めてSPAシステムを作成しましたため、サーバーサイドシステムとは違う作りで苦労はしました。
ですが、それ以上にSPAシステムのおもしろさに触れることができました!
今後はさらに知識を深められるように勉強を続けていきたいと思います!!
ツイッターもやっているのでぜひフォローもお願いします!
Twitter
Discussion