プログラマー思考の仕事術!将来発生する問題に備えてログだけは残しておこう

large_130617196
photo credit: guccio@文房具社 via photopin cc

私の愛しいアップルパイへ

システム系の専門学校に通い、システムエンジニアとして勤めたのが6年半。約10年間システムの仕事に触れる中で、プログラマーの考え方があらゆる仕事術や整理術に応用できることに気づきました。

▼そう思って前回からプログラマー思考の仕事術についてお話をはじめました。

今日は「将来に向けてログを残す」ということにフォーカスを当てていきます。

プログラマーは将来の問題に備えてログを残す

プログラマーがプログラムを組むときにまず考えるのは、目的の処理を達成するロジックを組むことです。そして、処理ができあがったら次に考えるのが、どこの処理でどんな内容の動作ログを出力しておくかです。

▼よくあるプログラムのログの一例

問題が発生したときに備えてログを残す

プログラマーは自分のプログラムが完璧でないことを知っています。ですから、プログラムの中には将来問題を引き起こす潜在的なバグが潜んでいることを前提として考えています。

そして、将来問題が発生したときに、その問題をスムーズに解決するための重要な手がかりがログなのです。もし何もログがなければ、問題が発生したときの状況だけをみて解決しなければならないので、とても困難な作業になります。

例えば、在庫管理システムについて以下のログを出力するプログラムを考えてみましょう。

1.ユーザーがアクセスした
2.ユーザーがログインした
3.ユーザーが在庫の変更ボタンを押した
4.入力された在庫数をデータに反映した
5.ユーザーの画面に変更後の画面を表示した

このシステムについて、ユーザーから「ヘイ!ブラザー!在庫管理システムで在庫が変更できないんだ!いったいどうなってる!!」という問い合わせがあったとしましょう。

上記のログを1つ1つ順に見ていけば、原因調査と対策はスピーディーに完了できる可能性が高いでしょう。例えば5のログに問題があったりまったく出力されていなければ、画面表示の処理で問題が発生しているとすぐに分かります。もしまったくログが無ければ、あらゆる可能性を想定してテストを繰り返さなければならなくなります。

時間はログの必須項目

ログの内容について少しお話しておきます。

ログとして出力する内容については、プログラムによって様々なものが考えられます。ここもプログラマーのセンスが問われるところです。

ただ、どんなログであろうと処理の日時だけは必須項目です。処理時間は、他のあらゆる事象と関連付けする情報になるからです。

上記の例なら、5のログの時間とカレンダーを見比べたら、該当の時間に停電が発生していたことが分かるかもしれません。

自分の仕事でも負荷にならない範囲でログを残しておく

このログの考え方が、実際の私たちの仕事にどう応用できるか考えてみましょう。

私がまずもって指摘したいのは、人手でやる仕事はログが少なすぎるという点です。インプットとアウトプットがあっても、その間のログがまったくないなんてことはよくあります。

「何時何分にどんな資料を作り始めたのか」「何時何分にどの会議が始まったのか」「何時何分に昼食に行ったのか」「何時何分にイベント会場を開場したのか」「何時何分に上司に報告したのか」

もちろん通常の仕事ではログは自分の手で残しておかねばならないので、なんでも残しておくのは難しいでしょう。しかし、ログが必要な仕事を選別して、自分の仕事のログを残す習慣があれば問題解決に向けて重要な情報となるでしょう。

着手した仕事のログを大まかにでも残しておけば、残業時間が増えている理由が分かるかもしれません。いつも提出がギリギリになってしまう資料作成の経過をログとして残しておけば、どこで一番時間を使っているか分かるかもしれません。昼食のログをとっておけば最近太った原因が分かるかもしれません。

▼記録の効力については以下の記事でも取り扱っているので、併せて読んでみてください。

未来に生きるログの残し方

最後に、具体的に日常生活でのログの残し方についてお話します。

まずは、今自分が改善したいと思っていることや、重要だと思っていることのログを残すようにしてみましょう。

▼家計簿などはそういったログの典型例と言えるでしょう。

▼特定の仕事に絞らないのであれば、行動ログや日記がオススメです。

▼また、ログをとるにはアナログツールよりデジタルツールの方が圧倒的に相性が良いです。特にオススメなのがEvernoteにログをためこんでいく方法です。

貴下の従順なる下僕 松崎より

モバイルバージョンを終了