2026年2月11日水曜日

💎多重継承の課題(ダイヤモンド問題)とは?理解と回避策+J言語フォークの応用解説

 多重継承は、一つのクラスが複数のクラスから継承することを指します。これは一部のプログラム言語でサポートされていますが、多重継承が持つ問題(例: ダイヤモンド問題)を避けるために、多くの言語は単一継承のみをサポートし、インターフェイスやミックスイン、委譲などの他の手段を提供しています。

多重継承のダイヤモンド問題

多重継承のダイヤモンド問題(時々「菱形の問題」とも呼ばれる)は、オブジェクト指向プログラミングにおける多重継承の難しさを示す典型的な問題点の一つです。この問題は、二つ以上のクラスから継承した場合に、同じ基底クラスを共有することで生じる可能性があります。

問題のシナリオをシンプルな例で説明します:

  1. クラスAを基底クラスとして持つ。

  2. クラスBとクラスCは、クラスAを継承する。

  3. クラスDは、クラスBとクラスCの両方を継承する。

この構成で、クラスDはクラスAの特性(メソッドや属性)を間接的に二回継承してしまいます。クラスDのインスタンスがクラスAのあるメソッドを呼び出す場合、そのメソッドの実装はクラスBから来るのか、それともクラスCから来るのかが明確でなくなります。これがダイヤモンド問題です。

主要言語の多重継承サポートと代替手段まとめ

以下は、いくつかの主要なプログラム言語の多重継承の対応状況と代替手段についての概要です:

  1. C++:

    • 多重継承の対応状況: サポートされています。

    • 代替手段: 通常は必要ないが、仮想継承を使用してダイヤモンド問題を解決することができます。

  2. Java:

    • 多重継承の対応状況: クラスの多重継承はサポートされていません。

    • 代替手段インターフェイスを使用して複数のAPIを継承できます。また、Java 8以降のデフォルトメソッドを使用して、インターフェイスに実装を持たせることもできます。

  3. Python:

    • 多重継承の対応状況: サポートされています。

    • 代替手段: PythonはC3線形化というアルゴリズムを使用して継承の順序を解決します。ミックスインを使用して再利用を促進することも一般的です。

  4. Ruby:

    • 多重継承の対応状況: サポートされていません。

    • 代替手段モジュールやミックスインを使用してメソッドや振る舞いを複数のクラスに再利用できます。

  5. C#:

    • 多重継承の対応状況: クラスの多重継承はサポートされていません。

    • 代替手段: インターフェイスを使用して複数のAPIを継承できます。委譲を使用して実装を再利用することも一般的です。

  6. PHP:

    • 多重継承の対応状況: クラスの多重継承はサポートされていません。

    • 代替手段トレイト(Traits)を使用して、一連のメソッドを複数のクラスに再利用できます。

  7. JavaScript:

    • 多重継承の対応状況: サポートされていません。

    • 代替手段プロトタイプチェーンを利用して継承を行います。ミックスインを使用して複数のオブジェクトからメソッドやプロパティを組み合わせることが可能です。

  8. Swift:

    • 多重継承の対応状況: クラスの多重継承はサポートされていません。

    • 代替手段プロトコルを使用して複数のAPIを継承できます。プロトコル拡張を使用して、プロトコルに実装を追加することもできます。

  9. Haskell:

    • 多重継承の対応状況: Haskellは関数型言語であり、伝統的なクラスベースの継承の概念が存在しない。

    • 代替手段型クラスを使用して特定の振る舞いを定義し、複数の型に対して実装できます。

  10. TypeScript:

    • 多重継承の対応状況: サポートされていません(JavaScriptベースの言語であるため)。

    • 代替手段: インターフェイスを使用して複数のAPIを継承できます。ミックスインパターンを利用して複数のクラスからメソッドやプロパティを組み合わせることが可能です。

  11. Erlang:

    • 多重継承の対応状況: Erlangは関数型言語であり、伝統的なクラスベースの継承の概念が存在しない。

    • 代替手段モジュールを再利用して関数を共有することができます。

  12. APL:

    • 多重継承の対応状況: APLは配列指向のプログラム言語であり、伝統的な継承の概念は持たない。

    • 代替手段: NA(該当なし)

  13. Rust:

    • 多重継承の対応状況: サポートされていません。

    • 代替手段トレイトを使用して、特定の振る舞いを定義し、複数の構造体やenumに対して実装できます。トレイトオブジェクトを使用して、異なるトレイトを1つの型として扱うこともできます。

  14. J:

    • 多重継承の対応状況: Jは関数型言語の特性を持ち、伝統的なクラスベースの継承の概念が存在しない。

    • 代替手段: NA(該当なし)

  15. Go (Go言語):

    • 多重継承の対応状況: サポートされていません。

    • 代替手段インターフェイスを使用して振る舞いを定義することができ、一つの型が複数のインターフェイスを実装することが可能です。また、埋め込みフィールドを使って一つの構造体の中に別の構造体を埋め込むことができます。

  16. Julia:

    • 多重継承の対応状況: サポートされていません。

    • 代替手段Juliaは型の継承よりも「トレイト」と呼ばれる概念を中心にして設計されています。また、Juliaの多重ディスパッチにより、関数の振る舞いを様々な型の組み合わせで定義できます。

  17. R:

    • 多重継承の対応状況: 伝統的なクラスベースの多重継承はサポートされていません。

    • 代替手段: RのS4クラスシステムでは、一つのクラスが複数のクラスから継承するような形の「多重継承」が可能です。しかし、これは伝統的な多重継承とは異なる。

  18. Lisp (特にCommon Lispに基づいて説明します):

    • 多重継承の対応状況: サポートされています。

    • 代替手段: 多重継承に関連する問題を解決するための特定の方法、例えばCLOS(Common Lisp Object System)のメソッドの組み合わせルールがあります。

  19. Scala:

    • 多重継承の対応状況: クラスの多重継承はサポートされていません。

    • 代替手段トレイト(traits)を使用して、メソッドやプロパティを複数のクラスに再利用できます。Scalaのトレイトは、実装を持つことができるため、多重継承のような再利用が可能となります。

  20. OCaml:

    • 多重継承の対応状況: サポートされていません。

    • 代替手段: OCamlではモジュールとモジュールのシグネチャを利用してコードの再利用を実現します。また、オブジェクト指向の特性もサポートしており、クラスとオブジェクトを使用して継承を行うことができますが、一度に複数のクラスを継承することはできません。

  21. Smalltalk:

    • 多重継承の対応状況: サポートされていません。

    • 代替手段: Smalltalkはプロトタイプベースのオブジェクト指向言語です。継承はシングルトンクラスを通じて行われます。多重継承の代わりに、トレイトやプロトコルを使用してメソッドを再利用することが一般的です。

  22. Objective-C:

    • 多重継承の対応状況: サポートされていません。

    • 代替手段Objective-Cではプロトコル(JavaやSwiftのインターフェイスに似ています)を使用して複数のAPIを実装できます。これにより、あるクラスが複数のプロトコルを採用することができます。プロトコルは実装を持つことはできませんが、プロトコルのメソッドをどのクラスでも再利用することができます。

多重継承の解消手段ごとの特徴

  1. 仮想継承(Virtual Inheritance):

    • 用途: 主にC++で使用される。

    • 説明: 仮想継承は、基底クラスの複数のインスタンスを持つのを防ぐためのものです。仮想継承を使用すると、継承チェーンにおいて基底クラスの単一のインスタンスのみが存在します。

    • 利点: ダイヤモンド問題を回避できます。

  2. トレイト(Trait):

    • 用途: Scala, Rust, PHP などの言語で使用される。

    • 説明: トレイトは再利用可能なメソッドの集合であり、クラス間でコードを共有するために使用されます。クラスは複数のトレイトを持つことができます。

    • 利点: 多重継承のメリットを持ちながら、ダイヤモンド問題のリスクを避けることができます。

  3. プロトコル(Protocol) / インターフェイス(Interface):

    • 用途: Objective-C, Swift, Java などの言語で使用される。

    • 説明: プロトコルやインターフェイスは、実装を持たないメソッドの定義の集まりです。クラスはこれらのプロトコルやインターフェイスを実装することで、そのメソッドを持つことを保証します。

    • 利点: 複数のインターフェイスを実装することができ、多重継承のように複数の動作を組み込むことができますが、実装の衝突は発生しません。

  4. ミックスイン(Mixin):

    • 用途: Python, Ruby などの言語で使用される。

    • 説明: ミックスインは、複数のクラスにまたがって再利用できるメソッドの集合体です。ミックスイン自体は単独でインスタンス化されることを意図していません。

    • 利点: 多重継承の複雑さなしに、特定の機能を複数のクラスに追加することができます。

各サンプルについての簡単な解説を行います。

仮想継承(Virtual Inheritance) - C++

解説:

  • Base という基底クラスを定義しています。このクラスには show というメソッドがあります。

  • Derived1 と Derived2 は Base から仮想継承を使って継承しています。仮想継承は virtual キーワードによって示されます。

  • Derived3 は Derived1 と Derived2 の両方から継承しています。

  • 仮想継承のおかげで、Derived3 のオブジェクトを使って show メソッドを呼び出すときに、曖昧さがなく、Base クラスのメソッドが正確に1回だけ呼び出されます。

class Base {
public:
    void show() { cout << "Base class method" << endl; }
};

class Derived1 : virtual public Base { };
class Derived2 : virtual public Base { };
class Derived3 : public Derived1, public Derived2 { };

int main() {
    Derived3 d;
    d.show();  // This calls the method from Base class without ambiguity
    return 0;
}

トレイト(Trait) - Rust

プロトコル) - Swift

ミックスイン(Mixin) - Python

第五の選択「フォーク」

フォークの概念は、J言語の関数合成の形式であり、特に関数型プログラムにおいて関数を組み合わせて新しい関数を作成する方法を提供します。多重継承、コンビネータ、そしてフォークは、それぞれラムの概念やタクティックを指しますが、それらが関数やオブジェクトの再利用、組み合わせを強化する点で一定の関連性を持つことは確かです。

  • 多重継承: オブジェクト指向プログラムの文脈でのもので、クラスが複数の親クラスから継承することを指します。これは、異なるソースからの属性やメソッドを1つの新しいクラスに統合する手段として使用されます。

  • コンビネータ: 主に関数型プログラムの文脈で使用される、引数として関数を取り、それらの関数を組み合わせて新しい関数を返す関数を指します。コンビネータは、関数合成の形式を提供し、より高度な関数を単純な関数から構築するための手段として使用されます。

  • フォーク (J言語): これは特定のプログラム言語、J言語において関数を組み合わせる方法を指します。フォークは3つの関数を取り、それらを特定の方法で組み合わせて新しい関数を作成します。

これらの概念の共通点は、既存の部品(クラス、関数など)を組み合わせて新しい部品を作成することにあります。しかし、それらの具体的な使い方や目的、そして文脈は異なります。

フォークはコンビネータなのか?

J言語のフォークを考慮すると、フォークは確かに特定の形のコンビネータと見なすことができます。コンビネータは、関数型プログラムにおける関数やオペレーションの組み合わせを助けるための高階関数であり、他の関数を引数として取り、新しい関数を結果として返すものを指します。

J言語のフォークは、3つの関数(または動詞)を取り、それらを特定の方法で組み合わせて新しい関数を形成します。この観点から、フォークは関数を組み合わせる特定のタイプのコンビネータと見なすことができます。

しかし、"コンビネータ"という用語は、関数型プログラム言語や理論において特定の歴史的および技術的背景を持つため、J言語の文脈と完全に一致するわけではありません。しかし、抽象的に、関数の組み合わせを助けるものとしてのフォークはコンビネータの一種と見なすことができるでしょう。

3つの関数を合成するコンビネータについては、伝統的なコンビネータ論理の中では特定されていません。しかし、関数型言語やライブラリでは、高階関数やコンビネータを自分で定義する能力があるため、3つの関数を合成するような動作を持つコンビネータを作ることが可能です。
例として、Haskellで3つの関数を合成するコンビネータを考えてみましょう:

combineThree :: (c -> d) -> (b -> c) -> (a -> b) -> a -> d
combineThree f g h = f . g . h

このcombineThree関数は、3つの関数fghを引数に取り、それらを合成して新しい関数を返します。. はHaskellの関数合成オペレータです。

このような形式で、任意の関数型言語やライブラリで自分自身のコンビネータを定義し、特定のニーズに合わせて関数を組み合わせることができます。


💎(プログラミング)言語にとって型とはなにか

 型システムの誕生は、1950年代の高級言語の発展と共に始まりました。Fortranが最初の高級プログラミング言語として登場しましたが、その後すぐにALGOLが開発され、明示的な型宣言が導入されました。

ALGOLの成功は型システムの重要性を確認し、その後の多くの言語(例えば、C、Java、Pythonなど)も型システムを採用しました。これらの言語では、整数、浮動小数点数、文字列、ブール値など、さまざまな種類のデータを表現するための型が提供されています。

"Types and Programming Languages" by Benjamin C. Pierce - この本は型理論の基礎を網羅的に扱っています。
"Practical Foundations for Programming Languages" by Robert Harper - この書籍は、型を中心としたプログラミング言語の基礎を扱っています。
HaskellやMLなどの関数型言語に関連する研究 - これらの言語は型システムの進化や革新的な使用例を多く生み出しています。
依存型や線形型など、特定の型システムに関する研究。
型推論アルゴリズムや型安全性に関する研究。

日本のガストロノミーツーリズム(2024〜2026)最前線

 ガストロノミー(gastronomy)は、食を「味」だけでなく、文化・歴史・地域・作り手・作法・科学まで含めて理解し、語り、楽しむ考え方です。

料理そのものに加えて、食材の産地、季節性、発酵や調理技術、食の背景(物語)も対象になります。

1) まず押さえるべき「公式一次資料」(政策・統計)

観光庁:インバウンド消費(2025年暦年速報)

  • 2025年の訪日外国人旅行消費額(速報)は 9兆4,559億円、費目構成比は 宿泊費36.6% / 買物代27.0% / 飲食費21.9%。さらに2024年比で宿泊費・飲食費の構成比が増加と明記されています。
    https://www.mlit.go.jp/kankocho/content/001977997.pdf

JNTO:訪日外客数(2025年 年間確定の見出し付きリリース)

  • 2025年計は 42,683,600人で「年間で4,200万人を突破し過去最多」。
    https://www.jnto.go.jp/news/press/20260121_monthly.html

観光庁:補助・公募(「食」の力を最大活用…)

  • 公募開始(2025/5/30最終更新):施設整備・改修、設備・備品、コンテンツ造成、販路形成まで補助対象に含める設計(=“体験”だけでなく“実装と流通”を支援)。
    https://www.mlit.go.jp/kankocho/kobo05_00058.html

  • 地域公募開始のお知らせ(2025/4/29最終更新):専門家派遣、地産地消メニューや食体験の磨き上げ、地域課題の把握なども明記。
    https://www.mlit.go.jp/kankocho/kobo05_00043.html

  • 採択結果(補助金・2025/7/31最終更新):採択一覧PDFあり。
    https://www.mlit.go.jp/kankocho/topics05_00030.html

  • 採択事業の公表(2025/6/11最終更新):こちらも採択一覧PDFあり(枠や回次が異なる場合があるので両方参照が安全)。
    https://www.mlit.go.jp/kankocho/kobo05_00068.html


2) 日本の文脈が強い「国内記事・事例」(政策・地域・ビジネス)

採択事例の整理(地域名まで載る)

  • トラベルニュースat(2024/6/13):観光庁「地域一帯型…」6件採択(地域と概要)。
    https://www.travelnews.co.jp/news/kankou/2024061312011940646.html

2025年度の公募・狙いを読みやすく解説(中小企業向け)

  • ツギノジダイ(2025/4/27、最終更新2025/5/30):定義・公募の要点を平易に整理。
    https://smbiz.asahi.com/article/15725838

事業の採択と狙い(観光業界ニュース)

  • トラベルボイス(2025/6/12):「美食観光」推進事業の採択・狙い(実証、専門家派遣、磨き上げ等)。
    https://www.travelvoice.jp/20250612-157849

地域イベントの例(有料記事だが“動き”が見える)

  • 沖縄タイムス+プラス(2026/1/18・有料):東京で「琉球王国ガストロノミーSHOWCASE」試食商談。
    https://www.okinawatimes.co.jp/articles/-/1756312

富裕層×地方×美食(メディア論点の例)

  • ダイヤモンド・オンライン(2026/2/1):地方に向かう“ローカルガストロノミー”文脈の提示。
    https://diamond.jp/articles/-/382628


3) “食の文化資源化”で強い一次根拠(酒造りのユネスコ登録)

英語圏の観光記事で「文化遺産としての食」を語るとき、公式一次資料があると説得力が跳ね上がります。

  • 外務省(2024/12/5):麹菌を用いる「伝統的酒造り」のユネスコ無形文化遺産登録を公式発表。
    https://www.mofa.go.jp/press/release/pressite_000001_00788.html

  • Reuters(2024/12/5):同件を国際報道として整理(旅行・輸出の含意)。
    https://www.reuters.com/world/japan/japans-centuries-old-sake-tradition-recognized-unesco-cultural-heritage-list-2024-12-05/


4) “オーバーツーリズム/分散”が食観光を後押しする根拠(周辺文脈)

  • AP通信(京都・祇園の私道立入制限の文脈):混雑・迷惑行為への反発と規制強化は、「少数高付加価値」「地域分散」を押し上げる背景として引用しやすいです。
    https://apnews.com/article/1162257d8642a85db447a6f4afdbb249


5) 2024〜2026の「日本のガストロノミーツーリズム」要点(日本語で短く)

  • いまの本質は「名物を食べる」だけでなく、消費額の引き上げと**地方誘客(分散)**を同時に満たす“戦略装置”です(観光庁の補助設計が、施設・造成・販路まで支援している点が決定的)。

  • 市場環境は追い風:訪日外客数は2025年に4,268万、消費額は9.4559兆円(速報)で、費目でも飲食費が2割超を占めます。

  • 文化資源(酒造り等)の国際認証は、**“物語の核”**として商品造成や広報に使える一次根拠になります。

ライプニッツの二進数

 

🛠️ライプニッツは最初のコンピュータ科学者であり、情報理論家であったかもしれない

ライプニッツは、おそらくヨーロッパの主要な知識人の中で初めて中国文明に深い関心を抱いた人物であり、中国に駐在するヨーロッパのキリスト教宣教師と連絡を取ったり、その著作を読んだりして、中国文明を知ることになったのである。彼は『孔子経綸』を出版された最初の年に読んだようである[182]。彼は、ヨーロッパ人は儒教の倫理的伝統から多くを学ぶことができるという結論に達した。彼は漢字が彼の普遍的な特性の無意識の形である可能性について熟考した。彼は易経の六芒星が000000から111111までの二進数に対応していることに注目し、このマッピングは彼が賞賛する哲学的数学の類において中国の主要な業績の証拠であると結論付けた。 ライプニッツはキリスト教を表す二進法の考えを中国の皇帝に伝え、それが彼を改心させることを望んでいた。ライプニッツは当時の主要な西洋哲学者の中で唯一、ヨーロッパの優勢な信仰に儒教の考えを取り入れようと試みた。ライプニッツは中国の哲学的な考え方が大好きだったのだった 。

https://en.wikipedia.org/wiki/Gottfried_Wilhelm_Leibniz
画像
ヨアヒム・ブーベからゴットフリート・ヴィルヘルム・ライプニッツに送られた易経六芒星の図。アラビア数字はライプニッツが付け加えた。

ライプニッツは、ずっと後にチャールズ・バベッジとエイダ・ラブレスによって作り出されたハードウェアとソフトウェアの概念に手探りで取り組んでいた。1679年、ライプニッツは2進数の演算を熟考している間、2進数がビー玉によって表現され、パンチカードの初歩的な種類によって支配される機械を想像した

ライプニッツは最初のコンピュータ科学者であり、情報理論家であったかもしれない[150]。人生の早い段階で、彼は2進数システム(ベース2)を記録し、その後彼のキャリアを通してそのシステムを再訪した[151]。ライプニッツが彼の形而上学的見解を比較するために他の文化を調べているとき、彼は古代中国の本『易経』に遭遇した。ライプニッツは陰と陽を示す図を解釈し、それを0と1に対応させた[152]。より詳しい情報は、シノフィールのセクションで見ることができる。ライプニッツは、独自に二進法を開発したフアン・カラムエル・イ・ロブコウィッツとトマス・ハリオットの二進法に関する著作に精通していたので、盗用した可能性がある[153]。フアン・カラムエル・イ・ロブコウィッツは、底2の対数を含む対数について広範囲に研究していた[154]。 [154] トーマス・ハリオットの原稿には2進数とその表記法の表があり、どんな数でも2進法で書けることが示されていた[155] にもかかわらず、ライプニッツは2進法を単純化し、接続、離接、否定、同一、包含、空集合などの論理特性を明確にした[156] 彼はラグランジェ補間とアルゴリズム情報理論を予見していた。彼の計算機であるラチオシネーターはユニバーサル・チューリング・マシンの側面を先取りしていた。1961年、ノルベルト・ウィーナーはライプニッツがサイバネティックスの守護聖人とみなされるべきであると示唆した[157]。ウィーナーは「実際、計算機の一般的なアイデアはライプニッツの微積分ラチオケーターの機械化に他ならない」と引用されている[158]。
1671年、ライプニッツは四則演算をすべて実行できる機械の発明に着手し、何年もかけて徐々に改良していった。この「段差計算機」はかなりの注目を集め、1673年に彼が王立協会に選出される根拠となった。このような機械は、彼がハノーバーにいた頃、彼の監督のもとで働く職人によっていくつも作られた。しかし、キャリー操作を完全に機械化することができなかったため、明確な成功とは言えなかった。クトゥラットは、1674年付けのライプニッツによる未発表のメモを発見し、いくつかの代数演算を行うことができる機械について記述していると報告している[159] ライプニッツはまた、2010年にニコラス・レッシャーによって復元された(現在は複製されている)暗号機械を考案している[160] 1693年にライプニッツは、理論的には微分方程式の統合ができる機械の設計を記述していて、彼は「インテグラフィ」と呼んでいた[161]。

https://en.wikipedia.org/wiki/Gottfried_Wilhelm_Leibniz


画像
https://amzn.to/3LUdzif


画像
https://en.wikipedia.org/wiki/I_Ching

中国でイエズス会と文通していたライプニッツは、1703年にヨーロッパ初の易経の注釈書を書いた。彼は、「0」つまり「無」である折れ線は神の介入なしには「1」つまり「一体性」である実線になり得ないことから、二進法の普遍性と有神論を証明していると主張した[79]。これはヘーゲルによって批判され、ヘーゲルは二進法と漢字は西洋のアルファベットのように明瞭に話し言葉を表現できない「空虚な形式」であると宣言した。 [80]彼らの解説では、易経の六芒星と漢字はひとつの異質な思想に混同され、普遍性やコミュニケーションの本質といった西洋哲学的な問題についての対話の火種となった。易経に関連する二進法の用法は、ライプニッツの「普遍的言語」(characteristica universalis)の中核をなすものであり、その結果、ブール論理学の基準や、19世紀後半にゴットロブ・フレーゲが述語論理学を発展させるきっかけとなった。20世紀には、ジャック・デリダがヘーゲルの議論を論理中心主義的なものであると認定したが、中国語では哲学的な思想を表現できないというヘーゲルの前提を疑うことなく受け入れた[81]。

易経の64卦は、古代中国の占いや哲学の体系であり、それぞれの卦は6つの陰陽の線(太陽または陰陽)で構成されています。

これらの線は、下から上へと積み重ねられ、64の異なる可能性を生み出します。これらの線の組み合わせは、宇宙の根本的な原則や自然現象、人間の社会的関係や心理状態を象徴しているとされます。

64卦を数式で表現するには、2進法(バイナリー)の概念を使用することができます。易経の各線は、太陽(陽)を1、陰陽(陰)を0として表すことができます。したがって、各卦は6桁の2進数として表され、0から63までの数字に対応します。例えば、"乾"(全て陽)は111111または"63"と表され、"坤"(全て陰)は000000または"0"となります。


画像

「易経」(易経とも書かれ、I Chingとしても知られる)は、伝統的に書籍や文書の形で存在していますが、その内容を利用したソフトウェアライブラリやデジタルツールも存在します。以下はいくつかの例です:

  1. Pythonライブラリ:

    • IChing-Py: I ChingをPythonで実装したライブラリです。占いや結果の解釈を行う機能があります。

    • PyIChing: 占いやテキストの生成など、易経の主要な機能をサポートしています。

  2. JavaScriptライブラリ:

    • iching.js: 易経の主要な機能をJavaScriptで実装したライブラリです。ウェブアプリケーションでの利用が可能です。

  3. モバイルアプリ:

    • 各種のモバイルアプリ(iOS、Android)で易経を利用した占いツールや解釈ツールが存在します。これらは、ユーザーが占いを行い、その結果を解釈するためのインターフェースを提供しています。

具体的なライブラリの利用方法については、各ライブラリのドキュメントを参照することをお勧めします。また、GitHubなどのリポジトリを検索すると、さらに多くのプロジェクトを見つけることができます。

䷀,䷁,䷂,䷃,䷄,䷅,䷆,䷇,䷈,䷉,䷊,䷋,䷌,䷍,䷎,䷏,䷐,䷑,䷒,䷓,䷔,䷕,䷖,䷗,䷘,䷙,䷚,䷛,䷜,䷝,䷞,䷟,䷠,䷡,䷢,䷣,䷤,䷥,䷦,䷧,䷨,䷩,䷪,䷫,䷬,䷭,䷮,䷯,䷰,䷱,䷲,䷳,䷴,䷵,䷶,䷷,䷸,䷹,䷺,䷻,䷼,䷽,䷾,䷿


🐛生物ロボットXenobot。細胞レベルでプログラム可能な生物であり、自己組織化能力を持っています。VoxCADで実験可能

 Xenobotは、生物学的なシステムとコンピュータサイエンスの融合によって作られた微小なロボットです。その名前は、"Xeno"(ギリシャ語で"異種"を意味する)と"bot"("robot"の略)から派生しています。Xenobotは、モデル生物であるアフリカツメガエル(Xenopus laevis)の幹細胞から作られ、形状や機能が設計されています。

Xenobotは、細胞レベルでプログラム可能な生物であり、自己組織化能力を持っています。最初に、コンピュータ上で進化アルゴリズムに基づいて数千のデザインが作成されます。それぞれのデザインは、特定のタスクを達成するために必要な機能を持つように最適化されています。

次に、これらのデザインの中から最も優れたものが選択され、実際にXenopus laevisの幹細胞から作られたロボットが作り出されます。このプロセスでは、レーザー切削技術を使用して細胞を形状に合わせて切り出し、それらを再構築して機能的なロボットを作り上げます。

Xenobotは非常に小さいため、肉眼では見えません。直径がわずか数ミリメートル以下であり、顕微鏡で観察する必要があります。Xenobotは水中で活動し、特定のタスクを実行することができます。たとえば、物質の吸収や輸送、環境中の汚染物質の除去などが可能です。

Xenobotの目的は、生物医学や環境科学などの分野での応用にあります。例えば、薬物送達や細胞レベルでの治療、環境浄化などが挙げられます。Xenobotの特筆すべき点は、生物学的なシステムと機械学習を組み合わせることで、独自の機能を持つ新しいロボットを設計できる点です。

Xenobotの潜在的な利益と同様に、倫理的な問題も重要です。例えば、Xenobotが生体内で環境を変えたり、他の生物との相互作用を持ったりする場合、予測できない影響や副作用が発生する可能性があります。そのため、Xenobotの研究や使用には十分な注意と規制が必要です。

また、Xenobotの技術が悪用される可能性も考慮しなければなりません。例えば、攻撃的な目的で使用されたり、生物の個体や環境に悪影響を及ぼす可能性があります。このようなリスクを最小限に抑えるためには、研究者や倫理的なガイドラインによる厳格な管理が必要です。

Xenobotの開発はまだ初期段階であり、将来的な進展が期待されます。しかし、その発展と応用は、慎重な検討と社会的な合意を伴う必要があります。倫理的な観点からも技術の利点と潜在的なリスクを評価し、適切な規制と監視を行うことが重要です。

我々の論文で報告されたKROを進化させるのに必要なソースコードは、github.com/skriegman/kinematically_replicating_organismsにある。

KROを実際に構築するための手順も、PNASの論文とその補足資料という形で完全にオープンソース化されている。

ソースコードと構築手順はCC BY-NC 4.0でライセンスされている。

ここから始めてください:
VoxCADのScience Buddiesチュートリアルから始めることをお勧めします。最初のステップはVoxCADのWindowsインストールへのリンクです。Windowsをお持ちでない場合は、MacとLinux用のGUIをダウンロードし、ステップ2に進んでください。

Download VoxCAD" リンクをクリックして、https://sourceforge.net/projects/voxcad/ から VoxCAD をダウンロードし、インストールします。インストールファイルをコンピュータに保存し、ダブルクリックしてインストールを開始し、画面の指示に従ってください。
テンプレートファイル、VoxCAD-Starter-Settingsをダウンロードし、コンピュータに保存します(ファイルを直接開こうとしないでください - ステップ4で説明するようにVoxCADにインポートする必要があります)。コンピュータに新しいフォルダを作成し、そこにこのプロジェクトのすべての作業を保存することをお勧めします。インターネットブラウザとオペレーティングシステムによっては、ファイルのリンクを右クリックし、"名前を付けてリンク先を保存... "を選択してダウンロードする必要があります。
デスクトップアイコンまたはコンピュータのスタートメニューからVoxCADを開きます。図 3 のような空白のモデルが表示されます。

https://www.sciencebuddies.org/science-fair-projects/project-ideas/Robotics_p016/robotics/squishy-robot-simulator#procedure

ほとんどすべての生物は、成長して子孫を残すことで複製を行う。ある種の分子もまた複製を行うが、成長するのではなく、動くことによって複製を行う。ここでは、発達中の生物から解放された細胞のクラスターが、同じように緩い細胞を見つけてクラスターに結合させ、そのような見た目と動きをすることができること、そしてこの能力は、特別に進化させたり遺伝子操作によって導入したりする必要はないことを示す。最後に、AIがよりよく複製されるクラスターを設計し、そうすることで有用な作業を実行できることを示す。このことは、将来のテクノロジーが、外部からの指導がほとんどなくても、普及するにつれてより有用になる可能性があること、そして、生命は水面下で驚くべき行動を秘めており、その発見を待っていることを示唆している。

https://krorgs.github.io/

細胞、生物、ロボットの集団は、個体だけではできないタスクをこなすことができる。スウォームはユニットの損失や追加に強く、個々のエージェントの認知的負荷や形態的複雑さを軽減するために協働することができ、より小型でシンプルで安価なロボットの大量生産を可能にする。