ロギング処理、効率化しませんか? - システム開発のコストダウンを

ロギング処理、まだ全部書いてます?
★ロギング処理、効率化しませんか?
◎前提としてロギング処理は書いていますよね?
唐突ですが、皆さんロギング処理はちゃんと書いていますよね?
私たちの会社では、自社で開発して納品したものに限らず他社さんが開発したシステムのメンテナンスや原因不明の障害が発
生した際のトラブルシュート等をお引き受けしていることもあり、いろいろな開発ベンダーさんのプログラムソースやエラー
ログを見る機会があります。
たまに・・・、エラーが発生しても何もロギングしていないプログラムもあり、お客様と一緒になって「原因、なんだろうね
ぇ」と悩みます。
お客様にしてみれば、きちんと開発費用を負担したのに更に運用中のシーンにおいても原因追求がままならずに時間や費用を
要する・・・それってどうなのかなとよく思います。
◎ロギングの方法
例えば「メールを送信する」という処理があった場合、その処理を担当する関数が本当に呼ばれたかどうかを記録しておかな
いと、「メールが届かないんだけど」という問合せがあった時に
プログラムには関係の無いネットワーク環境やメールサーバーに何か問題があるのか
プログラムのどこかに不具合があってメールを送信する処理が実行されなかったのか
が分かりません。
そこで、例えば次のような形で「その処理を担当する関数はちゃんと機能したよ」とロギングするわけですよね(サンプルコー
ドはとても稚拙な感じですが、そこは読み流してください)。
public bool SendEmailToApprover(String to, String cc, String subject, String body) {
// 手続きが終わったら承認者に完了メールを通知します。
OutputLog("SendEmailToApproverが呼び出されました");
OutputLog(String.Format("to=[{0}], cc=[{1}], subject=[{2}], body=[{3}]", to, cc, subject, body));
// 実際にメールを送信する処理
・・・(省略)
OutputLog(String.Format("戻り値=[{0}]", result));
OutputLog("SendEmailToApproverが完了しました");
}
ただ・・・
こんな風にいちいちロギング処理を書いていたら作業量が増えますし、また、確実にロギングされていなければ肝心な障害発
生時の役に立たなくなる訳ですからプログラムソースのチェックやテストが必要です。
そうなると、結構な作業量が発生し、その分のコストも最終的にはお客様に転嫁されることになります。
◎AOPを活用した「いちいちロギング処理を書く」作業からの解放
Javaでの開発ではAOPやDIツールを使うということはスタンダードのような状況になっ
ていて、いろいろなソフトウェアがありますし、「今回はAOPとかDIツールは何を使
う?」という会話が成立します。
Windows系開発の場合は対応しているソフトウェアが少ないせいか、導入されていな
いのが多数ですし、そもそもAOPとかDIという用語に反応できないSEさん、プログラ
マさんが多い気がします。
図1:https://www.postsharp.net/
ロギング処理のように本来的な業務処理とは関係無い部分への作業量(開発コスト)は抑
えたいところですよね。抑えて浮いた分の作業量を業務処理の追加に充てたい。
そのようなことを実現してくれるのが "POST SHARP" というソフトウェアです。
例えば、上に挙げたロギング出力のサンプルコードであれば次の記述で済んでしまいます。
[Log]
public bool SendEmailToApprover(String to, String cc, String subject, String body) {
// 手続きが終わったら承認者に完了メールを通知します。
}
// 実際にメールを送信する処理
・・・(省略)
ログに関する処理記述は一切なくなり、メソッドの前に [Log] というAnnotationが付いているだけです。
もちろん、これが機能するためには幾らかの設定や準備は必要ですが、この1つの関数だけでも約4行のロギング処理コードが
減りました。
小さ目なシステムで500関数しかないとしても、全部で2,000~3,000のロギング処理記述が減ります。人の手作業が減るという
ことはミスも減りますから、開発コストを減らせ、ミス発生の可能性も減らせる・・・検討するに値しませんか?
運営企業
​
株式会社オープントーン
業務ソリューション事業部
〒101-0041
東京都千代田区神田須田町2-5-2
須田町佐志田ビル6F
Tel:(03)4530 6222
http://opentone.co.jp