非機能要件ということばのワナ

 

インフラエンジニアとして、特に構築まわりの仕事をし出したときに、「非機能要件」という言葉を初めて聞きました。ある打ち合わせで、開発エンジニアから「非機能要件の話です」「そうですか」という会話を聞いて、へえ、なんだろうそれって、という思いでがあります。

ただ、インフラの仕事をする限り「非機能要件の仕事をしなきゃ!」という気持ちではありません。どんなインフラ基盤を使って、障害に強い設計をし、運用時に監視やバックアップを漏らさず、そして性能が劣化しないように・・と一つ一つ考えているわけです。

非機能要件の内容について、まとめた記事が下記です。

 

thinkit.co.jp

本連載も、今回で最終回となります。これまでは機能設計書を中心に解説してきましたが、最終回は非機能要件について解説します。非機能要件という言葉を聞いたことはあるかも知れませんが、カバー範囲が広いためどのようなことなのか説明するのがちょっと難しかったりします。でも、実は機能要件に引けを取らないほど重要なので、最後にきっちりお伝えしていきます。

 

システム構築を管轄するプロジェクトマネージャーにとっては、この部分はインフラの専門家に任せようとなるのが定番です。

ところが、ここで毎回ワナが起こります。「非」という言葉が現れていて、機能じゃないという言葉のために、ユーザー側も丸投げ衝動が起こります。

よくあります。ユーザーも開発エンジニアも、そこはインフラの範疇だから「よろしく」と。

「非」という枕詞が付いているせいで、あたかも主役ではない、傍流の、景色のような扱いをプロジェクトメンバー全体がしてしまうというワナです。

私も、何度も何度も丸投げされました。説明しようにも、ユーザーも大した関心もなく、流して聞いて「よろしくおねがいしますね」と言われて終わりです。

機能部分はユーザーがお願いしたかったコアの部分なので、ものすごく関心があります。業務に近いのでユーザー側のほうが専門家だからです。一方で非機能要件についてはユーザー側は知識もないので、「ちゃんと動いて問題が起こらなければいいよ」という態度です。これに「非機能要件」と言う言葉が火に油を注ぎます。

でも、面白いのがサービスイン後です。セキュリティーやら可用性やら、バックアップや監視のことやら、どうなってる?と興味しんしんです。それならサービスイン前にもっと相談していれば・・と思うこともよくありますが、構築中は機能要件で頭がいっぱいなんでしょうね。特に問題が発生すると、なぜ「そんな仕組みに?」と真顔でユーザーが聞いてくるのですが、それなら構築時にもっと話をしようよ・・とも思います。

ですから、インフラエンジニアとして、あんまり「非機能要件」と言うことはないですね。実は我々にとっては機能そのものです。どう設計するか。どう監視するか。どうバックアップするか。我々が「非」なんて言ったら何がコアなのかわからなくなります。

昨今のKubernetesなどの動きを見ると、これまで非機能要件と言われていたところをほんとに考えたくないんだろうな、というニーズはよくわかります。でも、どんな実装をしたところで、縦から切ろうが横から切ろうが、存在するものは存在し、対応しなければならず、そこにインフラエンジニアの意義が存在する気が、ほのかにします。