保守性を考えない一つの理由
保守性の話題はこれまでにも何度か扱いましたが、色々と問題を抱えているというのが私の考えているところです。保守性は業務で開発を行っているならば必要度が高い、それは理解できるのですが、それが理由でまた違う問題に発展しているのだと感じています。
私の基本的なスタンスは、ユーザーのためにも「開発者は新しい技術を知る必要がある」です。新しい事を知らなければ、より利便性の高いものを提供することができないと考えるためです。これは特に進歩著しい Web 界隈に限らず、オンプレミスでデスクトップアプリなこれまでの世界においても同様で、時代が変われば用いる方法も変化していかなければならないと思います。ですがここに保守性という言葉が絡んでくると、新しい技術を取り入れることが途端にハードルの高い事柄になってしまうのです。
少ない人数で開発している場合は、メンバー間で平均レベルを上げやすいこともあり新しい技術でも比較的取り入れやすい状態になります。しかし人数が増えた場合や、規模の大きい企業での開発であった場合、そのレベルをあげることは並大抵では行えません。そのような背景もあり、なかなか新しい取り組みを行うことができないのです。よく「誰にでもわかるコードを書け」と言われることがありますが、この「誰にでも」というのが非常に曲者で環境によっては高いレベルであるのですが、別の環境では非常に低いレベルになってしまう事が多々あります。
私は技術者であるならば自己研鑽するのが当然、と考える派なのもあり、低いレベルに合わせることは害悪とまで考えています。低いレベルに合わせることで、本来ならできることができなくなる、ユーザーに与えられるはずだった体験が与えられなくなるということが実際に起きています。このような状況を生み出す原因の一つに、保守性があると考えます。
この問題を難しくしている理由のひとつに、明確な基準がない、という点があります。わかりやすい、読みやすい、という感覚を指標にしているため避けられないのですが、個人差がどうしても排除できないのです。ある人が読みやすいというソースも、別の人が読みやすいとは限らないのです。ここはその人がどのような経験を積んできているか、どのような環境で業務を行ってきたかに大きく依存します。.NET 系で言えば、VB のソースは C# を書く人にとって読みづらいといったところです。慣れが解決することもありますが、中には生理的に受け付けがたいという人もいます。
またひとつの環境に限って言えば保守性が高いと言われるソースがあったとして、それが他の環境で保守性が高い事には必ずしもなりません。極論すればですが、保守性というのは属人的な指標を抜け出すことが大変難しいものであるため、「ある環境において」保守性が高いようにはできますが、機械的に判断またはそれに代わる明確な指標が作れないものなのだと思うのです。
属人的な要素を排除できない理由につながるのが、低いレベルに合わせなくてはいけない環境の存在です。禁止事項が多い環境が、まさにそのような環境にあたると思います。本来であればメリットが大きいのであれば利用するべき技術を、読めない人がいる、という理由で禁止する環境はたくさん存在しています。これがそのまま保守性につながり、保守性が高いコードでは新しい技術を盛り込めない、という状況を生み出してしまうのです。一度この状況に陥ると、以後は簡単に新しい事に取り組めなくなります。 環境特有の問題とはいえ、これは広く業界に浸透してしまっている問題です。閉じた世界で行っている限り、その世界以外でどう見られようとそれはあまり重要視されないのです。Web 媒体などで注意喚起をいくら行おうと、呼びかけたい対象の人たちはそもそもそのような媒体を見ませんので、決してこの声は届かないのです。
そのような環境が変わっていくことは、非常に長い時間を必要とします。当人たちの目に見える形にならなければ、どのような言葉をもってしても変化を起こすことはできません。それは環境の中にいる人だけでは、とても難しい事だというのは多くの方もご存知でしょう。ではどうすれば良いのか、となると採ることのできる方法を考える必要があります。それについては別の機会に書き出してみようと思います。
このように書き連ねると、保守性というものはあまり重視してしまうのはデメリットが強くなる要素なのではないかと私には感じられます。重要な要素ではあるのですが、環境的な理由からも逆にそれほど重視しない事こそが、業界的には良い方向に向かえるのではないか、そこまで考えてしまう事もあるほどです。一度保守性を考えずにコードを書いてみるのを薦めてみたいのですが、これも届いてほしい場所に程届かないと思うと複雑な心境です。ですが何も行動を起こさないのでは、いつまでたっても状況に変化を起こすことはできません。すぐには結果がでなくとも、諦めずに続けていく事が一番の方法なのかもしれません。