HOME > ソフテックだより > 第204号(2014年2月19日発行) 現場の声編「反省する気持ちが成長につながる」

「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。

ソフテックだより(発行日順)のページへ
ソフテックだより 技術レポート(技術分野別)のページへ
ソフテックだより 現場の声(シーン別)のページへ


ソフテックだより 第204号(2014年2月19日発行)
現場の声編

「反省する気持ちが成長につながる」

1. はじめに

私は入社してからシステム開発の仕事に携わり、20年が過ぎました。
その間に、大小様々な失敗をしています。

多くの失敗の中から、仕様書をきちんと読まずに作業を進めてしまい、大きな失敗をした経験を紹介します。

私が若い頃は、仕様書をゲームソフトの説明書のように、重要そうな部分だけを確認し、分からなければ読み広げるという方法で仕様書を読んでいました。
この時は、仕様書をきちんと読んだ方が良いことは分かっていますが、早くプログラムを作りたいという気持ちがあり、仕様書を読む時間を省いていました。

しかし、この時の失敗を経験してから、仕様書は必ず全てに目を通し、見逃しが無いことを確認するようになりました。
私と同じ失敗をしないように、今回の「ソフテックだより」を参考にしていただければと思います。

2. 開発内容

私が入社2年目の時に、組み込みシステムのLCD制御プログラム(ドライバソフト)を担当しました。
ドライバソフトを作るためには、回路図、CPUの仕様書、LSIの仕様書などを読み、制御対象の動きをイメージしなければなりません。
学生時代に電気工学の勉強をしていましたが、実践になると分からない専門用語も多く、入社2年目の私は、先輩に言葉の意味を聞きながら仕様の理解をすすめました。
ただ、未熟な私は仕様の理解やプログラム作成に時間がかかり、動かすことに集中して開発を進めていました。

LCD制御用のLSIを制御するプログラムであるため、LCDに目的の表示がされることや、オシロスコープを使って制御タイミング波形の確認をおこないました。
一通りの確認を済ませて、システム全体を管理する担当者へプログラムを引き渡しました。

私の作業はここで終了しましたが、その後で社内のシステムテストを実施し、お客様との合同テストも問題なく完了したと聞きました。
ここまでは順調でした。

3. 問題発生

問題なく開発完了したシステムでしたが、お客様が量産したところ、100台作って40台が動かない(LCDが表示しない)状況になったと先輩から聞きました。

この時点では、ハードとソフトの問題を切り分ける段階だったため、上司と先輩が相談しながらプログラム検証を進め、実力がない私は蚊帳の外でした。
翌日になり、先輩から私にも声がかかり、「原因になりそうなことはないか調べてみて」と指示を受けて、ようやく私も調査に参加しました。

「LCDが表示しない」という具体的な現象があったため、「自分の作ったプログラムが原因だったらどうしよう」と思いながら、LSIの仕様書とプログラムの比較を行いました。
ただ「40%の確率で動かないソフトを作ることはできないので、ハードの原因ではないか?」という気持ちもあり、いつもは読み飛ばしていたハードウェアの仕様についても確認をしました。

比較を進めると、LSIの仕様書に「電源投入から100mS以上経過してからLSIの初期化をしてください」という注意事項を発見しました。
しかし、私は注意事項のとおりにプログラムを作っていません。

電源投入からLSI初期化までの流れ
図1. 電源投入からLSI初期化までの流れ

古い話なので、記憶が曖昧ですが、この注意事項は、本文中ではなく、章末に注意事項をまとめて書いている中の1つだったと思います。

入社2年目の私は、「まずい」という焦りと、「自分の原因であって欲しくない」という祈りの気持ちを持ちながら、先輩と相談して、ソフトウェアが起動してから100mS以上経過してからLSIの初期化をする対策ソフトを作りました。

量産して動作しなかったシステム数台に暫定ソフトを入れたところ、LCDが正しく表示されました。
私のミスが確定した瞬間でした。

仕様書に記載されている注意事項を読んでいれば防ぐことが出来た不適合です。
自分に対する怒りと、多くの人に迷惑をかけて申し訳ないという気持ちで、胃が痛くなり血の気が引く思いをした記憶が残っています。

原因が分かった後の正式対応は、先輩が対応してくれました。
私はお客様と会うことはありませんでしたが、先輩はお客様へ謝罪し、ROMを作り直して100台分のROMを載せ替えたのだと思います。

その後に、上司や先輩に叱られることもなく、「マニュアルはきちんと読まないとダメだよ」とだけ言われました。

4. 自分の成長のために反省する

このような不適合は、自分が開発している時に発生してくれると良いのですが、客先との合同テストや、量産時などに発見されることもあります。

「運が悪い」とか「自分は悪くない」と考えて精神的に楽になりたいところですが、そのように考えていたら、同じミスをしていたかもしれません。

この時の反省から、現在はプログラムを作る前にCPUやLSIの仕様書を読み、プログラムを作るうえで注意する部分は仕様書にマーキングしています。
特に、注意事項の項目は、見逃しがないように徹底して確認します。
また、プログラムを作った後も、そのマーキング箇所を再確認してプログラム上での考慮不足が無いことを確認しています。

不適合を出した時に先輩から叱られることもなく、問題から逃げて、不適合のことを忘れたい気持ちもありましたが、不適合を出した時の自分に対する怒りや、他の人に対する申し訳ないという反省の気持ちがあり、対策として上記のような仕様書の読み方をするようになり、20年近く継続しています。

継続できた理由を振り返ると、勇気をもって失敗を受け入れ、反省できたことが自分の成長につながったのだと思います。

経験を重ねると、失敗の質が変わってきますが、失敗は必ずあります。
自分の成長のためにも、失敗を受け入れ、謙虚に反省する気持ちを持ち続けたいと思います。

(T.O.)


関連ページへのリンク

関連するソフテックだより

ページTOPへ