中途半端

どうも、新スタッフの濱口です。

今やっているプログラムでエラーが出ました。
わけわかんないと思いますが以下がそのエラーメッセージです。
Unable to read font file (ファイルA):System.TypeInitializationException: An exception was thrown
by the type initializer for FTSharp.FTLibrary ---> System.DllNotFoundException: (ファイルB)
濱口は英語が苦手なのですが、どうやら(ファイルA)が読み込めない、(ファイルB)が見つからない、ということらしい。
しかし(ファイルA)も(ファイルB)もそこにあります。読めないだの見つからないだの完全なる言いがかりです。
ちなみに他のパソコンでは問題なく動いています。
(ファイルA)や(ファイルB)の名前を変えると
エラーメッセージの(ファイルA)は表示が変わりましたが(ファイルB)の表示はそのまま。
それらから判断するに、(ファイルA)は読めるがそれを処理する上で(ファイルB)が見つからない
ということらしい。
しかし(ファイルB)はそこにあります。pathが通っていないとかそういう問題ではありません。
丸一日悩みました。たぶん3日分くらい頭を使いました。
シナプスつなぎ直しすぎて頭の中はぐちゃぐちゃです。

で、たどり着いた結論が、
「(ファイルB)はあるがその中で呼び出していた(ファイルC)が見つからない」
のがちゃんと動かなかった原因。
(ファイルC)を入れてやると動きました。
ちなみに他のパソコンで問題なく動いていたのは
別のプログラムをインストールしたときに(ファイルC)もインストールされていたから。

しかしなぜ素直に「(ファイルC)がない」と言ってくれないのでしょう?
あのエラーメッセージから正解にたどり着けなかったのは濱口の英語力が低いせいではありません。
確かに低いですけど。
せめて「in (ファイルB)」となっていたらわかったかもしれませんが。

本当になぜこんな中途半端なエラーメッセージなのでしょう。
Microsoftだから」というのが一番納得できる答えというのがこわいところです。
「こんな中途半端ではいけない」ということでおっさんの前世紀の文章『15.逆効果』というネタをお送りします。



逆効果

通勤路にあるパン屋が、
「500円ごとにスタンプを押して、スタンプが×個になったら、×××円の
金券として使えます」
というサービスをしています。
スタンプの個数や金券の金額が『×××』となっているのは、知らないからです。
なぜ知らないかといえば、スタンプを押してもらったことがないからです。
なぜスタンプを押してもらったことがないかといえば、『500円以上買ったことが
ない』からではなく、『スタンプを押す台紙をくれない』からです。

「こういうサービスがあるんですが・・・」
と台紙をくれれば、その店に行くことが多くなるはずですが・・・。そのための
サービスのはずです。台紙を渡そうとしても「いや、いらないよ」と言われることが
多く、渡すのが嫌になったのでしょうか?
なぜ、台紙をくれないのか、その理由はわかりません。
でも、こちらから「台紙を下さい」とは言いにくいものです。

『もれなくプレゼント』というのをくれないとき、「これはもらえないの?」というのは
わりあい言いやすいのです。もしそれで嫌な思いをしても、もう二度とその店に
行かなければいいんですから。
しかし、「台紙を下さい」と言って嫌な思いをしても、スタンプをもらわなければ、
つまり、またそこに行かなければ台紙をもらった意味がないのです。

「台紙を下さい」と言えば、「はい、どうぞ」と快くくれるかもしれません。でも
「え? いるんですか」とでも言いたいのかという顔をするかもしれません(さすがに
面と向かって「え? いるんですか」とは言わないでしょうが)。

その危険を考えると、「台紙を下さい」とは言いにくいです。で、その後どうなるかと
いうと、その店から足が遠のきます。
『本来受けられるはずのサービスが受けられない』のでは『損をした』ような気に
なるからです。冷静に考えれば、『得をしないだけで損はしていない』のです。別の
店に行ったからといってサービスがあるわけではないのですから。
しかし、気分的にはすごく損をしたような気分になります。

また、通常の割引価格(もちろん定価より安い)のほかに『会員特価』なるさらに安い
価格を設定している店もあります。
「会員になると得ですよ」というサービスですが、この店でも「会員カードは持って
いますか?」と聞かれることはあっても(というかレジで必ず言われますが)、
「持っていません」という答えに対して「では入会しますか?」と言われたことは
ありません。広い店内、隅から隅まで見たわけではありませんが、『入会受付所』の
様なものもないみたいです。
この会員、入会金も年会費も無料らしいので、「入りますか?」といわれたら
「はい、入ります」と言うと思うのですが、言われないので入っていません。
すると通常の割引価格で購入することになります。それでも安いのかもしれませんが
会員特価と比べると高いですからやはり損したような気になります。
そして自然と足は遠のくのです。

サービスするなら徹底的に。しないのだったら何もしない。中途半端にやるのは
かえって悪くなります。



なんと3ヶ月もほったらかしにしていたんですね。月日のたつのは早い!

念のために。
「3ヶ月もほったらかしにしていた」はおっさんの話です。

濱口の意見としては
スタンプはともかく会員は面倒です。
「会員」といってもいろいろありますが、ようは住所やメールアドレスが必要な
会員登録は面倒です。だから「入会しますか」と言われてもむげに断ることがほとんどです。
もっとも店側としてはそれを得るのが目的でしょうからしかたないですけど。

で、おっさんの結論は「中途半端にやるくらいならしないほうがまし」ということで
一般論としてはたぶん正しいと思いますが、
今回のエラーメッセージの場合は何もなかったら絶対に正解にたどり着けませんでしたから、
中途半端でも何もないよりは何百倍もましでした。もっともこれは特殊なケースでしょうが。

一番いいのは中途半端でなく的確なエラーメッセージを出すことです。
もっとがんばれMicrosoft