▲戻る


http://www.kerneldesign.info/wiki/image/codefeeling/osss01.PNG

  • 僕は昔からソフトウェアにある種のイメージ(形)を感じていました。
  • このイメージが頭の中に出来たときに、そのソフトウェアの理解が深まり、そのソフトウェアに関する実装がサクサク進む、抱えている問題が見えてくる、そういった経験を重ねてきました。
  • そのようなことから、このイメージこそソフトウェアの本質ではないかと思うようになりました。
  • ここではそうしたイメージを主体としたアプローチを説明したいと思います。






http://www.kerneldesign.info/wiki/image/codefeeling/osss02.PNG

  • 多くの場合、コードを実装する前に既に実装者の頭の中で実行イメージが出来上がっています。
  • このイメージは技術力や経験などが豊富であればあるほど、より詳細なイメージとして頭の中に描くことが出来ます。
  • パフォーマンス、セキュリティー、拡張性、各種トレードオフのバランス感覚など、すぐれたソフトウェアエンジニアは実装する前からそれらのことを考慮した詳細なイメージが頭の中にあるわけです。
  • こうしたイメージからコードが吐き出されます(Code Writing)。Code Writingとは脳内イメージを具体化したもの、と考えることができます。
    • この場合、一次情報とはイメージであり、コードは二次情報と考えることができます。
  • そう考えると、Code Readingとは、二次情報を扱うものです。
  • ここでイメージに着目し、なぜこのようなコードになっているのか?などを考えることによって読み手の頭の中で、書き手のイメージ(一次情報)を復元すること、それをCode Feelingと名付けました。
  • Code Feelingはイメージに対するアプローチであり、そこがCode Writing/Code Readingと異なる所です。






http://www.kerneldesign.info/wiki/image/codefeeling/osss03.PNG

  • イメージを復元する最も確実な方法は、それを他者に対して説明することです。
    • 「理解したければ説明しろ」とはハッカーの格言です。
  • 説明の過程を通じて、Code Readingでぼんやりと出来上がったイメージを確固たるイメージへと変えていきます。
  • 確固たるイメージは、自分の他の知識とリンクするなど大きな刺激となります。
  • このイメージの説明に関して2M3Sというモデルを提案しています。
    • 2M3Sでは、構造を静的な図、アルゴリズムをアニメーションとして説明します。
    • 2M3Sは次にて紹介します。






http://www.kerneldesign.info/wiki/image/codefeeling/osss04.PNG

  • 説明をする場としてセミナーが考えられます。
  • この際、発表者のイメージを聞き手に複製することにより、聞き手に刺激を伝搬させることができます。
    • あるセミナーにて質問者から「カーネルについてよく知らないのですが、そういった処理の目的はwindowsに例えるとxxみたいなものでしょうか?」という質問をいただきました。各人が持っている知識と関連した質問がドンドンと起こりました。つまりイメージの伝搬がもたらす効果は、自分の持っている知識とリンクさせて考えることです。
  • このような伝搬は「発表者←→聞き手」に起こるのに留まらず、「聞き手←→聞き手」に及びます。参加者は各々、知識のバックボーンが異なります。これら異なる知識の厚みからいろいろな視点で意見が出る、これを刺激の連鎖と呼んでいます。
  • 刺激の連鎖は、発表者にもより広範囲で深い理解をもたらします。



  • 次にこの刺激の連鎖を効率よく行う方法として、2M3S(2マンセル3スクリーン)モデルを提案したいと思います。






▼次へ


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-03-29 (土) 08:59:31 (1184d)