今ここの私という身体感覚に表象されるのがミニマルセルフであるが私の周りの世界とか私が世界とどう関わっているのかというときの「私」がナラティブセルフである。気力に溢れている感覚の「私」がミニマルセルフでだから今日何をするのかがナラティブセルフで状態と行動の違いとも言える。
さて著名な人工生命の研究者ブルックス(1991, p.143)は人工的な生き物を作るにあたって四つの必要条件を挙げている。
生き物は、動的な環境の変化に対して適切かつ適時に対処しなければならない。
生き物は、環境に対してロバストであるべきである……。
生き物は、複数の目標を維持可能であるべきである……。
生き物は、世界の中で何かをなすべきである。つまり、何か存在目的をもつべきである。
すると三つの層から生き物と呼べるものが作れる(Brooks 1991, p.156)。
第一層 物体との衝突回避を、身体をぐるりと囲んだ超音波センサーによって行う。もし物体が真正面にあれば、センサーによってモボットは停止し、障害物のない方向へと向きを変える。
第二層 もし衝突回避層が作動していなければ、オンボードの装置によってランダムに進路を変えることができ、その結果モボットは「彷徨」する。
第三層 この層は彷徨層の出力を無効化し、離れた地点を目的地に設定することができる。これによって、モボットはまったく新しい場所に行くことができる。
アンディ クラーク. 現れる存在 脳と身体と世界の再統合 (ハヤカワ文庫NF) (pp. 43-44). (Function). Kindle Edition.
このブルックスの定義によればミニマルセルフに該当するのが第一層でナラティブセルフに該当するのが第二層 第三層だろう
これをプログラミング言語で表現するとよりわかりやすくなる
以下geminiによるC言語風の疑似コード表現である
#include <stdio.h>
#include <stdbool.h>
// モボットの入力状態を保持する構造体
typedef struct {
bool obstacle_in_front; // 前方に障害物があるか(第一層用)
bool has_destination; // 目的地が設定されているか(第三層用)
int destination_angle; // 目的地への角度(第三層用)
} MobotSensors;
// モボットの最終的な出力動作
typedef struct {
int speed; // 前進スピード
int turn_angle; // 旋回角度
} MobotAction;
// 手続き型の主処理(制御ルーチン)
MobotAction control_mobot(MobotSensors sensors) {
MobotAction action;
// --- 優先度 1: 第一層(衝突回避層) ---
// 最優先で判定される。障害物が目の前にある場合はすべての行動を中断する。
if (sensors.obstacle_in_front) {
action.speed = 0; // 停止
action.turn_angle = 45; // 障害物のない方向へ向きを変える
return action;
}
// --- 優先度 2: 第三層(目的地設定層) ---
// 衝突回避が作動しておらず、かつ目的地が存在する場合は、第二層(彷徨)の出力を無効化する。
if (sensors.has_destination) {
action.speed = 10; // 目的地に向かって移動
action.turn_angle = sensors.destination_angle; // 目的地の方向へ操舵
return action;
}
// --- 優先度 3: 第二層(彷徨層) ---
// 上記のどちらの層も作動していない場合のデフォルト行動。
action.speed = 5; // 通常速度で前進
action.turn_angle = get_random_angle(); // ランダムに進路を変更
return action;
}
第一層(衝突回避層)はオートパイロット層である
第二層(彷徨層)はまさにvetoの行為選好層だ
第三層(目的地設定層)は
6MoNではユーダイモニア(よりよく生きること)に設定している。それ故行為選好は枢要徳の4つの倫理空間なのである