« ALTER文の自動生成機能 | トップページ | 「科学研究」としてのシステム開発 »

2017.01.07

「他人にとってのわかりやすさ」が至上の価値である

 最近ある事例で、業務システムをわかりやすく作ることの大切さをあらためて思い知った。ひとりの技術者が10年近く保守してきた案件なのだが、全面刷新しようということになったタイミングで、ある理由でかれが突然いなくなった。残されたシステムを調べてみると、まさにカオスと言うべき出来上がりで、まともなドキュメントもない。関係者が途方に暮れているのは言うまでもない。

 もちろん関係者にも責任の一端はある。そんな事態になる前に、リファクタリングしたり、ドキュメントを丁寧にまとめるための働きかけがあるべきだった。しかし、実際にそのような動きが何度もあったのだが、担当者はそれに応えることができなかった。なにしろ他人が見てもわからないシステムだったので、担当者自らが動かないのではどうしようもない。けっきょく、ズルズルと時ばかりが流れて最悪の状況を迎えてしまったのだった。

 将来このような事態に陥りそうなシステムはじつは少なくない。なぜそのようなことになってしまうのか。考えられる理由が一般に3つある。「担当者のスキル不足」、「担当者の身勝手さ」、「管理態勢におけるわかりやすさの軽視」だ。

■担当者として求められるもの

 担当者のスキルが不足していれば、システムはてきめんにわかりにくくなる。規模の大きなソフトウエアというものは「大論文」みたいなもので、そういうしろものをわかりやすくまとめるためには、事物一般をわかりやすくまとめるための独特なスキルが求められる。

 たとえば、日本語で気の利いたおしゃべりができるからといって、論文を端正にまとめられるとは限らない。同様に、気の利いたコードセグメントを書けるからといって、大規模ソフトウエアを端正にまとめられるとは限らない。業務システムのような工学構築物を設計・施工するためには、複雑膨大な要素を効果的にまとめるための知的能力(論理性や構成力)が欠かせない。その能力は、ソフトウエア開発に求められる基本的な職業適性のひとつといっていい。

 「担当者の身勝手さ」についてはどうか。担当者に十分なスキルがあるとしても、かれの身勝手さゆえにシステムはカオスに落ち込む。

 たとえば、そのシステムが自分にしか保守できない態勢を実現すれば、自分の永続的雇用を確保できるし、賃金交渉の面でも有利に立てる。これはある種のサボタージュであるし職業倫理に反している。なぜなら、人はいきなり欠勤したり入院したり転職したり死んだりするもので、残されたシステムを引き継ぐのはけっきょく他人だからだ。どんなに優秀であったとしても、システム構成を意図的にわかりにくくする(または、わかりやすくする努力を放棄する)といった開発姿勢は、あまりに身勝手と言わざるを得ない。

 また、「とりあえず動けばよい」といった刹那的な姿勢も誠実さに欠ける。「後で直せばよい」とほうり出されたものを実際に後で直せるほど我々は暇ではないし、先述したように、我々は今夜にも死んでしまうかもしれないアテにならない存在である。どんな瞬間でも「他人にとってのわかりやすさ」にこだわらねばならないし、わかりやすい構成を一瞬で生み出せるようなセンスも要る。

 困ったことに、その理由が「(誠実さはあるかもしれない)スキル不足」であっても「(スキルはあるかもしれない)身勝手さ」であっても、かれにしか保守できないシステムというものは、まったく同じように周囲を困らせる。いくら悪意はなかったと言い訳しても、悪意を持ってわかりにくくした場合と同等の悲惨をもたらす。いくらスキルが高いと周りから認められても、低スキルと同等の悲惨をもたらす。ゆえに、担当者に求められるものは「誠実さに裏打ちされた高いスキル」ということになる。

■管理態勢として求められるもの

 現実に目を向けると、他人にとってわかりにくいシステムのほうが多い。では、それらを構築した技術者には「高いスキル」も「誠実さ」もなかったのかというと、そうとは限らない。それらの適性を有する技術者を起用できることは、せいぜい必要条件であって十分条件ではないからだ。とはいえ、自分の胸に手をあてて考えてみてほしいのだが、あなたは自分が「誠実さに裏打ちされた高いスキルを有する技術者」だと言い切れるだろうか。そして周囲にそんな技術者が何人もいると言えるだろうか。実際問題として、そんなキトクな人物を待望しているうちにプロジェクトも人生も終わってしまうだろう。

 それゆえに、「わかりやすさを至上価値とする管理態勢」が必要だ。システムの品質を評価するための軸にはいろいろあるが、他人にとってのわかりやすさ(可読性、保守性)の重大さは見落とされがちだ。バグがないこと、安定稼働すること、レスポンスがいいことなどなど、システムのさまざまな特性は、その作りがわかりやすいからこそ改善・維持できる。当たり前の話だ。

 そのためにまずは、わかりにくさが軽蔑され、わかりやすさが賞賛されるような職場の雰囲気や価値観が必要だ。これに関して、わかりやすいシステムを生み出せる職場であるかどうかをチェックするための簡単な方法がある。現場のホワイトボードを一瞥すればよい。たかがホワイトボード上の板書さえ端正にまとめられない開発チームが、はるかに複雑な業務システムを端正にまとめられるとは期待しないほうがいい。つまり、わかりやすさを重要視する姿勢は「課題を選り好みしない」のである。

 語りであっても、文章であっても、図解であっても、設計書であっても、コードであっても、そしてそれが紙の上であっても、スクリーン上であっても、ホワイトボード上であっても、わかりにくいナニカを表出すれば非難され、わかりやすいナニカを表出すれば絶賛され、ナニも表出しなければ怠惰とみなされる。そんな緊張感のある職場であれば、技術者は表現力を必死に磨くだろう。職業適性があっても、それをプロレベルにまで鍛錬するための職場の価値観や管理態勢が欠かせないということだ。

 さらに、「わかりやすくまとめる能力」の要求度を現実的なレベルにまで低減できるようなソフトウエア上の仕掛けもほしい。なぜなら、わかりやすさを維持するには、JavaやRubyといった汎用言語でゴリゴリ書くやり方では「誠実さに裏打ちされた高いスキル」が求められるばかりか、際限なく工数がかかるからだ。ドメインに特化した記述様式(DSL)とそれにもとづいて動作する基盤(DSP)のような、生産性向上のための洗練された仕掛けが要る。それは、ソフトウエアの記述手段がドメイン特化しながら高級化し続けるという歴史の必然でもある。

 なぜそんな態勢が必要か。「誠実さに裏打ちされた高いスキル」を持たない、つまり逸材でも聖人君子でもない私やあなたが、わかりやすいシステムを生み出し、維持できるようになるためだ。そして、我々がいきなり欠勤したり入院したり転職したり死んだりしても、何事もなかったようにITインフラが存続するためだ。そんなさみしくも平穏な日常をもたらすための工夫を模索し続ける――それもまた、ソフトウエア技術者の役割である。

|

« ALTER文の自動生成機能 | トップページ | 「科学研究」としてのシステム開発 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/87674/64731428

この記事へのトラックバック一覧です: 「他人にとってのわかりやすさ」が至上の価値である:

« ALTER文の自動生成機能 | トップページ | 「科学研究」としてのシステム開発 »