今回はよくある「サポート」という言葉の意味について考えてみたいと思います。結局サポートなんてあってもあんまり意味ないんじゃないの?という話です。

※以下は一般的な考えとは本人も思っていません。あくまでも1エンジニアの個人的な意見ということでお読みください。

よくある勘違い

仕事をしている上で、特にソフトウェアに関しての話なのですが、「サポート」という言葉の意味を例えば電化製品でいうところの「保証」と同じような意味で考えている人がとても多いと感じています。

「メーカーの保証があるから安心。万が一動かない不良品だったら、きちんと動くものと取り替えてもらえる。」

電化製品などであれば上記のことが成り立つと思いますが、これがソフトウェアであったらどうでしょうか。ソフトウェアに電化製品などとおなじような意味合いでの「保証」はあるのでしょうか?デジタルの世界に「動かない不良品」ということがあり得るでしょうか?きちんと動くものと取り替えるようなことがあるでしょうか?・・・。そんなはず無いですよね。こっちのDVDからインストールしたら、なんだかちょっと動きがおかしくて、交換してもらったDVDからインストールしたら直る、なんてのはありえません。

保証ではなくサポート

まず、ソフトウェアの世界では「保証」ではなくて「サポートが受けられるかどうか」という話になります。そもそも考えてみて欲しいのですが、ソフトウェアに関して「きちんと動くことを保証する」なんていうことはできっこないです。電化製品などであれば一つ一つの部品からなにから全部メーカーが選択して、完全にコントロールできるのですが、ソフトウェアに関してはそれを動かすハードもバラバラ、OSもバラバラ、共存するソフトウェアもバラバラ。どんな環境でも「絶対に動く」なんて神様だって約束できません。

それに、意図した動作をさせられた(開発環境、テスト環境と条件が一致していた)としても、ソフトウェアにはバグや脆弱性がつきものです。ある程度の規模のソフトウェアでバグや脆弱性が無いものなんてありえません。これは人間が人間である以上かならず過ちを犯す、ということと同じレベルで確実なことです。だから「かならず動作することをあらかじめ保証する」なんていうことはそもそもできっこないし、したとしても嘘になります。

「サポート」の意味

では、「サポート」とはどういう意味なのかと言うと、これは結局「サポートする構成であるならば、なにかしら問題が起きたときに『対応します』よ」ということだと私は理解しています。ちなみに有償無償はまた別の話です。

- ソフトウェアだから、サポートしている構成でも動かないこともあります。その時には動くように直します。(そりゃすぐにってわけにはいかないけど・・・)
- ソフトウェアだから、脆弱性が見つかることがあります。その時には脆弱性を修正します。(なるべく早くやります。五月雨でだしちゃうとたいへんだろうから月に1回とかまとめてだそうかな・・・なんてところも。)
- 動くはずのものが動かないのであれば、調査させてもらいます。(時には無料で。場合によっては費用もらいますけど・・・)

実際はこのような形です。これが現実ですけど、これ以上も望めないですよね。

「サポート外」の意味

では逆に「サポートしない」というのはどういう意味なんでしょうか。それは「サポートする」の反対なので「サポートしない構成であるならば、なにかしら問題が起きたときに『対応しないこともありますよ』」ということだと私は理解しています。

- 動かないことがわかったときに、それがサポートしていないOS上での動作であれば、そのOSへの対応版はつくりません。(ビジネスなので、こっちが対象OSをふやすかもしれないですけどね。)
- 脆弱性が見つかっても、サポートしていない環境でのみの問題であれば直しません。あるいはサポート期限がきれているなら修正モジュールはつくりません。(でも、本気でやばい脆弱性で、実際に多く使われているなら社会的責任を考えて修正モジュール作ることもたまにあるけど・・・。)

では、サポートしない構成であることが分かっている場合を考えてみましょう。例えばWindowsならWindowsのバージョンはSPのバージョンがサポート外だった場合で、それでも動いてしまっている場合。あるいはサポートされていないレジストリの直接的な操作を行っている場合。サポート外だから全く動かないならややこしくないのですが、それでも動いちゃうことっていうのは往々にしてあります。この場合、例えば有償の問い合わせ窓口に相談したら、門前払いされるのでしょうか?それとも対応、調査してくれるのでしょうか?

で、これは実際にはケースバイケースだと思います。企業によってポリシーも異なると思います。私の体験した範囲では、門前払いされたケースというのは一度もありません。それどころか、サポートされない構成であるということを分かっていてもなお、いつもどおりの対応をしてくれた上に、修正モジュールを作成してくれたケースすら有りました。ただ、もちろん多額の費用請求をされましたので、結局世の中お金だ、ということなのかもしれません。

やってはいけないこと

私がおもうやってはいけないことは、「サポート」と「保証」を取り違えてしまうことです。

- 今回の構成は特殊な構成だけど、検証してみたら全部きちんと動いて問題なかった。でも、メーカーがサポートしないかもしれないからメーカーに確認しよう。

一見おかしくもなんともないと思います。実際にこのように考えている人が「サポート」という言葉の意味を理解して使っているなら間違いでも何でもないです。でも、以下のような意味で使っている人がいると思います。

- 今回の構成は特殊な構成だけど、検証してみたら全部きちんと動いて問題なかった。でも、メーカーが動作を保証しないかもしれないからメーカーに確認しよう。

これはそもそも前提を間違えていると思うんですね。そもそもメーカーが動作を保証するなんていうことはできないはずです。確認をお願いされたって、それはメーカーにしてみたって、実際に同じ環境をつくってみて、動きを試してみるしかないです。そして、それはすでに自分でやったことなのです。だとすると、いちいちメーカーにお金をはらってすでに自分が自分自身でやって確認したことを確認してもらうことの意味はこれっぽっちもないと思うのです。

この時期待されるのは実際には以下のようなもののはずです。

- 問題があったときに、調査協力してくれるか(門前払いされないか)
- どうしてもうまく動かず、原因が分からないときに、「特殊な構成をやめてくれ」という回答だけにならないか。(特殊な構成で動くように修正モジュールを作成してくれる道が閉ざされていないか)
- これらのソフトウェアに対して今後の修正版、アップデート版をだしてくれるか

1に関しては、場合によっては確認が必要かと思いますが、メーカーがどのような対応をとるのかすでにわかっているなら毎度毎度聞く必要はありません。

2に関してはそもそも動いているのだから今更聞いてもあまり意味がありません。やってみたら動かなかったのなら聞いてみないといけませんが、同じことをやれば動かないという結果になるだけなので、これまた聞くまでもありません。お客さんの要望を満たした上で実現できる別解、あるいは回避策を探しましょう。

3に関してはOSレベルソフトウェアレベルでは、修正版、アップデート版がでることは大抵の場合すでに決まっているわけですから聞いても意味がありません。

というわけで、私には意味があることとは思えません。

さらにいうと、動かなかったときに修正モジュールを作ってもらって…なんていう道はありえるようで実際にはほぼありえません。企業にもよりますが、大体修正モジュールまでつくるためにはしっかり調査をして原因を特定して、モジュールを作って、それをテストして…と、かなりのステップを踏まなくてはいけませんし、大企業になれば開発部隊は日本にはいないことが多いです。となると、日本の担当者と本国の担当者でのやりとりが発生し、文化の違いにより重要性がうまく伝わらず…など、相当時間がかかります。企業によるでしょうけど、長いところでは半年から1年コースになることもあります。

で、半年も1年も待ってられるのかというと、待ってられるはずがないケースがほとんどだと思います。そう考えると、サポートされる構成だから最悪直してもらえる、なんていうのは意味がないことも多いです。

さらにぶっちゃけると、サポートされてる構成でだって、問題はでるし、それをメーカーに伝えても原因がわからず問題が解決しない。そしてそれなのにサポート費用をとられるなんていうのはよくある話です。まず間違いなく製品の問題なのに。本当にひどい話ですが、これはまた別の時に書きましょう。

結局

というわけで、突き詰めて考えると

- もちろん明確にサポートされるような安全な構成で進めるのがいい
- でも、必要があるなら特殊な構成にするのはしかたがない
- テストしてうまく動いてるならサポートの有無なんて気にしても意味が無い
- 問題があったとしても回避策があったならそれですすめればよくて、それによってサポート云々なんて言い出しても時間の無駄

ということになると思います。というか私の中ではそうなっています。

異論反論などは多数あると思います。私も自分の考えが正しいとは思っていません。ただ、現実としてこうなってしまう、とは感じています。

私はSIerのエンジニアなので、その立場としては、メーカーがどう言っていようとも、お客さんが必要としていて、それを自分たちの工夫で実現できるのであれば実現し、きちんとシステムの最後まで面倒をみられればそれでいいのだと思っています。メーカーのサポートがなくても、そのリスクをお客さんとも共有し、飲んだ上でSIerがサポートする、というのはあっていいことだと思います。逆に、それができないからSIerである意味ってどこにあるんですかね?アメリカみたいに企業が直接構築して、メーカーとやりとりすればいい、ということになってしまうと思います。

と、思うのですが、皆さんはどう思いますか?