0.5人月

人生と仕事が伸び悩んでるWeb系のおじさん

やさしいReduxとむつかしいSPA

ここ4ヶ月、初めてSPAと真剣に向き合ってきたおじさんには、SPAはとても難しいと思った。

SPAになり、jsonを返すだけになったサーバーサイドに含まれていたその複雑性を、フロントに押し付けられているように感じている。

フロントと言いながら、URLを設計し、ビジネスロジックを書いている。それも、UI/UXと、SEOを考えながら。

一方で、真剣にSPAに取り組む前に、ほとほと複雑に感じられたReduxのアーキテクチャとフローは、SPAでの開発の手助けをしてくれていると切に感じる。データを一方通行にするという思想、アクションを一つ一つトレースできることによるデバッグの恩恵は、他に類を見ない。

やはり、豪華で非同期まみれのjQueryの開発は、利用して取り組むときこそ素朴だが、開発はとても難しかった。それに比して、一見して感じるReact + Redux の難しさは、「SPAの複雑性」という高台に登るために用意された、「長い脚立」のようなものだろう。登る前に、地上から見上げると長くて高いので怖いのだが、きちんと高台に脚立の足をかけてやれば着実に、自分の足で一歩一歩登ることができる脚立だ。あ、やっぱ違うかもしんない。

ちなみに、目下の自分のプロジェクトでのフロントの問題は、container componentがてきとうになっている、薄くなってしまっていることだ。containerはReduxのstoreを、presentaional componentであるReactに、単に使いそうなものをそのまま渡しているような形になってしまっている。

おかげで、APIのデータ構造が、そのままpresentational componentに繋がってしまっていて、presentational componentを書くのに、APIのデータ構造さえ意識しなければいけない状況に犯されている。APIの変更の影響はほとほとでかい。

 

Webといえば、PHPフレームワークMVC2開発にばかり触れてきたおじさんには、containerを厚くするだけじゃなくて、immutable.jsでモデルも欲しい。でもプロジェクトの途中から、そんなものを持ってくるのは相当なコストだ。めんどくさい。