Chart.jsの棒グラフを操作する:金額・ゼロ・合計が見える体験

プログラミング・Web開発カテゴリを表すパンダのイラスト プログラミング・Web開発

この記事について
この記事は、生成AIを活用した自動生成フローで作成しています。架空のデータとブラウザの操作を使って、Chart.jsの用途、仕組み、失敗時の観察ポイントを学びます。実在のサービスや個人情報へのアクセスは行いません。

検証ステータス: 2026-10-30までの既存審査で、公式資料と保存済みDaily Codeの固定ソースを照合し、Node.js構文検査の結果を記録しています。ブラウザ実操作、描画、CDN応答は未検証です。画面の説明はコードからの期待値であり実測と区別します。

項目内容
対象Chrome/Edge/Firefox等の現代的なブラウザ(実機互換性は未確認)
使用ライブラリChart.js(教材内バージョン: 4.5.1)
費用デモのソース自体に有料APIは不要。通信料金や利用条件は環境に依存
データページ内の架空データ。認証情報・位置情報・企業データ不要
学習操作架空の交通費を動かしてグラフと合計を更新する

なぜこの技術を試すのか

数字を表に並べても、変化の大きさを直感的につかめないことがあります。Chart.jsは折れ線や棒グラフを比較的少ない記述で描画できるライブラリです。今回のテーマは架空のおこづかいで、食費・交通費・教材費の三つを棒グラフにします。単に見栄えのよいグラフを作るのではなく、入力を0にしたときの意味や、合計値をグラフの値と矛盾なく保つ方法を確かめます。

動くサンプルを作るときは、見た目が動いたという事実だけで終わらず、「どの入力がどの変数を変え、どの処理が描画を更新したか」を区別する必要があります。今回の教材では、その変化を画面に明示します。実際のサービスへ取り込むときには、認証や保存の処理を別途設計してください。

まず試す:ライブデモと期待する結果

ページを開くと交通費が3000円という架空値の棒が表示されます。スライダーを0にすると棒の高さが0へ変わり、合計も減ります。食費5000円と教材1800円は変えていないので、合計は6800円になる計算です。次に交通費9000円まで上げ、合計15800円になるかを比較します。金額の単位はデータセット名と状態表示で円と示しています。縦軸の目盛自体には円記号を付けていないため、単位の読み違いに注意します。期待出力は編集上の計算結果であり、実ブラウザの観測結果ではありません。

操作の前に確認すること

  1. 自分のPCがJavaScriptを実行できることを確認します。管理者権限は必要ありません。

  2. ブラウザの開発者ツールを開き、Consoleでエラー、NetworkでCDN取得失敗がないか見る準備をします。

  3. デモが公開されていない場合は、Daily Codeの docs/demos/chartjs-pocket-money/index.html と app.js を同じフォルダへ保存します。教材のweb/chartjs-pocket-money/にはREADMEがあり、実行するHTML/JSはdocs/demos/側です。

  4. 保存した2ファイルのフォルダで端末を開き、Windowsでは py -3 -m http.server 8000 --bind 127.0.0.1、Linux/macOSでは python3 -m http.server 8000 --bind 127.0.0.1 を実行します。Pythonがない場合は、ローカルHTTPサーバーを使える別の開発環境で同じフォルダを配信してください。ブラウザで http://127.0.0.1:8000/ を開き、終了時は端末で Ctrl+C を押します。外部CDNへ接続できる環境が必要です。

  5. 画面に3本の棒とスライダーが現れ、下の状態表示が初期値で SUCCESS: 合計 9800円(架空) になるか確認します。交通費を0にすると SUCCESS: 合計 6800円(架空)、9000にすると SUCCESS: 合計 15800円(架空) が期待値です。これはコードから計算した値で、実ブラウザでの成功実測ではありません。

  6. READY: JavaScriptを読み込み中 のままならスクリプト取得や実行が止まっている可能性があります。SUCCESS と表示されても、棒の描画・スライダーの操作・Consoleエラーなしの3点を別々に確認してください。特に Chart is not defined はCDN取得失敗の候補です。

  7. 結果を操作前後で比べます。期待値と異なる場合は「何が表示されなかったか」を先に記録します。

仕組みの全体図

flowchart LR
    A["入力やクリック"] --> B["イベントを受ける"]
    B --> C["Chart.js のAPI"]
    C --> D["状態と描画を更新"]
    D --> E["見た目と文字で確認"]

この図は学習用の概念図で、ブラウザ内部の実装やネットワーク通信の詳細を表したものではありません。ライブラリが何でも「操作がどの変数へ届くか」を追いかけることは共通です。

どう動いているのか:APIを読み解く

HTMLのcanvasにChartインスタンスを結び付けます。labelsは横軸に並べる項目名、datasetsは実際の数値や色などの組です。イベントが発生したときにdatasetの一要素だけ変更してchart.updateを呼ぶと、新しいデータが描画へ反映されます。Chart.jsのupdateはインスタンスをまるごと再作成するより単純です。インスタンスを複数回作って既存canvasを使い続けると、意図しない重複や破棄漏れの原因になります。

最小コードの読み方

const chart = new Chart(canvas, {
  type: "bar", data: { labels: ["食費", "交通費"], datasets: [{ data: [5000, 3000] }] }
});
chart.data.datasets[0].data[1] = 0;
chart.update();

上記はAPIの要点を取り出した抜粋です。コピーして単独実行する完成ファイルではありません。動かすためのHTMLと実装一式はDaily Code側のREADME/デモファイルで確認してください。どの関数がHTML要素を選び、どの行が数値を更新するかを追い、既知の架空値で試します。

一条件だけ変更して比較する

横軸の項目を一つ追加する場合、labelだけ増やして値の配列を増やし忘れると対応関係が崩れます。項目名、値、色の並びが常に対応していることをテストする必要があります。今のデモでは値が入力から直接生成されるため、負数・小数・文字列などの入力は範囲スライダーで制限しています。CSV取り込みなどに拡張するときは、入力の型と件数の検証を先に行ってください。

比較の手順は、最初の値を記録し、一か所だけ変更して、結果が想定の部分に現れたかを確認することです。入力を一度にいくつも変更すると、何が影響したか分からなくなります。変更前へ戻す操作まで含めて検証してください。

失敗したときにどこを見るか

ゼロと欠測は別物です。0円は「費用がない」という測定値ですが、nullや空欄は「測定できていない」可能性があります。欠測を勝手に0円へ変えると、合計や平均との差が誤解を招きます。また、縦軸の開始位置を途中の値へ変えると小さな差が大きく見えるため、比較の目的と注記が必要です。グラフの画像だけでは読めない人がいるため、数値や合計をHTML本文にも残します。

観察した状態切り分ける点対応の例
画面が初期状態から変わらないスクリプト取得・初期化・イベント登録Console / Network / scriptタグを確認
表示が変わるが意味が合わない入力値・配列・単位・更新対象値を固定して一条件ずつ確認
ボタンを押せないセレクターとDOM生成順序idが一致するかHTMLを確認
一部の端末だけ動かないブラウザ機能、権限、CDN、性能端末とバージョン、再現操作を記録

ブラウザ内でのエラーと公開Webサーバーの障害は別です。前者は開発者ツールのエラー内容、後者はHTTPレスポンスやアセットの配信条件から調べます。未知の失敗を成功と表現しないことが、技術メモの信頼性を高めます。

業務・学習への応用

設備の台数、サーバ監視のメトリクス、研修アンケートなど、多数の項目を手早く可視化したい場面に向きます。監視用途では更新時刻・欠測・集計単位・閾値の意味を別に設計しなければなりません。Chart.jsは描画を助けるライブラリであり、集計値の正しさを保証するものではありません。

導入前に決めること

読者へ公開するとき、表示したデータがどこから来るか、誰が変更できるか、画面へ残る情報の種類、ライブラリ更新時の確認項目を決めます。今回のデモにはログインもサーバー保存もありません。そこで運用機能を追加する前に、まず「想定どおり表示される最小部分」と「実務上の信頼性・権限・バックアップが必要な部分」を区別することを勧めます。第三者CDNは外部通信のため、企業ネットワークで許されるか事前確認が必要です。

別方式と比較する

方式向く場面注意点
Chart.js架空の交通費を動かしてグラフと合計を更新するなど目的に合う場面依存ライブラリの更新・利用条件の管理が必要
ブラウザ標準API小さな機能を自前で作る仕様や互換性を自分で確認する
静的画像・表操作を必要としない説明状態の変化をその場で体験できない

ライブラリは必要なときに選ぶ道具です。何を達成したいかと学習コストを合わせて比較します。「ライブラリを入れること」を目的にしない方が、小規模なページでは保守しやすくなります。

GitHubサンプル

ブログ本文は背景や考え方、Daily Codeは実行・改造するためのコード、という役割を分けています。外部サービスへ投稿・保存するAPIは含めません。

公式情報・一次情報

資料確認範囲: 2026-10-30にChart.js公式の導入・棒グラフ・更新APIを再確認。リンク先の将来の変更やすべてのCDNアセット応答まで保証するものではありません。

検証範囲の補足

Daily Codeの固定コミットと既存のNode.js構文検査結果を参照できます。ただし実ブラウザの画面表示、ライブラリCDNの応答、全端末での動作は未確認です。実際の動作は読者の環境でConsoleとNetworkを利用して確かめてください。

文書情報

記事タイトル
Chart.jsの棒グラフを操作する:金額・ゼロ・合計が見える体験
作成日
更新日
Source URL
https://papanda925.com/?p=18282

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

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