フレームワークによる開発手法とは?(2)

やりやすいところから再利用を

システム開発において、「再利用」は使い古されたキーワードです。
例えば過去の構造化プログラムにおけるモジュール分割や機能による関数分割であったり、最近ではオブジェクト指向プログラムにおけるクラス分割は、手法は違うとしても目的は再利用可能部分を最大化することを目的としていると思います。

ただ、どうしても再利用が上手くいっているというケースは多いとはいえないのではないでしょうか?特にビジネスロジックの部分(これを機能用件といいます=クライアントがシステム化を希望する理由であり、かつシステム化を希望する部分です)の再利用は困難がつきまといます。いわんや、機能用件はクライアントによって千差万別であり、クライアント企業のビジネスプロセスは同じモノはないと考えられます。

システムを受託で開発するようなケースで、ビジネスロジックの開発をヒアリングから始めて実施するようなことは多いと思いますが、そこで再利用を前提とした開発を行うとなると、そのクライアントにとって不要な機能や、オーバースペックな機能を「再利用を前提とする」という旗印の下に実装しなければならないことになります。そして、それは無理が付きまといます。そのコストは?それによる納期の遅れをクライアントは待ってくれるのか・・・?

そうであっても、今後、システム開発における再利用は進化すると考えます。おそらく、それは「コンポーネントビジネス」として成り立つことになると思います。あくまで「それをビジネスとする」というところがポイントでしょう。システム開発会社が自社用に「おまけ」的に取り組む再利用ではなく、コンポーネント会社のようなものが多くの企業のシステム開発において幅広く使われるコンポーネントを、そのために作り、ビジネスとする・・・。システム開発会社はそのコンポーネントをいかにクライアントの希望に沿うシステムと見比べてチョイスし、組み込んでいくという姿になるのではないでしょうか。それが実現可能な機能用件の再利用になるでしょう。

一方、機能用件の対義語として「非機能用件」というものがあります。システムをシステムとして成り立たせるためには機能用件だけでは十分ではなく、必ず非機能用件が必要となります。それは例えば、使用するデバイスであったり、ミドルウェアであったり、さらにはWebシステムなどのシステムの構成形態を指します。クライアントはWebシステムを作りたいのではありませんし、特定のミドルウェアを使って欲しいのでもありません。あくまで「自分の要求を満たす機能をコンピュータ・システムとして実現して欲しい」のです。(最近では、クライアント側が非機能要件を指定することもあります。例えば「Webシステムとして作って欲しい」であったり、「モバイルに対応して欲しい」など)

例えばWebシステムというシステム構成の非機能用件は、大抵の場合、構成が似通っています。モバイルに対応するために必要となる実装手段も、どんなシステムであっても似ています・・・。これこそが、再利用の対象になるに違いありません。(つづく)

この記事を書いた人

井上 研一

株式会社ビビンコ代表取締役、ITエンジニア/経済産業省推進資格ITコーディネータ。AI・IoTに強いITコーディネータとして活動。画像認識モデルを活用したアプリや、生成AIを業務に組み込むためのサービス「Gen2Go」の開発などを行っている。近著に「使ってわかった AWSのAI」、「ワトソンで体感する人工知能」。日本全国でセミナー・研修講師としての登壇も多数。