reducerは現在のstateとactionを受け取り新しいstateを返すpureなfunctionである。

actionオブジェクトの作成
actionオブジェクトは必ずtypeというkeyを持つオブジェクトとして定義しなければならない
type以外にもreducer内で処理する際に必要なpayloadをセットしても良いが、type属性はマストでセット

storeの持っているdispacth関数でactionをreducerにdispatchする
reducerの引数に自動的に渡るactionオブジェクトを使って、type属性で条件ワケして新しいstateを返す。
しかしここで注意なのが、global stateをmutableiに操作しないこと(以下はダメな例)

まず、古いstateのcloneを作成し、更新部分のみをupdateする

ES6の文法で用いるspread-operatorを使うことでかんたんにstateのcloneを作成できる
subscribeはstateがupdateされるたびに自動的に呼び出され、コールバック内の処理が実行される
