Sample lesson

無料サンプルレッスン:
JavaScript:フォームUI

クリックで動けば終わりではなく、入力状態・エラー・キーボード操作まで含めてフォームを作ります。

1. このレッスンのゴール

フォームの状態を整理し、ユーザーに現在地とエラーを正しく伝えられること。

2. 課題

メールアドレスが未入力・形式不正のときに、送信せずエラーを表示してください。

3. 提出例(初稿)

button.addEventListener('click', () => { alert('エラー'); });

4. 講師のレビュー

  1. clickではなくformのsubmitを基準にするform の submit で、ボタン操作とEnterキーによる送信を同じ処理にまとめます。この例では novalidate でブラウザ標準の送信前検証を止め、入力の validity を読み取って自分でエラーを表示します。
  2. alertだけでなく入力欄とエラーを関連付けるalert は閉じると内容が消え、どの欄の話かもわかりません。エラー文を入力欄のそばに出し、aria-describedby で欄とつなぎましょう。
  3. エラー時は修正箇所へフォーカスを移すエラーを伝えても、直す場所を探させては不親切です。最初の誤りの欄へフォーカスを移せば、キーボードでもすぐ直せます。

5. 修正版

// HTML: form に novalidate、input に type="email" required を設定。
// error は id="email-error"、result は role="status" の表示領域です。
const form = document.querySelector('form');
const email = document.querySelector('#email');
const error = document.querySelector('#email-error');
const result = document.querySelector('#result');
form.addEventListener('submit', (event) => {
  event.preventDefault(); // 練習用なので実際には送信しません
  result.textContent = '';
  if (!email.validity.valid) {
    email.setAttribute('aria-invalid', 'true');
    error.textContent = email.validity.valueMissing
      ? 'メールアドレスを入力してください。'
      : 'メールアドレスの形式を確認してください。';
    email.focus();
    return;
  }
  email.removeAttribute('aria-invalid');
  error.textContent = '';
  result.textContent = '入力を確認しました(練習用・送信なし)';
});

6. 合格基準

  • Enterキーでも送信処理が動く
  • 不正時に送信されない
  • エラー内容が具体的
  • キーボードだけで修正できる

※実際の受講では、提出した課題に講師がレビューを返し、合格基準を満たすまで修正します。ここで紹介している内容はサンプルです。

15 sample lessons

無料で読める、
15のサンプル。

実際の受講と同じように、課題 → レビュー → 修正 → 合格基準まで公開しています。

01HTML / AccessibilitySemantic HTML

見た目ではなく「意味」でHTMLを書き、読み上げ・検索・保守に強いマークアップへ直します。

02CSSレスポンシブCSS

固定幅で崩れるカードを、clamp・grid・container queryを使って小さい画面でも破綻しない設計へ直します。

03Direction / UX情報設計とワイヤーフレーム

装飾を始める前に、ユーザーが知りたい順番と事業側の目的を整理してワイヤーに落とします。

04UI DesignUIデザインレビュー

色や装飾より先に、優先順位・余白・タイポグラフィで読みやすい画面へ修正します。

05JavaScriptJavaScript:フォームUI

クリックで動けば終わりではなく、入力状態・エラー・キーボード操作まで含めてフォームを作ります。

06Accessibilityアクセシビリティ:操作とコントラスト

自動チェックだけに頼らず、キーボード・フォーカス・コントラストを実際に確認します。

07WordPress / CMSCMS:更新しやすい設計

ページを作るだけでなく、運用担当者が壊さず更新できる情報構造と入力項目を設計します。

08SEOSEO:検索意図とページ設計

キーワードを詰め込むのではなく、検索する人の疑問とページの役割を合わせます。

09QA / TestingQA:公開前テスト

自分の端末で見えたからOKではなく、正常系・異常系・実機・速度をチェックリスト化します。

10Deploy / Operation公開・運用:リリース設計

ファイルをアップして終わりではなく、公開前確認・切り戻し・監視までを一つのリリースとして設計します。

11Direction / Client Workヒアリングと要件定義

「何を作りたいですか?」だけで終わらず、背景・課題・優先順位・制約を聞き、制作要件に変換します。

12HTML / AccessibilityHTML:行と列が伝わる表

表の見出しを見た目だけで済ませず、caption・th・scopeで関係を示します。行の入れ替えと一セルの更新を通して、原稿との照合まで練習する無料レッスンです。

13CSS / PrintCSS:紙に残す案内の設計

画面のメニューを印刷時だけ外し、集合場所や持ち物を紙へ残す無料レッスンです。初稿の適用範囲を直し、印刷プレビューと通常表示の両方で合格条件を確かめます。

14JavaScript / DOMJavaScript:一覧の絞り込み

カテゴリ選択を一覧表示へつなぐ無料レッスンです。全件・一致・0件・全件への復帰を実装し、結果の重複や件数のずれを初稿から修正して確認します。

15Operation / Handover運用:更新を引き継ぐ手順書

担当が替わっても更新できる手順書を作る無料レッスンです。架空の休館案内を使い、編集元・確認者・公開担当・停止条件・公開後確認を一枚へ整理します。

Next

まずは面談だけでも、お気軽にどうぞ。

毎月2名限定。卒業・受講期限はありません。制作後も学び続け、いつでも質問できます。

毎月2名まで受講できます