見積書・請求書アプリ 勉強まとめ

このアプリで作っているもの

ブラウザ上で見積書・請求書を作成できるWebアプリ。

できること:

  • 見積書/請求書の切り替え
  • 宛名入力
  • 商品行追加
  • 数量・単価入力
  • 自動金額計算
  • 消費税計算(外税)
  • 保存機能
  • 読み込み機能
  • 印刷・PDF保存

ファイル構成

invoice-app
├ index.html
├ style.css
└ script.js

① HTML の役割

HTMLは「画面の骨組み」。

例:

<input>

→ 入力欄

<button>

→ ボタン

<table>

→ 表


このアプリで使った重要タグ

見出し

<h1>
<h2>

入力欄

<input type="text">

文字入力。


数値入力

<input type="number">

数量・単価で使用。


日付入力

<input type="date">

発行日。


選択メニュー

<select>

見積書/請求書の切り替え。


<table>

商品一覧。

  • thead → タイトル行
  • tbody → データ行
  • tr → 行
  • td → セル

② CSS の役割

CSSは「見た目」。

例:

background: white;

→ 背景色

padding: 40px;

→ 内側余白

border: 1px solid #ddd;

→ 枠線


このアプリで重要だったCSS

Flexbox

display: flex;

横並びにする。

使った場所:

  • 上部情報
  • ボタンエリア

印刷専用CSS

@media print

印刷時だけデザイン変更。

例:

.no-print {
  display: none;
}

→ ボタンを印刷しない。


③ JavaScript の役割

JavaScriptは「動き」。

このアプリでは:

  • 計算
  • 行追加
  • 保存
  • 読み込み
  • 印刷

を担当。


④ DOM操作

HTMLをJavaScriptから操作すること。

例:

const title = document.getElementById("title");

→ HTML要素を取得。


テキスト変更

title.textContent = "請求書";

→ 表示文字を変更。


⑤ イベント処理

「何かした時に動く」。

例:

button.addEventListener("click", () => {

});

→ ボタンクリック時。


inputイベント

input.addEventListener("input", calculateTotal);

→ 入力されるたびに再計算。

リアルタイム更新。


⑥ 金額計算

重要ポイント。

const amount = quantity * price;

数量 × 単価。


合計計算

subtotal += amount;

1行ずつ足していく。


⑦ 外税処理

今回のアプリは外税。

const tax = Math.floor(subtotal * 0.1);
const total = subtotal + tax;

意味:

小計 10,000円
↓
消費税 1,000円
↓
合計 11,000円

⑧ 行追加

JavaScriptでHTMLを増やしている。

const row = document.createElement("tr");

→ 新しい行を作成。


HTMLを流し込む

row.innerHTML = `...`;

→ 行の中身を作る。


表へ追加

itemTable.appendChild(row);

→ 画面へ追加。


⑨ 削除処理

button.closest("tr").remove();

意味:

  • closest(“tr”)
    → 一番近い行を探す
  • remove()
    → 消す

⑩ 保存機能

localStorage を使用。

ブラウザ内保存。


保存

localStorage.setItem("invoiceData", data);

→ 保存。


読み込み

localStorage.getItem("invoiceData");

→ 取り出し。


⑪ JSON

保存時はJSON化している。

JSON.stringify(data)

→ 文字列化。


復元

JSON.parse(data)

→ 元のデータに戻す。


⑫ 配列 map

Array.from(rows).map(...)

意味:

表の行を1件ずつデータ化。


⑬ このアプリのポイント

Webアプリ基礎

学べるもの:

  • HTML
  • CSS
  • JavaScript
  • DOM操作
  • イベント処理
  • 状態管理
  • 配列
  • オブジェクト
  • JSON
  • localStorage
  • 動的UI
  • 自動計算
  • 印刷対応

⑭ 今後追加できる機能

初級

  • ロゴ表示
  • 振込先欄
  • PDF出力
  • 明細複数保存
  • ダークモード

中級

  • 顧客管理
  • 商品マスタ
  • 保存一覧
  • 検索機能
  • 並び替え

上級

  • PHP保存
  • JSONファイル保存
  • データベース(MySQL)
  • ログイン機能
  • ユーザー管理
  • クラウド化

⑮ このアプリで理解すると強い概念

状態管理

現在の入力状態を保持する。

例:

  • 商品
  • 数量
  • 合計
  • 顧客情報

CRUD

業務アプリの基本。

  • Create → 作成
  • Read → 読み込み
  • Update → 更新
  • Delete → 削除

⑯ まとめ

JavaScriptを使って、見積書・請求書を作成できるWebアプリを作成。

商品行の追加・削除、リアルタイム計算、外税処理、localStorage保存、印刷対応を実装。

DOM操作・イベント処理・状態管理・JSON保存など、Webアプリ基礎を学習した。

コメント

タイトルとURLをコピーしました