『優れたデザインにとってコンセプトが重要な理由』
https://gyazo.com/748bf9c9e24ebca48bbb3423e23ca8bc
2023/7/3
Daniel Jackson Author
中島震 翻訳
丸善出版
原著は『The Essence of Software』
/mrsekut-book-4621308130
The Essence of Software
tutorialとかblogとかCase Strudiesとかある
最近も更新されてるmrsekut.icon
/pintcle-books/優れたデザインにとってコンセプトが重要な理由
https://note.com/idein/n/ncdb32616e738
Idein Inc.
Normanの概念モデルは的を外している 〜『優れたデザインにとってコンセプトが重要な理由』補遺〜 - bonotakeの日記
概念を観察する?
『The Essence of Software』のTutorials
『The Essence of Software』のCase Studies
『The Essence of Software』のBlog
読み方
独自の用語とかが多いので逐一メモるのが良さそうmrsekut.icon
ノートも重要なのでこまめに読みたいmrsekut.icon
(本文よりもノートのほうが長い)
節ごとに読むのが良さそう
登場するたびに読むのは面倒だし、章ごとだとスコープが広すぎた
行ったり来たりするので、スクボ読書したほうがストレスが少なそう
ノートの中に、「絶対これは読むべき」と「どっちでも良さそう」が並列に混じってるのあまり良くないなmrsekut.icon
断片的なのでメモを取るのも難しい
個別のノートの内容が断続的なので頭から読むのもあまり適していない
ストーリーとして頭に残るのではなく、エッセンスを頭の片隅に置いていく感じになる
本を読んでないときもそれを考え続け、また時間をあけて再読し、噛み砕いていく
せっせとノートに対するリンクを付けながら読んだほうが良いかも(?)
用語
デザイン
人間のニーズを満たす人工物を作ること
状況に適した構造を作り出すこと
/mrsekut-book-4621308130/015 (第1章 本書執筆の理由)
概念モデル
コンセプトモデル
コンセプト
ソフトウェアデザイン
/mrsekut-book-4621308130/ノート 5 ソフトウェアデザインとは
デザインコンセプト
メンタルモデル
トレース
ノート44
actionを積み重ねたスタック
訳者序文
なんか頭に入ってない文章、気の所為?
読点が多すぎるからかな
コンセプト
WHATと同じ抽象レベルで整理した機能・振る舞いをコンセプトと呼びます
本書の読み方
まだ、この本がどのへんをスコープに入れてるのかわかってないmrsekut.icon
「デザイン」や「コンセプト」が指す対象がいまいち見えてない
著者がAlloyの人だという前提知識も入ってわかりづらくなっている
第1部 動機
/mrsekut-book-4621308130/014 (第1部 動機)
第1章 本書執筆の理由
/mrsekut-book-4621308130/015 (第1章 本書執筆の理由)
動機としてわかりやすいのはこの辺か
あるソフトウェア製品が自然に思える上に洗練されていて, 基本さえ理解すれば予測どおりに反応し, それぞれの機能を強力に組み合わせられる理由を知りたかったのです.
最初はスコープがどこなのかよく分からなかったが関連するノートを見ていくとわかってきたmrsekut.icon
ソフトウェアデザインの精密さが重要だと考えている
1980年代頃はその辺の研究も盛んだったが、最近はそこが軽視(?)されている
最近はソフトウェア品質の分野などが盛ん
開発の過程を「仕様の作成」と「仕様の実装の落とし込み」の2つに分けた時に、後者に力点を置きがち
Edsger Wybe Dijkstraの指摘も相まって後者に注意を向けられるようになった ref /mrsekut-book-4621308130/ノート 8 形式検証とその文化的な影響
ユーザの体験に直結するのは前者であり、それを洗練したい
例えバグがなくても、そもそも使えないと価値がない
概念モデルをユーザに伝え、メンタルモデルをプログラマのものと一致させると良い
/mrsekut-book-4621308130/018
第1章のノート
/mrsekut-book-4621308130/186 (ノート: 第1章 本書執筆の理由)~
5,8,14
ソフトウェアのデザインとは, ユーザから見たソフトウェアの使い勝手を決める行為だ. プログラムコードがどう動くか, その規模とは関係ない. デザイナーの仕事は, ユーザの使い勝手すべてを完全に曖昧さなく規定すること. ref 5
/mrsekut-book-4621308130/ノート14 コンセプトモデルの源
いずれにせよ、実体と関係を区別するような概念の定義は明らかに不安定です. ref /mrsekut-book-4621308130/204
Alloyだmrsekut.icon
Martin Fowler の 「分析パターン」 に近く (本書は文献42から影響を受けたのですが), 小さな再利用可能な概念モデルです. 大きな違いは,本書のコンセプトは主に振舞い的という点です. ref /mrsekut-book-4621308130/204
振る舞い的ってなんだ?
「小さな再利用可能な概念モデル」というのは割とわかる気がするmrsekut.icon
最近考えているもののに近そう
でも振る舞いはあまり重視してなかったな
/mrsekut-book-4621308130/205
DDDでの、境界を作り、それごとにドメインモデルを作ることを評価し、
更にコンセプトでは、コンセプトごとに関連するデータモデルを保持すると言ってる
第2章 コンセプトの発見
/mrsekut-book-4621308130/021 (第2章 コンセプトの発見)
早速具体例が紹介されていて、グッとわかりやすくなった印象があるmrsekut.icon
コンセプトが分かりづらい例 (Dropbox)
明示的に共有したフォルダ
Bの変更は、Aに影響しない
e.g. Bが名前を変更したとき、A視点では名前は変わらない
e.g. Bがこのフォルダを削除すると、B視点では消え、A視点では残っている
ハードリンク的mrsekut.icon
暗黙的に共有したフォルダ
e.g. 明示的に共有したフォルダの中のフォルダ
Bの変更は、Aにも同様に影響する
e.g. Bが名前を変更したとき、Aもその変更が見える
e.g. Bがこのフォルダを削除すると、Aも見れなくなる
シンボリックリンク的mrsekut.icon
Unixのfileなどと同じコンセプトに従っている
しかし、そのコンセプトが実際の目的と一致していないため混乱が生じる
インタラクションデザインのレベル
具体的な方策は全くわからないが、動機はめちゃくちゃわかるmrsekut.icon
第2章のノート
/mrsekut-book-4621308130/206 (ノート: 第2章 コンセプトの発見)
ぼちぼち
19,23,24
第3章 コンセプトの効果
/mrsekut-book-4621308130/036 (第3章 コンセプトの効果)
様々なサービスの中核のコンセプトを眺める
/mrsekut-book-4621308130/040 (コンセプトは製品の差別化)
例えば、
Wordのコンセプトは行ではなくパラグラフ
ページのようなコンセプトも持っていない
Maxのゴミ箱のコンセプト
削除するためのものではない
実際は削除せずに置いておく
WWWのコンセプトはURL
先を読んでから3章を読み直したほうが良さそうmrsekut.icon
コンセプトというものが具体的にどういうものかを定義せずに、コンセプトの有用さを説いてる
凄さがわかるが捉えようがないので批判のしようもない
/mrsekut-book-4621308130/045 (コンセプトは関心事を分離する)
関心事ごとにコンセプトを設計する
1つ1つのコンセプトが小さければ再利用も可能
feature的な?
文章だけ読むとコンセプトは有用だなと感じるものの、じゃあ実際にそれをやってみようとなると無理じゃんという気がするし、本当か?という気もする
まず、課題に対して、これとこれが別のコンセプト、と分離すること自体が難しい
更に、独立するだろうと見なしたコンセプト同士が本当に独立するのかも怪しい
マクロに見てる人の例外対応と、ミクロに見てる人のコンセプトが同一のものを指していてどうしょうもないmrsekut.icon
ただ、コンセプトというものを完全に捉えられている、という前提になら成立しそう
第3章のノート
/mrsekut-book-4621308130/215 (ノート: 第3章 コンセプトの効果) 15~
ノートも/mrsekut-book-4621308130/220らへんでpendingしてる
第2部 基礎
第4章 コンセプトの構造
/mrsekut-book-4621308130/053 (第4章 コンセプトの構造)
Appleのゴミ箱
コンセプトのフォーマット
コンセプトの具体例
第4章のノート
/mrsekut-book-4621308130/224 (ノート: 第4章 コンセプトの構造) 40~
/mrsekut-book-4621308130/ノート40 「目的」は 「ゴール」ではない
目的とゴールを区別しており、ゴールというのが個別具体的なユーザの要望という感じなのはわかったが、目的の方はイマイチ捉えづらい
/mrsekut-book-4621308130/ノート44 コンセプトの形式化
もっとこういう話を深掘りして欲しいmrsekut.icon
ノートじゃない部分はこういう話が曖昧すぎる
本書では,コンセプトを平易な言葉で表して, プログ ラムコードや論理に馴染みのない読者が不安を覚えないようにしています.実際 には,正確で曖昧さがなく自動解析や実行可能コードへのコンパイルが可能にな るような形式記法を用いる方が良いでしょう.
ノート44と48がかなり量ある
第5章 コンセプトの目的
/mrsekut-book-4621308130/064 (第5章 コンセプトの目的)
目的を明確にする
そのコンセプトの目的は本当にユーザのため?
/mrsekut-book-4621308130/074 (誰のため?私のため、あなたのため?)
ビジネス上の都合で存在するものも多い
/mrsekut-book-4621308130/076 (欺瞞だらけの目的)
欺瞞的
第5章のノート
/mrsekut-book-4621308130/256 (ノート: 第5章 コンセプトの目的) 49~
要求工学
https://ja.wikipedia.org/wiki/要求工学
/mrsekut-book-4621308130/257
実行の溝と評価の溝
/mrsekut-book-4621308130/ノート62 事故の責めを受けるユーザ アフガニスタンのPLUGR
これすごい話だな...
デザインのミスマッチにより自爆して3名死亡、20名負傷した
第6章 コンセプト合成
/mrsekut-book-4621308130/084 (第6章 コンセプト合成)
コンセプトは独立している
あるコンセプトから他のコンセプトが見える
相変わらず翻訳の(?)文章が読みづらいmrsekut.icon
/mrsekut-book-4621308130/086 (自由な合成)
複数の状態マシンの同期を取る感じか
マシン同士は独立してはいるが、特定のアクションを同時に実行することがある
https://gyazo.com/df859ed87d453f368f89c649c08f7b2d
/mrsekut-book-4621308130/089 (協調合成)
どの差分のことを言ってるんだ
todo-userのような特定のuserといった条件が付された点?
ずっとなんか、APIというかOOPのclassのような話をしているようにも見える
「コンセプト」ってなんなんだ
通知機能を再利用できます、というのは、iOSや何やらが通知用のAPIを用意していれば、他のサービスはそれを使って通知機能を実装できる、と言ってるのと変わらない
actionとstateを持った小さなまとまり、とみるなら、単なるclassのようにも思える
結局、そのclassをどう区切るか?という話が重要で、そこを深掘りしないと、何か便利なコンセプトという概念がありまっせ、という話で終止してしまうのでは
第6章のノート
/mrsekut-book-4621308130/268 (第6章 コンセプト合成)
第7章 コンセプト依存性
/mrsekut-book-4621308130/104 (第7章 コンセプト依存性)
第8章 コンセプトマッピング
第3部 原則
第9章 コンセプトの特異性
#スクボ読書化した本