skillup

技術ブログ

プログラミング全般

ミスを少なくする工夫について

投稿日:

プログラマであればだれもが「いかにバグを少なくするか」に腐心すると思います。

ところが、人間がある以上、バグ(ミス)は絶対にゼロにはなりません。バグ云々以前に、「人間はもともとミスをする生き物だ」という前提で取り組むことが大切でしょう。

そこには「エラーをおこさないようにする」「テストをしっかり行う」は対策とは言えません。ミスとは人間が認知できないものなので、それを認知しようとする試みは無意味だと思います。※超音波を聞き取ろうとするような試みだと思います。

自分用ですが「ミスを少なくするような科学的な取り組み」を考えたいと思います。

自分のミスの起こりやすいパターンを記録する

人間の未来を最も確実に予測できるのは、いままでに起こったことです。ですので「自分の起こしやすいミス」も「過去に起こったミス」です。これを記録しておき、のちの後述するチェックリストに活かすことが大事になってきます。

チェックリストを使う

自分のミスのパターンやプログラミングをする上でのするべきタスクやチェック事項をリスト化しておき、紙に書いておく。

フローを書き出す

プログラミングの流れを整理するために大切だと思います。特に複雑な画面遷移が絡んでくるとどこがどう動いて連動しているかがわからなくなります。以前複雑な画面でこれを行ったら見通しが一気にわかりやすくなりました。ドキュメントのようなものではなく、メモ程度でも書いておくと全く違うので、なるべくこれを書く。

日を置いて確かめる

文章を作るときに、日をおいて確認するとミスを発見しやすいですが、同じようにプログラムも日を置いて、テストすると頭を冷やした状態で確認できますので、1日でも日を置くとよいでしょう。

コードの勉強をする

バグが生まれやすい場合、バグを起こしやすいようなコードを書いていることがあります。バグを起こしにくいコードを読んだり、正しいコードの本を読むようにしましょう。

画面のチェックは紙に印刷する

帳票や画面などは紙に印刷して、正しいかどうかをチェックしましょう。ディスプレイで目だけだとどうしても見落としが生まれます。

小さい単位で確認する

複雑なプログラムの場合、どうしても処理が長くなります。小さい単位に分割して、確認しやすくしましょう。また日常でおこなう作業もできるだけ小さく分割すると行動がしやすくなります。

テストツールを導入する

テストコードを書いたり画面テストを取り入れてみましょう。ただし完ぺきにやろうとすると、労力がかかりすぎ、本末転倒になります。部分的に、できるところから、本末転倒にならないように行うことが大切です。

システム的なチェックを行う

以前いた学習塾で請求書の金額を確認するときに、2人で取り組み、片方がコンピューターの金額を、もう一人がそれを聞いて明細の金額が正しいかをチェックする、ということを行っておりました。このような確認方法だとエラーが起こりにくくなります。

気を付ける、のではなくてこのようなシステム的なチェックを行うことが大切だと思います。

上記の中で実行しやすいものを選び、改善状態を記録する

上記を全てやろうとすると機能不全を起こしたり、労力がかかりすぎます。できそうなものから少しずつやり、その改善状態を記録していき、習慣にしていくことが大切です。

 

-プログラミング全般
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

調査スキルについて

本日は実務でとても大切な不具合の発見方法について 通常のプログラマとして仕事をしておりますと、通常の実装よりは不具合時の調査のほうが難しいことが多々あります。 もちろんものによるんですが、経験のある人 …

no image

データ構造の基礎知識 前編 メモリとポインタ、配列と連結リスト

WEB+DB(vol91)で使えそうな連載記事がありますのでブログにメモリます。 テーマはデータ構造です。 Contents1 データ構造とは?2 計算量3 プログラムとメモリ4 配列について4.1 …

no image

オブジェクト指向設計 ダックタイピング

オブジェクト指向シリーズ。ダックタイピング・・読む前は名前は聞いたことあるような気がする・・程度で細かいことは何一つわからない状態でした。今回具体的なコード例があった分イメージを何とかつかむことはでき …

no image

バッチスクリプトで気をつけたい点

実務でバッチ処理を作る際に気をつけるべきと思ったこと。 基本的にエラーをいかに捉えていかにログに吐くかを最初に考える。まずはエラーありき。失敗するもの、想定した値がこない、あるいは値がないを前提として …

no image

オブジェクト指向 アプリケーション層に関して

本日も引き続き「現場で役立つシステム設計の原則」を読み進めてます。 本日は主にアプリケーション層(以下AP層)。MVCモデルでいうところのコントローラーに近い?)の考え方について。 Contents1 …