情報処理学会 インタラクション 2021
IPSJ Interaction 2021

1A06
2021/3/10

行動 to Code : 日常生活の複数の身体行動を通したプログラム的要素・処理の体験アプリケーション
中村幸樹†1橋田朋子†1

概要：本研究では，プログラミング的思考が日常の行動の分析に役立つ事やその面白さをより多くの人に知ってもらう事を目指し，日常の行動がプログラム的要素・処理で説明できる事を直感的に体験可能とする仕組みを実現する．
具体的には，ユーザの身体で完結する簡易な行動をするように自然言語で指示し，ユーザがその行動をし始めると，含まれるプログラム的要素・処理を自動検出し，インタラクティブにプログラミング言語（命令とコメント）でフィードバックする仕組み“行動 to Code”を提案する．これにより自身の行動が細分化した Code で捉え直せる事を体感できる．提案システムは iPhone, PC の内蔵センサ・カメラを利用して，それらのブラウザからアクセスできるアプリケーションとして実装する. さらに本システムを用いることで，日常の行動に含まれるプログラム的要素・処理に気づき，プログラミング的思考が身近に感じられるかを明らかにする評価実験も行う．

1. はじめにを提案する（図 1）．この手法では，身体で完結する行動を対象にすることで，通常の実行とは異なるがユーザが自然

プログラミング教育が小学校の授業に導入されるなど,言語を読んでその行動をする事による「ジッコウ」が可能

今, プログラミング的思考[1]と呼ばれる，対象を理解し表になる．さらにインタラクティブなフィードバックにより現するために, どのような動きに分解して組み合わせるべ

一つの行動に思えるものがより細かい身体動作（プログラ

きかを論理的に考える力が注目されている．筆者らはプロム的要素）や処理から成る事をわかりやすく示す．自然言

グラミングに親しみプログラミング的思考を自然と行う中語で命令してフィードバックをプログラミング言語にするで, 特にこの思考がコンピュータ内の動作に限らず日常生ことで前者の曖昧さと後者の明確さを対比的に見せる事も活に適用できることや，それにより自分自身の考えや行動可能である．これらの特徴によりユーザは普段自分が何気が整理・客観視しやすくなることに可能性を感じている．

なく「実行」している行動が，細分化した Code によって既に, プログラミング的思考の学びの一環として，日常の捉え直せる事を直感的に体感できると考えた．本稿では提身近な動作や行動をプログラム的要素・処理に分解する試

案システムの詳細と評価実験について報告する．

みは行われている．が，このような分析は基本的には自分の頭で考えてプログラム的要素・処理を自然言語で書き出す作業にとどまっている．実際にそれらが自動的に「実行」される事や，実行の可否を示す終了ステータス，エラー・ログメッセージなどのフィードバックはないため，分解した動作の粒度や処理の種類が適切であったのかを即時に知る事はできない．つまり現状の自然言語を用いたプログラ
ム的要素・処理の分析は，本来のプログラミングではあったはずの多くの手掛かりなしに思考を進める難易度の高い作業であり，導入としては障壁が高い．
筆者らは，プログラミング的思考が日常の行動の分析に役立つ事やその面白さをより多くの人に知ってもらう事を目指し，そのためには日常の行動がプログラム的要素・処理で説明できる事を一度でも直感的に体験する事が重要であると考える．そのためやや変則的ではあるが，本研究ではユーザの身体で完結する簡易な行動を対象として，まずは自然言語でユーザにある行動を指示し，ユーザがその行動をし始めると，そこに含まれるプログラム的要素・処理

図 1 システム体験時（壁に向かって歩く行動）の様子（上）を逐一センサで自動検出し，即時にプログラミング言語（命行動検出後にフィードバック画面が表示される様子（下）令とコメント）でフィードバックする手法“行動 to Code”†1 早稲田大学© 2021 Information Processing Society of Japan128

情報処理学会 インタラクション 2021
IPSJ Interaction 2021

2. 関連研究・事例
2.1 ソースコードを鑑賞や表現の対象とした研究・事例
ソースコードやプログラム自体が鑑賞や表現の対象となりうる事を示した先駆的な研究・事例として以下のものが挙げられる．日比野ら[2]は，JavaScript をベースにした独自言語を用いて様々な事象の表現を行い，その作品へのフィードバックを通してソースコードの持つ表現の可能性を示している．また，50 . Shades of Grey[3]は 50 諧調の黒から白のグラデーションでできたまったく同じ画像を制作する 6 種類の言語によるプログラムの作品である．これらの研究・事例は作者が作成したソースコードそのものを鑑賞してもらうことに重点を置いているのに対し，本研究は日常の行動がプログラム的要素・処理に分解できることを示すことに重点を置き，動作に対して動的にソースコードを表示している点が異なる．
2.2 プログラミング的思考を身近にする目的の事例
プログラミング的思考を身近にする目的の事例として，テキシコー[4]がある．これは，コンピュータを使わずにプログラミング的思考を育むことを目的とした映像番組である．また，ピタゴラスイッチ[5]には，ミニコーナーである
アルゴリズムたいそう・アルゴリズムこうしんがある．これは，1 人では意味のない身体動作を 2 人で組み合わせることによって意味を持つ，アルゴリズム（物を解くための手順）をテーマにした体操（行進）である．これらの先行事例がプログラミング的思考を映像で伝えるのに対し，本1A06
2021/3/10

われていることを，自動検出して即時かつインタラクティブにフィードバックする仕組みである．以下に（1）簡易な身体行動（2）センシングとフィードバックの装置（3）フィードバック表現の設計指針について詳しく説明する．
まず，身体で完結する簡易な行動として日常生活で何気なく行う「立ち上がる」「椅子に座る」などの 9 つの行動を取り上げる．これらの行動は表 1 に挙げる 5 つのプログラ
ム的要素・処理を少なくとも 1 つ含むという観点から選択した．なお，本稿におけるプログラム的要素・処理とは，構造化プログラミング[8]における三要素である「順次（連接）」，「分岐（選択）」，「反復（繰り返し）」と，プログラミングにおける「変数（パラメータ）」，「関数（サブルーチン）」とする．
次に行動のセンシング及びフィードバック装置としては特殊なセンサ・デバイスではなく，ユーザが日常的に持ち歩い て いる も の が好 ま しい ． そこ で ， スマ ー トフ ォ ン（iPhone），と PC に着目して内蔵センサ・カメラ・ディスプレイを用いる．提案システムはこれらのブラウザからアクセスできるアプリケーションとして作成する．
フィードバック表現として，自然言語ではなくプログラミング言語（命令とコメント）を用いる．これは，プログラミング言語では，一連の動作は細かい処理・ステップに分解して一行ずつ記述するという特徴があるため，指示した行動に含まれていた詳細なプログラム的要素・処理を構造的・直感的に見せるのに適していると考えたためである．
表 1 各プログラム的要素・処理とその説明研究はユーザの身体動作に対してインタラクティブにフィードバックを返すアプリケーションという形をとる点で異プログラム的要素・処理なる．

順次

上から順番に処理を実行する

2.3 携帯端末の内臓センサを動作検出に使用する研究

分岐条件の真偽に応じて，次の処理を選択する

反復条件が真である間，一連の処理を繰り返す

変数

あるデータを保持，読み書きする領域

関数

一連の処理のまとまり

本研究では身体動作を検出する身近なセンサとしてスマートフォンの内蔵センサを使用するが，同様の研究は数説明多くある．大内[6]のシステムでは，スマートフォンの加速度センサとマイクを用いて，家の中の行動と外の行動の連

4. 実装

続的なモニタリングができる．また，西村ら[7]は，加速度4.1 システム構成

センサとマイクを用いてユーザの周辺の混雑情報を推定す

本システムのハードウェアとしてスマートフォンと PCる手法を提案している．これらの研究はユーザの生活の利を用いる．スマートフォンでは，内蔵の加速度センサ・ジ便性の向上を目的とし，携帯している端末から一方的に値ャイロセンサを，PC ではカメラを行動検出のセンサとしてを取得しているのみであるのに対し，本研究ではプログラ用いる．また，フィードバックの際のプログラミング言語ミング的思考が日常の身体動作に適用可能であると示すこは Python の文法に則っている．提案システムでは，相互にとを目的にしている点や，端末を手に持った状態のセンサゆるく関係する 3 つの行動をユーザに順々に指示してフィの値を取得した上でユーザに即座にフィードバックしていードバックを返す事を 3 回繰り返す．この一連の流れを手る点が異なる．

続き型人生体験ツアー（以下ツアー）と呼ぶ．ツアーは 3

3. 提案：行動 to Code の設計

種類ある．

提案システム“行動 to Code”は，身体で完結する簡易な行動を自然言語でユーザに指示し, ユーザがその行動をする事を「ジッコウ」として捉え，それがより細かい身体動作（プログラム的要素）や処理の組み合わせによって行© 2021 Information Processing Society of Japan

各ツアーは HTML/CSS 及び JavaScript を用いてユーザの端末上のブラウザ（Chrome，Firefox）で動作するよう開発した．ツアー1,2 は iPhone で，ツアー3 は PC（Windows，Mac）で動作する．ツアー1,2 については，ユーザは図 1（上）129情報処理学会 インタラクション 2021
IPSJ Interaction 2021

1A06
2021/3/10のように iPhone を手に持ち，基本は画面を見ながら指示通りに行動をする．ツアー3 については，ユーザは PC の内蔵カメラの前に座って，画面を見ながら指示通りに行動する．
各ツアーの大まかな流れは以下の通りである．
1.

ユーザに画面を操作してもらい，画面上で自然言語により指示（命令）されたとおりに行動をしてもらう．
この命令は各画面につき 1 文だけ表示される（図 3（左））．最初の画面（図 2）のみ，センサ類許可処理を兼ねている

2.

行動を細分化した動作をスマートフォン内蔵センサもしくは PC のカメラで検知し，閾値を超えると動作をしたと判断する

3.

判断したら，「あなたにプログラムされていた内容」として，プログラム的要素・処理が図 3（右）のようにユーザに即座かつインタラクティブに明示される

4.

表示されたウィンドウの「つぎへ」をタップすると，次の命令の画面が表示される

5.

3 つの命令について 1~4 の処理・遷移が行われた後，

図 3 ツアー1 命令 1（左）命令 1 プログラム的要素表示ウィンドウ画面（右）3 つの行動全体を表した Code のフィードバック画面（図 4）が表示される
以下の節では，各ツアーの具体的な命令とその動作に含まれるプログラム的要素について述べる．

図 4 3 つの行動全体を表したフィードバック画面
4.2 ツアー1 分岐と順次処理
4.2.1 命令とプログラム的要素・処理
図 2 ツアー1 最初の画面

ツアー1 で自然言語により指示した行動は「立ち上がってください」「壁に向かって歩いてください」「椅子に座ってください」の 3 つである．これらの行動に含まれるプログラム的要素・処理は「分岐」と「順次」である．両者の対応関係は表 2 に示す．

© 2021 Information Processing Society of Japan130

情報処理学会 インタラクション 2021IPSJ Interaction 2021

1A06
2021/3/10

また，ツアー1 の最後に表示される 3 つの行動全体を示さい」と命令 3「元の向きに戻ってください」は，関数したプログラム（Code）のうち，命令 2 の部分を図 5 に示

「TurnAround()」によって同じプログラム的要素・処理（関す．図 5 に示したように，「壁に向かって歩いてください」

数）で表せることがユーザに明示される．には，if 文とコメントによって「もし壁に当たりそうにな

表 3 ツアー2 の各命令とそのプログラム的要素・処理ったら、立ち止まる」というプログラム的処理（分岐）が命令番号含まれていることがユーザに明示される．また，はじめにの図 1 において示した行動はこの命令 2 である．
表 2 ツアー1 の各命令とそのプログラム的要素・処理
命令番号

文言

含まれるプ
ログラム的要素・処理

1

立ち上がってください

分岐2

壁に向かって歩いてください分岐3

椅子に座ってください

順次文言

含まれるプ
ログラム的要素・処理

1

後ろを向いてください

関数

2

10 秒間なにもしないでください

変数、順次

3

元の向きに戻ってください

関数

図 5 ツアー1 の命令 2 のフィードバック画面
4.2.2 加速度の閾値の判定方法
命令 1~3 は，いずれも加速度センサの値を取得し，閾値
図 6 ツアー2 の命令 1 と 3 のフィードバック画面に応じてユーザの行動判定をする．
iPhone における加速度センサの軸の方向は左右が x, 上
下が y, 表裏が z であり[9]，それぞれ左，下，裏が x,y,z 軸

4.3.2 ジャイロ（角度）の閾値の判定方法
命令 1,3 は，どちらも iPhone のジャイロセンサの値を取正の向きである．
x,y,z 方向の加速度を ax,ay,az とし，これらの二乗和平方得し，閾値に応じてユーザの行動判定をする．

根を A とすると，A は式（1）で示される．A の値を 50ms

iPhone の表裏の軸である z 軸まわりの回転角のみを考えごとに取得して配列に保存する．配列の n（n>0）番目に格る．ユーザが最初にアプリケーションを起動したときの角納されている A を An とする．さらに，An と An-1 の差を Bn

度が真上（0[°]=0[rad]）になるため，3.14±0.3[rad]に入っとして式（2）より求める．

た時命令 1 のポップアップウィンドウが表示される．同様
……（1）
……（2）

Bn<-1.2 となった時，命令 1 のポップアップウィンドウがに，0±0.3[rad]に入った時に命令 3 のポップアップウィンドウが表示される．この閾値は，筆者自身が何度か試した上で一番最適な値に設定した．
4.4 ツアー3 反復と順次処理
4.4.1 命令とプログラム的要素・処理表示される．同様に，Bn<-2，Bn>2.7 となった時，それぞれツアー3 で自然言語により指示した行動は「まばたきを命令 2,3 のポップアップウィンドウが表示される．この閾してください」「画面をじっと見てください」「笑顔になっ値は，筆者自身が何度か試した上で一番最適な値に設定してください」の 3 つである．これらの行動に含まれるプロた．

グラム的要素・処理は「反復」「順次」「変数」である．具4.3 ツアー2 関数と変数体的な対応関係は表 4 に示す．

4.3.1 命令とプログラム的要素・処理

ツアー3 の最後に表示される 3 つの行動全体を示したプ

ツアー2 で自然言語により指示した行動は「後ろを向いログラム（Code）のうち，命令 2 の部分を抜粋して図 7 にてください」「10 秒間なにもしないでください」「元の向き示す．図 7 に示したように，命令 2「画面をじっと見てくに戻ってください」の 3 つである．これらの行動に含まれださい」にはウィンドウが出るまで「while True:」によっるプログラム的要素・処理は「関数」「変数」「順次」であて「反復」していたり，まばたきをする「Blink()」や，他る．具体的な対応関係は表 3 に示す．のことを考える「Think(something)」という「順次処理」のツアー2 の最後に表示される 3 つの行動全体を示したプログラム（Code）のうち，命令 1,3 の部分を抜粋して図 6ようなプログラム的要素・処理が含まれていたことがユー
ザに明示される．に示す．図 6 に示したように，命令 1「後ろを向いてくだ© 2021 Information Processing Society of Japan131

情報処理学会 インタラクション 2021
IPSJ Interaction 2021

1A06
2021/3/10

表 4 ツアー3 の各命令とそのプログラム的要素・処理
命令番号文言「⑤一連の体験を通して，プログラミング的思考が身近に含まれるプログラム的要素・処理感じられるようになった」とした．このうち，①②⑤の項目に関しては「とてもそう思う」を 5，「全くそう思わない」

1

まばたきをしてください.

反復を 1 として 5 段階評価を行った．尚，各ツアーの順番はラ2

画面をじっと見てください.

反復、順次ンダマイズした．

3

笑顔になってください.

反復、変数

5.2 結果評価項目の内、①②⑤の結果を図 8 に示す．図 8 に示したとおり，評価項目①②⑤の平均はそれぞれ 3.75，4.08，4.25 であり，標準誤差はそれぞれ 0.28，0.19，0.22 であった．また，③についてはアプリケーション中で明示したプ
ログラム的要素・処理全てを書き出せた人はいなかったが，1 つ以上は書いていた．他にも，「歩くときには，その場所が歩ける場所であることを確認しながら歩いていた」や，
図 7 ツアー3 の命令 2 のフィードバック画面
4.4.2 表情認識の判定方法
表情認識のライブラリとして clmtrackr[10]を利用した．
命令 1 のまばたきの判定に関しては，[11]の 2.瞬き検出を参考に実装した．また，命令 3 の笑顔判定に関しては，[12]の 3.表情認識を参考に，emotion 配列中の 5 番目（0-indexed）に格納されている happy の値>0.9（max 1）を閾値とした．

「ボタンを押す，リンクを入力する，文字を読む」，「動作と動作の間に顔を触る （自分の癖）」など，被験者ごとに様々なプログラム的要素（処理・動作）に関する記述があった．また，④についても，「自身の癖を発見する」，「統計をとることによって特徴を抽出して，例えば嘘をついている人はこういう動作をしている，スポーツ選手はこういう動作を日々行っている，のように分類する」のように，様々な応用例に関する記述があった．

4.5 動作確認
各ツアーについての動作確認を行った．指定した各画面において，正しく加速度・ジャイロセンサ，及びカメラが機能し，閾値に応じて画面が遷移することを確認した．

5. 評価実験
5.1 実験概要
提案システムを通して，日常生活の行動に含まれるプログラム的要素・処理に気づき，プログラミング的思考を身近に感じられるようになったかを明らかにするため評価実験を行った．実験参加者は 21~23 歳の男女 12 名であり，プログラミング歴は全員 3 年以上の熟達者であった．被験者をプログラミング熟達者に絞った理由は，プログラム的要素・処理を知識として知ってはいるが，日常生活にまでは適用できていない人たちを対象とするためである．手順としては，プログラミング的思考に関する実験であること
は被験者に伏せた上で，3 つのツアーを順番に体験してもらい，終了後にアンケートを実施した．アンケートの評価
項目は，「①アプリの体験を通して，自分の日常の行動の中に無意識にやっている複数の動作がある事に気づくことができた」，「②アプリの体験を通して，日常の行動の中に潜むプログラム的要素（処理）に気づくことができた」，「③3つのツアーを通して気づいたプログラム的要素（処理）をできる限り書いてください（自由記述）」，「④本アプリのように，日常でプログラム的要素（動作，処理）をインタラクティブに体感させる仕組みは何に有用か （自由記述）」，© 2021 Information Processing Society of Japan

図 8 評価実験の結果（項目①②⑤）
5.3 議論評価項目①②⑤に関しては，5 段階評価で 3 以上の比較的高い平均値を得ることができた．しかし，図 4 に示すように最後のフィードバック画面で答えの一部である「無意識にやっている動作や，条件分岐」という言葉を出してしまっていたため，評価実験の結果としてはあまり有意なものではない．評価項目③に関しては，こちらがアプリ中に明示したものを全て書き出せた人はいなかったものの，それ以外の場面で，被験者がそれぞれプログラム的要素・処理に気づいていたことがわかる．特に，「アプリに正常に認識されているかをチェックする条件分岐」や，「無意識のうちに何を無視するのか決める処理」，などは興味深かった．
各々の自室の様子や，プログラミング経験によって，プロ132情報処理学会 インタラクション 2021
IPSJ Interaction 2021

グラム的要素・処理に対する捉え方が異なるものの，普段一連の動作だと捉えているものを分解する考え方としてプログラミング的思考を利用できていた点で，本来の目的を達成できたと言える．評価項目④に関しては，想定していた自己の思考や行動の整理，見直し，の他にも多数の応用例について記述があった．特に，自身の癖を発見する，姿勢改善，職業による動作の特徴抽出などは非常に興味深かった．他にも，身近なプログラムの要素としてプログラミング初心者向けに例示する，などプログラミング教育への応用に関する記述もみられた．また，項目の最後に全体の感想（自由記述）を設けたところ，スマホの加速度センサの精度の悪さに関する記述がみられた．スマホを持って立ち上がる動作は個人差が大きいため，加速度のブレも大きかったことが想定される．

6. まとめと今後の展望
本研究では，プログラミング的思考が日常の行動の分析にも役立つ事やその面白さをより多くの人に知ってもらう

1A06
2021/3/10

https://www.nhk.or.jp/school/sougou/texico/ （参照 2020-12-09）.
[5] ピタゴラスイッチ – NHK.
https://www.nhk.jp/p/pitagora/ts/WLQ76PGNW2/ （参照2020-12-09）.
[6] 大内一成. 実世界に広がる装着型センサを用いた行動センシ
ングとその応用：4．スマートフォンを用いた生活行動認識 家の中も外もスマホで行動認識- 情報処理，Vol54，No.6，pp.578-581 （2013）.
[7] 西村 友洋，樋口 雄大，山口 弘純，東野 輝夫. スマートフォンを活用した屋内環境における混雑センシング. 情報処理学会論文誌，Vol.55，No.12，pp.2511-2523 （2014）.
[8] Linger，Richard C.; Mills，Harlan D.; and Witt，Bernard I.，"Structured Programming: Theory and Practice" （1979）．
The Harlan D．Mills Collection.
[9] スマホの加速度センサを使う - こくぶん研究室.
https://kkblab.com/make/javascript/acc.html （参照 2020-12-13）.
[10] GitHub - auduno/clmtrackr: Javascript library for precise tracking
of facial features via Constrained Local Models.
https://github.com/auduno/clmtrackr （参照 2020-12-13）.
[11] 兜森仁志，安彦智史，長谷川大，佐久田博司. 2015．web カ
メラを用いた瞬き検出による集中度評価．第 77 回全国大会
講演論文集，pp.931-932．
（2015）.
[12] 表情認識で SNOW 的なアプリ - こくぶん研究室.
https://kkblab.com/make/javascript/face.html （参照 2020-12-13）.

事を目指し，簡易な身体行動を自然言語でユーザに指示し,そのプログラム的要素・処理による構成を，自動検出して即時にフィードバックすることで, 日常の行動が Code によって捉え直せる事を直感的に体感させるシステムを実装した．加えて，システムを体験した後日常生活の行動に含まれるプログラム的要素・処理に気づき，プログラミング的思考が身近に感じられたかをユーザスタディを行い検証した．
今後の展望として，ユーザの行動に応じたプログラム的要素・処理の表示の分岐や，より細かい行動の分解，及びバグや例外処理，エラーなどの他のプログラム的要素と行動の対応付けなどが考えられる．具体的には，加速度セン
サ・ジャイロセンサの変化の大きさに応じて，フィードバックのプログラム表現が変わるようにし，閾値を大きく超えた行動に関してはエラーとして表示する，などが考えられる．また，提案手法で題材にしたプログラム的要素は基礎的なものに留まっていたが，より発展的な概念やデータ構造なども取り入れて，将来的には日常生活の様々な物事に応用可能であることを多くの人と共有するとともに，実際のプログラミング的思考の粒度や処理の適切さを考え直す一体験としての価値を高めていく．

参考文献[1] 小学校段階におけるプログラミング教育の在り方について（議論の取りまとめ）.
https://www.mext.go.jp/b_menu/shingi/chukyo/chukyo3/053/siryo/__icsFiles/afieldfile/2016/07/08/1373901_12.pdf（参照 2020-12-13）.
[2] 日比野 光紘，山田 晃嗣. プログラム・ソースコードによる表
現の可能性. 情報処理学会 インタラクション 2019 1A-08.
[3] 50 . Shades of Grey - 文化庁メディア芸術祭 歴代受賞作品
http://archive.j-mediaarts.jp/festival/2015/art/works/19a_50_shades_of_grey/ （参照 2020-12-09）.
[4] テキシコー | NHK for School.

© 2021 Information Processing Society of Japan133