「請求書を編集して更新したいのに、できない」。自社で作った請求書アプリについて、こんな相談を受けました。画面を見て「どこかが壊れた」と思いがちですが、今回の原因は少し意外なものでした。専門用語はできるだけ使わず、順番に説明します。

今回の症状

  • 請求書の一覧や詳細は、問題なく表示される
  • 入金の登録やステータスの変更も、問題なくできる
  • ただ、作成済みの請求書の内容(金額・明細・日付など)を直して保存することだけができない

原因は「壊れた」のではなく「機能がなかった」

調べてみると、エラーは一つも出ていませんでした。そもそも、請求書の中身を書き換えるための画面とプログラムが、アプリの中に存在していなかったのです。

請求書アプリは、レストランにたとえると分かりやすくなります。メニューには「注文」「会計」「お水のおかわり」があるのに、「注文の変更」だけが載っていない状態でした。お客様がどれだけお願いしても、お店に注文を変えるやり方がなければ変更できません。

請求書アプリには詳細表示・入金登録・ステータス変更はあるが、内容を編集して更新する画面と処理がなかったことを示す図
画面側にも、裏側のプログラム(PHP)にも「編集して更新する」部分がありませんでした。

PHPとは

PHPは、Webサイトやシステムの裏側で動く、よく使われるプログラム言語です。ボタンを押したときに「データを保存する」「計算する」といった作業をするのがPHPの役割です。今回は、その「書き換える作業」を担当するPHPの処理が足りていませんでした。

もう一つの落とし穴:手元のファイルが古かった

編集機能を追加しようとして、パソコンにあるアプリのファイルを調べたところ、本番のサーバーで動いているものより古い版でした。本番側には、登録済みの顧客を選んで入力できる機能や、品目をあらかじめ登録して選べる機能が後から追加されていました。

もし、手元の古いファイルに編集機能を足して、そのままサーバーへ上書きしていたら、どうなっていたでしょうか。編集機能は使えるようになっても、顧客選択や品目選択の機能が消えてしまいます。直したつもりが別の不具合を作る、よくある事故です。

手元の古いコピーで本番サーバーを上書きすると、顧客選択や品目選択の機能が消えてしまうことを示す図
「手元のファイルが一番新しい」とは限りません。上書きする前に、どちらが新しいかを必ず確認します。

実際に行った対応

  1. まず、原因が「故障」なのか「機能不足」なのかを切り分けました。
  2. 手元ではなく、本番に近い最新の版を探して、それを土台にしました。
  3. 請求書詳細の画面に「編集」ボタンを追加し、押すと現在の内容が入った入力画面が開くようにしました。
  4. 保存すると、小計・消費税・合計を計算し直し、明細を新しい内容に入れ替えるようにしました。
  5. 「いつ、何が編集されたか」を更新履歴に残すようにしました。
  6. 自分のパソコン内のテスト用データで、作成から編集、保存、履歴の記録までを確認しました。
  7. 変更内容を記録してから公開し、公開後の画面でも動作を確認しました。

テストでは、本物のお客様のデータは一切使っていません。実際のデータで試すと、間違えたときに元へ戻せなくなる恐れがあるためです。

安全にシステムを直す6つの手順

今回の流れは、アプリの修正に限らず、Webサイトや業務システムを直すときの基本にもなります。

原因を調べる、最新版を土台にする、自分のPCで試す、変更を記録する、本番へ公開する、公開後に確認する、という6つの手順を示した図
急いでいるときほど、「最新版を土台にする」と「公開後に確認する」を省かないことが大切です。

用語のやさしい解説

  • 本番:お客様や社員が、実際に使っているシステムのことです。
  • Git(ギット):ファイルの変更履歴を残す仕組みです。「誰が、いつ、何を変えたか」を後から確認できます。
  • push(プッシュ):手元の変更を、インターネット上の保管場所へ送る操作です。
  • 自動デプロイ:保管場所に変更が届くと、自動でサーバーへ反映される仕組みです。今回はこれを使いました。

システムを使っている方が気をつけたいこと

  • 「できない」と感じたときは、壊れたのか、そもそもその機能がないのかを、まず確認する
  • 修正を依頼するときは、どの画面で、何をしようとして、どうなったかを伝える
  • 修正前に、現在のファイルとデータのバックアップを取っておく
  • 修正後は、いつも使う操作で、実際に動くか確かめる
  • 業務のお客様データを扱うシステムは、テスト用のデータで試してから反映する

まとめ

今回の「請求書を編集して更新できない」問題は、プログラムの故障ではなく、編集機能がそもそも存在しなかったことが原因でした。さらに、手元のファイルが古かったため、そのまま上書きすると既存の機能を消してしまう危険がありました。

そこで、最新版を土台にして編集機能を追加し、テストと記録を行ってから本番へ公開しました。システムの修正は、早く直すことよりも、今ある機能を壊さずに直すことが重要です。

業務システムの不具合や機能追加でお困りの際は、フリーサポートエンジニアリングまでお気軽にご相談ください。