分割統治法を使って、問題の原因を調べる

某ベンダーのWebアプリケーションフレームワークに会社固有の機能を追加したWebアプリケーション基盤の保守を行っています。
先日、Webアプリケーション基盤のメンテナンス画面でデータベースエラーが発生しているという問合せを受けて、調べ始めました。


こんなとき、プログラマーと呼ばれる人たちは、分割統治法を使って、問題のある箇所を小さく分割しながら原因を調べていくことが多いです。


まずWebアプリケーション基盤の最新バージョンで発生するのか、1世代前のバージョンから発生しているのかを調べてみました。
この結果、最新バージョンのみで発生していることが分かりました。
ということは、1世代前のバージョンから最新バージョンの間に、変更した箇所に問題がありそうです。


変更した箇所は、アプリケーションから呼び出してもらうためのAPIクラスと、実際の処理を行っている業務クラス、データベースのテーブルからデータを取得するためのデータアクセスクラスでした。


データベースエラーが発生していることから、データアクセスクラスに問題がありそうと考えて、このソースから調べ始めました。
調べた結果、前回、クラスを変更したときに、あるID(※)を重複して登録してしまったために発生していました。
※ 某ベンダーのWebアプリケーションフレームワークは、アプリケーションが使うSQLにユニークなIDをつけて、外部ファイルから読み込むような仕組みになっていました。

f:id:hikotaro_san:20190719143846p:plain


と、こんな感じで、今回は、問題の原因を見つけて、対応することができました。


分割統治法は、いろいろな分野の問題解決力を高めるのに役立つので便利です。
ちなみに、そもそもアプリケーションが役割ごとのプログラムに分割されていない、GitやSubversionなどのツールを使ってバージョン管理がされていない...場合は、この方法も使えません。 アプリケーションの設計やツールなどを日ごろから考えておく必要があります。


【参考】
プリンシプル オブ プログラミング3年目までに身につけたい一生役立つ101の原理原則