Visionページの構築過程は、抽象的な概念をブラウザ上にマッピングする際の典型的なアンチパターンを含んでいた。今後のWeb制作における技術的な反省点として、この試行錯誤の足跡と無駄にしたプロセスを記録しておく。
事の発端は、「Primitive spectrum」という視覚的テーマや、ユング心理学における『ヨブへの答え』のような深層心理へのアプローチを、いかにしてWebのUIに落とし込むかという試みだった。表現したい概念自体には一定の方向性があったが、それをフロントエンドの実装へと変換する際の選択を誤った。
具体的には、Next.js環境下においてFramer Motionを過用し、スクロールに連動した複雑なアニメーションや、多層的なテキストのフェードイン処理を組み込もうとした点だ。初期の試作段階では、ユーザーのスクロール位置(ScrollY)を細かく監視し、文字単位や単語単位で遅延表示(Stagger)させるための状態管理(State)が大量に記述されていた。
結果として起きたのは、レンダリングコストの不必要な増大と、ブラウザのスクロール時の微細なカクつきである。「Neo-Retro」の文脈に沿ったノイズ感や、本質的な「静寂」を画面上で表現したいにもかかわらず、裏側のDOMツリーとReactのライフサイクルは常にせわしなく再計算を繰り返しているという自己矛盾に陥っていた。数日間を費やして数百行のモーション制御コードとコンポーネント分割を行ったが、結局のところ、ユーザーの視覚体験を向上させるどころか、ただ情報を読み取りにくくしているだけだった。
最終的に、Framer Motionの複雑なVariants(状態定義)の大部分を破棄した。Tailwind CSSのプレーンなユーティリティクラスによる静的なレイアウト構成と、ページマウント時のごく基本的な不透明度(Opacity)の遷移のみにダウングレードするリファクタリングを実施している。時間をかけて書き上げ、そして消し去った数百行のコードは、実質的に無駄な工数であったと言わざるを得ない。
この一連の失敗から得られる教訓は、「コンセプトの抽象度や重さと、フロントエンド実装の複雑さを比例させてはならない」ということだ。理念が深淵であるほど、出力されるHTMLとCSSは物理的に軽く、プレーンな状態に留めるべきだった。今後のプロジェクトにおいては、初期段階からリッチなアニメーションライブラリに依存するのではなく、まずはJavaScriptが全く動作しない状態でも成立する、素のタイポグラフィと余白の設計を確定させるアプローチを徹底すべきだろう。
