SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

アイデアをすぐ形に! K5 Playgroundで開発するクラウドネイティブな最新Webアプリ(AD)

Webアプリは会話するスピードで開発しよう~ReactやBFFで高速にプロトタイピングする技術

アイデアをすぐ形に! K5 Playgroundで開発するクラウドネイティブな最新Webアプリ 第5回

  • X ポスト
  • このエントリーをはてなブックマークに追加

FluxでモックAction CreatorやモックStoreを作成しよう(2)

方法1. モックAction Creator

 Action Creatorで、ダミーのActionを生成して dispatch() に渡します。実際はAPIやDBをコールしませんが、コールしたと仮定して、結果をActionという形式で dispatch() に渡します。

const ActionCreators = {
  getArticle: () => Dispatcher.dispatch({type:'type1', data: {id: 1, text: 'How to use...'}}),
        :
}

 モックAPIであっても物理的なAPIが存在する場合、APIの設計に多少の難があったとしてもフロントエンド側で無理をしてしまいがちです。モックAPIより前の段階でモックAction Creatorを作って試行錯誤することで、フロントエンド内部の設計を洗練させることができます。

モックAction Creatorによるネットワーク透過性

 試作段階でデモを行う際に、ネットワークの影響を排してアプリの振る舞いを固定したい場合はないでしょうか。次はモックAction Creatorを使ってあらかじめ取得したツイートを利用する例です。

import mockTweet from `../mock/tweet.json`; //あらかじめ取得したTweet
const ActionCreators = {
  fetchTweet:() => Dispatcher.dispatch({type:'foo', data: mockTweet}),
    :
}

 ネットワークの状態に応じて、APIから取得するかモックデータを使うか、切り分けることもできます。以下はAPIがエラーの時だけモックデータを使用する例です。

fetchTweet:() => api.get(url)
  .then(res => Dispatcher.dispatch({type:'foo', data: body}))  //APIで取得したTweet
  .catch(Dispatcher.dispatch({type:'foo', data: mockTweet})) //事前に取得したTweet

 あらかじめネットワーク状態を設定して処理を切り替えることもできます。

fetchTweet:() => isReachable
  ? api.get(url).then(body => Dispatcher.dispatch({type:'foo', data: body})) // APIで取得したTweet
  : dispatch({type:'foo', data: mockTweet}) //事前に取得したTweet

方法2. モックStore

 Viewに表示させるデータを初めからStoreに格納しておく方法です。具体的にはStoreの getInitialState() の戻り値にモックデータを設定します。

class Store extends ReduceStore {
  getInitialState() {
    return [{id: 1, text:''}, {id:2, text: ''}, ...];
  }
  :
}

 モックStoreは、柔軟性はないもののこれまで紹介した中では最も高速にViewを構築できる手法と言えるでしょう。

 ReactとFluxを使うとアプリのViewから状態(Store)や操作(Action Creator)をきれいに分離できます。フロントエンドのあらゆる要素をコンポーネント化し、柔軟にモックと本物を切り替えられるため、プロトタイプから本番まで連続的に開発を進めることができます。

次のページ
どのモック手法を使えばよいか

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
アイデアをすぐ形に! K5 Playgroundで開発するクラウドネイティブな最新Webアプリ連載記事一覧

もっと読む

この記事の著者

藤田 壮吉(富士通株式会社)(フジタソウキチ)

 富士通株式会社に入社後、会計ERP、機械学習、WebAPI、フロントエンド関連の開発に従事。企画・開発・教育・講演まで幅広く活動している。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/10741 2018/03/30 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング