ツール屋さんの仕事
以前、一年分の仕事が確保できたと一人よろこんで居たわけですが、そのあと契約が進まず。。。いよいよ、新しい案件探しに走らないといけないか?と心配しはじめたところで、ようやく契約成立しました。ホッ。
さて、最近「ツール屋さんの仕事って何なんだろう?」と考えさせられる出来事があり、ここで自分の考えを整理してみたいと思います。
使われないツールたち
モデルベースといえば、ラピッドプロトタイピングから始まり、MILS、SILS、HILS、自動コード生成、テストパターン生成など、ツール作りのネタになりそうなトピックが盛りだくさんです。
これまで、長い時間をかけて沢山のツールを作成させていただきましたが、ほとんど使われていないツールがたくさんあります。
そういったツールの作成は、だいたい次のようなストーリーで進んでいきます。
お客様 「モデルベースは、こうあるべきだ。だから、こういうツールを作りたい。やれるな?」
私 「ははー。おおせのままに。」
・・・3か月後・・・
私 「おっしゃる通りのツールが出来ましてございまする」
お客様 「よし、よくやった。では現場に配るとしよう」
・・・さらに1か月後・・・
私 「現場では、だれも使ってない。ガーン。」
うーん、実に残念。ツール屋さんの最終目的は、お客様の業務改善にあると思っています。ツールを作って、それが開発効率を少しでも押し上げられたとき、はじめて費用をかけた意味が出てきます。
ツールを誰も使っていない = 業務改善効果は0
という残念な状況に、ガッカリすることひとしおでした。
お客様の方針転換と、あらたな発見
ここで、お客様の方針が変わります。これまではお客様がツールの要望を出し、それを私が作成するという形でした。それが、次のようになりました。
お客様 「吉武さん、車両で実際に起こった不具合の解析業務を出してあげるから、実際にやってみて?」
私 「ははー。おおせのままに。」
そうして必要な資料を見せていただきつつ、自分の作ったシミュレーション環境を使おうとしたらアラ不思議。
言われるがままに大量の機能をぶちこんで作ったシミュレーション環境、用意するだけで数時間かかるし、シミュレーション開始ボタンを押してから動き始めるまでに1分かかったりします。
私 「ふざけんな。こんなもん使えるか(自分で作ったことを棚にあげつつ)」
まず、こんなツールを作っちゃった事を大反省です。そりゃー、誰も使わないわけだ。そこで、業務を実施するのに、本当に必要最低限な機能だけを持ったツールを作り直すことにしました。
ツールを作り始めること、約4時間。バカでかい制御モデルから、本当に見たい部分だけをサクっと切り出して動かすツールの完成です。厳密さなんか、どうでも良し。使えることが最優先ですよ。
こうして作ったツールを元に、不具合解析すること約4時間。原因判明!
私 「原因がわかりました。微妙なタイミングで起きる、すっごいレアな不具合ですねー」
お客様 「え?もう分かったの?」
このあと、何パターンかレアな不具合の解析をまかされましたが、このツールを使ってさくっと解析、さくっと原因究明です。
こりゃイケるぞっていう事で、ツールにちょろっとマニュアル付けてみましたらば、制御開発責任者の方にバカ受け。あっという間に現場に広めていただき、バリバリ使われるようになりました。その結果、部署内の説明会で、マネージャー層に紹介されるまでになりました。(これ、ちょっとすごい事なんです)
3か月かけて作ったツールは見向きもされないのに、半日で作ったツールがこんなにウケるとは・・・ちょっとショックでしたね。
傾向と対策
何がいけなかったのだろう?と反省しますに、たとえ必要な機能を持っていたとしても、以下の条件を1つでも満たしているツールは使われにくいように思います。
・実行するのに時間がかかる (現場の人は、とっても忙しい!)
・習得するのが大変 (現場の人は、自分の業務で頭がいっぱい!)
・ちょっとでも問題があると動かなくなる (現場の人は、バッドノウハウに興味なし!)
理想のモデルベース開発を実現しよう!だとか、色んなパターンで使えるように汎用性を持たせよう!だとか考えはじめると、たいがいどれか1つ2つに引っかかります。
ツールを誰も使っていない = 業務改善効果は0
ですから、そういうのは非常にマズいんですね。これに対抗するには、大きく3つの方法があります。
パターン1:現場に特化して、極限までシンプル化
たとえば、上記の不具合解析ツールですが、今のお客様の現場でしか使えません。汎用品ではないのです。
お客様が使われている開発ツール、お客様が採用されているモデル構成、そういったものに極限まであわせています。
その結果、5分で準備完了、超高速でシミュレーション実行、という事が実現できています。覚えないといけないことや、必要な操作も最小化しているため、ちょっと使ってみようかな、という気になり易いようです。
パターン2:難しい事は、肩代わり
たとえば、お客様の部署ではHILSがよく使われています。HILSは、
・用意するのは大変(I/O回りからプラント整備まで、沢山のノウハウが必要)
・使うのは簡単(ベンチや車両と同じようにECUを用意するだけ)
という両面性があります。そこで、HILSの大変な部分はすべて私が受け持っています。「難しい部分はやっておきましたから、一通り動くようになってます。あとは、やりたい評価にあわせてプラントモデルいじるだけでいいですよー」という状態を常に保っているため、みなさん適当にイジってはECUの動作確認をされています。
その他にも、夜中にモデルをごにょごにょするシステムを作っているのですが、このシステムの管理はノウハウが要るので私の仕事です。一方、ごにょごにょした結果は誰でも見られる形式で公開しており、それを見るのにノウハウ等は一切いりません。これも皆さんに使っていただけているようです。
パターン3:使え!と強制する
まったくもってオススメできない手段です。少なくとも私の関与するところではありません。
パターン1、パターン2、いずれかをトコトンつきつめて、納得しながら使って頂けるのがベストです。
ツール屋さんの仕事って?
ツール屋さんの目標は、ツールを通じて、お客様の業務を改善する事です。
業務の改善効果 = ツール利用率 × ツールの持つ効用
といったところでしょうか。ちょっと複雑なツールを作ると、あっという間にツール利用率は0に落ちますから、とにかく工夫が必要です。
ですから、ツール屋さんの仕事とは、「シンプルさと機能のバランスが取れたツールを作ることで、業務の改善効果を最大化すること」と言える気がします。
(「シンプルさ」とは、あくまでユーザーから見たものなので、難しい部分を誰かがやってくれる仕組みにしておけば、それはそれでアリと言えます。)