単純性 / Simple

設計において最も重要なのはどれぐらい単純な構造になっているかです。

ソフトウェア開発は複雑性との戦いです。機能を作り上げる為には複雑にならざるを得ませんが、 複雑になればなるほど作るのは難しくなります。ソフトウェアは完成し、動作できなければ意味がなく、 また、完成しても継続して運用し、拡張できなければ価値を提供することはできません。

複雑になっていくソフトウェアの構造を、どこまで単純に保ち続けられるか。このことが、 ソフトウェアが価値を生み出すものとしてありつづけるためにもっとも重要なポイントです。

構造化 / Structured

設計において次に重要なのは「構造化」です。

コード全体を構造化し、どのコードがどのような構造の一部であるかを明確にすることで、コード全体としての 見通しが良くなり、複雑になっていくソフトウェアの構造を分かりやすくします。アプリにおいて、 特に重要な構造化は、そのコードを、「画面」「処理」「制御」3つに分けることです。

一般的なMVCとの違いは、MCの部分にあります。「処理」と「制御」という分け方をすることで、 バグの混入率を下げ、また、挙動の変更を容易にします。

通信方式 / Communication System

設計において構造化の次に重要なのは「通信方式」です。

構造化の次は、構造化した各要素同士または要素内同士がどのように通信を行うかが重要です。

例えば、ユーザーが画面から入力したデータを処理し、更新されたデータをどのように 画面に反映するかといったことです。

アプリ開発の熟練者ならば必ず更新されたという通知を画面にブロードキャストする方式で実装するはずです。 なぜなら更新されたデータをどの画面に反映するかを入力画面も制御も知りません。 更新データを反映すべきかどうかを知っているのはそれを表示している画面だけです。