ブロックチェーンSNS概念設計:システム構築の品質評価のポイント1:理解可能性③ | 続・ティール組織 研究会のブログ

続・ティール組織 研究会のブログ

ティール組織が話題になっているが、具現化するにはどうしたらよいか?
その研究を続けるにあたり、さらに次の形態である、続・ティール組織なるものまで視野に入れ、具体的な施策・行動内容を研究・支援する会。

先までは、"愛記"についての記載で、どのようにブロックチェーンSNSに組み込んで実装していけばよいのか、概念的なところからアプローチ方法を記載していった。大まかな概念としてはひとまず終えた。次は、ブロックチェーンの概念設計といえるところまで、基本設計書に着手できるようなところまで、概念を具体化していきたい。

◆愛記システムのシステム評価について

システム評価とは、つまりは、このシステムを導入して成功だったか失敗だったかという効果検証という意味だ。概念設計をする上で必ず抑えておくべきポイントということだ。それには各項目があり、それぞれの項目を見ていくことで、その結果が得られる。そのシステム評価項目を1つずつ見ていきたい。

システム構築の品質評価のポイント1:理解可能性(Understandability)

システム構築の品質評価のポイント2:完全性(Completeness)

システム構築の品質評価のポイント3:簡潔性(Conciseness)

システム構築の品質評価のポイント4:移植性(Portability)

システム構築の品質評価のポイント5:一貫性(Consistency)と構造化の度合い

システム構築の品質評価のポイント6:保守性(Maintainability)

システム構築の品質評価のポイント7:試験性(Testability)

システム構築の品質評価のポイント8:ユーザビリティ(Usability)

システム構築の品質評価のポイント9:効率性(Efficiency)

システム構築の品質評価のポイント10:セキュリティ(Security)

 

システム構築の品質評価のポイント1:理解可能性③(Understandability)

波動レベルを知る

波動レベルは、ボディ側:発達課題のレベル、意識側:意識レベル、意志側:愛の行動レベル、を総合的にみて決める。この場合、発達課題は受け取る愛の行動レベルだけでなく、生命体の次元レベルも関係してきて、高次元の生命体がきちんと動いているかがポイントになる。さらに、意識レベルは、チャクラの開放、愛貨の保有量と関係があり、愛貨の保有量が各次元でどれほどあるかにより、保有が多いほど高い評価となる。一方、愛の行動レベルは、相手に受け取ってもらえたかどうかは別として、愛の行動をした量が評価される。

 

波動レベルの決定にはボディ側(発達課題のレベル)、意識側(意識レベル)、意志側(愛の行動レベル)が関与し、それぞれが総合的に考慮されるが、以下にそれぞれの要素について詳細に説明したい。

1. ボディ側(発達課題のレベル)

  • 次元レベルの関与:
    • 発達課題は受け取る愛の行動レベルだけでなく、生命体の次元レベルに関連しており、高次元の生命体が発展的で課題に対処しているかが重要である。高次元であるほど、より進化し、発展的な課題に取り組むことが期待される。
  • 発展的な課題の取り組み:

    • 高次元の生命体はより高度な課題に取り組む可能性がある。例えば、他者との深い共感や全体への奉仕などがその一例である。

2. 意識側(意識レベル)

  • 愛貨の保有量:
    • 意識レベルはチャクラの開放、愛貨の保有量と関連がある。高い意識レベルは、愛貨の保有量が多いことを示唆する。愛貨は愛と調和の象徴であり、それが多いほど高意識であると評価される。
  • 愛貨の次元ごとの保有:

    • 愛貨の保有量は次元ごとに異なるかもしれない。例えば、他者との関係における愛貨や、自然との調和における愛貨など、異なる側面での意識の質が考慮されるだろう。

3. 意志側(愛の行動レベル)

  • 愛貨の受け取り量:
    • 意志側では、相手に行った愛の行動レベルが評価される。具体的には、相手に愛貨を受け取ってもらえたかどうかは別として、相手への愛の行動が積極的であるほど高い評価を得る。
  • 相手への影響:

    • 愛の行動が相手にどれだけ影響を与えるかも重要である。相手の波動レベルの向上に寄与する行動は、高い評価を受けるだろう。

総合的な波動レベルの決定

  • 統合的な評価:

    • 上記の各要素を総合的に評価して波動レベルを決定する。例えば、発達課題への取り組みが高次元であり、意識レベルが高く、愛の行動が積極的である場合、総合的な波動レベルは高いとされる。
  • 次元と関連性:

    • 次元が高いほど、その生命体が高い波動レベルを維持できる傾向がある。次元の進化が波動レベルに寄与すると考えられる。

この理論では、個々の要素が相互に影響し合い、生命体の進化や発達、愛の表現といった複合的な要因が総合的に波動レベルに影響するとされている。ただし、これらの概念は主観的であり、科学的な根拠があるわけではない。

 

ここでは、発達課題のレベル、意識レベル、愛の行動レベルの中で最も低いレベルを総合的な波動レベルとして合わせるプログラムの例を用いる。この例では、各要素のスコアを取得し、その中で最も低いスコアを総合的な波動レベルとして返している。では、各要素のスコアは、どのようにして出しているのであろうかを見ていこう。先に、ボディ側(発達課題のレベル)を見ていった。今回は、愛の行動レベルについて見ていきたい。

◆意識側(意識レベル)

愛記システムにおいて、愛の行動にはレベル1から10までの科目があり、その愛貨のやりとりを仕訳としてDApps側に保存していく仕組みを構築する。以下に、意識レベルとして愛貨の保有量を考える設計を行う。スマートコントラクトとDApps側のPythonでの実装の一部を示す。

 

○スマートコントラクト(Solidity):
pragma solidity ^0.8.0;

contract LoveToken {
    struct LoveAction {
        uint level;
        uint subject;
        uint timestamp;
    }

    mapping(address => LoveAction[]) public userActions;
    mapping(address => uint) public loveBalances;
    mapping(address => uint[10]) public receivedLoveLevels; // 受け取った愛の行動レベルの集計

    event LoveActionRecorded(address indexed user, uint level, uint subject, uint timestamp);

    function recordLoveAction(uint level, uint subject) public {
        // 行動のレベルと科目に対する愛貨の増減ロジック
        uint lovePoints = calculateLovePoints(level, subject);

        // ユーザーの行動履歴にトランザクションを記録
        userActions[msg.sender].push(LoveAction({
            level: level,
            subject: subject,
            timestamp: block.timestamp
        }));

        // 愛貨の増減
        if (lovePoints > 0) {
            loveBalances[msg.sender] += lovePoints;
        } else {
            // 愛の行動を相手から受け取った場合
            address sender = getLoveSender(msg.sender);
            receivedLoveLevels[msg.sender][level - 1]++; // 受け取った愛の行動レベルを集計
            loveBalances[msg.sender] += loveBalances[sender];
        }

        emit LoveActionRecorded(msg.sender, level, subject, block.timestamp);
    }

    function calculateLovePoints(uint level, uint subject) internal pure returns (uint) {
        // レベルや科目に基づいた愛貨の計算ロジック
        // DApps 側で行うため、ここでは 0 を返す
        return 0;
    }

    function getLoveSender(address receiver) public view returns (address) {
        // 相手からの愛の行動を受け取った場合、相手のアドレスを返すロジック
        // DApps 側で行うため、ここでは address(0) を返す
        return address(0);
    }

    function getReceivedLoveLevels(address user) public view returns (uint[10] memory) {
        // ユーザーが受け取った愛の行動レベルを取得するロジック
        return receivedLoveLevels[user];
    }
}

 

○DApps側のPythonコード:

from web3 import Web3

# Web3の初期化などが必要

def get_most_received_level(user_address):
    # スマートコントラクトのアドレスとABIが必要
    contract_address = "0x1234567890123456789012345678901234567890"
    contract_abi = [...]  # スマートコントラクトのABI

    # スマートコントラクトとの接続
    web3 = Web3(Web3.HTTPProvider('http://localhost:8545'))
    contract = web3.eth.contract(address=contract_address, abi=contract_abi)

    # ユーザーが受け取った愛の行動レベルを取得する
    received_levels = [contract.functions.receivedLoveLevels(user_address, i).call() for i in range(1, 11)]

    # 最も多く受け取ったレベルを返す
    most_received_level = received_levels.index(max(received_levels)) + 1

    return most_received_level

if __name__ == '__main__':
    # ここで最も多く受け取ったレベルを取得する
    user_address = "0xabcdef1234567890abcdef1234567890abcdef12"
    most_received_level = get_most_received_level(user_address)
    print(f"Most received level: {most_received_level}")
 

この例では、get_most_received_level 関数を用いて、指定したユーザーが最も多く受け取ったレベルを取得している。スマートコントラクト側では、単に受け取ったレベルを保持しており、DApps側で必要に応じてそのデータを使って計算を行っていく。

 

◆プロフィール画面へ表示

これで意識側:意識レベルが取得できる。このようにして、発達課題レベル、愛の行動レベル、意識レベルの3つの要素のスコアを取得し、その中で最も低いスコアを総合的な波動レベルとして返していく。そして、プロフィール画面へ表示させていく仕組みだ。プロフィール画面の設計としては、具体的なGUIライブラリやWebフレームワークに依存するので、使用環境に合わせて適切なものを選択していくことになる。ここでは、tkinterを使ったシンプルなGUIアプリケーションの例を挙げる。

 

import tkinter as tk
from datetime import datetime, timedelta
import threading
import time

class ProfileApp:
    def __init__(self, master):
        self.master = master
        self.master.title("プロフィール画面")

        # プロフィール表示部分
        self.profile_label = tk.Label(master, text="総合的な波動レベル: -", font=("Helvetica", 16))
        self.profile_label.pack(pady=20)

        # 初回の更新
        self.update_profile()

        # 毎日0時に更新するためのスレッド
        self.update_thread = threading.Thread(target=self.update_profile_daily)
        self.update_thread.start()

        # ウィンドウが閉じられるときに呼び出される関数を設定
        self.master.protocol("WM_DELETE_WINDOW", self.on_closing)

    def calculate_wave_level(self, development_score, consciousness_score, love_action_score):
        # 各スコアの最小値を総合的な波動レベルとして返す
        return min(development_score, consciousness_score, love_action_score)

    def update_profile(self):
        # 仮のスコアを設定
        development_score = 4
        consciousness_score = 5
        love_action_score = 7

        # 波動レベルを計算
        wave_level = self.calculate_wave_level(development_score, consciousness_score, love_action_score)

        # プロフィール表示を更新
        self.profile_label.config(text=f"総合的な波動レベル: {wave_level}")

    def update_profile_daily(self):
        while True:
            # 現在時刻を取得
            now = datetime.now()

            # 毎日0時に更新
            if now.hour == 0 and now.minute == 0 and now.second == 0:
                self.update_profile()

                # 一日待機
                time.sleep(86400)  # 60秒 * 60分 * 24時間 = 86400秒

            # 1秒ごとに確認
            time.sleep(1)

    def on_closing(self):
        # ウィンドウが閉じられたときに呼び出される処理
        self.master.destroy()
        # スレッドを終了させる
        self.update_thread.join()

if __name__ == "__main__":
    root = tk.Tk()
    app = ProfileApp(root)
    root.mainloop()
 

なお、更新頻度は日々更新としたい。毎日0時に更新されるようにしていく。あまりに短く時間更新などにしてしまうと、ある一時のレベルの高まりが反映されてしまうので、あまり短くもしにくい。日々更新でまあ何とか、という具合であろう。

 

 

いかがであろうか、これでプロフィール画面に波動レベルを表示させる仕組みができた。これで自分の波動レベルを知ることができる。参考値ではあるが、自分の波動レベルを知ることができれば、自分の行動をどのように変えていけばいいのかとか、もっとレベルを上げたいとか、欲求が芽生え、さらなる愛の行動をしていくことができるのであろう。