多様なコネクタをサポートする方法
良いユーザー体験と開発体験を両立させながら、多様なコネクタをサポートする方法のストーリーです。設定駆動型開発の助けを借りて、ローコードコネクタープラットフォームを作りました。
序章
コネクタはLogtoにおいて重要な役割を果たします。それらの助けを借りて、Logtoはエンドユーザーがパスワードレス登録やサインイン、ソーシャルアカウントでのサインイン機能を利用できるようにします。Logtoはユーザーが自分のコネクタをインストールまたは作成できるようにしており、すでに20以上の公式コネクタがあります。我々のコネクタは非常に柔軟に設計されており、ユーザーがインストールするだけでなく自分で作成することも可能です。同時に、新しいコネクタを開発するのも簡単です。そのために、Config Driven Development(CDD)に着想を得た「Dynamic Form」というソリューションを設計・実装しました。
背景
Logtoのコネクタの設定はJSONで、柔軟ではありますが、編集や検証が難しい場合があります。最初はそれほど大きな問題ではありませんでした。ほとんどのJSON設定が以下のようだったためです:
しかし、サポートするプロバイダーやプロトコルが増えるに従い、状況は変わってきました。「SAMLコネクタ」を例に取ると、JSON設定には10以上のキーがあり、値のタイプも複雑で、文字列、数字、JSON、選択値、証明書用の複数行文字列などがあります。
そこで、JSONエディタに代わる、細かくデザインされたフォームを導入する時が来たと考えました。Logto Connectorはサードパーティアプリケーションとして機能するよう設計されているため、フォームをハードコーディングすることは現実的な解決策ではありません。その結果、管理が容易で、かつユーザーエクスペリエンスが優れた動的フォームの強い必要性が生まれました。前述のSAMLコネクタ用フォームは以下のようになります:
Config Driven Development (CDD)とは?
CDD、またはComponent Driven Developmentは、アプリケーション構築における代替アプローチを提供します。従来の方法では、リードアーキテクトがビジネスニーズに基づいて設計を行い、その後アプリケーションが開発・展開され、いかなる変更も追加要素や難しいリファクタリングを通じて実行されます。
対照的に、CDDは最も基本的なレベルから独立したコンポーネントを構築することに焦点を当てています。インターフェースは通常JSONであり、これを用いて高次のユーザーインターフェースを組み立てます。再利用可能なコンポーネントとJSON設計図の組み合わせを含むこの方法は、開発者がより柔軟かつスケーラブルにアプリケーションを構築することを可能にします。
CDDのエッセンスは、モジュール性を活用して疎結合なコンポーネントの集合を作成し、それらを標準化されたインターフェースを用いて組み合わせることにあります。
ダイナミックフォームとは?
設定駆動型開発(CDD)アプローチを採用することで、動的なウェブフォームを作成することができます。これらは静的で変わらないフィールドを持つ通常のフォームではなく、JSONファイルに基づいて生成される動的なエンティティです。これらの動的ウェブフォームの魅力は、柔軟性にあります——フォームフィールドに変更が必要な場合、JSON設定を更新するだけで済みます。この適応性のレベルは、Logtoのコネクタに理想的な解決策となります。
スキーマの設計
スキーマはフォームアイテムの配列として設計され、各アイテムには名前、ラベル、プレースホルダー、そして最も重要なタイプがあります。我々は6種類のフォームアイテムを持ち、enumとして定義しています:
そしてフォームアイテムの型定義は次のとおりです:
そして完全なスキーマは次のとおりです:
しかし小さな問題があります。「select」フォームタイプはオプションのリストを必要とするため、FormItem
にこのフィールドを追加します:
React-Hook-Formでフォームを構築する
スキーマが設定されたので、スキーマに基づいてフロントエンドでフォームを構築できます。これを実現するために、React Hook Formを使用します。
React-Hook-Formは、効率的で使いやすいフォームをReactで構築するための強力なツールです。
まずフォームを初期化することから始めます。ここではJSON設定が取得され、formItems
と呼ばれ、フォーム内のデータがformData
と想定します:
次に、タイプに応じてフォームコントロール要素を実装します。以下はシンプルなデモンストレーションです:
結論
Logtoのコネクタのケースで見ると、設定駆動型開発(CDD)を動的フォームの作成に適用したとき、その多様性が際立ちます。その利点は2つあります:
- 開発者にとっては、インタラクティブでユーザーフレンドリーなフォームを作成するプロセスを簡素化します。複雑なコーディングの複雑さに対処する代わりに、開発者はJSONファイルを定義するだけで、Logtoチームによって設計されたよりデザインの良い直感的なユーザーインターフェイスを得ることができます。
- ユーザーにとっては、このアプローチはコネクタのセットアッププロセスを大いに簡素化します。統合の複雑さを取り除き、ユーザーがLogtoをソーシャルサインイン機能、メールやSMSサービスと容易に統合することを可能にします。
最近、ローコードを推進する記事がインターネット上に溢れています。このソリューションは、実際のユーザーニーズの観点から開発されており、ローコードの優れた表現であると信じています。
試してみたいですか?Logto Cloudに行き、コネクタを選んでください。