# 銀行アプリを作成する Part 2: ログインと登録フォームを作成する ```mermaid journey title Your Form Development Journey section HTML Foundation Understand form elements: 3: Student Learn input types: 4: Student Master accessibility: 4: Student section JavaScript Integration Handle form submission: 4: Student Implement AJAX communication: 5: Student Process server responses: 5: Student section Validation Systems Create multi-layer validation: 5: Student Enhance user experience: 5: Student Ensure data integrity: 5: Student ``` ## 講義前クイズ [講義前クイズ](https://ff-quizzes.netlify.app/web/quiz/43) オンラインでフォームを記入して、メール形式が間違っていると拒否されたことはありませんか?または、送信をクリックしたときにすべての情報を失ったことはありませんか?誰もがこうしたイライラする経験をしたことがあるでしょう。 フォームは、ユーザーとアプリケーションの機能をつなぐ架け橋です。航空管制官が飛行機を安全に目的地へ導くために慎重なプロトコルを使用するように、よく設計されたフォームは明確なフィードバックを提供し、コストのかかるエラーを防ぎます。一方、悪いフォームは、忙しい空港での誤解よりも早くユーザーを遠ざける可能性があります。 このレッスンでは、静的な銀行アプリをインタラクティブなアプリケーションに変換します。ユーザー入力を検証し、サーバーと通信し、役立つフィードバックを提供するフォームの作成方法を学びます。これは、ユーザーがアプリケーションの機能を操作するためのコントロールインターフェースを構築するようなものです。 このレッスンの終わりまでに、ユーザーをイライラさせるのではなく成功へ導く、検証付きの完全なログインと登録システムを作成することができます。 ```mermaid mindmap root((Form Development)) HTML Foundation Semantic Elements Input Types Accessibility Label Association User Experience Validation Feedback Error Prevention Loading States Success Messaging JavaScript Integration Event Handling AJAX Communication Data Processing Error Management Validation Layers HTML5 Validation Client-side Logic Server-side Security Progressive Enhancement Modern Patterns Fetch API Async/Await Form Data API Promise Handling ``` ## 前提条件 フォームを作成する前に、すべてが正しく設定されていることを確認しましょう。このレッスンは前回のレッスンの続きから始まるので、先に進んだ場合は基本をまず動作させることをお勧めします。 ### 必要なセットアップ | コンポーネント | ステータス | 説明 | |---------------|------------|------| | [HTMLテンプレート](../1-template-route/README.md) | ✅ 必須 | 基本的な銀行アプリの構造 | | [Node.js](https://nodejs.org) | ✅ 必須 | サーバー用のJavaScriptランタイム | | [銀行APIサーバー](../api/README.md) | ✅ 必須 | データ保存用のバックエンドサービス | > 💡 **開発のヒント**: フロントエンドの銀行アプリ用サーバーとバックエンドAPI用サーバーの2つを同時に実行します。このセットアップは、フロントエンドとバックエンドサービスが独立して動作する実際の開発を模倣しています。 ### サーバー構成 **開発環境には以下が含まれます:** - **フロントエンドサーバー**: 銀行アプリを提供 (通常ポート`3000`) - **バックエンドAPIサーバー**: データ保存と取得を処理 (ポート`5000`) - **両方のサーバー**は競合せずに同時に実行可能 **API接続のテスト:** ```bash curl http://localhost:5000/api # Expected response: "Bank API v1.0.0" ``` **APIバージョンの応答が表示されたら、次に進む準備が整っています!** --- ## HTMLフォームとコントロールの理解 HTMLフォームは、ユーザーがウェブアプリケーションと通信する方法です。19世紀に遠隔地をつないだ電報システムのように、ユーザーの意図とアプリケーションの応答をつなぐ通信プロトコルです。慎重に設計されたフォームはエラーをキャッチし、入力形式をガイドし、役立つ提案を提供します。 現代のフォームは基本的なテキスト入力よりもはるかに洗練されています。HTML5は、メール検証、数値フォーマット、日付選択を自動的に処理する専門的な入力タイプを導入しました。これらの改善は、アクセシビリティとモバイルユーザー体験の両方に利益をもたらします。 ### 必須のフォーム要素 **すべてのフォームに必要な構成要素:** ```html
``` **このコードが行うこと:** - **フォームコンテナ**をユニークな識別子で作成 - **データ送信のHTTPメソッド**を指定 - **ラベルと入力を関連付け**てアクセシビリティを向上 - **フォームを処理する送信ボタン**を定義 ### モダンな入力タイプと属性 | 入力タイプ | 目的 | 使用例 | |------------|------|--------| | `text` | 一般的なテキスト入力 | `` | | `email` | メール検証 | `` | | `password` | 隠されたテキスト入力 | `` | | `number` | 数値入力 | `` | | `tel` | 電話番号 | `` | > 💡 **モダンHTML5の利点**: 特定の入力タイプを使用することで、追加のJavaScriptなしで自動検証、適切なモバイルキーボード、アクセシビリティサポートを提供します! ### ボタンタイプと動作 ```html ``` **各ボタンタイプの動作:** - **送信ボタン**: フォーム送信をトリガーし、指定されたエンドポイントにデータを送信 - **リセットボタン**: すべてのフォームフィールドを初期状態に戻す - **通常のボタン**: デフォルトの動作を提供せず、カスタムJavaScriptが必要 > ⚠️ **重要な注意点**: ``要素は自己閉じタグであり、閉じタグは必要ありません。モダンなベストプラクティスでは、スラッシュなしで``を書くことが推奨されます。 ### ログインフォームの作成 次に、モダンなHTMLフォームの実践を示す実用的なログインフォームを作成します。基本構造から始め、アクセシビリティ機能と検証を徐々に強化していきます。 ```html