Slide 1

Slide 1 text

ソフトウェアと「動的平衡」 1 @Philomagi 2021/03/02@どこで発表すればいいのかわからない技術 LT会 第1回 #どこで発表すればいいのかわからない技術 LT会

Slide 2

Slide 2 text

発表者 @Philomagi ● WEB系プログラマ ● 自称フロントエンド寄り ○ 最近のマイブームは SelfとSmalltalk ○ Haskell と Golang にも最近手を出し始めた ● たまにtwitterで怪電波を垂れ流してます 2

Slide 3

Slide 3 text

今回のテーマ 3 ● 生物学における「動的平衡」は、生命の柔らかさ、可変性、そしてバランスを保 つ機能であり、常に自己破壊し、常に再構築することでそれらを維持しようとす るあり方である ● 生命における「動的平衡」が持つ特徴は、ソフトウェアにおいてもしばしば求めら れる要素であるように思われる ● この「動的平衡」をヒントとして、ソフトウェアに求められる性質やその特徴を考え てみる

Slide 4

Slide 4 text

本発表での「動的平衡」 4

Slide 5

Slide 5 text

● 生物学の文脈における言葉 ○ 福岡伸一氏によって提示された言葉 ○ 『新版 動的平衡』(福岡伸一)など ● 一方、物理学・化学で既に「動的平衡」という言葉は定義さ れていたらしい ○ しかしその意味は、福岡伸一の言う「動的平衡」とは異なる ○ 既存の言葉を導入しながら、しかし既存とは異なる意味を与えてしまってい るという点について、福岡氏への批判もある 「動的平衡」という言葉 5

Slide 6

Slide 6 text

こうした現象を「動的平衡」と呼んでよいのだろうか。行く川の流 れは絶えずして、しかももとの水にあらず、とは方丈記である が、まさに体内で起こっている物質の入れ替わりと重ね合わせ ることができる。しかし、このような状態は「定常状態」と呼ばれ なければならない。 『科学者が発言するということ』より 福岡伸一の「動的平衡」に対する指摘 6

Slide 7

Slide 7 text

● 本発表では、福岡氏が生物学の文脈で語る「動的平衡」を 引用する ● 本発表では、福岡氏が「動的平衡」という言葉で語る内容を 通じての考察を目的とする ● 「動的平衡」という命名の妥当性、およびその使用方法に対 する評価は、本発表ではスコープ外とする 本発表での「動的平衡」について 7

Slide 8

Slide 8 text

「動的平衡」 8

Slide 9

Slide 9 text

9 つまり、生命とは機械ではない。 そこには、機械とはまったく違うダイナミズムがある。 生命の持つ柔らかさ、可変性、そして全体としてのバランスを 保つ機能-それを、私は「動的平衡」と呼びたいのである。  『新版 動的平衡 生命はなぜそこに宿るのか』- p.176

Slide 10

Slide 10 text

10 つまり、生命とは機械ではない。 そこには、機械とはまったく違うダイナミズムがある。 生命の持つ柔らかさ、可変性、そして全体としてのバランスを 保つ機能-それを、私は「動的平衡」と呼びたいのである。  『新版 動的平衡 生命はなぜそこに宿るのか』- p.176

Slide 11

Slide 11 text

11 生命はゆく川のごとく流れの中にあり、(中略)さらに重要なの は、この分子の流れが、流れながらも全体として秩序を維持 するため、相互に関係性を保っているということだった。 (中略) その流れの中で、私たちの身体は変わりつつ、かろうじて一 定の状態を保っている。その流れ自体が「生きている」という ことなのである。シェーンハイマーは、この生命の特異的なあ りようをダイナミック・ステイト(動的な状態)と呼んだ。私はこ の概念をさらに拡張し、生命の均衡の重要性をより強調する ため「動的平衡」と訳したい。 『新版 動的平衡 生命はなぜそこに宿るのか』- p.260~p.261

Slide 12

Slide 12 text

12 生命はゆく川のごとく流れの中にあり、(中略)さらに重要なの は、この分子の流れが、流れながらも全体として秩序を維持 するため、相互に関係性を保っているということだった。 (中略) その流れの中で、私たちの身体は変わりつつ、かろうじて一 定の状態を保っている。その流れ自体が「生きている」という ことなのである。シェーンハイマーは、この生命の特異的なあ りようをダイナミック・ステイト(動的な状態)と呼んだ。私はこ の概念をさらに拡張し、生命の均衡の重要性をより強調する ため「動的平衡」と訳したい。 『新版 動的平衡 生命はなぜそこに宿るのか』- p.260~p.261

Slide 13

Slide 13 text

13 (エントロピー増大の法則について)秩序あるものはすべて乱 雑さが増大する方向に不可避的に進み、その秩序はやがて 失われていく。 (中略) 生命はそのことをあらかじめ織り込み、一つの準備をした。エ ントロピー増大の法則に先回りして、自らを壊し、そして再構 築するという自転車操業的なあり方、つまりそれが「動的平 衡」である。 『新版 動的平衡 生命はなぜそこに宿るのか』- p.276 ()内は発表者による

Slide 14

Slide 14 text

14 (エントロピー増大の法則について)秩序あるものはすべて乱 雑さが増大する方向に不可避的に進み、その秩序はやがて 失われていく。 (中略) 生命はそのことをあらかじめ織り込み、一つの準備をした。エ ントロピー増大の法則に先回りして、自らを壊し、そして再構 築するという自転車操業的なあり方、つまりそれが「動的平 衡」である。 『新版 動的平衡 生命はなぜそこに宿るのか』- p.276 ()内は発表者による

Slide 15

Slide 15 text

15 「動的平衡」とは ● 生命の持つ柔らかさ、可変性、そして全体としてのバランス を保つ機能である ● 「動的平衡」にある(生命などの)システムは、流れつつ変わ りつつ、それでもなお全体において、一定の状態(秩序)を 保っている ● 「動的平衡」は、自らの破壊・再構築を繰り返すことで秩序を 維持しようとするあり方である

Slide 16

Slide 16 text

ソフトウェアと「動的平衡」 16

Slide 17

Slide 17 text

「動的平衡」からソフトウェアを考える ● 「動的平衡」と開放閉鎖原則(OCP) ○ 破壊・再構築しつつ、全体の秩序は維持される ● 「動的平衡」と遅延結合 ○ 動的なやり取りの中で、事後的に結合していく細胞 ● 「動的平衡」とオブジェクト指向 ○ 要素同士の動的なやりとりを通じて全体が成立する 17

Slide 18

Slide 18 text

「動的平衡」からソフトウェアを考える ● 「動的平衡」と開放閉鎖原則(OCP) ○ 破壊・再構築しつつ、全体の秩序は維持される ● 「動的平衡」と遅延結合 ○ 動的なやり取りの中で、事後的に結合していく細胞 ● 「動的平衡」とオブジェクト指向 ○ 要素同士の動的なやりとりを通じて全体が成立する 18

Slide 19

Slide 19 text

19 「動的平衡」と開放閉鎖原則 ● 「動的平衡」 ○ 部分は常に変化(破壊・再構築)する ○ 一方で、全体の秩序・バランスは維持される ● 開放閉鎖原則 ○ 拡張に開き、修正に閉じなくてはならない ○ 部分の変更が、全体に影響してはならない

Slide 20

Slide 20 text

20 「動的平衡」と開放閉鎖原則 ● 「動的平衡」 ○ 部分は常に変化(破壊・再構築)する ○ 一方で、全体の秩序・バランスは維持される ● 開放閉鎖原則 ○ 拡張に開き、修正に閉じなくてはならない ○ 部分の変更が、全体に影響してはならない

Slide 21

Slide 21 text

トレッドミル現象に見る「動的平衡」(『新版 動的平衡』p.304~p.308』) 21 図は『生体運動マシナリー図鑑』より

Slide 22

Slide 22 text

トレッドミル現象に見る「動的平衡」(『新版 動的平衡』p.304~p.308』) 22 図は『生体運動マシナリー図鑑』より

Slide 23

Slide 23 text

トレッドミル現象に見る「動的平衡」(『新版 動的平衡』p.304~p.308』) 23 図は『生体運動マシナリー図鑑』より

Slide 24

Slide 24 text

トレッドミル現象に見る「動的平衡」(『新版 動的平衡』p.304~p.308』) 24 図は『生体運動マシナリー図鑑』より

Slide 25

Slide 25 text

● 開放閉鎖原則は、ソフトウェアにおける「動的平衡」の一側 面と捉えられないか ● ソフトウェアが「動的平衡」にある時、その結果として、開放 閉鎖原則を満たすような構造が現れてくると捉えられるので はないか ● 「動的平衡」の観点は、ソフトウェア設計のヒントを提供し得 るのではないか 25 「動的平衡」と開放閉鎖原則

Slide 26

Slide 26 text

「動的平衡」からソフトウェアを考える ● 「動的平衡」と開放閉鎖原則(OCP) ○ 破壊・再構築しつつ、全体の秩序は維持される ● 「動的平衡」と遅延結合 ○ 動的なやり取りの中で、事後的に結合していく細胞 ● 「動的平衡」とオブジェクト指向 ○ 要素同士の動的なやりとりを通じて全体が成立する 26

Slide 27

Slide 27 text

27 「動的平衡」と遅延結合 (受精卵の細胞分裂についての說明の後で) しかし、ここからが重要なポイントだが、それぞれの細胞は将来、何になる かを知っているわけではなく、また知らないままにあらかじめ運命づけられ ているのでもない。 (中略) 各細胞は、細胞表面の特殊なタンパク質を介した相互の情報交換によっ て、すなわち「話し合い」によって、それぞれの分化の方向について、互いに 他を律しながら分化を進めていく。 『新版 動的平衡 生命はなぜそこに宿るのか』- p.156 ()内は発表者による

Slide 28

Slide 28 text

28 「動的平衡」と遅延結合 (受精卵の細胞分裂についての說明の後で) しかし、ここからが重要なポイントだが、それぞれの細胞は将来、何になる かを知っているわけではなく、また知らないままにあらかじめ運命づけられ ているのでもない。 (中略) 各細胞は、細胞表面の特殊なタンパク質を介した相互の情報交換によっ て、すなわち「話し合い」によって、それぞれの分化の方向について、互いに 他を律しながら分化を進めていく。 『新版 動的平衡 生命はなぜそこに宿るのか』- p.156 ()内は発表者による

Slide 29

Slide 29 text

「動的平衡」と遅延結合 29 『多能性幹細胞の種類』より

Slide 30

Slide 30 text

30 真のソフトウェア工学が開発されるまでの次善の策は、 あらゆる要素について極端に遅延結合な動的システム を使って開発する事だ。(...) そして沢山の偉大なアイデアは、70 年代の初期に XEROX PARC で Squeak の祖先である Smalltalk -- 最 初の完全にオブジェクト指向な開発操作環境 -- の発明 にも使われた。 Squeak はこの遅延結合をさらに押し進めたものだ。 『「ソフトウェア工学」は矛盾語法か?』より 「動的平衡」と遅延結合

Slide 31

Slide 31 text

31 真のソフトウェア工学が開発されるまでの次善の策は、 あらゆる要素について極端に遅延結合な動的システム を使って開発する事だ。(...) そして沢山の偉大なアイデアは、70 年代の初期に XEROX PARC で Squeak の祖先である Smalltalk -- 最 初の完全にオブジェクト指向な開発操作環境 -- の発明 にも使われた。 Squeak はこの遅延結合をさらに押し進めたものだ。 『「ソフトウェア工学」は矛盾語法か?』より 「動的平衡」と遅延結合

Slide 32

Slide 32 text

32 「動的平衡」と遅延結合 『「ソフトウェア工学」は矛盾語法か?』より

Slide 33

Slide 33 text

● 生命においては、細胞の役割は予め決定されておらず、周 辺細胞とのやり取りを通じて役割を決定する ● こうした細胞の性質は、まさに「あらゆる要素について極端 に遅延結合な動的システム」といえるのではないか ● 開放閉鎖原則と同様、遅延結合もまた「動的平衡」がもたら すものであると言えるのではないか 33 「動的平衡」と遅延結合

Slide 34

Slide 34 text

「動的平衡」からソフトウェアを考える ● 「動的平衡」と開放閉鎖原則(OCP) ○ 破壊・再構築しつつ、全体の秩序は維持される ● 「動的平衡」と遅延結合 ○ 動的なやり取りの中で、事後的に結合していく細胞 ● 「動的平衡」とオブジェクト指向 ○ 要素同士の動的なやりとりを通じて全体が成立する 34

Slide 35

Slide 35 text

35 生命の「動的平衡」、オブジェクトの「メッセージ」 生命は、機械のようにいくつもの部品を組み立てただけではないという、厳 然たる事実がある。 (中略) その生命現象においては、機械とは違って、全体は部分の総和以上のなに ものかである。1+1は2ではなく、2プラスα。そのプラスαは何か。それはどこ から来るのか。 (中略) プラスαとは、端的に言えば、情報とエネルギーの出入りである。生物を物 質のレベルからだけ考えると、ミクロなパーツからなるプラモデルに見えてし まう。しかし、パーツとパーツのあいだには、エネルギーと情報がやりとりさ れている。それがプラスαである。 生命現象のすべてはエネルギーと情報が織りなすその「効果」のほうにあ る。 『新版 動的平衡 生命はなぜそこに宿るのか』- p.145-147

Slide 36

Slide 36 text

36 生命の「動的平衡」、オブジェクトの「メッセージ」 生命は、機械のようにいくつもの部品を組み立てただけではないという、厳 然たる事実がある。 (中略) その生命現象においては、機械とは違って、全体は部分の総和以上のなに ものかである。1+1は2ではなく、2プラスα。そのプラスαは何か。それはどこ から来るのか。 (中略) プラスαとは、端的に言えば、情報とエネルギーの出入りである。生物を物 質のレベルからだけ考えると、ミクロなパーツからなるプラモデルに見えてし まう。しかし、パーツとパーツのあいだには、エネルギーと情報がやりとりさ れている。それがプラスαである。 生命現象のすべてはエネルギーと情報が織りなすその「効果」のほうにあ る。 『新版 動的平衡 生命はなぜそこに宿るのか』- p.145-147

Slide 37

Slide 37 text

37 生命の「動的平衡」、オブジェクトの「メッセージ」

Slide 38

Slide 38 text

38 生命の「動的平衡」、オブジェクトの「メッセージ」 情報・エネルギー

Slide 39

Slide 39 text

39 生命の「動的平衡」、オブジェクトの「メッセージ」 メッセージ

Slide 40

Slide 40 text

I thought of objects being like biological cells and/or individual computers on a network, only able to communicate with messages. オブジェクトとは、ネットワーク上の生物細胞や個々のコン ピュータのようなもので、メッセージでしか通信できないものだと 考えていました。 『Dr. Alan Kay on the Meaning of "Object-Oriented Programming』より 日本語はDeepL + 発表者による 40 生命の「動的平衡」、オブジェクトの「メッセージ」

Slide 41

Slide 41 text

41 The big idea is "messaging" (...). (...) The key in making great and growable systems is much more to design how its modules communicate rather than what their internal properties and behaviors should be . 大きなアイデアは「メッセージング」です(...)。 (...) 偉大で成長可能なシステムを作るための鍵は、モジュールの内部特性や振る舞いが どうあるべきかよりも、そのモジュールがどのようにコミュニケーションをとるかを設計 することにあります。 『prototypes vs classes was: Re: Sun's HotSpot』より 日本語はDeepL + 発表者による 生命の「動的平衡」、オブジェクトの「メッセージ」

Slide 42

Slide 42 text

42 The big idea is "messaging" (...). (...) The key in making great and growable systems is much more to design how its modules communicate rather than what their internal properties and behaviors should be . 大きなアイデアは「メッセージング」です(...)。 (...) 偉大で成長可能なシステムを作るための鍵は、モジュールの内部特性や振る舞いが どうあるべきかよりも、そのモジュールがどのようにコミュニケーションをとるかを設計 することにあります。 『prototypes vs classes was: Re: Sun's HotSpot』より 日本語はDeepL + 発表者による 生命の「動的平衡」、オブジェクトの「メッセージ」

Slide 43

Slide 43 text

● オブジェクト指向は、オブジェクト同士のメッセージ(相互作 用)に注目する ● 「動的平衡」にある生命は、パーツ同士のやりとりを通じて、 その全体を形成する ● 「動的平衡」にある生命とオブジェクト指向的ソフトウェア は、部分同士が相互作用しながら秩序だった全体を形成し ているという点で似通っている 43 「動的平衡」とオブジェクト指向

Slide 44

Slide 44 text

まとめ 44

Slide 45

Slide 45 text

ソフトウェアと「動的平衡」 ● 「動的平衡」は、生命の持つ柔らかさ、可変性、そして全体としてのバランスを保 つ機能であり、不断の破壊と再構築によって、その秩序を維持しようとする振る 舞いである ● 開放閉鎖原則や遅延結合などの要素を、「動的平衡」がソフトウェアにおいて (部分的にせよ)成立した結果として表出するものと捉えられるのではないか ● オブジェクト指向的世界観におけるソフトウェアは、「動的平衡」にある生命とよく 似た振る舞いを持つように見える。その意味で生命はオブジェクト指向的であ り、オブジェクト指向的ソフトウェアは生命的である 45

Slide 46

Slide 46 text

● 生命の「動的平衡」が持つ柔らかさ、可変性、バランス維持の機能は、長期的に 保守・改善可能なソフトウェアに求められる要素を、それぞれ高い次元で達成し ているように見える ● 常に壊し、常に再構築し、それでいて全体の秩序を維持する「動的平衡」の振る 舞いは、ソフトウェアの継続的発展において、まさに求められているものに思え る ● こうした「動的平衡」をソフトウェアでまさに実現するための「方法(=思考のスタ イル)」として、オブジェクト指向は未だその価値を減じておらず、むしろ最初期か らその道を示し続けていたようにすら見える 所感 46

Slide 47

Slide 47 text

● 『新版 動的平衡: 生命はなぜそこに宿るのか』 ○ 福岡伸一 ● 『科学者が発言するということ』 ○ 八代嘉美 ○ https://synodos.jp/science/1578/2 ● 『生体運動マシナリー図鑑』 ○ http://motility-machinery.jp/?p=345 ● 『Dr. Alan Kay on the Meaning of "Object-Oriented Programming"』 ○ Alan Kay ○ http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/doc_kay_oop_en ● 『prototypes vs classes was: Re: Sun's HotSpot』 ○ Alan Kay ○ http://lists.squeakfoundation.org/pipermail/squeak-dev/1998-October/017019.html 参考資料 47

Slide 48

Slide 48 text

参考資料 48 ● 『「ソフトウェア工学」は矛盾語法か?』 ○ Alan Kay ○ http://metatoys.org/oxymoron/oxymoron.html ● 『オブジェクト指向の概念の発明者は誰ですか? (改訂版)』 ○ @sumim ○ https://sumim.hatenablog.com/entry/20040525/p1 ● 『多能性幹細胞の種類』 ○ SKIP (Stemcell Knowledge & Information Porta) ○ https://skip.stemcellinformatics.org/knowledge/basic/06/ ● 『Clean Architecture 達人に学ぶソフトウェアの構造と設計』 ○ Robert C. Martin(著) ○ 角 征典、高木 正弘(訳)

Slide 49

Slide 49 text

ご清聴ありがとうございました 49