skillup

技術ブログ

プログラミング全般

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

投稿日:2016年6月2日 更新日:

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

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

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

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

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

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

チェックリストを使う

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

フローを書き出す

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

日を置いて確かめる

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

コードの勉強をする

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

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

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

小さい単位で確認する

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

テストツールを導入する

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

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

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

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

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

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

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

執筆者:


comment

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

関連記事

no image

ログの設計指針について

今まで10以上近い現場で仕事をしてきましたが、どの現場でも絶対必要になる(かつどこもあまり対策が取られていない)技術としては 検証したい状態の復元がすぐにできる(テストデータ作成) ログの適切な設計 …

no image

コードの抽象化

リーダブルコードも終盤に少しずつ近づいてきました。 今まではどちらかというとコードの点や線の技術に注目してきましたが、これからは面的な要素に注目していきます。 リーダブルコードでは「無関係の下位問題を …

no image

オブジェクト指向 クラスの設計と業務ロジックの整理

本日も引き続き「現場で役立つシステム設計の原則」を読み進めてます。 本日は主にクラスの作り方について。 Contents1 クラス設計と業務ロジック1.1 要点1.2 感想 クラス設計と業務ロジック …

no image

シェルスクリプト ファイル読み込み・switchなど

以前のエントリーに引き続き、シェルスクリプトでログを解析する処理があってそこで覚えたことなどをまとめておきます。 Contents1 ファイル読み込み2 switch文2.1 基本パターン2.2 条件 …

no image

ExcelVBAに関して(主にプロシージャ)

いつも半年ごとぐらいに触っていてあまり知識が蓄積しないので(汗)これを機につまづいたところをちょっとメモ。 Contents1 基本2 メモ3 参考リンク 基本 基本的な変数の代入や条件分岐、ループな …