Atsuhiro Kubo

Results 173 comments of Atsuhiro Kubo

# データ分析とオブジェクト指向分析 ``` 2.3 共通性次元と共通性カテゴリ (pp.53-54) ``` > ここから、いくつかの教訓を得ることができる。データ構造に主眼を置くような設計は、責務分配に基づく設計とはまったく異なるものになるだろう。データ構造が設計での重要な考察項目でないと言っているのではない。データ構造が実装上の構成要素であったにしても、優れた設計というものは設計での決定事項をどのように実装するかを調査するものなのである。データ分析とオブジェクト指向分析を同一視しようとする新古典派手法の落とし穴に陥ることなく、この2つの共通性に関する次元を分離し、設計ではそのそれぞれを扱っていく必要がある。 データ構造という設計次元に対して、データ分析のデータ構造とオブジェクト指向分析のデータ構造として分離し、それぞれ別に扱っていく必要があるということだろうか。

# オブジェクト指向分析はデータ分析よりもデータ設計に優れているか? ``` 2.3 共通性次元と共通性カテゴリ (p.54) ``` > 悪を取り除こうとして善をも取り除いてしまうことがないように、データ設計が優れたオブジェクト分割と同等である場合も多いことを指摘しておこう。ここで主張してきたのは、そのことを当たり前と仮定してしまってはいけないということである。正しい手段によってそのようになるように心がけるべきだ、と言ったほうが適切だろう。

# 未知の構造の認知 ``` 2.1 共通性:抽象のエッセンス 2.1.1 演繹的共通性と帰納的共通性 (pp.38-39) ``` > 既知のモデルがうまく適用できない。新しい状況に直面したときには、再現性を探しだして抽象を形成する。アナロジも経験も存在しないケースでは、**演繹的**な論法を使って、モデルと抽象を作成することになる。見知らぬ文化の住居を初めて目にしたならば、その住居のいずれもがどこか似ているような印象を持つのではないだろうか。つまり、「その文化のための住居」という認識の抽象が定義される。これとまったく同じことが、ソフトウェアに対しても行われるのである。 > マルチパラダイムデザインは、ドメインエンジニアリングの経験を利用して、一般に認知されているドメインへと問題を分割する。設計が進行するにつれてドメインに描き込むものが増えていくが、それは貯蔵されていたものが分配されるというのとは異なる。新規に開拓するドメインに対する設計では、最初に行われる直観で行うとも言えるフェーズを省略する。必要となる原型だけを借りて、ドメイン自身を観察して分割のための鍵を探す。前もって予想を立てておいた分割基準を用いて問題から抽象を捻りだすのではなく、ドメイン自身から抽象を導き出す。あるアプリケーションにとってたまたま既存のあるパラダイムが最も優れた選択であるということになった場合に、共通性/可変性分析はその選択の正しさを補強してくれるだろう。

# ソフトウェア設計と抽象 ``` 1.1 ソフトウェア開発の課題 抽象、意図、設計の重要性 (p.1) ``` 本書の最初のトピックは、ソフトウェア設計とは何か、について抽象の原理に基づいて考えていくことである。 # 古典的モデル、現代のカテゴリ理論 ``` 1.1 ソフトウェア開発の課題 抽象、意図、設計の重要性 (p.1) ``` > 認知言語学におけるカテゴリー化の議論はエレノア・ロッシュらの研究に端を発するものであり、認知言語学を生み出すきっかけの一つとなった。全成員に共通する属性によってカテゴリーを規定しようとする古典的なカテゴリー観に代わり、プロトタイプ理論や基本レベルカテゴリーの概念を提唱しており、それらに基づいて言語を記述している。 > > また語の意味は、その語の使用が想起する典型的な状況や百科事典的知識(世界知識)と切り離すことができないとされる。チャールズ・フィルモアらのフレーム意味論や、ジョージ・レイコフの理想認知モデルは、この考えに基づいた議論である。 > ― [認知言語学 - Wikipedia](http://ja.wikipedia.org/wiki/%E8%AA%8D%E7%9F%A5%E8%A8%80%E8%AA%9E%E5%AD%A6) 2014-10-01T08:49Zの版 > >...

# マルチパラダイムデザイン読書会 第1回 開催日時: 2015-01-17 15:30-18:00 参加者: @iteman, @kumamidori, @nyanp, @springkuma, @sugimoto-kei

# 問題と解決、アーキテクチャの関係 ![relationship-between-problem-and-solution](https://cloud.githubusercontent.com/assets/52985/5791323/97f7f246-9f11-11e4-9ec0-8f22f9fbdd2d.jpg) @sugimoto-kei によるこの図は、`問題`(problem)と`解決`(solution)、そしてアーキテクチャの関係を示したものだ。`問題`と`解決`の関係は[フラクタル](http://ja.wikipedia.org/wiki/%E3%83%95%E3%83%A9%E3%82%AF%E3%82%BF%E3%83%AB)である。 ある`問題`に人間のユーザーが関わっている場合、開発者によって作られる`問題ドメイン`はユーザーにとっての`解決ドメイン`の一部となる。

# 最も重要なキーワード ``` 導入文 (p.1) ``` > ソフトウェアファミリ、共通性、可変性というのが本書の最も重要なキーワードである。

# メタデザイン ``` 1.1 ソフトウェア開発の課題 メタデザイン (pp.1-2) ``` > 本書では、そのような一般的なパラダイムの概念よりも高レベルで、ソフトウェア設計を考えていきたい。そのために、同時に複数の設計パラダイムを扱いながら設計を進めることができるような理論、モデル、**メタデザイン**(meta-design)というものを開発していこう。その開発の途上で、**共通性**(commonality)と**バリエーション**(variation)に基づく統合された形式性(formalism)というものも構築していくことになるだろう。そしてその形式性は、さまざまなソフトウェア開発パラダイムに共通する1つのモデル基盤を提供することになるだろう。 マルチパラダイムデザインは、様々なソフトウェア開発パラダイムに共通する1つのモデル基盤、いわば**マルチパラダイムデザインモデル**を提供する。これは**共通性**と**可変性**に基づく統合された形式性を使った**メタデザイン**の基盤ということであろう。

# ドメインと抽象 ``` 1.1 ソフトウェア開発の課題 ドメインとパラダイムの関係 (p.2) ``` > ここでは、ドメインは古典的な意味における抽象を特徴づけるために使用される。そして、そのような抽象は、共通性とバリエーションで記述される関心分野の構造に配置される。 本書の具体的な例を挙げると、FSM(ここでは抽象でありドメインでもある)を構成するトップ(第1階層のサブドメイン)(`AbstractFSM`、`ImplementationFSM`、`UserFSM`、`State`、`Stimulus`、`TransitionAction`)(p.47)が、共通性とバリエーションで記述される関心分野の構造(問題ドメインの構造、問題ドメインのアーキテクチャ)(pp.252-257)に配置される、というものがある。

# オブジェクトパラダイムの拡大、見直しとマルチパラダイムデザイン ``` 1.1 ソフトウェア開発の課題 ドメインとパラダイムの関係 (p.2) ``` > オブジェクトパラダイムを拡大する、あるいは見直しをするといった研究分野は成熟に達していて、抽象力という意味でも表現力という意味でも限界に達した観がある([Czar1999]、[Weiss+1999]、[CzarEise2000])。オブジェクト指向設計が「オブジェクト」の普遍性に訴えようとしているのに対して、本書で掲げるマルチパラダイムデザインは「ドメイン」にそれを求めようとしている。