image ソフトウェアを作っていると「これは目的Aにも目的Bにも使えるぞ」と思う時がある。

複数の目的に使えることは、一つの目的に使えることよりも優れている。

  • 目的Aにしか使わない人はBのための機能を単に無視するだけなので。
    • 無視することができない(メニューがゴチャゴチャする、ボタンだらけになって操作方法が難しくなる、など)ときにはそうともいえない

しかし「一つの目的に使える」が達成されていない状態で、複数の目的に使えることを目指すと良くない。

  • 図で、斜線の部分が既に実装したコードだとする
  • 目的Aを達成するのにはxを実装するのが最優先
    • しかしxは目的Bには役に立たない
  • 目的Bを達成するのにはzが最優先
    • 目的Aには役立たない
  • 複数の目的を目指している場合
    • どちらの目的でも有用なyを優先して実装してしまう
    • これは目的が曖昧なせいで、どの目的にもまっすぐ進んでない
      • どちらの目的も達成が遅れる
      • 二兎を追う者は一兎をも得ず
      • ゲームを作らずにゲームライブラリを作ってしまうあるあるパターン
        • 一つのゲームを完成させないまま、色々なものに使えそうなライブラリコードばかり使ってしまう
  • 「一番重要なユーザーストーリーを決めて、その達成を目指す」という開発方法がオススメされるのは、この目的迷子に陥ることを防ぐため

複数の目的 目的

関連