ショートカット
ファシリテーター × あり方
コーディングの向こう側
Hello, ANOTHER world!
オブジェクト指向のはなし
プログラミングのはなし
C言語実力診断クイズ
eSkillBooks
コーディングの向こう側

作る人・使う人 - PART1

誰かのせい度

使い方が悪い!?

使い方が難しい関数ってありますよね。引数の個数が妙に多いとか、エラーの意味が分かりにくいとか、メモリの解放をどちらがすべきかが謎だとか、使い終わったら後処理用の関数を呼ばないといけないとか、名前が変とか・・・。

使い方が難しい関数の使い方を間違えるのは当然です(だって難しいんだからっ)。で、それが後で問題になると、やはり「関数の使い方が悪いので直してください」ということになります。もうほとんど完成していてあとはバグを取るだけという状況ではとくに、使われる側の関数がきちんと必要な要求を満たしていれば、たとえそれがどんなに使いにくくても(!)やはり使い方が悪いということになるでしょう。その関数がいろいろなところで使われているのならなおさらです。

どちらの責任か

関数を作る人と使う人、どちらに責任があるのでしょう。つまり、使う人にとって使いやすいように配慮する責任を作る人は負っているでしょうか?それとも、関数の使い方が難しくてもそれを使う人は正確に使う責任があるのでしょうか?どちらだと思います?なお、「どちらにも責任がある」などという優等生な答えは却下します。

それぞれの場合について考えてみましょう。

まず、使う人が責任を持つ場合。ある使いにくい関数 f があったとします。それを作ったのは A さんです。その関数を使う人は B, C, D さんです。A さんは自分がやりやすい方法で f を実装したので特別な苦労はしていません。B さんは f が使いにくいので正確に使うのに苦労しました。C さんは特に苦労せずに自分の仕事をこなしたつもりでしたが後でバグがあることが判明しました。D さんはあまりにも f が使いにくいので A さんに抗議しましたが「もうみんなこの関数を使ってしまっているから今さら直せないよ」と言われて仕方なく面倒なやり方でやりました。結局、苦労した人は3人です。

次に、作る人が責任を持つ場合。A さんは使う人のことを考えてわかりやすいインターフェイスの関数 g を作りました。わかりやすいインターフェイスは A さんにとって楽な実装方法とかけ離れていたので作るのに苦労しましたし、テストも慎重に行わなければなりませんでした。B, C, D さんは g が使いやすかったので、簡単に使うことができました。それにバグも発生しませんでした。結局、苦労した人は1人です。

単純な話ですね。一般に、ある関数を作る人は1人、それを使う人は複数人です。プロジェクトチーム全体の効率を考えると、作る人が責任を持って使いやすい関数を作るべきなのです。そして、以前にも同じようなことを書きましたが、関数を提供する側の人ほどスキルを必要とします。とくにたくさんの人が使う関数を作る人には高いスキルが必要です。

問題の順位

目次へ
次へ

(「コーディングの向こう側」は2000年4月から2001年5月にかけて作成されたコンテンツです。)