[不許複製」持ち出しを禁止します。CIEA-SKED 開発者 神居雅志
[不許複製」持ち出しを禁止します。CIEA-SKED 開発者 神居雅志

SKEDによる実験制御


2000年4月8日
理化学研究所 脳科学総合研究センター 廣中直行

SKEDによる実験制御

1. はじめに・・・・・・・・・・・・・・ 1
2. 動物の行動実験とは・・・・・・・・・ 2
3. 行動実験制御システムの概要・・・・・ 9
4. SKEDとは・・・・・・・・・・・・・14
5. SKED言語の詳細・・・・・・・・・・21
6. SKEDシステム構築上の留意点・・・・30
7. 今後の行動実験制御システム・・・・・36

1. はじめに

 SKED(スケッドと読む)は動物の行動実験をコンピュータで制御するために開発されたプログラム言語である.アメリカで開発され,すでに30年以上の歴史がある.たいへん使いやすく,便利な言語なので,LA(ラボラトリーオートメーション)やFA(ファクトリーオートメーション)に広く利用されても良さそうだが,心理学の実験のために心理学者が開発した言語であるためか,専門家以外にはほとんど知られていない.本稿はSKEDによる実験制御の基本をわかりやすく解説したものである.

 動物の行動実験は心理学以外の分野でも広く応用されるようになってきた.その専門家や制御機器には製薬企業を中心として産業界でもかなりのニーズがあると思われる.これを読まれた方がSKEDに興味を持ち,SKED システムの運用に力を貸して下さり,さらにはSKEDを上回る制御系を開発して下されば幸いである.

 重要な注意:本稿に引用したプログラム例のうちいくつかのものは,Med Associates Inc.制作のマニュアルの中に公開されているが,その著作権はMed Associates Inc.にあり,引用許可は取っていない.

2. 動物の行動実験とは


 動物の行動実験はパブロフによるイヌの条件反射実験や,ソーンダイクによるネコの問題箱実験に始まり,実験心理学で発展を遂げてきた.現在では心理学のみならず脳神経生理学,薬理学,環境医学,宇宙医学等の分野で動物の行動実験が広く応用されている.大学や研究機関ばかりでなく,製薬企業や新薬開発に携わる試験研究施設にも行動実験のニーズがある.


2-1. 刺激と反応

 動物の行動を実験的に研究するには,まず一定の実験環境に動物を置き,どのような環境条件でどのような行動が生じるかを客観的・定量的に再現性よく把握しなければならない.様々な環境条件のうち,動物の行動に影響を与える要素を「刺激」と呼ぶ.また,様々な行動のうち,刺激に応じて変化する成分を「反応」と呼ぶ(図1).動物の行動実験とは刺激と反応の関数関係を調べることにほかならない.

図1

2-2. オペラント実験箱

 このような実験の代表的な例を図2に示す.図に見える箱を「オペラント実験箱」もしくは開発者の名をとって「スキナー箱」と呼ぶ.この中に入れられるネズミ(ラット)は給餌制限を受けており,空腹な状態にある.ラットがレバースイッチを押すと,自動給餌器から錠剤型の餌粒が与えられる.最初ラットはこの仕組みを知らないので,箱の中ででたらめな行動をする.しかし体がレバーに偶然触れると餌粒が出てくる.空腹であるのでそれを食べる.このようなことを何度か経験しているうちに,ラットはレバー押し行動と餌との関係を学習する.学習が進むにつれて安定したレバー押し行動が出現するようになる.
図2

 この実験には様々なバリエーションが考えられる.新薬開発の現場ではどのようなバリエーションが使われているのか,いくつか見てみよう.


2-3. オペラント行動実験の例

 図3の実験では,レバーを押していると時々餌がもらえるのだが,ブザーの音とランプの光がONになっている間は,レバー押しに対して餌と同時に床から弱い電気ショックがかかる.このような経験を何度か繰り返すと,ON期間に動物は「餌は欲しいが電気ショックは恐ろしい」という葛藤状態に陥り,この期間だけレバー押しを止めてしまう.これはヒトの不安神経症に似た状態と考えられ,抗不安薬のテストに使われている.抗不安薬を投与するとON期間にも電気ショックを恐れず,レバー押しをするようになる.

図3

 図4の実験では前後に可動するレバーが3個使われている.まず,このうちのどれかがランダムに出てくる.ラットがそれを押すと,そのレバーは引っ込む.やや時間を置いて3個のレバーがすべて出てくる.ここで先程出てきたレバーを選んで押せば正解で,餌が与えられる.間違ったレバーを押した場合は餌は与えられず,すべてのレバーが引っ込む.これはラットの記憶力の実験である.老年痴呆のモデル動物は記憶力が低下しており,3個のレバーのうちどれが最初に出てきたのかを正しく当てることができない.

図4

 次に図5の実験を見よう.この実験では,動物の血管(頚静脈)に細いカテーテルが埋め込んであり,動物がレバーを押すと,特殊なポンプが作動して,一定量の薬物が動物の血管内に注入される.これは「薬物自己投与実験」と呼ばれ,麻薬や覚せい剤などの効果を調べる実験である.ヒトで乱用されるような薬物は動物にも快感を起こし,動物は薬物を求めて頻繁なレバー押しをする.じじつ,コカインを注入されるサルの中には,たった1回のコカインを得るために,じつに1万回以上もレバーを押し続けるものがいる.

図5

 以上に述べたような実験は,新薬の開発にとって不可欠のものであり,このような実験で調べられた薬効がヒトに応用されるのである.大手製薬メーカーのラボには必ず行動実験施設がある.しかし,行動実験には心理学に通じた研究者や,使いやすく,正確で,信頼性の高い実験制御システムが必要不可欠である.現状ではこうした研究者やシステムが薬物開発のニーズに十分こたえているとは言い難い.

3. 行動実験制御システムの概要

 前節で述べたような行動実験は「デジタル制御」が可能である.動物の反応とはレバーを押すことであり,レバーは通常マイクロスイッチに接続されていて,「接点入力」として制御系に入る.刺激として与えるものにはブザーの音,ランプの光,餌,薬物,電気ショックなどがあり,これらの駆動回路や駆動電圧は実験系によってさまざまであるが,いずれも「リレー制御」が可能である.また,代表的な実験データは単位時間(たとえば1分)当たりのレバー押しの回数である.

3-1. 行動実験制御の歴史

 1960年代には,このような実験制御はリレー,タイマー,カウンタ等を組み合わせた「ロジックモジュール」で行われていた.1970年代にはマイコンが発展し,実験はマイコンで制御するのが一般的になった.当時大学や研究機関で用いられていたマイコンには,AIM65,TRS-80,TK-80などがあった.
 1980年代に入ると,パソコンの利用が一般的になってきた.とくに日本ではNECがPC-9801シリーズをリリースし,各種のI/Oインターフェースカードが入手できたために,自作のプログラムで実験制御系を組み立てる研究者が続出した.この頃にはBASICで基本ルーチンを書き,インターフェースのコントロール部分はアセンブラで書くのが普通だった.現在ではC言語でプログラムを書くことが多くなっているが,研究者が独自に書いていることに変りはなく,その労力は並大抵のものではない.

 いっぽうアメリカではすでに1960年代からDEC社の売り出したミニコンを用いて実験を制御する試みが行われていた.とくにDECのPDP-8シリーズ,これに続くPDP-11シリーズは,価格が手ごろなことや,研究者むけのサポートが充実していたこともあって,多くの大学や研究機関に納入され,さかんに利用された.行動実験制御のための言語も開発された.その中で代表的なものにはACTと呼ばれる言語や,本稿で紹介するSKED言語がある.SKEDには数々の利点がある.インターフェースの制御に直結した言語体系なので初心者にも使いやすく,動くプログラムがすぐに書ける.また,多彩な機能を持ち,柔軟性に富む.その特徴は後に述べるように「並列処理」の考えを大胆に取り入れたところにある.しかしながら,ミニコンやパソコンで真の並列処理が実現できるわけではなく,そこからSKED特有の無理も生じて来る.

 SKEDシステムの詳細は後節に譲り,次にコンピュータを使って動物の行動実験を制御するシステムとはどのようなもので,システムがどのような要求仕様を満たしていなければならないかを述べよう.

3-2. 行動実験制御システムの基本仕様


 いま仮想的な実験制御システムを考えると,それは 1)入力インターフェース,2)出力インターフェース,3)演算部,4)実験者からの命令を受け付け,実験者にデータを表示するヒューマンインターフェースの4部から構成される(図6).ひとつの制御システムで実験Boxを1台しか制御しないことはあり得ず,動物の行動実験には最低でも同一の実験Boxを4台,最高では20台程度使用する.ただしコンピュータ制御には8の倍数が便利であるため,1台のコンピュータで最高16台の場合が多い.

図6

 ひとつの実験Boxには,レバーが1個しかない場合もあり,その場合入力は1チャンネルで良いことになる.先に挙げた記憶実験のようなものではレバーを3個使用する.標準的には実験Box1台当たりの入力は4チャンネルあればよい.
 出力は給餌器を駆動するステッピングモータ,電気ショック,ランプ,ブザーなど様々であるが,標準的には実験Box1台当たり出力が8チャンネルあればよい.

A)ハードウエア

 各Boxの各マイクロスイッチは1対1でインターフェースの「入力ポート」に連絡している.入力ポートにはシグナル変換回路があり,スイッチの閉じた状態をTTLレベルの「High」,開いた状態を「Low」に変換する.なおこの回路にはホトカプラーを使い,インターフェースの回路を保護するのが普通である.そこで入力ポートの特定の番地(1バイト)の上位4ビットをBox1,下位4ビットをBox2,次の番地の上位4ビットをBox3...以下同様にアサインしておけば,ある時点でどのBoxのどのスイッチが閉じているかは,定期的にこれらの番地の数値を調べることで分かる.
 なお,接点入力には通常「チャタリング防止回路」を挟むものだが,入力ポートの状態を調べる頻度を低くすれば,特にチャタリング防止回路を使わなくても実質上の問題は起こらない.その頻度は,特殊な実験には1ミリ秒単位の精度が要求されることもあるが,薬理試験で用いられるような行動実験では0.01秒,場合によっては0.1秒でも十分である.

 一方,特定の時点でどのBoxに餌を出したり,電気ショックを出したりするかは,「出力ポート」の特定の番地(1バイト)を特定のBoxに対応させておけば,その番地にいかなる数値を与えるか,すなわちどのビットを立てるかによって指定できる.出力ポートからはTTLレベルの信号が出る.これを適当なシグナル変換回路により,リレーを駆動できるような電力を持った電圧(通常24VDC)に変換し,リレーを介して客先の装置を制御する.なおこの変換回路にもホトカプラーが用いられるのが普通である.
 また,制御系の多くがそうであるように,行動実験の制御にも実際には負論理が用いられる.すなわち,通常は全ビットが「High」にプルアップされており,出力をONにするときは,それを「Low」に落とすのである.

B)ソフトウエア

 以上のような入出力インターフェースを制御する演算部には,主要部のほかに入出力ポートのアドレスを管理する「メモリー管理機能」やどのBoxのデータをどのアドレスに格納するかを決める「データ管理機能」,実験者とのやりとりを行うヒューマンインターフェースの管理機能が必要である.これらは「ランタイムシステム」と呼ばれ,実際に実験を制御するプログラム部分とは区別されている.ユーザは通常ランタイムシステムの中身について知る必要はない.
 プログラム部には,どのような入力があったときにどのような出力動作をするかがプログラミングされている.これが後に述べるSKEDによる制御部分である.

 ここでヒューマンインターフェースの基本機能について述べると,まず実験者はユーザメモリ領域もしくはハードディスク上に格納されている実験プログラムを呼び出し,どのBoxでどの実験を行うかを設定する.この時点で実験プログラムがメインメモリ上に常駐し,特定の入出力ポートを制御するようにアサインされる.この作業を「ロード(Load)」あるいは「スタンバイ(Stand-By)」と呼んでいる.当然のことながら実験プログラムは目的に応じていくつも用意されており,Box1ではAの実験,Box2ではBの実験,というふうに,任意のプログラムを任意のBoxに指定して実行することができる.

 次に実験者は実験のパラメータを設定する.例えば,ある実験を30分行うのか,60分行うのかなど,目的によっていろいろ変わる場合がありうる.そんなときは,実験制御プログラムのその部分を可変にしておき,実験のつど設定する.可変部分はプログラム内で用いる変数と区別するために「パラメータ」と呼ぶ.パラメータ設定にはなかなか手間がかかり,間違えて入力する場合もあるので,よく使うパラメータは「不履行値(Ddefault Value)」として予めプログラムに書き込んでおくのが普通である.

 次に実験者は「実験開始」の信号を送る(GOもしくはRUN).この時点でロードされたプログラムの実行が開始される.後で詳しく述べるが,実験によっては開始時刻を厳密に指定したい場合がある.例えば動物に何か注射してから,その薬が効き始める頃に実験を開始するような場合である.そのためコンピュータの内部時計を用いて,「時刻予約」をして開始信号を送る場合も多い.

 実験が開始されたら,ディスプレイ上に実験中の状態をリアルタイムでモニターできるような情報が表示されるのが普通である.この情報が何であるかは実験によって違い,一概に言うことは出来ないが,プログラムである程度自由に設定できる.

 
 何かの事故が起こった場合に「実験を中断(Abort)」できる機能も必要不可欠である.

 所定の実験が終了したら,コンピュータは何らかの方法でそのことを実験者に伝える.同時に,実験データがプリントアウトされるか,もしくは磁気媒体に記録されるか,またはその両方が行われる.プログラムはまだロードされたままの状態にあり,次の実験に備える.もし実験がすべて終了し,ロードされている必要がなくなったら,実験者のコマンドにより,そのプログラムはメインメモリ上から消える.

 ヒューマンインターフェースの仕事にはざっと見積もってこのようなものがある.

4. SKEDとは

 SKEDは1960年代にアメリカの心理学者Snapperらによって開発された行動実験制御用のプログラム言語である.

 SKED は「オートマトン」の理論に基づいている.
 オートマトンの理論(有限オートマトン)の特徴を簡単に言うと,対象はヒトであってもモノであっても何でも良いが,例えば「わたし」がいま「ある状態」にあるとする(例えば,眠っている).ここで何らかの入力があると(例えば,目覚まし時計が鳴る),「わたし」の状態は「べつの状態」に変る(例えば,目覚めている).このような図式を「状態遷移」という(図7).この状態遷移の考え方によって実験の流れを制御しようというものである.
図7

 このことからわかるように,SKEDによる実験制御の基本は,「何かの入力があったときに」,「何かの動作をして(出力を出して)」,「自分(コンピュータ)自身はべつの状態に移る」という動きである.
 
 SKEDプログラムの基本構造を図8に示した.
図8
 ひとつのプログラムはいくつかの「ステート・セット」から成る.
 ひとつの「ステート・セット」はいくつかの「ステート」から成る.
 SKEDの処理系では,複数のステートセットは実質上「並列処理」されるものと考える.実際のコンピュータではそうなっていないのであろうが,行動実験にはそれほど精度の高い時間管理が要求されないため,実験がスタートしたらいくつものステート・セットが同時に処理されていくものと考えてよい.

 ひとつの「ステート」の基本構造を図9に示した.
図9

 図に示すように,ひとつの「ステート」はいくつかの「ストリーム」から成る.
 ひとつの「ストリーム」は「入力因子」,「出力因子」,および「遷移部」から成る.
 なお,文法上の規則は処理系によって異なるが,現在最も広く使われているMed State Notationでは「入力因子」と「出力因子」の間はコロンで区切る.複数の「出力因子」の間はセミコロンで区切る.
 
 
簡単な例をひとつ見てみよう(Exp.1).

Exp.1

S.S.1,
S1,
.1": ON 1; ON5--->S2
S2,
#R2: ON 2--->S3
S3
2": OFF 2--->S2

 このプログラムにはステートセットは1個しかない.ステートは3個ある.各ステートにはストリームがひとつずつある.
 ステート1の入力因子は0.1秒,出力因子は1チャンネルと5チャンネルのONである.
 ステート2の入力因子は2チャンネルの接点入力.Rは「反応(response)」の意味である.心理学で「反応」と言えばヒトや動物の行動のことを言う.また,このステートの出力因子は2チャンネルのONである.
 ステート3の入力因子は2秒,出力因子は2チャンネルのOFFである.

 このプログラムはどのように動くだろうか?
 ここで図10のような実験箱を想定してみよう.入力側2チャンネルがレバースイッチに接続されているものとする.出力側1チャンネルは実験箱の天井の照明,2チャンネルは自動給餌器のモーター,5チャンネルはレバーの上の発光ダイオードに接続されている.
図10

 実験者がこのプログラムをRUNするとステート1が実行される.すなわち,RUNしてから0.1秒経過したら(ということはほとんど同時に)天井の照明と発光ダイオードが点灯する.そうしてプログラムの制御はステート2に移る.
 ステート2では動物がレバーを押すのを待っている.動物がレバーを押さなければこのストリームは実行されない.動物がレバーを押すと自動給餌器のモーターがONになり,プログラムの制御はステート3に移る.
 ステート3ではこのステートにやって来てから2秒経過すると自動給餌器のモーターがOFFになる.いつまでもONのままでは餌が際限なく供給されてしまうため,このあたりで止めるのである.そうしてプログラムの制御はステート2に戻る.
 ステート2では再び動物の反応を待つ.
 
 
 要するにこのプログラムは,RUN直後にステート1が1回だけ実行され,あとは実験が続くかぎりステート2と3の間を往復している.したがって実験中天井の照明と発光ダイオードはずっと点灯したままである.動物がレバーを押すたびに,モーターが2秒間動いて,餌が与えられる.

 このプログラムには「ストップ」の機能はない.無限ループである.SKED では無限ループはごく普通であり,すこしもエラーではない.この実験を止めるには,「ランタイムシステム」の力を借りて,実験者が「中止」のコマンドを送るのである.このときリセット信号が働いて天井の照明と発光ダイオードも消える.そのことはこのプログラムでは全く気にする必要がない.このようにプログラムとランタイムシステムが完全に分離していることがSKEDの特徴のひとつである.
 入出力の各チャンネルが実際のインターフェースの入出力ポートで何番地に当たるのかもランタイムシステムが管理しており,プログラム内で考える必要がない.例えばこのプログラムがBox1にロードされたら#R2は780番地の2ビット目で,Box3にロードされたら784番地の2ビット目かも知れないが,プログラムを書くときにはそのことは全く気にしなくてよい.

 SKEDのソースプログラムとランタイムシステムのソースプログラムはコンパイルされ,ライブラリとリンクして実行可能ファイル(.EXE)となる.筆者が以前勤務していた(財)実験動物中央研究所ではコンパイラも自作し,各種のライブラリも独自に開発していた.次節で紹介するMED-PCのコンパイラはソースコードをいったんTurbo Pascal(Borland社)のコードに落とす.実行コードはTurbo Pascalのコンパイラやライブラリを借用する形で生成される.従ってSKEDプログラム中からPascalの各種の機能が使える.

 

5. SKED言語の詳細



前節の簡単な実例だけでも,SKEDがかなり便利な制御用言語であることがおわかり頂けたのではないかと思う.本節ではSKEDの機能のうち基本的なものをいくつか述べる.紙幅の関係でほんのわずかしか紹介できないが,これだけでもかなり多彩な行動実験制御プログラムを書くことができる.


5−1)入力因子

 前節で見たように,代表的な入力因子は「時間」と「反応」である.時間入力には「ティック(tick)」(処理系によって0.1秒もしくは0.01秒単位のパルス),「秒」,「分」などがある.入力が何回あったときにストリームが起動するかは定数でも変数でも指定できる.例えば次の例では変数A で指定した回数のレバー押し(#R2)があったらS1のストリームが起動する.この変数はプログラムのどこかに例えば「SET A=4」などのように書いて指定することもできるし,ランタイムシステムから実験者が直接に指定することもできる.

Exp.2

S1,
A#R2: ON2 ---> S2


 ふたつ以上の入力因子は「OR」で結べるほか,次の例のように書くと「条件付き入力」を受け入れることもできる.この例ではレバー押し(#R1)があったときに変数Aの値が3であれば(例えば赤ランプがONになっているとき)2チャンネルがONになり,それは2秒でOFFになってレバー押しを待つ状態に戻るが,もし変数Aの値が3でなければ4チャンネルがONになり,5秒でOFFになってレバー押しを待つ状態に戻る.

Exp.3

S1,
#R1: IF A = 3 [@TRUE, @FALSE]
@TRUE: ON2 ---> S2
@FALSE: ON4 --->S3
S2,
2": OFF2 --->S1
S3,
5": OFF4 --->S1

 ひとつのステートの中にふたつ以上のストリームを書くと,入力の違いによって実験の流れを変えることが出来る.次の例で左のレバーを#R1,右のレバーを#R2とすると,動物が左レバーを押したら2チャンネルがONになり,右レバーを押したら4チャンネルがONになる.

Exp.4

S1,
#R1: ON2 --->S2
#R2: ON4 --->S3

 このように「スタッキング」されたストリームは上から順番に処理されるが,処理速度が速いので実際にはほとんど並列処理と考えてよい.だから上記のステートは左右いずれかのレバーが押されるのを待っていると言える.ただしほんとうに同時に両方のレバーが押されたときには,上に書いてある方が処理される.



5−2)出力因子

 出力因子は外部機器のON,OFFばかりではない.次の例では#R1の入力があるたびに変数Nの値がひとつ増える.すなわち変数Nは「反応数のカウンタ」として使える.

Exp.5

S1,
#R1: ADD N --->S1

 なおこのストリームは起動されると「自分自身」に戻る.つまりこのストリームは他のステートに処理を移さず,ひたすら反応数を数えているだけである.

 次の例では60秒経つと変数Mに0が代入される.すなわちこれは何かのカウンタの「リセット」として使える.

Exp.6

S1,
60": SET M = 0 ---> S2

 出力因子としてIF文が起動できることは,既にExp.3で見たとおりである.

 ヒューマンインターフェースのための表示や印刷の命令文も出力因子として書ける.例えば
 SHOW は画面への表示
 PRINT はプリンターへの印字
 FLUSH はハードディスクへのデータ書き込みである.


 変ったところでは「乱数の発生」も出力因子にできる.以下の例を見よう.

Exp.7

LIST A=1,2,3
S.S.1,
S1,
1": RANDI B = A; ON B --->S2
S2,
1": OFF B --->S1

 このプログラムでは,まず「A」という3個の要素から成る配列に1,2,3の値を代入する.すなわち,A(0)=1, A(1)=2, A(2)=3である.実験開始後1秒経つと,これらのうちひとつがランダムに選ばれ,そのチャネルがONになる.つまりON Bは,時に応じてON1の意味にもなり,ON3の意味にも,ON2の意味にもなる.ここでONしたチャネルは1秒でOFFになり,再び3つのうちひとつがランダムに選ばれてONになる.3つのランプが1秒毎にでたらめについたり消えたりするのがこのプログラムである.

 出力因子のないストリームもある.次の例は30分で実験をやめるための書き方である.

Exp.8

S1,
30' ---> STOP



5−3)並列処理

 これまでに述べたことを応用してひとつプログラムを書いてみよう.

Exp.9

S.S.1,
S1,
.1": ON 1; ON5--->S2
S2,
#R2: ON 2--->S3
S3
2": OFF 2--->S2

S.S.2,
S1,
#R2: ADD I ---> S1

S.S.3,
S1,
30' ---> STOPABORTFLUSH

 このプログラムがRUNすると,S.S.1は動物がレバーを押す(#R2)たびに餌を与える(ON 2).S.S.2は動物の反応回数を数え,変数Iに格納している.S.S.3はひたすら時間を(分単位で)数え,30分経ったら実験を終わらせる.先に述べたようにこれら3つのステートセットは「並列処理されている」と考えて良い.例えば餌を与えるために忙しい処理をしているS.S.1がS.S.3の時間計測に影響を与えることは(たてまえとしては)ないとされている.



5−4)Zパルス

 上例を少し変えて,動物が5回レバーを押す(#R2)たびに餌を与える(ON 2)ことにしよう.そして,動物の反応回数を変数Iに,餌を与えた回数を変数Jに格納することにしよう.

Exp.10

S.S.1,
S1,
.1": ON 1; ON5--->S2
S2,
5#R2: ON 2--->S3
S3
2": OFF 2; ADD J--->S2

S.S.2,
S1,
#R2: ADD I ---> S1

S.S.3,
S1,
30' ---> STOPABORTFLUSH

 餌を与えた回数は2チャンネルをONした時点ではなく,OFFした時点で数えるのが普通である.なぜなら2チャンネルは2秒間ONしているので,この2秒の間にS.S.3が動いて「30分経ったので実験終了」になってしまうと動物が十分餌を食べられないからである.OFFした時点で数えると確実に餌を食べた回数が記録できると思われる.さて,S.S.1のS3を上記のように改造すれば変数Jのカウンタはできるが,何かスマートでない.

 このようなときに「Zパルス」という信号が役に立つ.「Zパルス」はステートセットとステートセットの間の連絡役である.それはひとつのステートセットの中で出力因子として発信され,他のステートセットの中で入力因子として受信される.Zパルスを使って上例を書き換えると次のようになる.


Exp.11

S.S.1,
S1,
.1": ON 1; ON5--->S2
S2,
5#R2: ON 2--->S3
S3
2": OFF 2; Z1--->S2

S.S.2,
S1,
#R2: ADD I ---> S1

S.S.3,
S1,
Z1: ADD J --->S1

S.S.4,
S1,
30' ---> STOPABORTFLUSH

 S.S.1のS3で出したZ1というパルスをS.S.2のS1で受けている.ひとつのプログラムの中で24個のZパルスが使える.この例ではZパルスのありがたみはあまり分からないが,複雑なプログラムを書いていると非常に便利な機能であることがわかる.
 なお「STOPABORTFLUSH」は実験終了と同時にハードディスクにデータを書き込むときの方法である.



5−5)ダミー遷移

 さきに「自分自身に還る」ストリームのあることを書いた.つまり何らかの出力処理はしたいのだが,処理を他のステートに移す必要はないというときがある.ところがこの「自分自身に還る」ストリームが時間入力因子とスタッキングされているとちょっと困ることが起こる.

Exp.12

S.S.1,
S1,
2"--->S2
#R1: ADD A --->S1

 このプログラムは実験が開始されてから2秒間反応(#R1)が起こらなければS2へ移る.2秒以内に #R1があれば変数(反応数カウンタ)Aの値がひとつ増える.ここで「2秒」を待っている「時計」と,「#R1」を待っている「レジスタ」がどのような関係にあるかを考えよう.「時計」は実験が開始されるとただちに「2秒」を数え始める.ここで例えば1.5秒ぐらいたったときに「#R1」が来たとしよう.すると2番目のストリームが起動して処理がS1のトップに戻るので,「時計」がゼロにリセットされる.
要するにこのプログラムでは2秒以下の間隔で反応が起こっている限り,決してS2への遷移は起こらない.

 これとよく似ているが,こうではなく,反応数は数えながらも強制的に開始後2秒でS2へ処理を移したい場合もある.例えば最初の2秒がウォーミングアップで,餌は出ないがどのくらいレバーを押すかだけは記録しておきたい場合などである.そのときはこのように書く.

Exp.13

S.S.1,
S1,
2"--->S2
#R1: ADD A --->SX

 SXというのが「ダミー遷移」の書き方である.


5−6)その他

 プログラム中には任意に空白を置いてよい.「/」で区切っておけば自由にコメントを書き込むことができる.

Exp.14

S.S.1, / This is a FR5 main routine
S1,
.1": ON 1; ON5--->S2 / Turn on the houselight and the cue lamp
S2,
5#R2: ON 2--->S3 / Turn on the feeder after 5 responses
S3
2": OFF 2; Z1--->S2 / Turn off the feeder

 入出力因子は最初に定義しておけばただの番号ではなくもっとわかりやすい字句に変えられる.

Exp.15

/ Define Input and Output Constants
/Inputs
^RightLever=2
/Outputs
^Houselight=1
^Feeder=2
^Cue lamp=5

S.S.1, / This is a FR5 main routine
S1,
.1": ON ^Houselight ; ON^Cue lamp--->S2
S2,
5#R^RightLever: ON ^Feeder--->S3
S3
2": OFF ^Feeder; Z1--->S2

 このように書くとSKEDは簡単な英語で実験手順を記述しているのとあまり変らなくなるのである.

6. SKEDシステム構築上の留意点

 SKEDはもともとPDP-8シリーズ用に開発され,ソースコードも公開されており,非営利目的に使う場合には無償で配布されていた.

 しかし,最初に書いたようにSKEDによる行動実験制御が営利事業として成り立つようになったので,1970年代半ば,SKEDの開発者SnapperはSKEDを登録商標とし,演算機能を強化したSUPER-SKEDをPDP-11用にリリースした.日本では京都大学霊長類研究所,北海道大学心理学研究室などがこれを導入した.霊長研の「言葉を覚えたチンパンジー(アイ)」はSKEDで訓練されたのである.

 日本にはこのほか,フリーウェアだった時代のSKEDを実験動物中央研究所が独自にPDP-11用に改良したCIEA-SKEDがある.CIEA-SKEDは入力因子にブーリアン論理積が使えること,ステートセットがそのまま変数にできることなど,数々の優れた特徴を持っていた.

 やがてパソコンの全盛時代となった.1980年代半ば,生理学,薬理学,心理学の機器開発・販売で知られるMed Associates Inc.(本社Vermont州 St.Albans;http://www.med-associates.com/)がIBM-PCで動くSKEDを「MedState Notation」と名付けてリリースした.SKEDの著作権をどのように処理したのか知らないが,同社の製品には「SKED」という言葉はいっさい使われていない.

 Med Associates Inc.はSKEDプログラムばかりでなく,IBM-PC用の入出力インターフェースも各種発売し,これらを「MED-PC」システムと呼んだ.「MED-PC」システムは価格が手ごろで信頼性も高く,プログラムも開発しやすかったので全米で大きな支持を受けた.「MED-PC」システムのコンパイラはSKED言語で書かれたプログラムをボーランド社の「ターボパスカル」のコードに落とす.従って「MedState Notation」から直接パスカルの機能を使うこともできる.

 日本では労働省産業医学総合研究所,理化学研究所脳科学総合研究センター,慶應義塾大学心理学研究室,帝京大学心理学教室,関西学院大学心理学教室,武田薬品工業株式会社などに「MED-PC」システムが導入されている.なお,現在は(株)ニューロサイエンス(東京,台東区)がMed Associates Inc.の日本総代理店である.



6−1)MED-PCの使用経験から

 Med Associates Inc.は知的財産権保護の観点から,自社のハードウエア及びソフトウエアの仕様をマニュアルに書かれている情報以上には公開していない.実験者はあくまでエンドユーザとして,システムの心臓部はブラックボックスのまま使わざるを得ない.筆者はこれまでこのシステムを自分自身でもマウスの行動実験に使用し,また,以前所属していた受託機関(製薬企業の委託を受けて新薬開発のテストをする民間研究機関)のシステム立ち上げにも参加した.ある意味でこれらの二事例は対照的である.

6-1-1)マウスの行動実験制御システム

 筆者の所属する研究機関では様々な遺伝子ノックアウトマウス,トランスジェニックマウスの行動を調べている.
 この行動実験制御システムはごく小型のもので,入力2Ch,出力6Chのオペラント実験箱を2つ使っているに過ぎない.プログラムは筆者だけが書き,実験をするのは筆者とその助手の2名だけである.
 他にもSKEDで制御できそうな実験は沢山あるが,他のシステムで制御されている.これは個々の研究者がそれぞれ使い慣れた実験系を持ってきたため,いろいろな制御系が入り組んでいるのである.
 我々の研究室は実験制御系は基本的に個々の研究者に帰属し,それに精通した人しか使わない.これは小規模な心理学や生理学の実験室の基本的な姿だと思われる.

 このシステムを開発し,使用中に気づいたのは次のようなことである(順不同):

A) 既存のハードウエアとの共存

 我々の研究室には小原医科産業株式会社が製作したマウス用のオペラント実験箱があった.私はこれを使うように言われたため,MED-PCとの間を仲介する回路の製作が必要であった.この回路は小原医科産業に簡単に製作してもらえたが,私としては汎用のリレー入出力パネルの方が便利だったと思っている.
 次の事例でも出てくるが,動作の複雑な機器の中にはすべてソフトで制御せず,一部をハードに肩代わりさせた方がよい場合が出てくる.例えば小原医科の機器の場合,餌を動物に与える自動給餌器に独自のステッピングモータを使っていて,その制御はプログラムから直接行うことは出来ない.このような機器がどれくらいあるか,インターフェースの設計の時に考えておかないと,プログラムによる制御のメリットが出てこない場合もある.

B) 「軽い」プログラムを書くこと

 MED-PCシステムのパラメータの設定は面倒である.実験プログラムをロードした後,「変数の変更」というメニューを選んでAからZまでの変数に格納されたパラメータを変更して行く(この変数の中には配列があってもよい.もちろん26個全部使わなくてもよい).
 じつはこのような操作はグラフィカル・ユーザーインターフェースでない方がやりやすい.グラフィカル・ユーザーインターフェースではずらっと並んだ(Windowsの)変数テーブル(初期値はすべて0)から目的のものをクリックし(MとHなどは混同しやすい),テンキーで数値を入力し,「enter」ボタンをクリックする.10個もパラメータを使うプログラムではこの操作を10回繰り返さなければならない.
 私も最初の頃は複雑な機能を持った高性能のプログラムを書いていたが,それにはパラメータがいくつもあるので,実験のたびに代入を繰り返す実験者が間違いを起すことが多かった.
 そこでそれらのプログラムを分割して,単機能しか持たないプログラムを何本も作った.ハードディスクやメモリの容量が少なかった時代にはこのような使い方は贅沢であったが,今では短いプログラムを十数本メモリに常駐させておいても何の問題も起こらない.
 MED-PC では実験者にとって操作が複雑になるプログラムは書くべきではない.

 どうすれば「軽い」プログラムになるのかはなかなかわからないが,一般的には変数を減らして定数にすることや,条件判断を減らすことなどが推奨されるだろう.

C) データファイルの整理

 データはテキスト形式で保存される.それは固定長の文字データとしてEXCELの表にできる.
 今ではこの機能(EXCELに持っていく)を持っていない実験ソフトはない.
 しかし,それがくせ者で,当日のデータはきちんと処理しておかないと,意味不明のデータファイルが膨大に蓄積されていくことになる.
 ことにMED-PCのデータファイルには次のような問題がある:

 ・FLUSH文を使ってデータをダンプすると,使ってないものも含めて,AからZまでの変数がすべてハードディスクに保存される.変数の少ないプログラムではセロばっかりのファイルが出来ている.

 ・変数とデータを区別していない.プログラム中で使うパラメータとデータは全く同じ扱いで,AからZまでの変数を使う(配列も使える).今のところ問題は起こってないが,もしプログラムが暴走しはじめ,データを引っ張ってきて変数として解釈したり,ある時点のローカル変数の値をデータと思って格納したりすると大変である.

 ・これはEXCELの問題かも知れないが,25要素以上の配列をテキストファイルからEXCELに落とすと,25番目以上の配列の添え字(データではなく,配列の中の何番目ということを示すポインター)は書式が時刻として処理されている.不思議にも,どうやっても直せない.

D) 実験開始時刻の問題

 MED-PCのランタイムシステムではプログラムのロードと実験のスタートとは全く異なる.プログラムをロードしてもスタート命令を送らなければ実験は始まらない.
 ただし,データファイルにSTARTとして記録されるのは,プログラムをロードじた時点の時刻であって,スタート命令が送られた時刻ではない.
 実際の実験時間を計測するためには,そのための新たな変数が必要である.

E) バージョン管理

 Windows版のMED-PCはコンパイラが一新されて大変使いやすい.どこかのパソコンのエディタでソースプログラムを書き,このコンパイラでEXEファイルを作る.動かしては修正する.実験を始めた後も,要求に応じてプログラムを手直しする.
 このようなことをしていると,あっという間にたくさんのファイルが出来て,どれを使っているのか,どれが最新なのか,どの版にはどんなエラーがあったのか,何もわからなくなっている.
 ひとりでプログラムを書き,せいぜいひとりの助手に使い方を説明すればよいだけの体制ではこのようなことも珍しくはない.
 ただ,後で非常に困ることがある.

F) MED-PCのクセ

 MED-PCには,おそらく初代のIBM-PC用に開発された時代の名残を引きずっているいくつかの制約がある.時間入力待ちがひとつのステートの中で二つ以上スタッキング出来ないことや,Z パルスが12個に制限されていることなどである.その一方で「Kパルス」といって,他の実験Boxからの信号を入力因子として使えるといった特色もある.これらについてはマニュアルを熟読して使い慣れる他はない.とくに複数の入力因子が同時に生起した場合にどのような優先順位で処理されるのかは,行動実験のプログラム作者にとっては決して特殊な場合ではなく,日常遭遇する典型的な事象とさえ言えるからよく研究する必要がある.
 



6-1-2)サルの行動実験制御システム

 このシステムは前述のように新しい薬物をテストする研究機関であり,サルの実験制御のためにMED-PCシステムを3台導入した.
 ここには既存のシステムはなかったため,システムの性能や価格について,競合他者との比較検討を含めて稟議を起し,それが承認されてからシステムの立ち上げに入った.一般企業への導入形態としてはごく普通であろうと思う.

 1台のパソコンで1入力,4出力の実験Boxを12台制御している.なおこれらの実験Boxは実験の性質上原則として24時間連続運転している.つまり定期的な点検を除くとシステムが休むときはない.
 これはシステムにとって非常に過酷な使用形態と言えるのであって,運転中にいろいろ問題も起きてきた.
 その反面,実験で使うプログラムは非常に限られており,たかだか4種類のルーチンがあればほとんどの実験に対応できる.ただし,プログラムの仕様と管理に対する要求は大変厳しく,いったん運用を始めたものは煩雑な手続きをクリアーしなければ改訂できない.
 また,後の節で述べるが,このような研究機関はデータのセキュリティとインテグリティ(インテグリティとは,ペリフェラルな機器で発生したデータと,コンピュータに転送されてきたデータ,さらにそれを保存した磁気媒体やプリントアウトなど,ひとつの機器から発生したあらゆるデータの間に,「同一のデータものである」という確認ができることを言う)に対する非常に高度な要求が課せられる.そのため一見するとシステムの便利さを殺すような措置も必要になる.この機関の例で言えば,データをハードディスクに保存し,社内LANに乗せて研究者のデスクトップに届け,そのままプロジェクターに移してミーティングの材料とし,さらに大きなホストに送って統計処理をしたりグラフを作ったり,という使い方はできない.
 さまざまなレベルでセキュリティホールが発生する可能性があるため,データは現場でプリントアウトする.ハードディスクからは消去する.これは「生データはただひとつしか存在してはならない」という要求を満たすためである.

 このシステムを開発し,使用中に気づいたのは次のようなことである(順不同):

A)プリントバッファからデータが抜ける

 プリントのルーチンは他のルーチンに比べて極端に遅いので,実験の制御をしながらプリンタバッファとのデータのやりとりをしていると,プリントアウトからデータが脱落する場合がある.通信の何かの不都合で文字化けが起こったり,重複したプリントが出たりした場合もある.

B)時刻が遅くなっていく

 SKEDのプログラムは実質上並列処理されていると考えて良いのだが,じっさいにはBox1から順次処理されて行く.また,リアルタイムの画面表示のためにシステムのリソースを相当消費し,割り込み処理も行っている.これが通常実験制御に影響を与えることはないのだが,少しずつ実時刻が遅くなっていく場合がある.

C)システムがダウンする

 これが最も困った問題だが,かなり複雑なプログラムを12台の実験Boxで24時間稼働させていると原因不明でシステムがダウンすることがある.このような実験はパソコンにとって非常にシビアな仕事とも考えられるし,DOS版のMED-PCにはメモリ管理に問題のあることが知られていて,その問題で落ちるのかも知れない.未確認の情報だが,米国から輸入した機器であるため,インターフェースが28VDCで動くようになっていて,日本製のほとんどの直流機器の24Vと合わないという話もある.アースをしっかり取るとダウンしないという噂もある.

D) 既存のハードとの相性が良くない

 特殊な実験のために発光ダイオードが10個並んだパネルを使うことがあるが,1chずつ制御していては大変なのでパルスを1発送るごとに順次ダイオードが点灯してゆく特殊な回路がある.ところがこれと他の標準的なパネルとの相性が良くないため,ひとつのランタイムシステム内に両方を使うプログラムを共存させられない(DOS版では任意のランタイムシステムがいくつでも作れる).発注側はソフトハウスが怠けているのだと思っているが,実は非常に苦労している.

E) 管理体制が厳しい

 先にも少し述べたが,厚生省は医薬品の適正な開発と製造を目的として,製造工程,前臨床試験,臨床試験に厳しい規準をもうけている.前臨床試験には「Good Laboratory Practice:GLP」という規準がある.新薬のテストをする機関がこの規準を満たすかどうか,厚生省の外郭団体である「医薬品機構(医薬品副作用被害救済・研究振興調査機構)」が定期的に査察している.
 コンピュータシステムにもこの規準は及んでいる.ハードウエア,ソフトウエア,開発状況,運営体制など,多数の項目のチェックリストをクリアーしなければならない.詳細は関連資料(それも最新のものを)を参照されたいが,おそらく通産省の出したシステム監査の基準が参考になる.GLPが要求するコンピュータシステムの水準は,ほぼISO9000のレベルと考えればまず間違いない.

7. 今後の行動実験制御システム

7-1)行動実験の変化

 1970年代にオペラント行動の実験は急速な発展を遂げ,実験手続としての完成を見た.その後いろいろな変化があり,現在では以前のようなクラシックなオペラント行動実験は下火になった.しかしこれは衰退を意味するものとばかりは言えない.オペラント行動実験の基本的な考え方が,そのオリジナルを意識させないほど当然のコモンセンスになって,いろいろな領域に浸透して行ったとも言えるからである.

 SKEDは非常に汎用性のあるシステムなので,その原型である「接点入力」,「リレー出力」にこだわらなければ,広い範囲の応用が期待できるだろう.当面,心理学,医学・生理学,薬理・生化学,分子生物学などの生物科学分野での応用を考えたとき,以下のような拡張をSKEDに持たせることが望ましいと思われる.

7-2)アナログ入力への対応

 脳波,心電図,筋電図,皮膚電気抵抗など,生体電気現象を利用する実験は多い.ヒトでは手術時のバイタルサインのモニターや睡眠の研究,バイオフィードバックなどの心理療法に応用できる.動物では学習や記憶の神経回路を追跡する研究に電気生理的手法は不可欠であり,アメフラシなどの無脊椎動物を使った研究も大きな成果を上げている.
 電気現象以外にも,スイッチを押し続ける力の揺れ(微細運動調節課題と言い,パーキンソン病の研究に使う),動物やヒトの震えの度合い,眼球の動きなど,ほんらいアナログ入力でデータが得られる行動実験は多い.
 アナログ入力を入力因子として使うには,適切なコンパレータでA/D変換してやれば良いだけのことで,そんなに難しくない.しかし,ただひとつの閾値を決めて,それを越えたら「入力あり」と判定するだけで良いのか,入力レベルに応じていくつかの分岐を作りたい場合があるのか(CASE文のように),実験中に利得(ゲイン)が変わったらどのように対応できるのか,解決しなければならない問題は多い.
 詳細は研究者と相談しながら仕様を確定するとしても,既存のソフトを参考にして,ある程度標準仕様を決めておくことが望ましい.

7-3)画像入力への対応

 これはある程度前項と関係あるのだが,このところ行動科学では画像入力が用いられることが非常に多くなった.
 それにはふたつの理由がある.ひとつは分子生物学の急速な発展によって,マウスの行動実験の需要が増加してきたことである.マウスの実験は規模が大きくなる.例えばここに2種類の遺伝子ノックアウトマウスを使って3種類の薬物をテストするとなると,ノックアウトの方ではひとつの遺伝子についてホモ接合,ヘテロ接合,野生型の3つが生まれてくる.これが2種類で雄と雌で6群である.3種類の薬物はたとえ溶媒が共通であったとしても1種類につき3つは用量段階をテストしなければならないからここで10群必要になる(マウスの実験では同一個体を繰り返して用いることはほとんどない).全部で60群必要で,1群を10匹としても600匹使うことになる.ことわっておくが,これはマウスの実験ではごく小規模な方である.
 このような研究が増えたので,1匹の動物に1ヶ月程度の訓練を要する実験はとても実施しておられない.自然状態の行動観察に少し手を加えたものが多用されるようになった.それらがモリスの水迷路とか,高架式十字迷路とか,ルドー(LeDoux)の恐怖条件づけとか,強制水泳とかいう課題である.この他に攻撃行動や性行動もよく観察される.
 もうひとつの理由は,屋外の霊長類観察が大きな成果を挙げたことである.ここで開発されたいくつかの行動観察方法は,現在ヒトにも応用されて,母子関係,友達関係などの研究に使われている.

 こうした研究ではデータはビデオテープに撮影された画像である.画像は単純に巻き戻して人間が肉眼で観察する場合もあるし,NIHイメージなどのソフトを使って解析することもある.解析の標準法は,おそらくこのようなものである.
 画像を単位時間当たり何枚か取り込む.そのような画像をいくつかのピクセル単位でメッシュとして分割し,各々のセルが白か黒かを二値でデジタイズする.時間軸に沿って,あるセルが白から黒に変わったか,黒から白に変わったか,変化しなかったかを検出する.

 画像データを入力因子として使うことが出来れば,SKEDの応用範囲はマウスの実験からヒトの臨床研究にまで大きく広がる.例えば広場の中の特定の場所に行った時に薬が注入されるようにしておけば,空間の認知と薬の効果の両者が入り交じった実験が出来る.あるいは,訓練者の方に近づいたらら好きな音を聞かせる,というような手続きで自閉症の子供の教育にも使える.

 このような入力因子は基本的に(X,Y)で与えられる座標である(トリや昆虫で研究する場合はZも考えなければならないかも知れない).少し工夫すればSKED に取りこめるものと思う.

7-4)ヒトの実験への対応

 ヒトの行動実験は,これまで心理学の実験室で小規模に行われてきたが,今後はそれこそ何万人というレベルで大規模に行われる可能性がある.
 それは高齢者が増えたことや,環境ホルモンの問題,また,少年犯罪の増加などによって,従来の健康診断を変えて,身体計測や血液検査,尿検査,視力や聴力などばかりでなく,認知能力や情緒傾向など,心理機能も測定すべきだという考えが起こっているからである.とくに少年犯罪の関連では,同時期に生まれた子供たち(コーホートという)を少なくとも数千人規模で20年程度追跡調査する必要があると言われている.
 このような研究には予算がつきやすい.

 従来の心理検査では主に紙とエンピツを使うアンケート形式のものや,調査者による面接が行われてきたが,すでに外国ではパソコンを健康診断の場に持ち込んで,簡単な記憶テストなどを行う例が増えてきている.
 その検査の中には,画面にターゲットが出たらできるだけ速くスイッチを押すテストとか,トランプの神経衰弱にそっくりな空間記憶テストなど,実験的な意味合いの強いものがある.

 大規模な検査ではなく,例えば依存性薬物が認知機能に与える影響などを調べる研究にも,バーチャルリアリティを使って画面の中の迷路を探索して歩く課題など,動物実験にヒントを得たものが行われ始めている.我々もヒトの記憶テストをやってみた経験がある.
http://wwwsoc.nacsis.ac.jp/jacs/JJCS/v2/n2/p175_178/index.html
 これはハイパーカードで原型を作り,実際のプログラムはC言語で書いた.
 しかし,SKEDで制御できれば誰でも簡単にこの種のプログラムを書けるようになる.

 そのためには,入力因子はパソコンのキーボード,あるいは,幼児や高齢者のことを考えるとゲーム機のようないくつかのボタン.出力因子としていくつかの絵を画面に出せるようにしておく.

 時間制御と入出力の柔軟性などを考えるとSKEDほど制御に向いた言語はない.このような応用範囲が広がればSKEDは神経科学一般から臨床心理学に至まで広く応用される言語になるだろう.ただし,現在のパソコンの普及状況を考えると,シェアを増やすためにはWindows上で動くことが望ましい.
7-2)製薬業界への展開

 新薬の開発は図11に示すように,各種の新規化合物の合成から始まる.新規化合物は各種の「スクリーニング」にかけられ,有望な化合物は動物を用いた「前臨床試験」で薬効と安全性を検討される.前臨床試験で「仮免許」の状況になった薬物には「臨床試験」が行われる.最初は小規模な試験で主に安全性を確かめ(第1相),次に少数の患者で有効性と安全性を調べる(第2相),有望であったら多数の患者を用いて有効性と安全性を確認する(第3相).
 ここまでテストした新しい化合物を製造し,市販する決意を製薬企業が固めたら,厚生省に「承認申請」を行う.厚生省は中央薬事審議会にその審査を諮問し,ここでいくつかの指示や追加データの要求がなされる.そのやりとりを経て「薬価収載」となった薬物がいよいよ市販されるが,市販後にも有効性を安全性の調査は続く.
 新薬の開発は,各種の規制を受けながら行われる.その一端は前節に述べた.このような一般的な規制に加えて,薬物毎に試験の項目や実施法についての「ガイドライン」が厚生省から出されている.薬物開発の現場で行われる実験は,これらのガイドラインの要求水準を満たすものでなくてはならない.最近では各国のガイドラインの内容を国際的に調和させようという動きが盛んである.
図11

 新薬の開発は一種の情報集約型産業であるから,さまざまなコンピュータシステムが使われている.例えば新規化合物の合成にはCADを利用した「分子設計」が行われるし,スクリーニングの段階で化合物の分子と生体の分子がどのように反応するかを解析するためには「核磁気共鳴(NMR)」やその解析ソフトが使われる.
 目を臨床試験に転じてみると,実験計画やデータの整理に統計ソフトが必須であり,近年この分野はSASの独壇場となっている.SASの統計処理には定評があるため,SASを用いた解析には薬事審議会で難点を指摘されることが少ないと言われている.SASインスティテュートが業績を伸ばした背景には製薬業界での広範なニーズがあったと思われる.
 前臨床試験の現場では様々なデータを集積して統計処理や作図・作表を行う.そのデータには手書きのシートから心電図や脳波のようなアナログ信号,血液の中に含まれる化学物質の濃度などの分析データ,病理組織を顕微鏡で検索した画像データ,及び本稿で紹介した行動実験のデータなど,さまざまなフォーマットのものがある.現場ではその整理に追われることが多い.これらが相互にクロスリンクできるようにし,速やかに作図・作表,統計解析に持ち込めれば作業の効率が非常にアップするだろう.その一方で,データのオリジナル(生データ)は決して損なわれないように,あらゆる手だてを講じて消失,破損,改ざんなどの危険から守られていなければならない.このセキュリティシステムの構築も重要な課題である.
 前節で紹介したような受託機関は,研究報告書を商品にしている.最終的には各種のデータに考察,文献などを加えた論文スタイルのものをクライアントに納品するわけなので,DTPソフトも重要な備品のひとつになり得る.将来は報告書をPDF形式で電子配信(納品)する可能性も出てくるかも知れない.
 
 行動実験の制御だけではソフトウエア産業にとって採算の取れる事業にはなり得ないが,このように新薬開発の現場を総合的に把握すると,何らかのビジネスチャンスはあるのではないかと考えられる.

 いっぽう,発注する側の立場からすると,比較的小規模なソフトウエア産業に重要なシステムを任せることにはリスクが大きいと考える.ソフトウエア産業は人の出入りが激しく,担当者がひんぱんに交替し,企業そのものの変転も激しいからである.新薬の開発には10年は必要であり,承認申請に対する審議会の指摘が出た時点で,5,6年も前の実験データの再計算が必要になったり,そのときに使用した測定装置のバリデーション記録が必要になったりすることがある.なかでもプログラミングを請け負った会社の社名,担当者名,担当者の学歴,職務経歴などは新薬開発側が責任を持って保管すべき書類とされ,仕事をしてから10年近く経った後にその担当者との連絡が必要になる場合がある.このような場合の「連絡不能」という危険性が回避されれば,システム開発を積極的に外注することも考えるであろう.
 
 

7-3)おわりに

 わたくしがSKEDを使い始めてからそろそろ20年になる.その前はコンピュータによる実験制御ということは全く知らなかった.これではいけないと思い始めた大学院生たちがTK-80を勉強し始め,数字の形の発光ダイオードが次々に光り,スイッチを押したところで止まるという「電子ルーレット」のプログラムが書けるようになったところであった.
 その後多くの人はC言語を使い,自分でインターフェースボードを買って,数台の実験Boxを制御するシステムを作るようになったが,私はSKEDを使い,50台近い実験Boxを沢山の人が共同利用する研究機関に入ったので,C言語やPC-9801用のボードのことを勉強する機会がなかった.
 心理学でこれらに詳しい人は重宝され,いろいろな大学に就職口があった.しかし,私の目からは,それらの仕事が本当にプロのレベルに達しているのかどうか疑問があった.例えばそれは腕の良い日曜大工の仕事であるかも知れないが,それで暮らしているプロの大工の仕事とは違うのではないか.
 SKEDを使い始めた私は末端のエンドユーザに過ぎず,プログラミングのテクニックもなかったが,日曜大工の人々が半年かかって開発するような実験システムが3日もあればできた.それは優れたSKEDシステムが存在していたからである.
 研究の生産性を重視するのであれば,機器を手作りし,日曜大工のプログラムを作ることを重視すべきでなく,優秀なシステムを購入して,自らはエンドユーザに甘んじて良いではないかと思う.ただし,システムの開発自体が研究である場合は除く.
 とは言え,これまでの心理学者の肩を持てば,優秀なシステムはあまりにも少なかった.行動実験機器は需要が少ないので,簡単な箱のように見えるものでも驚くほど高価である.製品として売られているソフトウェアも高価なわりに出来が悪く,自分で書いた方が速くて良いものが出来るという現実であったのも事実だ.
 MED-PCは現在存在するシステムの中ではなかなか良いものではあるが,完璧にはほど遠い.

 本稿の読者がSKEDの現場に興味を持たれることを希望する.





図1 行動実験の基本図式
我々を取り巻く環境の中で我々の行動に影響を与えるものが刺激である.例えば
道路を車で走っているとき,遠くの景色は刺激にはならないが,交通信号の色や
歩行者の姿などは刺激になる.我々の行動の中で環境に影響を与えるものが反応
である.例えば車の走行中に音楽を聴いたり御菓子を食べたりすることは反応に
はならないが,アクセルやブレーキを踏む動作やハンドル操作は反応になる.


図2 オペラント実験箱
オペラント実験箱は動物の棲息環境を非常に単純化したモデル環境である.そこ
では視覚・聴覚などの様々な刺激が与えられ,反応に伴って報酬や罰が与えられる.動物の反応はレバースイッチを押すことにまで単純化されている.
(出典:小林 司「心にはたらく薬たち」ちくまぶっくす,1985)



図3 不安の実験モデル
葛藤(conflict)行動と呼ばれる状況を示す.写真では見えにくいが警告期にはランプが点灯している.右端に餌粒を出す給餌器が見える.安全期にはレバー押しに対して一定の条件で餌粒が与えられる.警告期には同様に餌粒が与えられるが,同時に床から弱い電気ショックが与えられる.1日の実験は30分程度で,安全期8分,危険期2分を3回繰り返す.写真から分かるように安全期にはラットはレバーに取りついてさかんに押して餌を取るが,警告期になると反対側を向いてしまう.警告期に反応が抑制されるのは,「餌は欲しいが電気ショックは欲しくない」という葛藤状況に陥ったためと考えられる.神経症に有効な薬物を投与すると警告期にもレバーを押すようになる.
出典(ファルマシアレビュー,Vol.13, 日本薬学会)


図4 記憶の実験モデル
上から見たところ.前後に可動するレバーが3個使われている.見本期ではこれらのうち1個が出てくる.どれが出てくるかは試行によってランダムで,決まっていない.ラットがこれを押すと,そのレバーは引っ込む.引っ込んでいる間が記憶保持期である.何秒か経過してから,今度はすべてのレバーが前に出てくる.先程出てきたレバーを押すと,図には描いてないが,餌がもらえる.このような記憶は数秒しか保持できない.ヒトの短期記憶に相当するものである.老年痴呆のモデル動物では記憶保持能力が低下している.


図5 薬物依存の実験モデル
図に見えるサルの血管(頚静脈)にはシリコンのカテーテルが植え込んである.サルがレバーを押すとポンプが作動して一定量の薬液がこのカテーテルから体内に注入される.ヒトで乱用されるような薬物(麻薬,覚せい剤,睡眠薬など)は動物にも快感を起すので,動物は薬液の注入を求めて頻繁にレバーを押すようになる.このような実験は,新しく開発された薬に乱用される危険性がないかどうかを調べるためにも行われているし,薬物依存の治療法を考案する目的にも利用されている.
(出典:Seiden L.S. and Dykstra, L.A. Psychopharmacology - A Biochemical and Behavioral Approach, Van Nostrand Reinhold, 1977)


図6 行動実験制御システムの基本構成
入力ポートと出力ポートはたいていコンピュータの拡張スロットに差し込むパラレルインターフェースカードに入っている.バッファでは接点入力をTTL レベルの信号に変換し,シグナル変換回路ではTTL レベルの出力をリレーが駆動できる程度の信号に変換する.

図7 オートマトンの原理
SKED言語はオートマトンの理論に基づいている.プログラムは最初ある状態(S1)にあり,何らかの入力(R1)が加わると次の状態(S2)に遷移する.その状態(S2)からはまた別の入力(R2)が加わると元の状態(S1)に戻る.


宣言部


S.S.1,
S1,


S2,


S.S.2,
S1,


S2,


S3,


S.S.3


図8 SKEDプログラムの基本構造
宣言部では配列や変数を宣言する.ここはなくてもよい.プログラムの本体はステートセット(S.S.)の集合である.ステートセットはいくつあってもよい.
ひとつのステートセットはステート(S)の集合である.ステートもいくつあってもよい.実験がスタートすると複数のステートセットは事実上並列に処理される.


図9 SKED ストリームの基本構造
ストリームは入力因子,出力因子,遷移先の3要素から成る.これによって「何かの入力があったときに」,「何か出力を出して」,「自分自身の状態を変える」という機能が実現されている.下のS2 の例では,3チャンネルから入力があったときに,2チャンネルをONにし,5チャンネルをOFF にし,Xという変数に4を代入して,自分自身の制御はS3(この次に来るべきステート)に移ることになっている.


図10 仮想的なオペラント実験箱の接続図
入力側2チャンネルがレバースイッチに接続されているものとする.出力側1チャンネルは実験箱の天井の照明,2チャンネルは自動給餌器のモーター,5チャンネルはレバーの上の発光ダイオードに接続されている.





図12 SKEDによる実験制御の実際例
I/Oカードはパソコンの拡張スロットに装着する.I/Oカードから自己投与ケージ上に描いたコントロールボックスまではすべてMedAssociatesの製品である.実験室と制御室(I/Oユニットからパソコンまでがある)までは約20メートル離れている.



図11 モルヒネ自己投与実験のデータ例
自己投与実験は長期間連続して行われる.これは1頭のサルのデータである.上の図は1日当たりの平均薬物摂取量(体重1kg当たり).中段と下段は4時間毎の自己投与回数(レバーを押した回数)を示す.上段を見ると,最初の6週間でサルが自己投与を覚え,その後はほぼ安定してモルヒネを求めたレバー押しをすることがわかる.中段は覚えかけた頃(5週目),下段は十分覚えた頃(26週目).26週目の後半になると1日に2回自己投与のピークがある.最初のピークは起床直後,2回目のピークは就寝前.体からモルヒネが抜けていく頃にレバーを押していることがわかる.
(出典:Seiden L.S. and Dykstra, L.A. Psychopharmacology - A Biochemical and Behavioral Approach, Van Nostrand Reinhold, 1977)





図13 薬が世に出るまで
上から下に来るに連れて各段階を結ぶ線が細くなるのは,候補になる化合物がふるいにかけられて減ってくることを示す.