「ソフトウェアアーキテクチャ選定」3つの判断基準

「ソフトウェアアーキテクチャ選定」3つの判断基準

「ソフトウェアアーキテクチャ」とは?

ソフトウェアアーキテクチャとは、プログラム構造を抽象化し、コードをシンプルに扱うための概念です。その最大の特長 は、ソフトウェアのUI(ユーザーインタフェース)や内部ロジックといった機能コンポーネントをそれぞれ分離し、独立して扱 えるという点です。それぞれが独立しているため、各機能を同時並行で開発することができ、プログラム変更があった場合 も他のコンポーネントへの影響を最小限に抑えられるといった利点があることから、現在多くの開発現場でソフトウェア アーキテクチャが活用されています。

なぜアプリ開発にMVCが「使えない」のか

ソフトウェアアーキテクチャという概念は、1970年代に生まれました。実は意外と古い歴史を持つ概念です。この概念を 一躍有名にしたのが、1980年代初頭に登場した「MVC」です。MVCは、「Model」「View」「Controller」の頭文字を取っ たもので、デザインやレイアウトなどUIを制御する「View」という要素が初めて取り入れられたアーキテクチャです。Viewを 取り入れた背景には、「Windows」や「Macintosh」といったGUI(グラフィカルユーザーインタフェース)で操作するOSの 普及がありました。この頃から、徐々にUIの重要性が高まり、MVCは多くのソフトウェア開発で用いられる代表的なアーキ テクチャとなりました。

しかし近年、スマートフォンが急速に普及しモバイルアプリの開発が活発化したことにより、MVCでは対応できない要件も多くでてきました。モバイルアプリの場合、新しいデバイスへの対応や機能追加など頻繁にアップデートが発生するため、柔軟にプログラムの変更に対応する必要があるからです。MVCは各要素間の依存が比較的強いアーキテクチャであるため変更に対する柔軟性が低く、プログラム修正やそれに伴うテストにも手間がかかってしまうのです。

そのためMVC以外にも、MVPやMVVM、Flux、Clean Architectureなど新しいアーキテクチャが考案されました。

適切なアーキテクチャを選択する重要性

開発するソフトウェアの規模や仕様によって最適なアーキテクチャは変わります。アーキテクチャにはそれぞれの特性があり、多様な開発者の要求を全て単独で網羅するアーキテクチャは存在しません。もし、アーキテクチャの選定を誤った場合、かえって非効率な開発をする恐れもあるのです。まずは「候補となるアーキテクチャにはどのようなものがあるのか」「その特長はどういう点なのか」を把握した上で、何を選び何を捨てるのか、またプライオリティーなどを明確にし最適なアーキ テクチャを選択する必要があります。

では、最適なアーキテクチャを選ぶ際の判断基準とは何でしょうか。私は「コード量」「変更への耐性」「テスタビリティー」(テストのしやすさ)の3つが重要だと考えます。特に「テスタビリティー」は重要なポイントです。なぜならテストは品質を確保するために重要な工程であり、「テスタビリティーを高める=品質の高いソフトウェアを作る」といっても過言ではないからです。また、「テスタビリティー」と「変更への耐性」には因果関係があり、テスタビリティーが高ければ必然的に変更の耐性も上がります。そのため、テスタビリティーを重視すればおのずとバランスの取れたアーキテクチャを選択できるのです。

石黒 邦宏
株式会社デジタルハーツ CTO
株式会社SRA、ネットワーク情報サービス株式会社を経て、株式会社デジタル・マジック・ラボで UNIX ソフトウェアの開発、インターネット経路制御の運用に関わり、オープンソースウェアで経路制御を実現する GNU「Zebra」を開発。1999 年 10 月、米国にて IP Infusion を創業。2015年株式会社アプリックスのCTOに就任しBeaconの技術開発・サービス開発に従事。2018年デジタルハーツにCTOとして参画。
お問い合わせ
各種サービスについて、お気軽にご連絡ください。
03-3379-2053
営業時間:平日9:30~18:30
お問い合わせ