ホームページ > ウェブフロントエンド > jsチュートリアル > 基本フォームを超えて: エンタープライズレベルのフォームが依然として課題である理由 (および FormML がそれを解決する方法)

基本フォームを超えて: エンタープライズレベルのフォームが依然として課題である理由 (および FormML がそれを解決する方法)

Barbara Streisand
リリース: 2024-12-05 22:46:10
オリジナル
575 人が閲覧しました

Beyond Basic Forms: Why Enterprise-Level Forms Remain a Challenge (and How FormML Solves It)

フォームは、単純なニュースレターの登録から複雑なエンタープライズ アプリケーションに至るまで、デジタル世界のあらゆる場所に存在します。基本的なフォームは、Formik や React Hook Form などの一般的なツールで簡単に処理できますが、エンタープライズ レベルのフォームには、既存のソリューションが対処するのに苦労している重大な課題が引き続き存在します。

エンタープライズレベル フォームとは何ですか?

エンタープライズレベル フォームは、単純な入力フィールドや送信ボタンを超えています。これらは、金融銀行保険などの業界の複雑なワークフローのバックボーンです。これらのフォームは、高度な機能スケーラビリティ、およびユーザー エクスペリエンスのバランスをとる必要があり、単純なフォームとは根本的に異なります。

エンタープライズレベル フォームの例

  • ローン申請: 金利月々の支払い、および収入に対する負債の比率 リアルタイムで。 信用スコア収入確認要件に基づく融資限度額などの規制遵守ルールを強制する必要があります。

  • 納税申告: さまざまな収入源控除、およびクレジット。税務当局の規則に照らして検証し、複数のセッションにわたる草案の保存をサポートし、項目別控除標準控除 のような複雑なワークフローをユーザーにガイドする必要があります。

  • 保険請求

    : 保険請求の種類 (自動車、住宅、生命) と 保険の詳細 に基づいて適応される洗練されたフォーム。既存の顧客データを使用してフィールドに事前入力し、証拠の添付ファイルを処理し、複雑な検証ルールを実装し (例: 保険金請求額 は保険の限度額を超えることはできません)、競合他社との差別化を図るためにさまざまな保険商品にわたって一貫したブランディングを維持します。 .

  • これらの例は日常生活でよく見られますが、これらの形式の背後に隠された努力は見落とされがちです。その開発には、さまざまな才能、複雑なアーキテクチャ、トップレベルのエンジニアリング チーム間のコラボレーションが必要であり、最大数年の開発時間が必要です。一部の中小企業では、会社全体の製品がそのような単一の形式に基づいて構築されている可能性さえあります。

このようなミッションクリティカルでありながらコストがかかるフォームを、私は「エンタープライズレベルのフォーム」と呼んでいます。

エンタープライズレベル

フォームの構築に関する課題 あなたがオンライン ローン申請フォームを作成している金融会社であると想像してください。どのような課題に直面する可能性がありますか?

  • 非技術的利害関係者の関与: 融資は複雑であり、財務、会計、法律分野の専門知識が関与しており、これらの専門知識は通常、非技術的利害関係者が保有しています。これらの利害関係者は、「申請者の信用スコアが 650 未満の場合、連帯保証人が必要である」 または 「月間総収入を次の値で割って負債と収入の比率を計算する」などの複雑なビジネス ルールを理解しています。毎月の借金の合計支払い額"。重要な課題は、開発者にすべてのルールを教えるために過度の時間を費やすことなく、これらの関係者が効率的にフォーム設計を主導できるようにすると同時に、エッジケースに対処するためのスムーズなコラボレーションを確保できるようにすることです。

  • ブランド化された UI とカスタム UX: 開発者も重要です!企業はありきたりなフォームデザインを望んでいません。すべての真剣な企業は、自社のブランドを構築し、独自のユーザー エクスペリエンスを提供したいと考えており、その目標を達成するには開発者の専門知識が必要です。たとえば、銀行は、ローン申請を自社のブランドカラーに合わせたり、カスタム入力コンポーネントを使用したり、「個人情報」、「雇用詳細」、および 「融資条件」

  • 計算、公式、動的動作: ローン申請フォームには、さまざまな複雑なリアルタイム計算と動的動作が必要な場合があります。

    • 財務計算: ローン金額金利月々の支払額など
    • 条件ロジック: ローンの種類に基づいてフィールドを表示/非表示にします (例: 住宅ローン個人 ローンの異なるフィールド)
    • クロスフィールド依存関係: 収入を更新すると、ローン最大額収入に対する負債の比率、および金利に影響する可能性があります
    • リアルタイム検証: 収入信用スコアに基づいてローン金額がポリシーの制限内に収まるようにします。
  • 自動保存と再開: 複雑なフォームには何百ものフィールドが含まれる場合があります。ユーザーは誤ってブラウザを閉じても最初からやり直す必要はありません。

  • その他の技術的課題:

    • パフォーマンス: スムーズな UI 応答性で数百のフィールドを効率的に処理し、高速な計算とシームレスなレンダリングを保証します
    • 検証: 即時のユーザーフィードバックのためのリアルタイムのクライアント側検証と、データの整合性とセキュリティのための堅牢なサーバー側検証を含む包括的な検証戦略
    • データの事前入力: 複数のデータ ソースからのフィールドの入力

これらは特定のシナリオに特有の特殊な問題ではなく、企業が複雑なフォームを構築する際に直面する一般的な課題です。ビジネスの複雑さ、技術的要件、ユーザー エクスペリエンスのニーズが組み合わさることにより、エンタープライズ レベルのフォームを効果的に実装することが特に困難になります。

既存のツールでは不十分な点

Formik や React Hook Form などの一般的なフォーム ライブラリは、基本的なフォームの処理には優れていますが、企業のニーズを念頭に置いて構築されていません。前述の課題に照らしてこれらのツールを検討すると、いくつかの制限が明らかになります。

課題 1: 技術以外の利害関係者の関与

現在のフォーム ライブラリは開発者中心であり、フォーム ロジックを定義するには JavaScript/TypeScript の知識が必要です。

これによりカスタマイズが可能になりますが、複雑なルールを含むフォーム配信の効率が大幅に低下します。例:

  • フォームルールに複雑な計算が含まれる場合、利害関係者は「融資上限額を年収の4倍として計算する」などの口頭説明を使用して開発者に段階的に説明する必要があります。 、信用スコアが 700 未満の場合は 15% 減額調整され、月々の総収入に対する既存の月々の借金返済額の割合によってさらに 10% 減額されます。職歴が 2 年未満の場合」、ただし、これらの計算は専門分野では常識である可能性があります。

  • 融資限度額の調整など、フォーム ルールの変更が必要な場合、関係者は変更の実装を開発者に依存する必要があり、その結果、プロセスが長くなり、納期も長くなります。

課題 2: ブランドの UI とカスタム UX

両方の既存のライブラリは (開発者中心 という性質のため) この点で優れており、強力なカスタマイズ機能を提供します。たとえば、React Hook Form は、制御された入力コンポーネントを適応させるためのコントローラー コンポーネントを提供します。

課題 3: 計算、公式、および動的動作

既存のライブラリは、「機能する」計算機能を提供しますが、複雑な計算のための抽象化機能や編成機能が不足しています。

React Hook Form でローン計算ツールを実装することを検討してください:

function LoanForm() {
  const { watch, setValue } = useForm()

  const [loanAmount, interestRate, term] = watch([
    'loanAmount',
    'interestRate',
    'term',
  ])

  useEffect(() => {
    if (loanAmount && interestRate && term) {
      const monthlyRate = interestRate / 100 / 12
      const months = term * 12
      const payment =
        (loanAmount * monthlyRate * Math.pow(1 + monthlyRate, months)) /
        (Math.pow(1 + monthlyRate, months) - 1)
      setValue('monthlyPayment', payment.toFixed(2))
    }
  }, [loanAmount, interestRate, term, setValue])

  return (
    <form>
      {/* ... */}
      <input type="number" {...register('monthlyPayment')} />
      {/* ... */}
    </form>
  )
}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

このアプローチにはいくつかの欠点があります:

  • JavaScript での記述: 技術的以外の関係者と開発者間のコラボレーションを拒否します。
  • フィールドの依存関係の手動メンテナンス: watch(['loanAmount', 'interestRate', 'term'])
  • フィールド定義と値の割り当ての分離: この例では、monthlyPayment が return ステートメントに登録されていますが、useEffect で割り当てられています。
  • 追加定型コード: watch、setValue、useEffect
  • 手動パフォーマンスの最適化

課題 4: 自動保存と再開

これらのライブラリには、自動保存と再開のための組み込みソリューションはありません。自動保存機能を実装するには、大幅なカスタム コードが必要です。開発者は以下を処理する必要があります:

  • 効率的な状態の永続化
  • 紛争解決
  • データ同期
  • 進捗状況の追跡
  • エラー回復

これらの制限により、エンタープライズ アプリケーションの開発オーバーヘッドが大幅に増加し、市場投入までの時間が長くなり、メンテナンス コストが増加します。回避策は存在しますが、多くの場合、保守や拡張が困難な複雑で脆弱なソリューションが得られます。

FormML は、次のセクションで説明するように、エンタープライズ レベルのフォーム向けに特別に設計されたドメイン固有の言語とアーキテクチャを通じてこれらの課題に対処します。

FormML ソリューション

FormML (Form Modeling Language の略) は、「フォーマル」と発音され、エンタープライズ レベルのフォームの課題に取り組むために特別に設計された新しいオープンソース フレームワークです。他のツールによって残されたギャップを埋める方法は次のとおりです:

非テクノロジー関係者に力を与える

その正式名称「フォーム モデリング言語」が示すように、FormML は、直感的で開発者以外にも使いやすい ドメイン固有言語 (DSL) を導入しています。そのシンプルな構造、最小限の構文、自然な用語により、財務専門家、法律専門家、およびその他の非技術的関係者は、プログラミング スキルを必要とせずにフォームをモデル化できます。

プログラミングの知識がなくても、熟練した会計士でも、最もシンプルで実行可能な税務記入フォームを作成できます。

function LoanForm() {
  const { watch, setValue } = useForm()

  const [loanAmount, interestRate, term] = watch([
    'loanAmount',
    'interestRate',
    'term',
  ])

  useEffect(() => {
    if (loanAmount && interestRate && term) {
      const monthlyRate = interestRate / 100 / 12
      const months = term * 12
      const payment =
        (loanAmount * monthlyRate * Math.pow(1 + monthlyRate, months)) /
        (Math.pow(1 + monthlyRate, months) - 1)
      setValue('monthlyPayment', payment.toFixed(2))
    }
  }, [loanAmount, interestRate, term, setValue])

  return (
    <form>
      {/* ... */}
      <input type="number" {...register('monthlyPayment')} />
      {/* ... */}
    </form>
  )
}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

完全にカスタマイズ可能なUX

FormML は、フォーム ロジックを UI プレゼンテーションから明確に分離する、堅牢な モデルとビューの分離アーキテクチャ を採用しています。ドメインの専門家は、FormML DSL を使用して .fml ファイルでフォームの構造、タイプ、動作 (「モデル」) を定義します。

この分離により、開発者は、基礎となるビジネス ロジックを気にすることなく、他のフォーム ライブラリと同じ柔軟性を備えた洗練されたカスタム UI エクスペリエンス (「ビュー」) の作成に完全に集中できるようになります。

function LoanForm() {
  const { watch, setValue } = useForm()

  const [loanAmount, interestRate, term] = watch([
    'loanAmount',
    'interestRate',
    'term',
  ])

  useEffect(() => {
    if (loanAmount && interestRate && term) {
      const monthlyRate = interestRate / 100 / 12
      const months = term * 12
      const payment =
        (loanAmount * monthlyRate * Math.pow(1 + monthlyRate, months)) /
        (Math.pow(1 + monthlyRate, months) - 1)
      setValue('monthlyPayment', payment.toFixed(2))
    }
  }, [loanAmount, interestRate, term, setValue])

  return (
    <form>
      {/* ... */}
      <input type="number" {...register('monthlyPayment')} />
      {/* ... */}
    </form>
  )
}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

すぐに使える動的動作のサポート

FormML は動的な動作を 第一級市民 として扱います。 JavaScript 式 または Excel のような式 システム (WIP) を使用して、DSL で直接リアルタイム計算をサポートします。たとえば、上記の例の入力フィールドに基づいて税金を計算するのは簡単で、最小限の労力で済みます。

すぐに使える自動保存と再開のサポート

FormML は、自動保存と再開も 第一級市民 として扱います。状態の永続化、競合解決、データ同期、進行状況の追跡、すぐに使えるエラー回復をサポートする予定です。

楽しみにしている

基本的なフォームはほぼ解決されていますが、エンタープライズレベルのフォームには引き続き特有の課題が存在します。 FormML は、これらの永続的な問題に対処する上で一歩前進し、パワー、柔軟性、使いやすさのバランスをとった包括的なソリューションを提供します。

複雑な計算、動的な動作、チーム間のコラボレーションに苦労している場合でも、FormML はエンタープライズ レベルのフォームの課題に特化して設計されたフレームワークを提供します。

エンタープライズ フォームの課題に取り組む準備はできていますか? X または Bluesky で私のアカウントをフォローし、最初のリリース後に試してみてください!

以上が基本フォームを超えて: エンタープライズレベルのフォームが依然として課題である理由 (および FormML がそれを解決する方法)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート