13 Jul 2014, 11:58

ソフトウェア・パターンへの情熱を現実生活へ注ぎ込めないか?

はじめに

ビジネスの世界でのフレームワークが、 ソフトウェアのパターンに近いことに気がついた。

自宅の本棚に勝間和代のフレームワークに関する本を見つけたので、読み返してみた。

ソフトウェア・パターンとビジネス・フレームワーク

この本では、フレームワークを以下のように定義している。

なにかの概念や考え方を自分なりに整理して、
考えやすくするもの、覚えやすくするもの。

このような定義は、ソフトウェアにおけるパターンと同じ考え方のように思う。 共通して現れる概念がカタログ化されて名前をつけられていることで、 より記憶に止めやすくなる。

フレームワークをたくさんもつということは、
頭の中でさまざまな情報を処理し、判断し、意思決定を行う際に、
その場に応じて最適な道具を使えるということ。

デザインパターンを身につければ、ソフトウェアの構造の理解が速くなる。 デザインパターンは思考のための道具だ。

問題解決フレームワークについてのまとめ

問題解決思考のフレームワーク、パターンについて、 読みながら調べたことを覚え書きとして書く。

問題解決の手法として、以下ががあげられている。

  • MECE
  • ピラミッドストラクチャ
  • 仮説思考

MECE

<div class="outline-text-3" id="text-3-1">
  <p>
    Mutually Exclusive and Collectively Exhaustive. (相互に排他的な項目」による「完全な全体集合」)
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://ja.wikipedia.org/wiki/MECE">MECE &#8211; Wikipedia</a>
    </li>
  </ul>

  <p>
    情報や分析対象をグループ分けする際に、 「重複なく・漏れなく」行うべきであるということを示した指針。
  </p>

  <ul class="org-ul">
    <li>
      最低限 2 x 2 のマトリックスで考える
    </li>
    <li>
      既存のMICE用フレームワークで考える
    </li>
  </ul>
</div>

ピラミッドストラクチャ

<div class="outline-text-3" id="text-3-2">
  <p>
    結論と根拠を多段に組み立てることによって作られる構造で、 ドキュメントの骨子全体の構造を表現するものとされる。
  </p>
</div>

<div id="outline-container-sec-3-2-1" class="outline-4">
  <h4 id="sec-3-2-1">
    ロジックツリー
  </h4>

  <div class="outline-text-4" id="text-3-2-1">
    <p>
      問題の分析や、課題の整理の結果をツリー構造として表現したものであり、 目的によって様々な種類がある。
    </p>

    <ul class="org-ul">
      <li>
        結果-原因(why)
      </li>
      <li>
        目的-手段(how)
      </li>
      <li>
        全体-部分(what)
      </li>
    </ul>

    <p>
      といった推論を繰り返して論理展開を行う場合、 その概念・事象間の論理的なつながりをツリー状に図示すること.
    </p>

    <p>
      問題解決などに使う場合には、上位概念から下位概念への分岐を2~3程度、 多くても5つぐらいまでにするのがよいとされる。
    </p>

    <ul class="org-ul">
      <li>
        <a href="http://www.itmedia.co.jp/im/articles/0609/01/news133.html">情報マネジメント用語辞典:ロジックツリー(ろじっくつりー)</a>
      </li>
    </ul>
  </div>
</div>

<div id="outline-container-sec-3-2-2" class="outline-4">
  <h4 id="sec-3-2-2">
    MECEとロジックツリーの違い
  </h4>

  <div class="outline-text-4" id="text-3-2-2">
    <p>
      MICEは「もれなく、だぶりなく」数え上げるという考え方. ロジックツリーはMECEを実行するためのツール(フレームワーク)の一つ。
    </p>

    <ul class="org-ul">
      <li>
        <a href="http://oshiete.goo.ne.jp/qa/3869287.html">MECEとロジックツリーの違いとは? &#8211; 教えて!goo</a>
      </li>
    </ul>
  </div>
</div>

<div id="outline-container-sec-3-2-3" class="outline-4">
  <h4 id="sec-3-2-3">
    ロジックツリーとピラミッドストラクチャーの違い
  </h4>

  <div class="outline-text-4" id="text-3-2-3">
    <p>
      以下のサイトでロジックツリーとピラミッドストラクチャーの違いが紹介されている。
    </p>

    <p>
      <a href="http://d.hatena.ne.jp/ohshi004/20080803/1217755608">ロジックツリーとピラミッドストラクチャー &#8211; Thinking Room で何想ふ。</a>
    </p>

    <ul class="org-ul">
      <li>
        ロジックツリー
      </li>
    </ul>

    <p>
      MECEを意識して、上位概念を下位の概念にトップダウン式に分解していく形式。 帰納的。
    </p>

    <ul class="org-ul">
      <li>
        ピラミッドストラクチャー
      </li>
    </ul>

    <p>
      具体的な情報や観察事項から上位の概念としてのメッセージを ボトムアップに抽出していく形式。演繹的。
    </p>
  </div>
</div>

仮説思考

<div class="outline-text-3" id="text-3-3">
  <p>
    仮説思考とは、何かに取り組む際に、 その時点で考えられる仮説(仮の結論)を置いて考える思考方法.
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://www.nsspirit-cashf.com/logical/kasetsu_shikou.html">N&#8217;s spirit 仮説思考 仮説とは 仮説の立て方</a>
    </li>
  </ul>

  <p>
    仮説とはその時点で「こうすれば、こうなる」という結論をその理由とともに 設定すること。 一般的な「原因解明」次に「行動決定」の流れではなく、 「行動決定」次に「検証」の逆の順に進める。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://fk-plaza.jp/Solution/solu_kasetsu.htm">問題解決手法>仮説思考法</a>
    </li>
  </ul>

  <p>
    仮説は事実かどうか検証する。まちがっているかもしれないので。
  </p>

  <ul class="org-ul">
    <li>
      統計データやグラフ(定量的)
    </li>
    <li>
      ヒヤリング(定性的)
    </li>
  </ul>
</div>

現実問題をパターンで解き明かし、パターンを作り出す

フレームワークの活用方法について、以下のように言及されている。

大事なことは、自分でさまざまなフレームワークをさまざまな経験や
学びのなかから一つでも多く見つけだし、頭の中で整理して、
さらに新しいフレームワークを自分ででつくっていくこと。

フレームワークは思考を活発化し、助けるために存在するものであって、
思考をサボるためにあるのではない。

これも、ソフトウェア開発でも参考になる。 つまり、パターンをソフトウェアの構造から読み取り分類して整理する。 そこからはみでるものを、新しい構造のパターンとして記憶に止めていく。

パターンへの情熱を現実生活へ注ぎ込めないか

自分は、デザインパターンを熱心に学んでいる。 それは、デザインパターンを身につけることが、 自分の思考を加速させ、成長を促すと信じているからだ。 成長したい、ソフトウェアをはより速く、深く理解したいという動機が裏にある。

パターンへの情熱を現実生活へ注ぎ込めないか?

つまり、プログラミングと同じような情熱と好奇心をもって、 自分の生活に起こる様々な問題を解き明かせないか?

論理的な思考のフレームワークをみにつけることで、 目の前のことをより速く、深く理解することができる。

これは、ソフトウェア・パターンを身につけることよりも、魅力的に感じる。

というわけで、ロジカル・シンキングについて、もう少し学んで見ようと思う。