STEP 0: このガイドで作るもの
STEP 1〜6 で「割賦(かっぷ)シミュレーター」を作ります。 車の価格や頭金を入力すると、月々の支払額を計算してくれるWebアプリです。 当社が実際に行っている割賦管理の、いちばん身近な入口になるアプリです。
前提: Udemy で HTML / CSS / JS の基礎を学んでから取り組む
まずはこのすぐ下にある完成形を動かしてみてください。 「これを自分で作るのか」というイメージを持ってから STEP 1 に進みましょう。
※ 応用編(STEP 7〜9)まで進むと、ここに「車種を選ぶと価格が自動で入る」機能が加わります(完成形は STEP 7 の冒頭で動かせます)
| STEP | 作るもの | クリアの条件 |
|---|---|---|
| 1 | 入力フォームの構造(HTML) | 入力欄とボタンが並ぶ(見た目は素朴でOK) |
| 2 | 見た目を整える(CSS) | 入力欄がきれいに並ぶ |
| 3 | 入力値の取得(JS) | 入れた数字がポップアップに出る |
| 4 | APIを呼んで計算 | 月々の支払額がポップアップに出る(変な値はAPIに弾かれる) |
| 5 | 送る前にフロントで入力チェック | おかしな入力はAPIに送らずその場でエラー |
| 6 | 結果カードに表示 | 🎉 第一目標クリア |
| 7 | 応用編 車種データをAPIから取得 | 車種一覧が取得できる |
| 8 | 応用編 車種を画像カードで並べる | カードで一覧表示される |
| 9 | 応用編 カードをクリックして価格を自動入力 | 🏆 第二目標クリア |
| 10 | 拡張 拡張課題(好きなお題に挑戦) | 🚀 天井なし |
STEP 6 までが全員のゴール。STEP 7〜10 は、余力があればチャレンジ!
① 各STEPの見本は自由に動かして確認してOK
② コードはまず自分で書いてみる。詰まったらメンターに声をかけてパスワードをもらい、「🔒 答えのコード例」を開こう
③ クリアの条件を満たしたらメンターに見せて、次のSTEPへ
STEP 1: HTMLで入力フォームの構造を作る
| やること | index.html / style.css / app.js の3ファイル構成で進める(<link> と <script> で繋ぐ・Udemyでやった構成)。index.html の <body> に form / input / button で4つの入力欄とボタンを作る |
|---|---|
| 到達チェック | 画面に入力欄とボタンが並ぶ(素朴な見た目でOK。整えるのは次のSTEP) |
| 学ぶこと | STEP 1〜2 は Udemy でやったことを自分のアプリで再現するウォームアップ。ポイントは id ── あとで JS から部品を探す「名前」になる |
🔒 詰まったら: 答えのコード例を見る(要パスワード)
STEP 2: CSSで見た目を整える
| やること | style.css に自分でCSSを書いて、色・余白・並びを整える(Udemyでやった書き方でOK。デザインは自由) |
|---|---|
| 到達チェック | 入力欄が整って並び、ボタンらしい見た目になる(見本そっくりでなくてよい) |
| 学ぶこと | デザインの磨き込みは時間が溶けるので、まずは「整っている」レベルでOK。こだわりたくなったら拡張課題として後で戻ってくるのがおすすめ |
STEP 3: 入力値をJSで取得し、ボタンでアラート表示
| やること | app.js に書く。ボタンのクリックイベントで input の値を取り、alert で表示する |
|---|---|
| 到達チェック | 入れた数字がそのままポップアップに出る |
| 学ぶこと | Udemyでやった DOM 取得(getElementById)とイベント(addEventListener)を、自分のアプリで実際に使う |
🔒 詰まったら: 答えのコード例を見る(要パスワード)
STEP 4: 仮のAPIを叩いて結果をアラート表示
| やること | STEP 3 の処理を、配布ひな形の calc 関数(入力値をAPIに送る → 返ってきた月々の支払額をalert)に差し替える |
|---|---|
| 到達チェック | 月々の支払額がポップアップに出る(計算はAPI側がやる)。マイナスを入れて押すと、APIからエラーが返ってくることも確認 |
| 学ぶこと | fetch=JSからAPI(サーバー側の機能)を呼ぶ命令。非同期通信=結果が返ってくるまで少し待つ通信。ステータスコード=APIの返事の種類(200=成功 / 400=入力がおかしい)。おかしな値も、いまは毎回サーバーまで往復してから 400 で弾かれている |
POST で送る。バック編で「自分のAPI」を作ったら、このURLを自分のものに差し替える。
⚠️ fetch を使うこの STEP からは、必ず Live Server で開くこと(導入編 STEP4 で入れた拡張機能)。ファイルをダブルクリックして直接開くと、ブラウザが通信をブロックして API を呼べない。うまく計算できないときは、VSCodeで index.html を右クリック →「Open with Live Server」で開き直そう。
🔒 このSTEPはひな形を配布: fetch のコードを見る(要パスワード)
STEP 5: 送る前にフロントで入力チェックする
| やること | calc 関数の先頭に空欄・マイナス値の if文チェックを追加し、おかしい入力はAPIに送る前にその場で止める。最後にテスト仕様書(Excel・配布)で動作確認のエビデンスを残す |
|---|---|
| 到達チェック | おかしな入力はAPIに送られず、その場でエラーが出る。テスト仕様書+エビデンスをメンターに提出 |
| 学ぶこと | バリデーションは二段構え ── フロント=送る前に止める「親切」(すぐ出る・無駄な通信が減る)/ API=最終防衛(クライアントの入力は信用しない)。そして金融系の開発では「動いた」ではなく「動いた証跡」を残すのが当たり前 ── テスト文化を体験しよう |
- 上のボタンからテスト仕様書をダウンロードする(書き方は「記入例」シートとケース1を参照)
- 条件を考える(ここが本体): 用意されているのは「正の数・空欄」だけ。他にどんな入力を試すべきかを考えて、空き行に条件と代表値を追加する
- ケースを作って実施: 1列=1ケース。項目ごとに条件1つへ Y・残りに -、下に期待結果 → 実施して結果(○/×)とスクショNoを記入(スクショは「エビデンス」シートへ)
- 考えた条件すべての行に Y が付いたら提出し、メンターに確認者欄を記入してもらってクリア
🔒 詰まったら: 答えのコード例を見る(要パスワード)
STEP 6: alertをやめて結果カードに表示する
| やること | APIのレスポンス5項目を、alertではなく画面の結果カードに書き込む |
|---|---|
| 到達チェック | 🎉 第一目標クリア(フロント完成) |
| 学ぶこと | APIの返事のキー(monthlyPayment など)と結果カードが1対1対応していることに注目 |
🔒 詰まったら: 答えのコード例を見る(要パスワード)
応用編 はじめに:車種を選んで価格を自動入力 第二目標
ここからは応用編(第二目標)です。STEP 6 まで手入力していた「車両価格」を、 車種カードを選ぶだけで自動入力できるようにします。 (余力があれば挑戦 ── 必達ではありません)
まず下の完成形を動かしてゴールのイメージをつかみましょう。そのうえで、次の3ステップで1つずつ積み上げていきます:
| STEP | やること | ゴール |
|---|---|---|
| 7 | 車種データをAPIから取得する | 一覧が取得できる |
| 8 | 取得した車種を画像カードで並べる | カードで一覧表示される |
| 9 | カードのクリックで価格を自動入力 | 🏆 第二目標クリア |
※ 下の完成形は「取得→描画→クリック」が全部入った最終形。STEP 7〜9 でこの状態まで育てます。
STEP 7: 車種データをAPIから取得する 応用編
| やること | メンター提供の車種一覧API(GET)を fetch で呼び、車種データが取得できることを確認する |
|---|---|
| 到達チェック | 取得した車種一覧が確認できる(コンソールや画面に出る)。まだ見た目は不要 |
| 学ぶこと | GET の fetch(STEP 5 の POST より簡単)、APIから届くデータ(JSONの配列)の中身の読み方。車種データは自分のコードに書かない=データはDB(DynamoDB)にあり、APIを通して受け取るのが本物のWebアプリの構成 |
/cars)
GET で取得する。バック編で自分の /cars を作ったら、このURLを差し替える。
🔒 このSTEPはひな形を配布: 車種取得のコードを見る(要パスワード)
STEP 8: 車種を画像カードで並べる 応用編
| やること | STEP 7 で取得した車種データ(data.cars)を、1台ずつ画像付きカードにして画面に並べる(まだクリックの動きは付けない) |
|---|---|
| 到達チェック | 取得した車種が、画像付きのカードで一覧表示される |
| 学ぶこと | データ(配列)から画面を作る基本=forEach で1件ずつ createElement して並べる。画像は car.imageUrl を <img> に渡すだけ=データのURLがそのまま絵になる |
🔒 詰まったら: 答えのコード例を見る(要パスワード)
STEP 9: カードをクリックして価格を自動入力 応用編
| やること | STEP 8 で並べたカードに「クリックすると選択され、その車の価格が車両価格の欄に入る」動きを付ける |
|---|---|
| 到達チェック | カードを選ぶと車両価格に金額が入り、そのまま計算できる = 🏆 第二目標クリア |
| 学ぶこと | クリックイベント(addEventListener "click")、classList による選択中の見た目の切り替え、選んだデータ(car.price)を入力欄に反映する流れ |
- STEP 8 で作ったカード(
data.cars.forEachの中)にclickイベントを足す - クリックされたら、全カードから選択中の見た目を外し、自分にだけ付ける(classList)
- 選ばれた車の
car.priceを車両価格の入力欄に入れる
🔒 詰まったら: 答えのコード例を見る(要パスワード)
STEP 10: 拡張課題 — 好きなお題に挑戦しよう 拡張
| やること | 下のメニューから好きなお題を選んで挑戦する。順不同・いくつでもOK。着手前にメンターに一言伝えよう |
|---|---|
| 到達チェック | なし。ここから先は天井なし 🚀 |
| 学ぶこと | ここまでは「決められたものを作る」、ここからは「何を作るか自分で決めて作る」。実務にいちばん近い部分 |
| お題 | 難易度 | できると何が嬉しい? | ヒント |
|---|---|---|---|
| デザインの磨き込み | ★ | 自分のアプリが「作品」になる。発表映えも◎ | 色・フォント・hoverアニメ。車種カードや結果カードをこだわろう。エラーも alert をやめて画面に赤字で出そう |
| 入力チェックの強化 | ★★ | 実務のバリデーション設計を体験できる | 「頭金が車両価格以上ならエラー」「年利や支払回数に上限を設ける」「数値以外をはじく」など |
| 返済スケジュール表 | ★★★ | 毎月の元金・利息の内訳が見える、金融アプリらしい機能 | 月ごとの行を動的に作って表にする(考え方は STEP 9 の forEach と同じ) |
| カテゴリフィルター | ★★★ | 車種が増えても探せる、一段上のUIになる | 「ミニバンだけ表示」ボタンを作る。配列の filter が鍵 |
| 別のUIでも作ってみる | ★★ | 同じデータでも見せ方は何通りもある、というUIの引き出しが増える | カードの代わりにプルダウン(<select>)やリスト(<ul>)で車種を選べるようにしてみる |
| 自由課題 | ? | 企画から自分でやる、いちばん実務に近い体験 | 「あったら便利」をメンターに提案して実装(例: ボーナス併用払い、月々の予算から車を逆引き) |