This page is available in Japanese only.

見積から入金確認まで、1 か所で。
「経理システム」は、当社が自社の業務のために設計・開発し、日々の請求業務で使っている Web アプリケーションです。小規模な制作会社では、見積書は表計算、請求書は別のサービス、入金の確認は通帳の目視、経費は会計ソフトへ手入力……と、同じ案件の情報が散らばりがちです。このシステムは、その流れを見積 → 請求 → 入金の照合 → 領収書 → 集計まで 1 つの画面で追えるようにしたものです。
もともと別の構成(Next.js と Supabase)で動かしていたものを、2026 年に Laravel と MySQL へ作り直しました。移行の際に過去の帳票と通帳の照合をやり直し、運用で事故になった点を「変えてはいけない規則」として仕様に固定しています。

主な機能
- 帳票の作成と状態管理: 見積書・請求書・領収書・おまとめ請求書。見積から請求書への変換、入金済みの請求書からの領収書発行、受注・制作進行中・失注の印、一括操作と CSV 出力
- PDF とメール送信: 適格請求書の要件に沿った PDF をその場で生成し、メールで送信。保守契約の請求書は月ごとに ZIP で一括ダウンロード
- 入金消込と通帳の取込: 銀行の明細 CSV を取り込み(同じ行は二重に入りません)、入金を請求書に紐付けて残額を消し込みます。振込名義の表記ゆれは「名義レジストリ」に登録しておくと、次回から顧客を自動で当てます
- 前受金: 先にまとめて受けた入金を月々の請求に取り崩していく契約を、売上とは別に記録します
- カード・QR 決済と経費: PayPay・デビット・クレジットカードの明細を「どこにいくら使ったか」の一覧に取り込み、店名ごとのルールで科目を自動付与。領収書は OCR の読み取り結果を取り込み、マネーフォワード クラウド会計の仕訳帳形式で書き出します
- 保守契約の自動生成: スケジュールを登録しておくと、月次の保守費用などの帳票が毎月自動で作られます。「何月度分か」を台帳で管理するので二重生成が起きません
- 売上・予実・出張記録: 会計年度(開始月は設定可)に合わせた月次・顧客別の売上、予算と実績の比較、出張の記録
- Slack 連携と運用の仕組み: 日次・週次・月次のレポートを Slack に投稿。管理者・税理士・一般の 3 つの権限、メールでの 2 段階認証、削除や設定変更をすべて残す操作ログ


お客様ポータル
お客様ごとのログインを用意し、社内の管理画面とは別のアカウント体系で動かしています。
- 帳票の閲覧: お渡しした見積書・請求書・領収書・おまとめ請求書を一覧で確認し、PDF をその場で表示・ダウンロード。入金状況・支払期限・振込先も同じ画面に出ます
- 打ち合わせの議事録と宿題: 参加者・内容・決定事項・当社の宿題・お客様の宿題・次回予定を共有します。公開した議事録だけが見え、社内メモは出ません。前後の議事録への移動、宿題の持ち越しと「対応済み」の印、印刷に対応
- パスキー対応: メールとパスワードに加えて、Face ID や指紋で使えるパスキー(WebAuthn)でログインできます
- 他社の情報は見えない構造: 帳票や議事録の読み出しは、顧客の条件を必ず掛ける 1 つの経路だけを通し、別の会社の ID を指定しても「存在しない」として扱います
社内側では、打ち合わせの文字起こしを貼り付けると Claude API が議事録の各欄の下書きを作ります(下書きは人が確認してから公開します)。


技術スタック
区分 | 採用 |
|---|---|
アプリケーション | Laravel 13 / PHP 8.3 |
データベース | MySQL |
画面 | Blade + Tailwind CSS 3 + Alpine.js 3、Vite でビルド |
dompdf(帳票の生成)、FPDI(おまとめ請求書と明細の連結) | |
金額の計算 | brick/math(10 進数のまま計算し、浮動小数点を使わない) |
認証 | メール + パスワード、メールでの 2 段階認証。ポータルは laravel/passkeys + WebAuthn |
AI | Claude API(文字起こしからの議事録の下書き) |
連携 | SMTP(帳票のメール送信)、Slack API(レポート投稿・スラッシュコマンド) |
サーバー | Xserver(共有ホスティング) |
品質 | PHPUnit・Larastan・Pint |
専用サーバーやコンテナ基盤を使わず、一般的なレンタルサーバーで動く構成です。
設計の原則
経理のシステムは「数字が合う」ことがすべてです。実際に起きた問題から、次の規則をコードと仕様の両方に固定しています。
- 税計算は 1 か所だけ: 消費税・小計・総額の計算は 1 つのクラスだけが行い、画面も PDF も保存した値を表示するだけで再計算しません。税額は税抜合計に対して 1 回だけ四捨五入します(適格請求書の要件。明細ごとに丸めると 1 円ずれます)
- 番号の採番は原子操作: 帳票番号・顧客番号は「読んで +1 して書く」をせず、データベースの 1 命令で採番します。同時に発行しても番号が重複しません
- 未入金は残額で数える: 分割で一部入金された請求書は、受け取った分を引いた残りだけを未入金に数えます
- 入金の割当にガードを置く: 1 件の入金の二重割当や、入金額を超える充当ができないよう、書き込みの前後で検算します
- 消す操作は必ず記録する: 削除・一括更新・設定変更は操作ログに残します(パスワードやトークンは含めません)
- 秘密情報は暗号化して保存: メールサーバーのパスワードや Slack のトークンは AES-256-GCM で暗号化してから保存します
- 本番への適用は fail-closed: データを書き換えるスクリプトは、実行前にバックアップと承認の記録を機械で確かめ、満たさなければ止まります。ゲートを迂回する仕組みは作りません

デザインの意図
画面は「モダンな SaaS」のトーンを基調に、経理の画面に必要な約束事を 1 つの表に決めてから作っています。
- 用語を 1 つに決める: 「帳票」「顧客」「送信済」「入金消込」「残額」「遅延」など、同じものを画面ごとに違う言葉で呼ばないよう用語集を持ち、テストで逆戻りを防ぎます。日付は
2026/10/28、金額は¥1,234、負の数は-¥1,234に統一 - 色は「状態」にだけ使う: 緑は済んだもの(入金済・受注)、青は進行中(送信済・期限内の未入金)、橙は人の対応が要るときだけ(入金不足・要確認・未分類)、赤は期限超過や食い違い、灰色は終わったもの(取消・失注)。帳票の種別や勘定科目のような「種類」には色を付けません
- 値が無いときは「—」: 0 と「分からない」を区別します。残高が取れていない口座は ¥0 ではなく「—」と出し、合計も同じです
- 主ボタンは 1 画面に 1 つ: その状態で次にやること(未送付なら「メールで送る」、送信済なら「入金済にする」、入金済なら「領収書を発行」)だけを目立たせ、戻す・取り消す・削除は「⋯ その他」のメニューに分けて結果を添えます(「入金記録・通帳との紐付けが消えます」)
- 確認は画面の中で: ブラウザ標準の確認ではなく画面内のダイアログで、OK ボタンは「削除する」「消して戻す」のように動詞にします。取り返しのつかない操作は赤いボタンにし、最初のフォーカスを「キャンセル」に置きます
- 固定ヘッダーと一括操作バー: ヘッダーは画面上部に、複数行を選んだときの操作バーは画面下部に固定し、スクロールしても手が届くようにしています
- モバイルはカード表示: 一覧はスマートフォン幅では行をカードに組み替え、絞り込みは折りたたみに。入力欄は 16px にして iOS の自動拡大を防ぎ、色のコントラストは WCAG AA を満たす値にしています
- PDF は日本の商習慣に合わせる: A4 縦・Noto Sans JP、紺の見出し帯、文字間を広く取った「御請求書」の表題、金額の大表示。合計欄は「小計(10%対象)」「消費税(10%)」「源泉徴収税額」「ご請求金額」の順で、登録番号と振込先を記載します

開発の進め方
このシステムの機能追加は、AI エージェント(Claude Code)を設計・実装・監査の 3 つの役割に分け、それぞれ別のコンテキストで進めています。
- 設計: 要件からコードと実データを読み、集計の二重計上・採番・入金消込・税計算・削除時の後始末といった整合性の論点を仕様書に明記します。実装はしません
- 実装: 仕様書だけを根拠に実装し、テストを書きます。仕様に不足や矛盾を見つけたら自分で判断せず設計へ差し戻します
- 監査: 設計にも実装にも関わっていない別のエージェントが、仕様との一致と不変条件を実データで確かめます。監査が通るまで本番へ反映しません
当社の担当者は、各役割の成果物の受け渡しと本番への反映の判断だけを行います。設計した人が自分で確認する体制で起きがちな「思い込みをそのまま確認する」ことを、役割を分けて避けています。
提供の形
ここで紹介した仕組みは当社の業務に合わせたものですが、構造は制作会社・士業・保守契約を持つ事業者に共通します。
- 御社の帳票の様式・採番規則・会計年度に合わせた経理システムの構築
- 既存の見積・請求データや通帳データの移行と照合
- お客様ポータル(帳票の共有・議事録・宿題)だけの切り出し
「請求と入金の突き合わせに時間がかかっている」といったご相談から承ります。システム開発のサービスもあわせてご覧ください。お問い合わせフォームからお気軽にご連絡ください。