SESSION 04

PDF文書比較ツール

本日の最終成果物です。2つのPDFをアップロードするとAIが差分を分析するウェブアプリを、セットアップし、動かし、Claude Codeでカスタマイズします。

15:10 - 16:20(70分)
実践
OVERVIEW
このアプリでできること

Session 3ではHTMLファイル1つで動くアプリを作りました。ここからはサーバーとAI APIを使った本格的なアプリに挑戦します。

PDF文書比較ツールは、2つのPDFをアップロードすると、Claude APIがその内容を読み取り、一致点・相違点・片方にしかない記述を構造的に分析して表示するアプリです。分析結果をレポート形式やメール形式に変換する機能もあります。

FEATURE 01

PDF比較

2つのPDFをアップロードして「比較を実行する」を押すだけ。AIが内容を読み取り、一致点、相違点、固有の記述を分類して返します。

FEATURE 02

レポート / メール変換

比較結果をボタン1つでビジネスレポートや社内メールの文面に変換できます。上司への報告書作成を自動化する発想です。

Session 3との違い

Session 3のチェックリストはHTMLファイル1つで完結しました。PDF比較ツールは、サーバー(Express)がPDFの受け取りとClaude APIへのリクエストを担当し、フロントエンド(HTML/CSS/JS)がユーザー操作と結果表示を受け持ちます。役割が分かれている分、実務に近い構成です。

STEP 1 / 15 MIN
セットアップ

講師が配布したフォルダの中に pdf-compare-app があります。このフォルダをVSCodeで開いてください。

VSCodeでフォルダを開く
「ファイル」→「フォルダーを開く」で pdf-compare-app を選択してください。
ターミナルを開く
Ctrl + ` (バッククォート)でVSCode下部にターミナルが表示されます。
依存パッケージをインストール
以下のコマンドを実行してください。
// 依存パッケージのインストール(1回だけ実行) npm install

npmはNode.jsに付属するパッケージ管理ツールです。npm install を実行すると、このアプリが必要とするライブラリ(Express、Anthropic SDK、multerなど)が自動でダウンロードされ、node_modules フォルダに格納されます。

package.json というファイルに「このアプリが何を必要としているか」が書かれていて、npm install はそれを読み取って処理します。

環境変数ファイルの作成

Claude APIを使うにはAPIキーが必要です。プロジェクトのルートに .env ファイルを作成してください。

EXERCISE

.env ファイルを作成する

  1. VSCodeのファイルツリーを右クリック →「新しいファイル」
  2. ファイル名を .env にする(ドットから始まる点に注意)
  3. 講師から配布されたAPIキーを以下の形式で記入する
// .env ファイルの内容(講師配布のキーを貼り付け) ANTHROPIC_API_KEY=sk-ant-xxxxxxxxxxxxxxxx
APIキーは外部に公開しないでください

.env ファイルに記載するAPIキーは認証情報です。メールやチャットに貼り付けたり、GitHubにアップロードしたりしないでください。研修終了後にキーは無効化されます。

STEP 2 / 10 MIN
アプリを起動してテストする

セットアップが完了したら、サーバーを起動します。

// サーバーを起動する npm start

ターミナルに「PDF比較アプリが起動しました: http://localhost:3001」と表示されたら成功です。ブラウザで http://localhost:3001 を開いてください。

EXERCISE

PDFを比較してみる

  1. 講師が配布したサンプルPDF(2ファイル)を用意する
  2. 「文書1」エリアに1つ目のPDFをドラッグ&ドロップ
  3. 「文書2」エリアに2つ目のPDFをドラッグ&ドロップ
  4. 「比較を実行する」ボタンを押す
  5. AIの分析が完了するまで20〜30秒ほど待つ
比較結果を確認する
概要、一致点、相違点、片方にだけある内容の4つのセクションが表示されます。相違点には重要度(高/中/低)が付いています。
レポート形式に変換してみる
比較結果の下にある「レポート形式で出力」ボタンを押してください。ビジネスレポートの文面が生成されます。
メール形式に変換してみる
「メール形式に変換」も試してください。上司への報告メールのドラフトが生成されます。
サーバーを止めたいとき

ターミナルで Ctrl + C を押すとサーバーが停止します。再度 npm start で起動できます。カスタマイズ中はサーバーを一度止めてから再起動する場面があります。

STEP 3 / 15 MIN
アーキテクチャを理解する

このアプリがどう動いているかを把握すると、カスタマイズの精度が上がります。ファイル構成はシンプルです。

SERVER

server.js

アプリの頭脳です。PDFの受け取り、Claude APIへのリクエスト、結果の返却を担当します。Express というフレームワークで動いています。

  • /api/compare ── PDF比較
  • /api/convert/report ── レポート変換
  • /api/convert/email ── メール変換
FRONTEND

public/ フォルダ

ユーザーがブラウザで見る画面です。PDFのアップロード、結果の表示、変換ボタンなどを担当します。

  • index.html ── 画面構造
  • style.css ── デザイン
  • app.js ── 操作と表示
DATA FLOW
ブラウザ
PDF選択 + 表示
server.js
Express サーバー
Claude API
PDF読み取り + 分析
EXERCISE

Claude Code にコードの内容を聞いてみる

新しいターミナルを開いて(サーバーは動かしたまま)、Claude Codeを起動してください。

// Claude Code に聞いてみるプロンプト server.js を読んで、このアプリがどう動いているか 日本語で分かりやすく説明してください。

Claude Codeはファイルの中身を読んで解説してくれます。「/api/compare はどういう処理をしていますか?」のように、特定のエンドポイントを深掘りする質問もできます。

APIは、プログラム同士が会話するための窓口です。このアプリでは、ブラウザがサーバーにPDFを送る窓口(/api/compare)と、Claude APIに分析を依頼する窓口の2つのAPIが登場します。

エンドポイントはAPIの中の個々の入口のことです。/api/compare、/api/convert/report、/api/convert/email の3つがこのアプリのエンドポイントにあたります。

STEP 4 / 25 MIN
Claude Code でカスタマイズする

Session 3で覚えた「要件を伝える → 結果を確認 → 追加指示」のサイクルを、このアプリでも使います。以下のカスタマイズを順番に試してください。

EXERCISE 1

UIの見た目を変更する

フロントエンドの見た目をカスタマイズします。サーバーの再起動は不要で、ブラウザのリロード(F5)だけで反映されます。

// Claude Code に入力するプロンプト(例) public/style.css と public/index.html を修正して、 ヘッダーの背景色を紺色(#1a2a4a)に、 タイトルの文字色を白に変更してください。
EXERCISE 2

比較結果のJSON構造を変更する

server.jsのプロンプトを修正して、分析の出力内容を変えてみます。変更後はサーバーの再起動(Ctrl+C → npm start)が必要です。

// Claude Code に入力するプロンプト(例) server.js の /api/compare エンドポイントで、 比較結果のJSONに "recommendation" フィールドを追加してください。 それぞれの相違点に対して、どちらの文書の記載が望ましいかの推奨を AIに書かせるようにしてください。 フロントエンドの表示も対応させてください。
EXERCISE 3

新しい変換形式を追加する

レポートとメール以外に、もう1つの出力形式を追加してみます。

// Claude Code に入力するプロンプト(例) 比較結果を「議事録の付録」形式に変換する機能を追加してください。 server.js に /api/convert/minutes エンドポイントを追加し、 フロントエンドにも「議事録付録に変換」ボタンを追加してください。 出力は、会議で配布する資料として使える体裁にしてください。
カスタマイズ後の動作確認

server.jsを変更した場合は、ターミナルで Ctrl+C → npm start でサーバーを再起動してください。public/ フォルダだけの変更なら、ブラウザのリロード(F5)で反映されます。

CHALLENGE(余裕のある方向け)

自由にカスタマイズ

ここまでの演習を終えた方は、自分の業務を想定して自由に機能を追加してみてください。

参考リンク
AppForge(業務アプリ集) Claude Code 公式ドキュメント Claude API リファレンス
COMPREHENSION CHECK
理解度チェック
Q1. PDF文書比較ツールで、PDFの内容を実際に読み取って分析しているのはどこですか
Aブラウザ(public/app.js)ブラウザはPDFのアップロードと結果の表示を担当しています。PDF読み取りと分析はサーバー経由でClaude APIが行います。
BClaude API(server.jsから呼び出し)正解です。server.jsがPDFをbase64に変換してClaude APIに送信し、AIが内容を読み取って差分を分析します。分析結果はJSONで返され、ブラウザに表示されます。
Cnpm install でインストールしたライブラリライブラリはサーバー起動やファイルアップロードの処理を助けますが、PDF内容の分析そのものはClaude APIが担当しています。
Q2. server.js を修正した後、変更を反映するために必要な操作はどれですか
Aブラウザをリロード(F5)するだけでよいブラウザのリロードで反映されるのは public/ フォルダ内のファイル(HTML/CSS/JS)だけです。server.js の変更にはサーバーの再起動が必要です。
Bターミナルで Ctrl+C → npm start でサーバーを再起動する正解です。サーバー側のコード(server.js)を変更した場合は、一度サーバーを停止してから再起動する必要があります。
Cnpm install を再実行するnpm install はライブラリのインストール時に使うコマンドです。コード修正の反映にはサーバーの再起動で十分です。
Q3. Session 3のチェックリストとPDF比較ツールの構成上の違いはどれですか
A使っているプログラミング言語が異なるどちらもHTML/CSS/JavaScriptを使っています。言語の違いではなく、構成の違いがポイントです。
BPDF比較ツールはサーバー(Express)と外部API(Claude)を使っている正解です。チェックリストはHTMLファイル1つで完結していましたが、PDF比較ツールはサーバーがPDFの処理とAPI通信を担当し、フロントエンドが画面表示を担当する構成です。
CPDF比較ツールのほうがファイル数が少ない逆です。PDF比較ツールはserver.js、package.json、.env、public/フォルダ内の複数ファイルで構成されています。チェックリストのほうがファイル数は少なく済みます。