1. readline.fm
  2. EP154 ソフトウェア要求と仕様..
2025-12-26 20:10

EP154 ソフトウェア要求と仕様 実践,原理,偏見の辞典 PART4

spotify apple_podcasts

## とりあげた本

『ソフトウェア要求と仕様: 実践,原理,偏見の辞典』マイケル・ジャクソン, 玉井哲雄訳, 酒匂寛訳 エスアイビー・アクセス 2014


## mixi2

https://mixi.social/communities/513e0bc9-582b-4962-a9c1-c5c076175e08/about


## ShowNote

https://gennei.notion.site/EP154-PART4-2d5c645d491180cebbf9d57da7e7fc58

サマリー

このエピソードでは、ソフトウェア設計の方法論や発明の遅延、モデル化について考察が行われています。特に、抽象化と信頼の関係、複雑さの縮減、そしてそれが実社会にどのように適用されるかが中心テーマです。ソフトウェア要求や仕様に関するモデルの種類やその使い方について議論され、アナロジックモデルの重要性が強調されています。また、全体の理解を深めるための対話の重要性についても触れられています。

方法論と発明の遅延
スピーカー 2
そうそう、方法論っていう章もありますけど、パッと開いたページの方法論って書いてあって。なんだっけこの章。あんまり付箋貼ってないから読み飛ばしてるな、多分。
スピーカー 1
フレームの話か。でも発明は遅らせようの原則っていうのが、この方法論の最後の3分の1ぐらいにありますね。
スピーカー 2
すでに存在しているものに関する記述が完成するまで、新たな発明は手控えよう、らしい。
スピーカー 1
そうですね、自分もそこをハイライトしてましたね。これはあれですかね、そのページがどっか行っちゃった。
ページ194ページなんですけど、このマジックナンバーを伝えても価値がないと思うので。
スピーカー 2
では、波状の最後の方です。
スピーカー 1
来ました来ました。ここでいう発明っていうのは何なんですかね。
スピーカー 2
これちょっと掘り下げて本文の中に書いてあるのは、発明って大げさに言ってるだけで、モジュールとか書かれたコードとかそのレベルの話をしてる気はするんですよね。
スピーカー 1
そうですよね、なんかハイテク、素晴らしいアイディア、このコードとかこれを使えば解決するんや、みたいなのは早措置りせずに、ちゃんと記述が終わるまで取っておくんだぞと。
じゃないとそれ引っ張られるんだぞ、みたいな。そんなこと言ってるのかな、みたいなことをちょっと思ったりしましたね。
スピーカー 2
そこまで崇高なこと言ってないように思ったんだよな。
スピーカー 1
最近どっかで登壇であった、実装の詳細を送らせるとはどういうことかみたいな、そんな感じ?みたいな。
スピーカー 2
そっち側の話なのかな、単純に動くものができたねっていうのを見届けてから、それに依存するものを作りましょうっていうような感じにも見える。
発明の仕事に既に期日したものから、さらに望ましいやり方としては、発明の仕事に既に期日したものから必要なものを派生させる役を割り当てることであるっていうふうに書いてあって。
モデル化の重要性
スピーカー 2
確かに確かに。 なるべく信頼できるものをどんどん再利用して、機械の仕事っていうのを拡張していこうぜって、かなってすげえ浅く読んでそんな印象を持ってました。
スピーカー 1
それの重要性はすごいわかるなっていう。 自分が深読みをしてるか、連想ゲームをしてるか。
スピーカー 2
リーンっぽいですもんね、心をフレーズだけ読むと。意思決定を遅らせようみたいな。
スピーカー 1
そうそう。でも確かに安定してる、変わりそうにないものっていうのは、スタブで表現できそうだよねとか、一旦固定値で表現できそうだよねっていうのは、
よくあるのは、ここから先にAIにプロンプトを投げて、その結果を画面に出しますって言ったときに、AIのテキストは保留しておいて、一旦AIがこういう出力結果を出したとするじゃんって言って返すとかって、
そういうのとかっていうのは、絶対ここには依存しないといけないっていうのは決まっているんだけど、今すぐに頑張ってそこを作らんでも、ちょっとずつ作っていけばいいよねとか、プロンプトをちょっとずつ回路していけばいいよねっていう風に作るとかっていうのは、いくらでもできるよなっていうのをちょっと思ったりしましたね。
スピーカー 2
なんかこういう、「〇〇さんに頼めよ、これやってくれるから〇〇さんがここにいることにして、実際にお願いするのは後回しで大丈夫や、結果変わらんやんみたいな世界観ですよね。
話しかける先が決まってて、そいつがこういうレスポンスしてくれるだろうっていうのはわかってるから、あとはどうでもいいかみたいな。焼肉屋に行けば肉食えるのはわかってるんだから、今注文メニュー決めなくていいみたいなね。
はいはいはい。 意外と話したな、なんか他あります?フレーム周りの話をお互いの道を避けてるっていう、絶対面白いんですけどね。難しいんだよな。
スピーカー 1
そう、難しいって。 部活に触れづらい。 あんま目を押したくないかな。
スピーカー 2
何があるかな、存在とかね。存在って聞くとやっぱりリマルコの存在モデル化理論が頭をよぎりまして、トラウマとして。
トラウマ。ハイデガーの存在と時間じゃないんですかと。 いや、リマルコに全部持ってかれてます。
スピーカー 1
存在とかね、あと個人、インディビジュアルみたいな話とか、アイデンティティーとか、同一性ってどういうことだろうねとか。なんかすごいね、やっぱり何か所々、用語がすごい哲学用語っぽいなっていうふうに思ったりもしましたね。
そうですね、あと同一性のところなんか、多分イコール2つと3つだと思うんですけど、繋がっててめっちゃ読みづらかったですよね。専用のフォント使ってないんだなって思って。
それこそモデルっていう章もあるのか、モデルなんだっけな。 ありましたね。
モデルはあれですね、モデルっていう章の中にあったのは、世の中の目の前の現象を見て、チェックイン待ちの不満を、これ本文がいいようですけど、チェックイン待ちの不満の溜まった乗客も彼にとっては単なる待ち行列のモデルである。
カフェテリアでゆらゆらしてる皿の山は単なる抽象データ型のスタックに過ぎないっていうふうな記述が本に書いてあって。なんか、キュートスタックってみんなすぐ言うよね、エンジニアみたいな、エンジニア仕草だよなこれがって思いながら。
世の中のものを全部データモデルに、抽象データに見立てて、しゃべって、じゃあこれがこうなるんだったらこうなるよね。どういうふうに問題を解決していけばいいかっていうのを、手続きをそこから連想していくなっていうのって、本当によくやるよなっていうことを思ってて、本文読みながらわかるみたいな気持ちになりましたね。
スピーカー 2
でもその二文後にめっちゃ批判されてますけど、大丈夫ですか。
何でもモデル化というか、抽象的な感じで捉えているっていうのは、現実世界に実際にそこに住まうものとしてのあり方、現実世界から、ごちゃごちゃした現実っていうものから遠く離れたものであるっていうふうに書いて、
その後言ってるのが、このプラトン的な態度は彼ら自身が我々の住む実世界について注意深く考えるための能力や願望を阻害しているのであるって書いてあって。だからそういうことばっかりしてるといいモデラーになれない的な感じですかね。
スピーカー 1
そうね。でも一方でこれに対してちょっと自分は反論すると、現実って複雑であることはそうなんだけども、いやもっと単純に考えてもっとこうしたらいいんじゃないみたいな。つまりデータモデルみたいなものを考えたことがない人からすると、いやもっとシンプルに考えられるじゃんっていうふうにこっちは提示できるなっていうことも一方で思ったりとかして。
なんかその目の前の問題がとても難しいってなるんだけども、これ抽象化して考えるとこっちで起きた問題と一緒じゃん。だからこれってこういうふうなアプローチしてできないんですかって言ったら、ああ意外とそれはいいかもねみたいなことって、まあ経験的にもやっぱあるし、なんかなんでそういうふうに考えられるのって言ったときに、いやプログラミングにはスタックとか給みたいな考え方があってとか、
言う話とかしてあげると、ああなるほど、そんなふうに世の中を見てんだねって言われたことは実際あったりとかして、なんかその経験が自分の中では結構強く印象に残ってたりしますね。
スピーカー 2
そうしないとソフトウェアって作れないですもんね。現実と同じ情報量のものをぶち込めるわけもないし、もちろんさっき言ったね、記述そのもの、記述の前にちゃんと正しく見るみたいなのが難しいって話があって。
スピーカー 1
ある意味ね、抽象化ってまあデフォルメみたいなものだと思うんで、なんか某人間ぐらいの感じに簡略化しないと、人間の脳みそに入らないじゃないですか。コンピューターにも入らないし。
スピーカー 2
確かにな、これなんでこんな毒付いてるんだろう。なんかマイケルジャクソンさんちょいちょい語気が荒いですよね。
スピーカー 1
そうですね。まあでも多分、そうやって単純化してオブジェクトってものにして考えればいいんだとか、構造化みたいなものにして考えればいいんだっていうことばっかやってると、結局そこの手法の方に引っ張られるかなっていうことなのかな。
スピーカー 2
それか、もうすでにインストールされてるステレオタイプというか、そういうパターンに当てはめて考えるっていうのを違反してる、数学的抽象の理想的な世界って言ってるから多分この本で言ってる数学っていうニュアンスを引き継いでるのかなと思うんですけど
この本で言うと数学っていうのはすごい純粋でパワフルな表現力持つけど、必ずしもそれだけでカバーできない曖昧さ複雑さっていうのがあるよね的なスタンスだったはずなんで。
信頼と複雑さの関係
スピーカー 1
そうですね。
スピーカー 2
そういう感じなのかな。でもその後の文章も結構好きなんですよね。世界が彼の地図のモデルだという地図制作者を読者は信頼できるだろうか。
これは世界を正しく映したものですねって言ってほしいじゃないですか。
スピーカー 1
そうね。
スピーカー 2
これ俺の頭の中であったモデルこの地図みたいなのはすごい嫌だなって。
スピーカー 1
でもどっかでは信用しないといけないからみたいな。
そうなんですよね。結局世の中は複雑だよねって結論によく行きがちだし、どっかで単純化しないと扱い切れないっていうものもあるし、
ただ一方でそれが信頼に足るのかどうかとかそれでいいのかどうかっていうものの複雑さに人間はどうせ耐えられないんで、
その複雑さっていうものを縮減するために最終的にどうするかって言ったら信頼するしかないみたいなことになるんですよね。
これは社会学の本とかでルーマンという人が信頼と複雑さの縮減であるっていう話をしていて、
でも確かにお店に出てきた水に毒が入ってないかどうかとかいちいちチェックしてられなくて、
これはちゃんと大丈夫なものだって、無意識的に信頼してるわけで、そういういろんな前提を我々鵜呑みした上でやってるから、
どっかでやっぱりそういうふうに複雑さを縮減していかないといけないっていうのは一方であるよねってやっぱ思っちゃうなってちょっと思いましたね。
スピーカー 2
あとあれですね、その次のページって言ってもあれなんですけど、同じ章のもう少し後の方に、この章長いんだよな確か。
長いって言っても5、6ページですけど。
なんかモデルっていろいろあるやんみたいな言ってて、まあ3種類って言ってるんであんまりないかもしれないですけど。
モデルの種類と使用
スピーカー 2
モデルという言葉が何を意味するのかって話で、3種類のモデルを区別してると、アイコニック、アナロジック、アナリティックっていう3つがあるよねって言ってて、
同じモデルっていう呼び方してても、役割というか立卓してる視点みたいなのが違うよね。
で、マイケル・ジャクソン、筆者自身はモデルっていう言葉をこの中で言うと、アナロジック類似モデルという意味で使いたいっていうふうに書いてて、
そのまま写したとかっていう話ではなくて、似た性質をしっかり引き継いでるものって感じかな。
スピーカー 1
そうですね、アナロジーだからそうですね、同じような性質を持った、ただしでもそれ自体ではないというか。
スピーカー 2
そうですね、十分に特徴を捉えてる感じが。
スピーカー 1
まあでも、プログラマーの中でモデルって言った時のめちゃくちゃ。
スピーカー 2
データベースのもの。
リコードを入れたもの。
スピーカー 1
そう、リコードのことをモデルという場合もあるし、BJSロジックが入ってますっていう場合もあるし。
スピーカー 2
まあレールズはね、データベースとそこら辺の手続き、コアなロジック手続きをデータベースで表現するんじゃって言ってたから別に間違っちゃないんですけどね。
スピーカー 1
そうそう。
スピーカー 2
原理的には。今クロードが教えてくれたんですけど、アイコニックっていうのは見た目が似ているで、アナロジックっていうのは構造や振る舞いが似ている。
で、アナリティックっていうのは数学や論理意識で表現されるもん。
スピーカー 1
はいはいはいはい。
スピーカー 2
なんとなくわかる。
スピーカー 1
だからその3つ目のモデルとかはあれですよね。世の中の現象をこのモデルでやると説明力が高いとか低いとか。
スピーカー 2
人間としての思考とかはそうか。
スピーカー 1
そうそうそう。そういうところでいうモデルって感じかなって今聞いて。
確かに確かに。
人間っていうのは合理的な経済人であるんだから、100円と50円のジュースがあった時には50円の方を選ぶっていうよね。
っていうようなことを説明する時の、人間っていうことをモデル化して考えるみたいな時のモデルかなって思いました。
スピーカー 2
確かにこう言われてみるとどれもモデルっていう風に言ってる気はするし、
全然なんでその言葉を使ってるんだっけっていう重要性。
モデルっていう言葉に求めているものが確かに全然違うなーっていう気はしますね。
スピーカー 1
厄介ですね。
スピーカー 2
曖昧ですね。
スピーカー 1
曖昧ですね。
ただでさえね、モデルって厄介なのにね。
プログラマーがいうモデルが厄介なのに。
対話の重要性
スピーカー 1
もうちょっと外の世界まで考えた時に、モデルって言った時に何指すのって言われると難しいですね。
スピーカー 2
難しいですね。
スピーカー 1
でもこういう難しさを持ってるんだってことを知っておくっていうことが唯一の抵抗というか、よりよく使うためのことでもあるってあるだろうな。
スピーカー 2
そうですね。
やっぱり知らないということを知っておかないと、賢くなれない。
スピーカー 1
めっちゃ話してきましたけどどうですかね。
あと何か触れるものありますかね。
スピーカー 2
これでもどんくらい触れてるんですかね。多分4分の1ぐらいなのかな。
スピーカー 1
もうちょい下手すると少ないかも。
ですよね。
多分トピックというか項目立てされているものでいけば多分結構少ないけど、他のところもちょっとずつ触れながらっていう風に考えると4分の1ぐらいは来たのかな。
スピーカー 2
そうですね。
なんかしっかり読み込むとすごい興味深いなって話は他にも全然あって。
それこそアプリケーションドメインと機械っていうのがあるよね。
要求と使用っていうのがあるよねってことはそこの投開面があるから、設置してる部分もあるからそこでインターフェースっていうのもあるし、投遊されてる部分っていうのもあるよねっていうような話もあって。
スピーカー 1
それで投遊現象っていうトピックというか章があったりするし、なんかねそれこそさっき言ってたいろんなフレーム、プロブレムフレームとか諸々のフレームとか、全体文脈図とかいろいろなんか面白そうな話があるけど難しいぞ。
扱うのも難しいし、とてもとても我々今時間を喋っていてもう2時間になろうとしていますというところで。
スピーカー 2
難しいな。
スピーカー 1
時間的な制約も難しい。
スピーカー 2
じゃあここら辺ですかね。
スピーカー 1
そうですね。
スピーカー 2
どうでした?芸衣さん的には読んでみて全体的な感想とか。読んでみた後と今じっくり話してみた後で変わったことがあると思うんですけど。
スピーカー 1
いやもう読んでるときは一個一個はよくわからんなと思ってたけど、やっぱ人に向けて話すと全体をつなぎながら面白かったんだよねとかってトピックを取っていくとだんだん全体がつながっていくなっていう感じがあって。
やっぱ人と喋りながら読む本だなこれがって思いました。
スピーカー 2
そうですね。なんか僕も話してるとあれ意外としっくりくるぞみたいな。
ちゃんと理解できてなさすぎるなって思いながら結構バーっと読んでたんで。
果たして本当に読めてるんだろうかっていう気持ちだったんですけど。
本当に読めてるかどうかはまだわかんないですけど、ただ全然自分の能力というか枠組みで解釈できる部分は意外とたくさんあったんだなっていうような気持ちですね。
面白いんじゃないかなやっぱり。
スピーカー 1
そうですね。読んでみんなと喋りたいって気持ちになりました。
スピーカー 2
あと詳しい人に、ちゃんと詳しい人に解説してもらうと一気に魅力的になる気がする。
スピーカー 1
確かに。
スピーカー 2
設計ナイトとかでやってくれないかな。要求ナイトをやってもらえばいいのか。
要求ナイト。
要求と使用ナイト。
スピーカー 1
いいですね。
スピーカー 2
まあでもそんなところですかね。
はい。
じゃあ終わりにしますか。
スピーカー 1
終わりにしましょう。
スピーカー 2
はい。じゃあ定型文を読んでおしまいとしましょう。
今週も放送をお聞きいただきありがとうございます。
ではまた次回。次回は来年になるのかな。
スピーカー 1
かもしれない。
スピーカー 2
まあいいか。さよなら。
スピーカー 1
さよなら。
20:10

コメント

スクロール