第
1
章 人間の情報処理とコン
ピュータ
1.1
人間の感覚と情報処理
1.1.1
人間の情報処理
コンピュータと人間の情報処理 今日、コンピュータは情報処理を行う手段の代表的なものとして挙げ られるが、それよりずっと古くから情報処理を行ってきたものがある。 それは人間である (他の生き物もそうだが、人間がおこなう情報処理は さまざまな生き物の中でも高度なものなので、ここでは人間を代表とし てとりあげる)。 では、コンピュータと人間の構造、およびそれらが情報を処理する仕 組みには、どのような共通部分があり、どのような違いがあるのだろう か。以下で考えてみよう。 コンピュータが情報処理を行う上で必要とする基本機能およびそれを 実現する装置としては、次のものがあった (図 1.1 左): • 入力装置 [入力] — 情報を外部から取り込む。 • 出力装置 [出力] — 情報を外部に伝える。 • CPU[制御+演算] — プログラムを実行し、その命令に従ってデー タを加工する。 • 主記憶装置 [記憶] — プログラムやそれが処理するデータを保持 する。 なお、ノート型や一体型のコンピュータを除けば、制御と演算を受け持 つ CPU(中央処理装置) と記憶を受け持つ主記憶装置 (メモリ) とを 1 つ のケースに入れて「コンピュータ本体」としてパッケージするのが普通 である。外界 CPU 主記憶 [制御] [演算] 感覚器 筋肉 運動 [記憶] 脳 [情報処理] [記憶] 本体 外界 入力 装置 出力 装置 [認知 処理] [運動 制御] 人間の 情報処理 コンピュータ の情報処理 図 1.1: コンピュータと人間の情報処理 では、人間が情報処理を行う場合はどうだろうか。上と同様に機能と 器官を整理してみると、次のようになる (図 1.1 右): • 感覚器による知覚 (視覚、聴覚、味覚、嗅覚、触覚) [入力] — 情 報を外部から取り込む。 • 筋肉による運動 (声、表情、身振り)[出力] — 情報を外部に伝える。 • 脳による情報処理+記憶 — すべての思考、判断、記憶をつかさど る。また、知覚の情報の認知処理、運動の制御なども脳の一部で おこなわれる。 なお、声が筋肉の運動というのは変に感じるかも知れないが、実際には 声 (とくに発話) は、肺の筋肉や声帯の振動を制御する筋肉、そして舌や 口の形を制御する筋肉が協調して働くことで作り出されている。また、 感覚器から情報を取り込む時にも運動が必要なことがある。たとえば、 視覚では顔や眼球を筋肉で動かすことによってはじめて見ることができ るし、触覚では体や腕を動かして触るこではじめて有用な情報が取り込 める。 こうして人間とコンピュータを比べてみると、「入力→情報処理 (+記 憶) →出力」という枠組みは同じであり、全体としてよく似ていること に気がつく。しかし、細かい特性まで見て行くと、人間が持っている器 官 (感覚器、筋肉、脳) とコンピュータの装置 (電子回路や機械装置) で
軸索 シナプス 信号 信号 神経細胞 樹状突起 図 1.2: 神経細胞の構造とはたらき は異っているところが多くある。たとえば、コンピュータは大量の情報 を正確に処理することを得意とするが、人間の脳は曖昧さのある情報や 芸術的感覚を直観的に取り扱うことができる。 コンピュータは我々の社会活動や生活を支え、豊かにしてくれる道具 であり、コンピュータが処理する情報は最後はさまざまな形で人間に到 達して消費されたり利用されたりする。したがって、人間が持つ情報処 理能力の特性を理解し、コンピュータを活用しつつ、人間にとって快適 で負担のない情報環境を整備していくことが大切だといえる。 神経系と情報伝達 人間の体の中には脳を出発点として神経系が張りめぐらされていて、 この神経系が入出力装置 (感覚器、筋肉) と情報処理装置 (脳) の間の情 報伝達を受け持っている。また、脳の内部の「配線」もすべて神経細胞 でできている。このため、人間の情報処理が持つ特性の多くは神経系の 特性に由来しているといえる。 神経細胞は多数の樹状突起と長い軸索を持ち、樹状突起から受け取っ た情報を軸索を通じて遠くまで伝えることができる (図 1.2)。神経細胞 とその軸索が体のすみずみまでつながって神経系ができている。 軸索の末端にはとなりの神経細胞の樹状突起と近接した部分があり、 これをシナプスと言う。神経細胞が刺激を受け「興奮」状態になると微 小な電位変化が起き、これが軸索を伝わってシナプスまで来ると神経末 端から伝達物質が放出され、それによって隣の神経細胞に刺激が伝わる。
脳 多数の神経回路の 結び付き 多数の入力 多数の 出力 「学習」による つながりの強化/変化 図 1.3: 脳による練習や学習のモデル 軸索を信号が伝わる速さは神経細胞の種類によって変わるが、最も速い 運動神経で最大 120m/秒 (432km/h)、遅い神経では 0.5∼2m/秒程度で ある。 神経細胞はいちど興奮状態になると、しばらくの間は次の刺激を受け 取れない状態になる。このため、神経信号の伝達は「興奮」のパルスが 間欠的に送られるという形を取る。 1 つの神経細胞には多数 (多いもので 1 万といわれる) のシナプスがあ り、他の神経細胞から刺激 (信号) を受け取り、その総和が一定以上だ と興奮状態になる。この多数の結び付きが論理回路のようなものを構成 して、情報処理を行うことができる。神経細胞は人間の成長とともに、 その個数が増えたり、あらたな結び付きができたりする。さまざまなこ とがらを恒久的に記憶したり、反復練習によってさまざまな作業 (頭の 中だけの作業、知覚や運動まで含めた作業の双方) が上達するのは、こ の神経どうしの結びつきが増えていくことによるものと考えられている (図 1.3)。 このような多数の神経の結び付きをソフトウェアで模倣することによ り、人間が得意とするパターンの学習と認識などの作業を高速に行える ニューラルネットワークと呼ばれる形のプログラムが作られている。た だし、そこでモデル化されている神経細胞の数は数十から数百程度であ り、人間の脳が行うような高度な情報処理活動を再現する方法はまだ分 かっていない。
1.1.2
人間の情報処理活動を調べる
知覚→情報処理→運動サイクル 人間は活動している間、絶え間無く情報処理を行っている。たとえば、 歩いている時を考えてみよう。常に周囲を見て、障害物があれば方向や 足のあげ方を変えて対応しないと、ぶつかったりつまづいたりしてしま う。また、楽器を合奏している時はどうだろうか。自分や他人が出して いる音を聴き、それに応じて弦やバルブの押え具合、息や弓運びの強さ を調節することで、調和の取れた演奏が進んで行く。 図 1.4: 知覚→判断→運動の時間を測る このようなとき、一般に「外界→知覚→脳 (情報処理による調節) → 運動→外界」というサイクルができることによって、人間はうまく活動し続けられるわけである。 では、この 1 サイクルに掛かる時間はどれくらいだろうか。これを測 るために、「画面に四角が表示されていて、赤に変わったらすかさずボ タンを押し、色が変わってからボタンが押されるまでの時間を測る」と いう簡単な実験プログラムを作成してみた (図 1.4)。 このプログラムは HTML と JavaScript を組み合わせて作ってあり、 ブラウザ上で動作する。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html>
<head>
<title>experiment: motion time</title> <style type="text/css">
p { background: rgb(180,200,255); padding: 2mm } div { margin: 5mm; padding: 5mm }
#box { width: 100px; height: 100px; border: solid black 4px } #panel { background: rgb(150,255,200); } </style> <script type="text/javascript"> var time = -1; function start() { document.getElementById(’box’).style.background = ’white’; var delay = 3000 + Math.floor(3000 * Math.random()); setTimeout(change, delay);
}
function change() {
document.getElementById(’box’).style.background = ’red’; time = new Date().getTime();
}
function stop() {
var t1 = new Date().getTime();
var p0 = document.getElementById(’message’); var a0 = document.getElementById(’area’); if(time < 0) {
p0.innerHTML = ’開始していません。「開始」ボタンからどうぞ。’; } else {
var t2 = t1 - time; time = -1; p0.innerHTML = ’反応時間は ’ + t2 + ’msec でした。また開始できます。’; a0.value += t2 + ’\n’; } } </script> </head> <body> <h1>知覚→判断→運動の時間を測る</h1>
<p>「開始」を押すと数秒後に四角形の色が赤に変化します。 変化したらすかさず、「変化した」ボタンを押してください。 変化してからボタンが押されるまでの反応時間を計測します。</p>
<div id="box"></div>
<div id="panel">
<button onclick="start()">開始</button> <button onclick="stop()">変化した</button> <p id="message">開始できます。</p>
<textarea id="area" rows="20" cols="20"></textarea> </div> </body> </html> このプログラムの概要は次の通り。 • start() では、待ち時間を 3 秒∼6 秒の間でランダムに決め、そ の時間だけ待ってから change() が呼ばれるようにする。 • change() では、箱の背景色を赤にし、time に現在の時刻 (ミリ秒 単位) を格納する。 • stop() では、まず現在の時刻を記録する。次に、time に値の記 録がなければ「開始ボタンからどうぞ」とメッセージを出す。記 録があれば、現在の時刻から差し引くことで色が変わってからボ タンを押すまでに掛かった時間を計算し、それを表示する。 実際に測ってみると、人によって差があるが、ボタンを押すまでの時 間は 300∼600 ミリ秒くらいになると思われる。他の情報の種類 (音な ど) であっても、反応時間はおおよそこのくらいであろう。これは人間 の情報処理機構そのものの構成から、どうしてもそのくらい掛かってし まうわけである。したがって、人間に対するユーザインタフェースとし て、情報を提示してからあまり短い時間で判断結果を要求するようなも のはうまく扱えないことが分かる。 なお、このような実験をさまざまな形で行うことで、これ以外にも人 間内部の情報処理機構がどうなっているかを調べて行くことができる。 そのような学問分野を認知心理学と呼ぶ。 演習 このプログラム (HTML+JavaScript) を打ち込んでブラウザで開 いて動かし、自分や友人の反応時間を計測してみよ。また、声を
長期記憶 短期記憶 ∞ 7±2 知覚 システム 見える もの 反芻することで 覚える 長期・大量に記憶可能 記憶されていても 取り出せない (思い出せない) ことがある ? 図 1.5: 長期記憶と短期記憶 出して数を 1000 から 1 ずつ減らして次々に読み上げながら同じ実 験をやったら結果が変わるかどうか試してみよ。 長期記憶と短期記憶 前節では「知覚→判断→運動」サイクルについて見たが、では「記憶」 についてはどうだろうか。人間の脳の記憶機能については、次のような ことが分かっている (図 1.5): • 記憶は長期記憶と短期記憶 (作業記憶) に分かれている。 • 短期記憶には情報の「かたまり」が数個 (7 ± 2 と言われる) 程度 しか入らず、その記憶はすぐに減衰してしまう。 • 長期記憶はいくらでも沢山の情報が蓄えられるが、情報を格納す るのにはかなり時間が掛かり、また格納された情報を取り出すの も時間が掛かったり、場合によってはうまく取り出せないことも ある。 • 外から (知覚機能を通して) やってきた情報は、まず短期記憶に入 り、そこで忘れないまま反芻されていると、次第に長期記憶に入っ て定着する。 これらのことがらも、ユーザインタフェースなどの設計に重要な指針 を与えてくれる。たとえば、短期記憶の容量は 7 程度だから、メニュー 項目でいちどに提示する選択肢の数、文章における章や節の数などは多 くても 7 程度にとどめるのがよいとされている。
図 1.6: 短期記憶の容量を測る
短期記憶の容量
では次に、短期記憶の容量を測る実験をやってみよう (図 1.6)。その ためのプログラムを次に示す。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html>
<head>
<title>experiment: recognition time</title> <style type="text/css">
p { background: rgb(180,200,255); padding: 2mm } div { margin: 5mm; padding: 5mm }
#disp { width: 100px; height: 1em; border: solid black 4px } #disp { text-align: center }
#panel { background: rgb(150,255,200) } </style>
<script type="text/javascript">
var ans = null, count = 0; function start() { document.getElementById(’i1’).value = ’’; count = parseInt(document.getElementById(’i0’).value); ans = ’’; setTimeout(show, 500); } function show() { if(ans.length < count) {
var char = str.charAt(Math.floor(str.length * Math.random())); document.getElementById(’disp’).innerHTML = char; ans += char; setTimeout(show, 500); } else { document.getElementById(’disp’).innerHTML = ’ ’; document.getElementById(’mesg’).innerHTML = ’解答をどうぞ。’; } } function answer() { var c1 = document.getElementById(’i1’).value; var p0 = document.getElementById(’mesg’); var a0 = document.getElementById(’area’); if(ans == null) { p0.innerHTML = ’開始していません。「開始」ボタンからどうぞ。’; } else {
var result = (ans == c1) ? ’OK’:’NG’; ans = null; p0.innerHTML = result + ’でした。また開始できます。’; a0.value += count + ’,’ + result + ’\n’;
} } </script> </head> <body> <h1>短期記憶の容量を測る</h1> <p>「開始」を押すといくつかの文字が順次表示されます。 その文字をすべて順に答えてください。</p> <h1 id="disp">?</h1> <div id="panel">
項目数:<input id="i0" size="5" value="5"> <button onclick="start()">開始</button><br> (くっつけて入力)<input id="i1" size="10"> <button onclick="answer()">解答</button> <p id="mesg">開始できます。</p>
<textarea id="area" rows="20" cols="20"></textarea> </div>
</html> このプログラムの概要は次の通り: • start() では入力欄から回数を取り出して変数 count に保管し、 解答文字列を空にして、0.5 秒後に show() を呼び出すように設定 する。 • show() では、まだ count 回ぶんの問題を出していなければ、文字 列からランダムに問題の文字を選んで表示させ、また ans の末尾 にもその文字を追加し、0.5 秒後に再び show() を呼び出すように 設定する。問題を count 回出し終わった場合は問題欄は空白にし て「解答をどうぞ」と表示する。 • answer() では、問題を出し終わった状態かどうかをチェックし (ans が null かどうかで分かる)、OK なら結果を表示し、テキス ト領域にもデータを追記する。 実際にやってみると、短期記憶の容量がかなりはっきりと測定できる ことが分かるはずである。 演習 このプログラム (HTML+JavaScript) を打ち込んでブラウザで開 いて動かし、自分や友人の短期記憶の容量を計測してみよ。また、 声を出して数を 1000 から 1 ずつ減らして次々に読み上げながら同 じ実験をやったら結果が変わるかどうか試してみよ。
1.2
視覚と聴覚
1.2.1
視覚と動画
視覚のしくみ 人間の視覚を受け持つ感覚器は言うまでもなく目である。人間にとっ て外界からの入力情報の総量のうち、視覚が占める割合は非常に大きく、 このため眼球から脳には多くの神経がつながっている。 眼球はその前面に水晶体と呼ばれるレンズの働きをする透明な組織が あり、そのレンズ作用によって眼球の背面にある網膜に見ているものの 像が写し出される。網膜には多数の光受容細胞 (視細胞) が並んでいて、 これらの細胞が感じた光の情報が脳に伝達される。脳の中でこれらの情眼球 水晶体 視神経 脳 ローソク 知覚 情報処理 網膜 図 1.7: 視覚のしくみ 報を組み立てて解釈することで、色や形などいわゆる「見えるもの」が 認識されている (図 1.7)。 網膜上の視細胞はすべてが同じではなく、次の 2 種類がある。 • 棹体 — 色は識別できないが、少ない光でも感知できる。 • 錘体 — 3 つの色 (赤、緑、青) それぞれを感知する 3 種類のもの があり、これらを組み合わせて色が分かる。ただし棹体より多く の光が必要である。 網膜の中心部には、錘体が多く分布して視力がもっとも良い黄斑と呼ば れる部位がある。文字や細かい形を見ようとする場合は、顔や眼球を動 かして見ようとするものの像がこの黄斑に写るようにする必要がある。 人間の眼球は、意識してどこかを凝視しているのでない限り、上下左 右に動いていて、広い範囲を黄斑で捉えるようになっている。逆に言え ば、突然見たいものがあらわれたとき、それがたまたま黄斑に写る位置 にあったのでない限り、まず眼球を動かして見たいものを黄斑で捉える ことが必要である。 このため、ユーザインタフェースの設計では、ユーザに見てほしいも のが「突然」どこかに現れるよりは、重要な情報が提示される位置が決 まっていて、ユーザがその近辺を見ていると次々に必要な情報が受け取 れるようにする方が好ましいといえる。 眼球運動の計測 実際に眼球運動にどれくらい時間が掛かるかを調べてみよう。そのた めに、ある程度広い領域の「どこかに」一瞬文字が現れて消え、その後
で現れた文字を答えさせるというテストをする (図 1.8)。現れている時 間が十分長ければ、眼球運動により黄斑で文字を捉えて読み取れるので ほぼ 100% 正解できる。しかし、時間が短くなってくると「たまたま注 視していたところに文字が現れた」場合だけ正解できるので、正解率は 0%にはならないがずっと小さくなる。この正解率の低下が起き始める 時間がおおよそ眼球運動に要する時間だと考えられるわけである。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html>
<head>
<title>experiment: recognition time</title> <style type="text/css">
p { background: rgb(180,200,255); padding: 2mm } div { margin: 5mm; padding: 5mm }
#box { width: 400px; height: 400px; border: solid black 4px } #disp { visibility: hidden; position: relative }
#panel { background: rgb(150,255,200) } </style>
<script type="text/javascript">
var str = ’abcdefghijklmnopqrstuvwxyz0123456789’; var chr = null, dur = 0;
function start() {
var delay = 3000 + Math.floor(3000 * Math.random()); setTimeout(show, delay);
}
function show() {
dur = parseInt(document.getElementById(’time’).value); chr = str.charAt(Math.floor(str.length * Math.random())); var xpos = Math.floor(380 * Math.random());
var ypos = Math.floor(380 * Math.random()); var d = document.getElementById(’disp’);
d.style.left = xpos + ’px’; d.style.top = ypos + ’px’; d.innerHTML = chr; d.style.visibility = ’visible’; setTimeout(hide, dur); } function hide() { document.getElementById(’disp’).style.visibility = ’hidden’; document.getElementById(’mesg’).innerHTML = ’解答をどうぞ。’; } function ans() { var c1 = document.getElementById(’answer’).value; var p0 = document.getElementById(’mesg’); var a0 = document.getElementById(’area’); if(chr == null) { p0.innerHTML = ’開始していません。「開始」ボタンからどうぞ。’; } else {
var result = (chr == c1) ? ’OK’:’NG’; chr = null; p0.innerHTML = ’表示時間 ’ + dur + ’msec, ’ + result +
’でした。また開始できます。’; a0.value += dur + ’,’ + result + ’\n’; } } </script> </head> <body> <h1>眼球運動の所要時間を測る</h1> <p>「開始」を押すと数秒後に四角形の中に一瞬文字が表示されます。 その文字を答えてください。</p>
<div id="box"><div id="disp">?</div></div>
<div id="panel">
表示時間:<input id="time" size="5" value="100">ミリ秒 <button onclick="start()">開始</button>
<input id="answer" size="5">
<button onclick="ans()">解答</button> <p id="mesg">開始できます。</p>
<textarea id="area" rows="20" cols="20"></textarea> </div> </body> </html> このプログラムの概要は次の通り: • start() では 3 秒∼6 秒の範囲で待ち時間をランダムに決め、そ の時間だけたったら show() が呼ばれるように設定する。 • show() では表示時間入力欄を取得し、変数 dur に入れる。また 問題となる 1 文字をランダムに選んで変数 chr に入れる。x 座標、 y 座標を 0∼380 の範囲でランダムに選び、表示用の要素の位置を そこに設定、内容を問題の文字に設定してから表示用の要素を見 えるようにする。そして dur だけたったら関数 hide() が呼ばれ るように設定する。 • hide では表示用の要素を見えなくし、「解答をどうぞ」と表示する。 • ans() では正解文字と解答された文字を照合し、正誤を提示時間 とともに表示する。 演習 このプログラム (HTML+JavaScript) を打ち込んでブラウザで開 いて動かし、自分や友人の眼球運動時間を計測してみよ。いく通
りかの提示時間を選び、それぞれの時間で 10 回程度計測して誤り 率をグラフ化し、誤り率がはね上がるところが眼球運動が追い付 かなくなるところだと言える。片眼をふさいでやった場合に違い があるかどうかも計測してみよ。
1.2.2
色と画像
色とカラーモデル1.2.3
動画とアニメーション
動画のしくみ 人間の神経系による情報処理には各要素 (「知覚」「判断」など) ごと にサイクルタイム、つまり「1 回の情報処理に要する時間」があり、複 雑な処理をになるほど必要なサイクルの数が多くなる、という性質があ る。これは、神経による情報伝達は神経細胞の「興奮」によって伝わり、 一度「興奮」状態になるとしばらくの間は刺激があっても「興奮」でき ない、という性質が関係しているものと考えられている。 したがって、聴覚や視覚のように「連続した」ものであっても、人間 の知覚は実際には「とびとびの時点で」情報を取り込んでいる。(ただ し、それぞれの時点において見えるものや聞こえる音の情報は、多数の 感覚細胞が一斉に情報を取り込むことから、非常に細かく取得できる。) 「パラパラマンガ」やアニメーションは、少しずつ違った絵を短い時 間感覚で提示していくとなめらかに動いて見えることを利用している が、このような現象は人間の視覚が「とびとびの時点」でしか情報を取 り込めず、これに十分近い時間間隔で絵を提示すると絵が連続的に変化 しているのか段階的に変化しているのか区別がつかないためである。 実際に画面上のものを一定時間間隔で動かして、時間間隔がどれく らい短ければなめらかに動いていると感じられるかを調べてみよう (図 1.9)。<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html>
<head>
<title>experiment: recognition time</title> <style type="text/css">
図 1.9: なめらかに動いて見える時間間隔を調べる
div { margin: 5mm; padding: 5mm }
#box { width: 400px; height: 50px; border: solid black 4px } #move { position: relative; background: blue; }
#move { height: 5px; width: 5px; top: 0px; left: 0px } #panel { background: rgb(150,255,200) }
</style>
<script type="text/javascript">
var target = null, dur = 100, ypos = 10, vy = 100; function set() { dur = parseInt(document.getElementById(’time’).value); document.getElementById(’move’).style.background = document.getElementById(’color’).value; } function step() { if(target == null) target = document.getElementById(’move’); ypos = ypos + dur * vy * 0.001;
target.style.left = Math.floor(ypos) + ’px’;
if(ypos < 20 && vy < 0 || ypos > 320 && vy > 0) vy = -vy; setTimeout(step, dur);
}
</head>
<body onload="step()">
<h1>なめらかに動いて見える時間間隔を調べる</h1>
<p>箱を動かす時間間隔(ミリ秒数)を変えていくつくらいならなめらか に動いて見えるか調べます。</p>
<div id="box"><div id="move"></div></div>
<div id="panel">
時間間隔:<input id="time" size="3" value="100">ms 色指定:<input id="color" size="15" value="rgb(0,0,255)"> <button onclick="set()">設定</button>
</div> </body> </html> このプログラムの概要は次の通り: • set() では、入力欄の時間間隔値を数値として取り出して変数 dur に入れ、また色の指定を取り出して箱の背景色として設定する。 • step() はページが読み込まれたときまず実行され (body onload=...
の機能)、以後自分自身を dur ミリ秒後に呼び出すことで一定時間 間隔で実行される。 • step() の中では、まず target に青い四角を取り出す (既に取り 出してあれば再度取り出すことはしない)。次に、箱の Y 座標の 値の変移を「速度×時間」により計算してそれだけずらす (0.001 を掛けているのは、速度の単位が「ピクセル/毎秒」なのを「ピク セル/毎ミリ秒」に補正するため)。さらに、Y 座標が外枠の左端/ 右端からはみ出しそうなら速度を反転する。 実際にやってみると、30∼40 ミリ秒間隔 (毎秒 30∼25 コマ) くらいがな めらかに見えるかどうかの境界になっていると分かるはずである。テレ ビや映画などでも 1 秒あたりこれくらいのコマ数を用いている。 演習 このプログラム (HTML+JavaScript) を打ち込んでブラウザで開 いて動かし、どれくらいの時間間隔ならなめらかに動いて見えるか 試してみよ。また、箱の色を非常に薄くする (rgb(250,255,255) などとして白にごく近い色にする) と、間隔が長くてもあまりカ クカク感じられないことを確認せよ。