!Touch typing習得環境Shunkuntypeの紹介
!!【概要】
Touch typingはprogrammerに必須のスキルである.裏をかえせば,プログラミングが苦手な学生ほど,このスキルが身についていないことが多い.より気にすべきは,ペアプログラミングにおいて熟練者がついた場合,運指がおかしい初心者の手の動きを不快と感じること.あらゆる作業において型が崩れていると親方が叱咤するのに通じる.所作の基本は,成功体験の集大成なのだから.touch typingは正にプログラマの「箸の上げ下ろし」なんだな.

さらに,運指がスムーズになると単語の綴りを指が覚えるようになるが,これはもう少し先の話.

さて,Touch typingの習得には,ピアノやギターの運指練習とおなじで単純な繰り返しが必要である.したがって飽きやすい.どのようにこの「単純な繰り返し練習」を「おもしろくするか」の一つの提案として,習得管理ツールを開発する.キーは「データの公開」である.

!!【序論】
!!!touch typingのコツ
touch typingの習得においてはスピードよりも運指が重要である.すなわち,スピードはそれほど速くなくても,運指を常に意識しておなじ指でおなじキーを押す癖をつけることが,初心者には必要である.これが後々のスピードアップにつながるだけでなく,
* タイプの正確性
* 視点固定による,疲労度の抑制
につながる.

!!! 非陳述記憶の性質
長期記憶には大きく分けて陳述記憶(declarative memory)と非陳述記憶(non declarative memory) がある.タイピングは自転車の乗り方と同じ,非陳述記憶の中の手続き記憶に分類され,同じ経験を反復することで形成される.いちど形成されると自動的に機能し,長期間保たれるという特徴がある[1].したがって,タッチタイピングの習得には繰り返し練習が有効である.

!!! 繰り返しの工夫,個人の資質から仲間力へ
しかし,繰り返し練習は単調であるためにどうしても継続が難しい.その単調さを克服するためには,個人の資質として,賢明な学習者やマインドセットなどが要望される.しかし,そこから鍛えていたのでは.相当な時間がかかってしまう.より即効性のある手法として,継続を促すために少数のグループによる「あおり」を助長する工夫を,開発したshunkuntypeでは,取り入れている.

!!!e-Learningからactive learningへ
このような単純な知識の習得に対して,e-Learningがいくつも開発されている.ところが,単にe-Learningシステムをやらせるだけでは,学習が継続しないという結果がでている.そこで,e-Learningの個別進捗に管理者がコメントをつけることによって,学習を継続させる方策が練られている.しかし,これによってもあまりいい結果は出ない.

これに対して,今回構築するシステムでは,参加者どうしがお互いの学習履歴,成果を閲覧することを可能にしている.これによりお互いの刺激となるように工夫している.すなわち,管理者による監視ではなく,参加者による「あおり」を学習継続の動機にすることを意図している.

これがactive learningの基本となる.

!!【方法:使用システムの概要】
shunkuntypeはcommand line interfaceによって振る舞いを制御している.

!!!個別練習操作
ユーザがtouch typingの練習を行う環境を提供する.
<<<tcsh
bob% shunkuntype
Shunkuntype says 'Hello world'.
Usage: shunkuntype [options]
    -v, --version                    show program Version.
    -c, --check                      Check speed
    -d, --drill [VAL]                one minute Drill [VAL]
    -h, --history                    view training History
    -p, --plot                       Plot personal data
    -s, --submit                     Submit data to dmz0
        --review [TAG]               Review training, TAGs=html or hike
>>>
詳しい操作法,振る舞いの様子は [[ユーザーズマニュアル|Shunkuntype_manual]]にある.

!!!あおり操作(--review)
あおりのために用意された環境が--reviewである.ユーザがsubmitしたデータを集めて,進捗状況の表,およびグラフを作成し,表示する.--reviewの引数としてhtmlあるいはhikiを指定し,'tmp.html’あるいは'tmp.hiki'を作成.

!!!!reviewの出力例
以下は,hikiでの出力tmp.hikiを貼り付けた状態.work.png,speed.pngが自動生成される.
*Shunkun typer 2016-01-28 08:45:24 +0900
|| ||>speed[sec]||>training
||||init||current||total time[min]||step
||bob||37.68||40.39||57.00||45.00
||donkey||92.40||39.30||153.00||14.00
||fujimoto||90.63||39.81||118.00||22.00
||iwasa||61.01||56.36||360.00||20.00
||kiyohara||45.79||44.52||23.00|| 5.00
||sakaki||32.83||32.72|| 8.00|| 7.00
||sumita||127.51||48.94||152.00||15.00
||tomoyafujioka||101.12||43.66||456.00||34.00
||yoshiokatatsuro||79.59||52.36||526.00||24.00

||![[ |img/work.png]]||![[ |img/speed.png]]
||練習時間||speed結果
グラフの詳しい解説は次節で行う.

!!【結果:試行結果】

!!!継続性
図はそれぞれの被験者の練習の様子をグラフで示している.

||![[ |img/work.png]]
||練習時間の継続状況を示すグラフ.

*横軸に経過時間を日単位で,縦軸に練習時間を分単位でとっている.
*経過時間は現在を0点にして,左方向にマイナスでとっている
*それぞれの被験者の総練習量はそれぞれのグラフの最高位置で示される.
*被験者の立ち上がりがそれぞれ違うのは,実験に参加した時期が違うからである.
*16日経過時にもっとも進んでいるのは,fujiokaで,その次にdonkeyが続いている.
*それ以外の被験者の練習量は総じて低い.

被験者の練習量の推移はそれぞれの被験者の取り組みに対する特徴を示している.すなわち

* 毎日5分程度を継続しておこなう
* 気がついたときにちょこちょこと継続する
* まとめてやるがあまり継続しない.

などである.

!!!スピード改善
図はそれぞれの被験者のタイプspeedの様子をグラフで示している.

||![[ |img/speed.png]]
||タイプスピードの変化を示すグラフ.

* 横軸のスケールは同じ.
* 縦軸には20wordsを打つのに要する時間がプロットされている.
* speedにはtrainingで記録されているデータから計算したデータも含まれている.
* 途中でspeedが300秒などまで極端に落ちた理由は,後述のハンカチ試験を導入したため.
* よりミクロに個人の成績を見れば,speedが徐々に上がっていることが読み取れる.
** 例えば,fujiokaの-70-- -49days, sumitaの-63-- -21, iwasaの-35 -- -21

!!!ハンカチテスト
運指がうまくいっているかを自覚する方法としてハンカチテストが有効である.これは,手の甲の上にハンカチを置いて,手元のキーを見ずに打ち込んでいく方法である.これによって,

* キーを覚えているか
* ホームポジションへ帰っているか
* それぞれ決まった指でキーを押さえているか

のチェックができる.特に単なるspeed計測では50秒程度まで短縮している被験者も,ハンカチテストでは300秒もかかっている場合があった.

ただし,初心者はまったくkey配置を記憶できていないため,key配置表を用意しておく必要がある.これはそのようにspeedプログラムを改修した(2015/12/02).

!!【考察:参加者の意識調査】
参加者に対してグループヒアリングを行った[2].出てきた意見は次の通りである.

!!!スキルの定着度合い
touch typingのスキルの定着について聞いたところ,
*ホームポジションに戻す癖がついた
*運指がバラバラであったのが,5本指で打つようになった.
*手元を見ていた
*普段の生活での打ち方が変わった
*画面と本を見るだけで打てるようになった
*パソコンでしゃべるときが速くなった
*フリップ入力よりは圧倒的に速い
**フリップの速さは予測が効いているのかも
*日本語は打てていたが,英語はダメだったのが改善した
* カッコとかの位置も覚えた
* 左手一本で全領域を打っていたのが全部の指で打てるようになった.
* 変な癖がなくなった.

!!!「あおり」は効いたか?
speedの成績や練習時間を共有する「あおり」の効果について質問した.
* YはSに負けたくないのでがんばった.
* みんなのspeedをみて,いままで普通と思っていた入力速度に焦りが出た.自覚した.
* Dは練習をやり始めたらずっとやるので,F1もやらなと思った.
* 淡々としたんが好きで,おもしろい.レベル上げに通じる.
* 図で出るとちょっと意識する
* F2は煽る側で優越感を感じて...

!!!習慣になったか?
練習が習慣として定着したかと問うてみた.
* つかなんだ
* クリアしたら練習しない
* time計測の結果を見てあせった
* パソコン開いたらまずやるという習慣がついた

!!!不足している機能
不足している機能や,不満な点を指摘してもらった.
* ハンカチはよくない.余分な感覚があるから.
** 黒塗りのキーボードカバーはいいかも
*speedに普通の単語をもっと増やす
** 普通の単語はworkとかtableは変数によく使われるのでいいかも.
*日本語入力の練習もできるように.
** 将来プログラマーになるとは限らないので,練習の動機があがる.
*speedの単語には,”[.{}()[]=_"なども入れるべき
*ノルマを課すようにしては.
** 図に理想線とか,目標線とか,ガイドラインをいれては?
* speedをタイムアップ方式にしてもいいかも.1分試験
* レース完走方式にしてもいいかも.
* レベル上げ.装備をつけるなんかも...

!!【結論】
* 時間はかかったが参加者全員が20 words/45secsをクリアした.
** ただし,「クリアできなんだら卒研指導しない」というムチが働いた可能性は大きい.
* shunkuntypeはその後gemによるcommand line interfaceアプリケーションとして完成.
* web化が必要かもしれない.

その場合には,

* processingによるGUI
* 登録グループによる競争の実現
** 内部の煽りだけでなく,仮想敵を作って「くまさんチーム対うさぎさんチーム」で練習をあおる.
* dbへのdata移行
** sshより安全なデータ収集
** 平文テキスト修正によるチートをなくす

などを考慮して,Railsを用いるのかsinatoraなどでベタで作るのかの検討が必要.

!!付録
# [[マニュアル|Shunkuntype_manual]]
# [[gem化メモ|Shunkuntype_gemizing]]
# [[初期版のコード解説|Shunkuntype_Coding]]

!!参考資料

# 「陳述記憶・非陳述記憶」, 鈴木 麻希, 藤井 俊勝, 脳科学辞典,https://bsd.neuroinf.jp/wiki/陳述記憶・非陳述記憶 (2016/1/28アクセス).
# [[グループヒアリングメモ|Shunkuntype_GroupHearing_20160128.pdf]]