# 銀行アプリを作成する Part 2: ログインと登録フォームを作成する ## 講義前クイズ [講義前クイズ](https://ff-quizzes.netlify.app/web/quiz/43) オンラインでフォームを記入して、メール形式が間違っていると拒否されたことはありませんか?または、送信ボタンを押したらすべての情報が消えてしまったことは?誰もがこうしたイライラする経験をしたことがあるでしょう。 フォームは、ユーザーとアプリケーションの機能をつなぐ架け橋です。航空管制官が飛行機を安全に目的地へ導くために慎重なプロトコルを使用するように、よく設計されたフォームは明確なフィードバックを提供し、エラーを防ぎます。一方で、悪いフォームは、忙しい空港での誤解のように、ユーザーをすぐに遠ざけてしまう可能性があります。 このレッスンでは、静的な銀行アプリをインタラクティブなアプリケーションに変身させます。ユーザー入力を検証し、サーバーと通信し、役立つフィードバックを提供するフォームの作成方法を学びます。これは、ユーザーがアプリケーションの機能を操作できるコントロールインターフェースを構築するようなものです。 最終的には、ユーザーをイライラさせるのではなく、成功へと導く検証付きの完全なログインと登録システムを構築することができます。 ## 前提条件 フォームを作成する前に、すべてが正しく設定されていることを確認しましょう。このレッスンは前回の続きから始まりますので、もし先に進んでしまった場合は、まず基本を動作させるところから始めることをお勧めします。 ### 必要なセットアップ | コンポーネント | ステータス | 説明 | |-----------|--------|-------------| | [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