Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ソフトウェアと「動的平衡」 / software-and-dynamic-equilibrium

ソフトウェアと「動的平衡」 / software-and-dynamic-equilibrium

生物学における「動的平衡」をヒントとして、ソフトウェアに求められる性質やその特徴を考えてみる

参考資料:
・『新版 動的平衡: 生命はなぜそこに宿るのか』福岡伸一
・『科学者が発言するということ』八代嘉美 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
・『「ソフトウェア工学」は矛盾語法か?』 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(著) 角 征典、高木 正弘(訳)

philomagi

March 02, 2021
Tweet

More Decks by philomagi

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  8. 「動的平衡」
    8

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  40. 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
    生命の「動的平衡」、オブジェクトの「メッセージ」

    View Slide

  41. 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 + 発表者による
    生命の「動的平衡」、オブジェクトの「メッセージ」

    View Slide

  42. 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 + 発表者による
    生命の「動的平衡」、オブジェクトの「メッセージ」

    View Slide

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

    View Slide

  44. まとめ
    44

    View Slide

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

    View Slide

  46. ● 生命の「動的平衡」が持つ柔らかさ、可変性、バランス維持の機能は、長期的に
    保守・改善可能なソフトウェアに求められる要素を、それぞれ高い次元で達成し
    ているように見える
    ● 常に壊し、常に再構築し、それでいて全体の秩序を維持する「動的平衡」の振る
    舞いは、ソフトウェアの継続的発展において、まさに求められているものに思え

    ● こうした「動的平衡」をソフトウェアでまさに実現するための「方法(=思考のスタ
    イル)」として、オブジェクト指向は未だその価値を減じておらず、むしろ最初期か
    らその道を示し続けていたようにすら見える
    所感
    46

    View Slide

  47. ● 『新版 動的平衡: 生命はなぜそこに宿るのか』
    ○ 福岡伸一
    ● 『科学者が発言するということ』
    ○ 八代嘉美
    ○ 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

    View Slide

  48. 参考資料
    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(著)
    ○ 角 征典、高木 正弘(訳)

    View Slide

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

    View Slide