【37】ソフトウェア・アーキテクチャーが倫理的な意味を持つことを考えよ
公民権、ID の盗難、悪意のあるソフトウェアといった話題を持ち出せば、ソフトウェアに倫理的な側面があるのは当然のことと考えられるでしょう。しかし、もっと地味なところでも、ソフトウェアの倫理が問題になることがあります。プログラムが成功を収めると、数千数百万、あるいはそれ以上の人々の生活に影響を与えます。その影響は、よいものもあれば悪いものもあります。プログラムが生活を向上させてくれることもあれば、たとえわずかでも生活に悪影響を及ぼすこともあるのです。
私は、プログラムのふるまいを決めるときに、法律よりも柔軟に、ユーザーに何ができて何ができないようにするかを決めています。必須フィールドや強制的に実行させられるワークフローに、控訴審はないのです。
ソフトウェア倫理は、乗数によって考えることもできます。最後に大きなインターネットワームが話題になったときのことを思い出してみましょう。それによってどれだけの被害が生じたかというような話を聞いたり読んだりしたと思います。大げさな推定被害額を示しながら、人から時間を奪うあらゆるものを非難するアナリストは、いつでもいます。ここから学ぶべきことは、マスコミが数字に弱いということや数字を大きく見せる人がいるということではありません。乗数とその影響です。
たとえば、特定の機能について決定を下そうとしているときのことを考えてみましょう。簡単な方法なら 1 日で作れますが、難しい方法なら 1 週間かかります。どちらを選びますか? 簡単な方なら 4 個のフィールドにかならず値を入力しなければなりませんが、難しい方なら不完全なデータにも対応できます。どちらの方法を選ぶべきなのでしょうか?
必須フィールドは特に大きな害があるようには見えないかもしれませんが、それはあなたの都合をユーザーに押し付けているということです。ユーザーが仕事を始める前に、余分に情報を入力することを強いるのです。情報を揃えるためにポストイットメモにデータを書き付けなければならなくなったり、入力したデータが失われたり、作業が遅れたり、イライラさせられたりすることになります。
たとえば、私が自分の店に看板を付ける場合のことを想像してみてください。地上から 1.5m くらいのところに看板を取り付けて、歩行者がかがんだり、よけて通ったりしなければならなくなっても良いと思いますか。私としては、はしごも踏み台も使わずに看板を取り付けられるので楽です。歩道をふさいでしまうわけでもありません。店の前を通るすべての歩行者から 2 秒ずつを奪う代わりに、私は看板の取り付けにかかる時間を 1 時間節約することができます。時間がたつにつれて、2 秒の迂回をさせられた人たちが費やした時間の総合計は、私が節約した 1 時間の何十倍、何百倍になっていきます。
あなたが楽をするためにごくわずかずつであっても他人の生活を不便にすることは倫理的ではありません。ソフトウェアが成功を収めると、数百万もの人々に影響を与えます。あなたが楽をしようとするたびに、その判断はあなたの都合をユーザーに押し付けることになります。自分の判断がそれらの人々に与える影響をかならず意識するようにしてください。自分の負担が重くなっても、彼らのためになる仕事をしようと思うようになるはずです。