MENU

Formik — Reactフォーム黎明期を支えた歴史的フレームワーク

Formik アイキャッチ
Formik

Formikは2018年にJared Palmer氏が公開した、React向けのフォーム状態管理ライブラリである。Reactで複雑なフォームを書くにはreduxやコンポーネント状態の駆使が必要で煩雑だった時期に登場し、「フォームの値・タッチ状態・エラー・送信状態を一元管理する」という枠組みを提供することでデファクトの地位を獲得した。Yupとの組み合わせは2018〜2021年頃のReact界で黄金パターンとされ、エンタープライズフォーム実装の定石となった。本記事ではFormikの設計、歴史的意義、現在の立ち位置を整理する。

目次

この記事の目次

  1. Formikを構成する3つの柱
  2. 全盛期から保守停滞への流れ
  3. 今もFormikを使う場面
  4. React Hook Form・TanStack Formとの比較
  5. まとめ

Formikを構成する3つの柱

Formikを構成する3つの柱

Formikの設計の根幹は「Reactフォームに必要な状態を全て一つのオブジェクトで管理する」というアプローチだ。values、errors、touched、isSubmittingという4つの状態を内部で持ち、各フィールドのonChange/onBlurイベントを通じて自動更新する。開発者はとラッパーを書くだけで、フォーム特有の煩雑な状態管理から解放された。

もう一つの強みがYupとの統合である。validationSchemaプロパティにYupオブジェクトスキーマを渡すと、Formikが自動的に検証を走らせ、errorsとtouchedに反映してくれる。「スキーマを書けばエラー表示まで自動で組み上がる」という体験は当時としては画期的で、Reactフォーム実装のベストプラクティスとして広く受け入れられた。

全盛期から保守停滞への流れ

全盛期から保守停滞への流れ

Formikが世に出た2018年当時、ReactにはまだHooksが存在せず、フォーム実装の選択肢はreduxやコンポーネントstateの愚直な実装、あるいはredux-formのようなboilerplateの多い既存ライブラリしかなかった。Formikはrender propsという当時主流のパターンを使い、コンポーネントベースで簡潔にフォームを記述できる設計を提示した。

風向きが変わったのは2019年のReact 16.8(Hooks導入)と、同年に登場したReact Hook Formだ。React Hook Formは非制御コンポーネント+refベースで再描画を最小化し、Formikが抱えていた「入力一文字ごとに再描画される」というパフォーマンス問題を構造的に解決した。Jared Palmer氏自身がVercelに参画したこともあり、Formikの新規開発は2022年頃から停滞気味となった。現在も最低限のメンテナンスは続いているが、新規プロジェクトでの採用は減少している。

今もFormikを使う場面

今もFormikを使う場面

Formikが今も使われ続けるのは、主に「既に大量のFormikベースのフォームを抱えるプロジェクト」の保守用途である。10年近いエコシステムの蓄積があり、ネット上のチュートリアル・StackOverflow回答・社内ノウハウもFormik前提のものが多く、急いで書き換える経済合理性は低い場合が多い。Yupのバリデーション資産もそのまま流用できる。

また、小規模フォームでパフォーマンス問題が顕在化しない場合や、render propsを好むチームでは今もFormikの素直なAPIが好まれる。ただし新規プロジェクトでは「将来の保守性」と「パフォーマンス」を考慮するとReact Hook Formを選んだ方が無難だ。Formikはあくまで「黎明期のReactフォームを支えた歴史的存在」「既存システム保守の現役」という立ち位置で理解しておきたい。

React Hook Form・TanStack Formとの比較

React Hook Form・TanStack Formとの比較

FormikとReact Hook Formの根本的な差は「制御 vs 非制御」のアーキテクチャである。Formikは制御コンポーネント前提で、フォーム状態全体をReactの再描画サイクルに乗せる。対してReact Hook Formはrefによる非制御方式を採用し、必要な箇所だけ局所的に再描画する。巨大フォームでの体感差は顕著で、これが主役交代の決定的な要因となった。

新興のTanStack Formは型推論をさらに強化し、フィールド単位で精緻な型を提供する。FelteはSvelte/Solid/React全てに対応する汎用ライブラリで、複数FWを扱うチームには魅力的だ。「2018〜2020年に作ったFormikベースのコードはそのまま保守、新規はReact Hook Form」というのが現実的な指針となる。Formikの設計思想は後続ライブラリにも色濃く受け継がれており、Reactフォーム史の重要な一章として位置付けられる。

まとめ

FormikはReactフォーム実装の黎明期において、「状態を一元管理する」「Yupでスキーマ駆動の検証を行う」というベストプラクティスを定着させた歴史的なライブラリである。現在は主役の座をReact Hook Formに譲ったが、Reactフォームの教科書的存在として今も大量のシステムを支え続けている。新規採用は減りつつあるが、Reactフォーム史を理解する上でFormikの設計思想は今も学ぶ価値がある。

※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次