React + Redux + Firebase + Material-UI で、タスク管理アプリを作ります。Reduxの公式ページに載っているサンプルを元に、react-reduxで作られたアプリにfirebaseとMaterial-UIを導入します。
目次
- 準備
- STEP 1 : 誰でも読み込み・書き込みできるタスク管理アプリを作る
- STEP 2 : ユーザ認証を行なって、自分だけが読み込めて書き込めるタスク管理アプリを作成する
- STEP 3 : 他のユーザのタスクが見れるタスク管理アプリを作成する
- STEP 4 : Material-UIの導入
- ソースコード
- 環境
- 依存ライブラリ
- 参考
準備
STEP 1 : 誰でも読み込み・書き込みできるタスク管理アプリを作る
FirebaseをReact+ReduxのExampleアプリに統合します。まずはタスクデータをFirebase Realtime databaseに保存し、誰でも書き込めて読み込めるようにします。
- STEP 1での成果物
- React + Reduxプロジェクトの準備
- Firebaseプロジェクトの作成
- firebase-toolsのインストールとfirebase init
- Realtime Databaseへのデータの事前登録
- firebaseとreact-redux-firebaseモジュールのインストールと設定
- Firebaseからタスクを読み込む部分の作成
- getVisibleTodosの更新
- redux-thunkの導入とタスク追加処理の修正
- Firebaseへのデータ送信前後でメッセージを表示する
- タスク完了フラグの切り替え処理の修正
- リファクタリング : actionsの分割
- Firebaseアプリの公開
STEP 2 : ユーザ認証を行なって、自分だけが読み込めて書き込めるタスク管理アプリを作成する
Firabaseのauthenticationを導入して、ユーザごとにタスクを出し分けます。ユーザは自分のタスクだけが見れて、自分のタスクだけに書き込むことができます。
- STEP 2での成果物
- Firebaseのログイン機能の有効化
- 事前準備 : コンポーネント階層の変更
- Firebaseを利用した認証機能の作成(1) actionとreducer
- Firebaseを利用した認証機能の作成(2) view
- タスクの読み込みパスの変更
- タスクの書き込みパスの変更
- データベースルールファイル(database.rules.json)の変更と反映
- Firebaseアプリの公開
STEP 3 : 他のユーザのタスクが見れるタスク管理アプリを作成する
Cloud Functions for Firebaseを使用して、新着/更新があったタスクを表示します。タスクを選択すると、タスクを作成/更新したのユーザのタスク一覧が開きます。 タスク一覧の画面は、react-routerを使ってユーザごとに一意のパスにします。
- STEP 3での成果物
- データベースルールファイル(database.rules.json)の変更と反映
- react-router-domのインストールと設定
- ナビゲーションリンクの作成
- パスで指定されたユーザIDでタスクを読み込む
- ログインしたユーザ自身のタスク以外は変更できないように修正する
- react-router v4使用時、ページ遷移時にactionをdispatchする
- react-redux-firebase使用時、ログアウト時にデータが消えないようにする
- Cloud Functions for Firebaseの導入とfirebase init functionsの実行
- Cloud Functions用の最初のコードの記述とデプロイ
- Cloud Functionsを使用して、タスク作成時に"最近の更新"へデータを追加する
- Cloud Functionsを使用して、タスク更新時に"最近の更新"へデータを追加する
- Cloud Functionsを使用して、"最近の更新"の件数を制限する
- "最近の更新"を表示する
- リファクタリング : componentsとcontainersの階層化
- リファクタリング: 作成日時と更新日付の追加
- Firebaseアプリの公開
STEP 4 : Material-UIの導入
Material-UIを導入して、見た目を整えます。
- STEP 4での成果物
- Material-UIのパッケージのインストールと設定
- Material-UIのButtonを使用する
- Material-UIのTextFieldを使用する
- Material-UIのListを使用する(最近の更新編)
- Material-UIのListを使用する(タスク一覧編)
- Material-UIのCircularProgressを使用する
- Material-UIのTypographyを使用する
- Material-UIのPaperを使用する
- withStylesによるスタイルの適用(最近の更新編)
- withStylesによるスタイルの適用(タスク一覧編)
- Material-UIのAppBarを使用する
- Material-UIのMenuを使用する
- Material-UIのAvatarを使用する(最近の更新編)
- Material-UIのAvatarを使用する(ログイン・タスク一覧編)
- Material-UIのDrawerを使用する
- Material-UIのSnackbarを使用する
- タスクの送信状態の表示
- Material-UIのテーマカラーを変更する
- ロゴの作成と表示
- Firebaseアプリの公開
ソースコード
ソースはgithubで公開しています(急いで作ったのでブランチが汚いです。。)。各STEPでの成果物のリンクを貼っておきます。
環境
依存ライブラリ
package.json
より抜粋
"@material-ui/core": "^3.4.0", "@material-ui/icons": "^3.0.1", "firebase": "^5.5.0", "moment": "^2.22.2", "react": "^16.5.0", "react-dom": "^16.5.0", "react-redux": "^5.0.7", "react-redux-firebase": "^2.1.8", "react-router-dom": "^4.3.1", "react-scripts": "1.1.5", "redux": "^4.0.0", "redux-thunk": "^2.3.0"
参考
多くのサイトを参考にさせていただいていますが、今回のチュートリアルはこの講義に多大な影響を受けています。