̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ IT ニュース&コラム 2016/ 2/29 通巻707号 技術版 ソフトウェアデザイン館 Sage Plaisir 21  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄   哲学の成果に基づいて、仕様書と同時にサンプルやテストを作ろう 前回は、プロトタイピングや後工程を先に始めることで、不具合を早期に始める ことができることを説明しました。 今回は、仕様を定義することも、プロト タイピングや後工程を先に始めることで、早期に正確に完成できることを説明します。 お堅い仕様書というものは、構成する定義からボトムアップに仕様を定義して いきます。 この書き方しか知らないベテランからは、仕様を説明するときに 使われている用語の定義が明確でないことに目くじらを立てるでしょう。 なぜなら、不明な用語によって、仕様を理解できなくなるからです。 用語が すべて説明できていれば、論理的には完璧です。 しかし、それは、物事を理解する上での1つの方法にすぎません。 新学社のホームページ[*1]によると、「概念の学習の指導としては、観察(操作を含む) によって学習させる方法と概念の定義をさせることによって学習させる方法とある。」 と書かれています。 一般に(これまでの)仕様書は後者の方法(定義による学習)によって仕様を説明 しようとしていますが、前述のとおり「教えようとする概念に対して前提となって いる概念を(中略)学習に先立ってそれを教えておかなければならない。」という 条件があります。 それでは小中学生、いや専門家以外に教えることはできません。 よって、お堅い仕様書というものは、いくら論理的に完璧であっても、多くの人に とって理解しにくいのです。 そして、学習方法は1つではないため、別の方法に よる説明があれば、定義の完全な明確化は不要なのです。 ITシステムの開発においては、新しい概念が多く登場し、そのシステムだけの 専門用語がたくさんあります。 その新しい概念は、前提となっている概念から 生まれたものではありません。 こういったシステムを作ってほしい、といった 漠然とした要求から生まれるのです。 説明するときは、過去の具体的なユースケース を説明するでしょう。 つまり、前者の学習(観察による学習)をするための 材料がすでにあるのです。 「概念についての理解を具体的なものから抽象的なものへ(中略)、不正確な ものから正確なものへと発達させることが目標になる。この場合、与えられた 多くの刺激を比較し、抽象し、概括するといった思考の働きが重要になる。」 ため、仕様書には学習(観察)するための材料となる刺激を与える何かを追加 する必要があるのです。 その一部が、サンプルやプロトタイプなのです。 別のユースケースを示すのもよいでしょう。「お客様が望まれているシステムは、 現金だけでなくクレジットカードでも決済できることですよね。」といった 説明によって、後から「クレジットカードで決済できるのはあたりまえだろ」 といったトラブルを避けることができます。 これは決済方法のサンプルです。 論理的には MECE(定義の漏れなし)ではありませんが、分かった気になって 後から訂正するリスクはかなり低くなります。 「概念の学習において、概念の特徴を含んでいる積極的な例(正事例)を見せる 場合とその概念の特徴を含んでいない消極的な例(負事例)を見せる場合とある」 ように、「図書カードでは決済できません」と負事例を宣言することも正しい理解 につながります。 また、テスト プログラムにおいて正常系と異常系の両方を テストすることは、正しい理解をするための材料になります。 たとえば、 境界値の中で正常に動き、境界値の外でエラーにすることのテスト仕様を設計・ 説明することが、概念を理解する方法の1つになります。 テスト駆動開発(TDD)を主張している人は、この学習効果にメリットを感じて いるのです。 ただし、TDD の一部の主張には極端な仮説のままのものもある ので、今後、検証していきたいと思います。 電力中央研究所システム技術研究所の発表の論文[*2]によると、「哲学では、 (中略)「内包的定義」「外延的定義」があげられている」[*3]と書かれて いるように、観察による学習と定義による学習は、哲学に基づいています。 また、情報科学(人工知能)では、上記の哲学の定義の考え方を基盤に、 専門用語の意味の記述法を整理し、辞書記述のためプロトタイプを示しています。[*4] 同義語的定義は、同じ概念の別名や、似た概念を使って説明することです。 内包的定義、外延的定義は、前述のとおりです。 構成的定義、性質・属性・機能・目的的定義は、言葉通りの視点で説明することです。 発生的定義は、その概念が出てきた原因、必要性、歴史的経緯から説明することです。 これらは、必要なときだけ記述すればよいでしょう。 学習の材料は、文書である必要はありません。 XP(エクストリームプログラミング) では、設計よりもコーディングとテストを重視しており、現に文書を読まずに 他の人が開発したコードを理解するプログラマーが大勢います。 この場合、 内包的定義は、開発対象のコードであり、外延的定義は、サンプルやテスト に対応します。 この関係は驚くほど見事に分かれており、初期の開発において、 テストを後回しにすることが、定義による学習のみに能力を限定することに なってしまうため、ウォーターフォール モデルが、いかに非効率であるかを 哲学が裏付けています。 また、開発するシステムだけをユーザーに説明 することは、内包的定義による学習しかユーザーができないことになります。 それを知らずにユーザーをバカだと思ったときは、自分の説明能力の低さを 疑うべきでしょう。 参考 *1 学習内容の特性と学び方・学ばせ方 - 新学社 http://www.sing.co.jp/school/practice/forum27-3.html *2 専門外の人に分かりやすい用語解説の書き方の分析 http://www.anlp.jp/proceedings/annual_meeting/2006/pdf_dir/S1-3.pdf *3 定義 哲学辞典 pp. 960-960. 平凡社 *4 辞典形式での専門分野の知識の体系的構成法 人工知能学会誌 Vol. 7, No. 2, pp. 136-144, 長尾真 1992. 注目ニュース 一覧 ◇ glibc ライブラリに脆弱性、Linuxの大部分に深刻な影響。 http://www.itmedia.co.jp/enterprise/articles/1602/17/news065.html … 最近は DNS 関係が狙われている。 Android は glibc を使っていないらしい。デフォルトで? ◇ iPhone ロック解除問題、アップル不支持が上回る。 http://japan.cnet.com/news/society/35078324/ … プライバシーは、すでに企業に取られているイメージがあるから、別に不思議ではない。 ◇ 100億円の賠償求め:アップルに日本の下請けが一矢。東京地裁中間判決 米国での審理退ける。 http://www.itmedia.co.jp/business/articles/1602/17/news062.html … TPPとは反対に著作権を奪いに来るアメリカ企業。 ◇ Firefox OS の父、スマートホームプロジェクト Sense 立ち上げ。 http://www.itmedia.co.jp/news/articles/1602/17/news076.html … IoT は、かつてのモバイルと同じ状況。 キラー端末が現れるか。 ◇ MS、クロスプラットフォームモバイルアプリ開発ツールのXamarinを買収へ。 http://japan.cnet.com/news/business/35078449/ … iPhone アプリを作りたいけど、最強の開発ツールは Visual Studio ということか。 ◇ 知りたいことは Twitter、Instagram で検索。友達の言葉を鵜呑みにする10代。 http://japan.cnet.com/sp/smartphone_native/35077993/ … リアルタイム性では Twitter が早い。 ただし、情報の裏が取れていないから早い。 ソフトウェアデザイン館 Sage Plaisir 21 ホームページ >>> http://www.sage-p.com/ メルマガ >>> http://www.mag2.com/m/0000083983.html ブログ >>> http://blog.livedoor.jp/sage_p/ ツイッター >>> http://twitter.com/Ts_Neko ダウンロード >>> http://www.sage-p.com/freesoft.htm サポート掲示板 >>> http://www.sage-p.com/kg_ban09/z6037C8.cgi 東日本大震災 >>> http://www.sage-p.com/saigai.html メール >>> ts-neko◇sage-p.com ←◇を@に変えてください 緊急メールは件名に「うどんメール」を付けてください。 このメルマガの登録・解除 - http://www.mag2.com/m/0000083983.htm