-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathmemo.html
2061 lines (1819 loc) · 87.1 KB
/
memo.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta name="author" content="YUSE Yosihiro">
<meta name="description" content="eelll/JS">
<meta name="keywords" content="T-Code,TUT-Code,EELLL,漢直,練習,連習">
<title>eelll/JS memo</title>
<link rel="stylesheet" href="css/tift.css" charset="UTF-8">
<link rel="stylesheet" href="css/eljs.css" charset="UTF-8">
<link rel="shortcut icon" href="img/tift.ico" type="image/vnd.microsoft.icon">
<link rel="icon" href="img/tift.png" type="image/png">
<!-- ============================================================= -->
<script type="text/javascript" src="js/utils.js"></script>
<style type="text/css">
<!--
pre.helpsample .st1 { color: red; }
pre.helpsample .st2 { background-color: #77cc99; }
pre.helpsample .blk { background-color: #cceedd; }
pre.helpsample .em1 { font-weight: bold; color: #ff6666; }
pre.helpsample .em2 { font-weight: bold; color: #669966; }
span.code { font-family: monospace; font-weight: bold; }
.helpsample,
.helpsample_left {
background-color: #f0f4ff;
float: left;
padding: 4px;
margin-right: 8px;
margin-top: 0px;
border: solid 1px #607080;
}
table.lcs_samp {
border: solid 1px Black;
caption-side: bottom;
}
table.lcs_samp th {
background-color: #e0e8ff;
}
table.lcs_samp td {
font-family: monospace;
padding-left: .5em;
padding-right: .5em;
}
-->
</style>
</head>
<!-- ============================================================= -->
<body>
<div class="container">
<h1><a name="top" href="#top">eelll/JS memo</a></h1>
<p>
eelll/JS や、漢字直接入力 (主に練習方法について) に関する、いろいろな覚え書きです。
</p>
<!-- ============================================================= -->
<h2><a name="sec_code_help" href="#sec_code_help">文字ヘルプ (ヒント)</a></h2>
<p>
T-Code や TUT-Code などの、
<dfn>無想式直接入力</dfn>
では、コードの表現方法 (文字ヘルプ)
の読み方を覚えることが、直接入力を修得するための第一歩です。まずは、
<dfn>打鍵図</dfn> の読み方を覚えましょう。
</p>
<h3><a name="subsec_dot_expression" href="#subsec_dot_expression">打鍵図</a></h3>
<div class="helpsample">
<span class="dothelp"
><span class="ch"
>漢</span
><span class="st" title="l 4"
><img src="img/0/0.png" alt="0/0" width="100" height="40" class="base"
><img src="img/1/28.png" alt="1/28" width="100" height="40" class="llap100"
><img src="img/2/03.png" alt="2/03" width="100" height="40" class="llap100"
></span
></span>
</div>
<p>
<a href="http://openlab.jp/tcode/soft.html#software">tc2</a>
や
<a href="http://openlab.jp/tcode/soft.html#doc">橋田表</a>
など、 T-Code でよく用いられている図示で、
キーボードを模式的に表す図を用いて、空間的にコードを表現する方法です。
「ドット表現」とも呼ばれます。
</p>
<p>
<img src="img/kbd_dotted.png" alt="打鍵図の「・」に対応するキーボードのキー"
title="打鍵図の「・」に対応するキーボードのキー"
width="283" height="103" style="float: right; margin: 0px 0px 8px 8px;">
打鍵図では、「・」が、キーボード上の、左右の手の四指のホームポジションと、
その上下の段のキー
(右図のキーボードの青く塗られたキー)
を示します。
最上段の数字キーや、人さし指をキーボード中央側にずらして打つキーは空白です。
このような図で、「●」で第一打鍵の位置を、「○」で第二打鍵の位置を示します。
</p>
<p style="clear: both;">
したがって、はじめ図の例は、QWERTY 配列での「<span class="code">l4</span>」、
Dvorak 配列での「<span class="code">n4</span>」というコードを表しています。
</p>
<p>
第一打と第二打の位置が同じキーの場合
(ここでは「<dfn>二重打鍵</dfn>」や「<dfn>重打</dfn>」と呼ぶ)
は「◎」で表わします。
TUT-Code などの第三打鍵は「△」、第四打鍵は「◇」となります。
TUT 記号などで使われるスペースキーは表記できません。
</p>
<script type="text/javascript">
<!--
div_detail_beg('記号の凡例と覚え方');
// -->
</script>
<div class="detail">
<p>
打鍵の順序を示す記号は、
<a href="http://www.sato.kuis.kyoto-u.ac.jp/~yuse/tcode/kw/"
>漢直Win 1.27*</a> の文字ヘルプと共通で、
<a href="http://openlab.jp/tcode/soft.html#software">tc2</a> ともほぼ同じです
(tc2 では、三重打鍵にも「◎」を使っていたかもしれません)。
</p>
<ul>
<li> ● … 第 1 打鍵 → 囲碁などと同じで、黒が先、白が後
<li> ○ … 第 2 打鍵 → (同上)
<li> △ … 第 3 打鍵 → 「三」角形
<li> ◇ … 第 4 打鍵 → 「四」角形
<li> ◎ … 二重打鍵 → 「二重」丸
<li> ☆ … 三重打鍵、または、(二重打鍵が二つある場合の) 二つめの二重打鍵
→ (??)
</ul>
<p>
歴史的には、はじめは「○」が第 1 打鍵、「●」が第 2 打鍵を表していたが、
のちに「● → ○」の順に変更されたようです
<cite>[tcode-ml:243,988]</cite>。
</p>
</div>
<script type="text/javascript">
<!--
div_detail_end();
// -->
</script>
<script type="text/javascript">
<!--
div_detail_beg('Try-Code, TT-Code');
// -->
</script>
<div class="detail">
<p>
T-Code を拡張した Try-Code と TT-Code は、いずれも、特定のキーを T-Code
の通常の二打鍵の前に打鍵することによって、一時的に表を切り換える拡張方式です。
Try-Code では <span class="code">Space</span> によって
<dfn>連想表</dfn> と呼ばれる拡張表に切り換え、
TT-Code では <span class="code">jf</span> と <span class="code">fj</span>
(QWERTY 配列) または
<span class="code">hu</span> と <span class="code">uh</span>
(Dvorak 配列)
の二種類のキー列によって、それぞれ <dfn>右表</dfn> と <dfn>左表</dfn>
と呼ばれる二種類の拡張表に切り換えて入力します。
</p>
<p>
このような拡張用の特定のキー (またはキー列)
を、ここでは <dfn>prefix</dfn> と呼ぶことにします。
</p>
<p>
Try-Code や TT-Code などの prefix 拡張型の T-Code では、
文字ヘルプを、 prefix を取り除いた二打鍵
(ここでは順に <dfn>初打</dfn> と <dfn>終打</dfn> と呼ぶ)
のみを、prefix によって異なる特別な記号で表示します。
</p>
<h4><a name="subsubsec_try" href="#subsubsec_try">Try-Code</a></h4>
<div class="helpsample_left">
<div>
<span class="dothelp"
><span class="ch"
>括</span
><span class="st" title="■ d d"
><img src="img/0/0.png" alt="0/0" width="100" height="40" class="base"
><img src="img/aw/22.png" alt="aw/22" width="100" height="40" class="llap100"
></span
></span>
</div>
<div>
<span class="dothelp"
><span class="ch"
>弧</span
><span class="st" title="■ q 4"
><img src="img/0/0.png" alt="0/0" width="100" height="40" class="base"
><img src="img/a1/10.png" alt="a1/10" width="100" height="40" class="llap100"
><img src="img/a2/03.png" alt="a2/03" width="100" height="40" class="llap100"
></span
></span>
</div>
</div>
<p>
Try-Code は、
「<span class="code">Space</span> + <span class="code">??</span>」
という三打鍵で、連想表から文字を入力しますが、
このとき、連想表の初打を「■」で、終打を「□」で表わします。
重打の場合は「回」となります。
</p>
<p>
たとえば、図の例では、「括」は
「<span class="code">Space</span> + <span class="code">dd</span>」 (QWERTY 配列)
または
「<span class="code">Space</span> + <span class="code">ee</span>」(Dvorak 配列)、
「弧」は
「<span class="code">Space</span> + <span class="code">q4</span>」(QWERTY 配列)
または
「<span class="code">Space</span> + <span class="code">'4</span>」(Dvorak 配列)
というコードであることを示しています。
</p>
<div style="clear: both;"></div>
<h4><a name="subsubsec_tt" href="#subsubsec_tt">TT-Code</a></h4>
<div class="helpsample_left">
<div>
<span class="dothelp"
><span class="ch"
>頂</span
><span class="st" title="▲ h s"
><img src="img/0/0.png" alt="0/0" width="100" height="40" class="base"
><img src="img/r1/25.png" alt="r1/25" width="100" height="40" class="llap100"
><img src="img/r2/21.png" alt="r2/21" width="100" height="40" class="llap100"
></span
></span>
</div>
<div>
<span class="dothelp"
><span class="ch"
>戴</span
><span class="st" title="▽ u u"
><img src="img/0/0.png" alt="0/0" width="100" height="40" class="base"
><img src="img/lw/16.png" alt="lw/16" width="100" height="40" class="llap100"
></span
></span>
</div>
</div>
<p>
TT-Code では、
「<span class="code">jf</span> + <span class="code">??</span>」(QWERTY 配列)
または
「<span class="code">hu</span> + <span class="code">??</span>」(Dvorak 配列)
で右表から文字を入力し、
「<span class="code">fj</span> + <span class="code">??</span>」(QWERTY 配列)
または
「<span class="code">uh</span> + <span class="code">??</span>」(Dvorak 配列)
で左表から文字を入力しますが、
このとき、右表と左表の初打を、それぞれ「▲」と「▽」で表わします。
終打は、右表、左表ともに「○」です。
また、右表と左表の重打は、初打と同じ記号で、それぞれ「▲」と「▽」と表します。
</p>
<p>
たとえば、図の例では、「頂」は
「<span class="code">jf</span> + <span class="code">hs</span>」(QWERTY 配列)
または
「<span class="code">hu</span> + <span class="code">do</span>」(Dvorak 配列)、
「戴」は
「<span class="code">fj</span> + <span class="code">uu</span>」(QWERTY 配列)
または
「<span class="code">uh</span> + <span class="code">gg</span>」(Dvorak 配列)
というコードであることを示しています。
</p>
<div style="clear: both;"></div>
</div>
<script type="text/javascript">
<!--
div_detail_end();
// -->
</script>
<div style="clear: left;"></div>
<h3><a name="subsec_alnum_expression" href="#subsec_alnum_expression">英字</a></h3>
<div class="helpsample">
<span class="alnum"
><span class="ch">漢</span
><span class="st" title="l 4">l4</span></span>
<span class="alnum"
><span class="ch">字</span
><span class="st" title="z /">z/</span></span>
</div>
<p>
素直に、キーボードのキートップの英字
(<span class="code">a</span>—<span class="code">z</span>
<span class="code">0</span>—<span class="code">9</span>
<span class="code">;</span>
<span class="code">,</span>
<span class="code">.</span>
<span class="code">/</span>)
でコードを表す表記法です。
TUT-Code で比較的よく用いられます
(たとえば、 TUT-Code の本家で配布されている、標準的な漢字テキスト
<a href="http://www.crew.sfc.keio.ac.jp/~chk/data/kanji_a1.txt">kanji_a1.txt</a>,
練習プログラム
<a href="http://web.archive.org/web/*/http://web.sfc.keio.ac.jp/~n04511rt/tut/sfctype/">SFCxTYPE</a>,
検索プログラム
<a href="http://web.archive.org/web/*/http://web.sfc.keio.ac.jp/~n04511rt/tut/tutsearch/">TUTSearch</a>
のいずれでも、この表示法が使われています)。
</p>
<script type="text/javascript">
<!--
div_detail_beg('Try-Code, TT-Code');
// -->
</script>
<div class="detail">
<p>
Try-Code や TT-Code などの、prefix 拡張型の T-Code では、
prefix を示す記号に続けて、
prefix を取り除いた二打鍵 (初打、終打) を表記して表します。
</p>
<p>
たとえば、
Try-Code の『括弧』は
「<span class="code">■dd ■q4</span>」(QWERTY 配列)
または
「<span class="code">■ee ■'4</span>」(Dvorak 配列)、
TT-Code の『頂戴』は
「<span class="code">▲hs ▽uu</span>」(QWERTY 配列)
または
「<span class="code">▲do ▽gg</span>」(Dvorak 配列)
となります。
(Try-Code では、連想による拡張という設計の哲学を考えると、
「<span class="code">■活 ■孤</span>」と書くのが、あるべき姿かもしれません)
</p>
</div>
<script type="text/javascript">
<!--
div_detail_end();
// -->
</script>
<div style="clear: left;"></div>
<h3><a name="subsec_hasida_mnemonic" href="#subsec_hasida_mnemonic">橋田ニモニック</a></h3>
<p>
<span style="float: left; margin: 0px 8px 8px 0px;">
<img src="img/kbd_hasidamnem.png" alt="橋田ニモニック鍵盤"
title="橋田ニモニック鍵盤" width="283" height="103">
</span>
図のように、
T-Code で用いる
40 キーに割りつけたひらがなでコードを表す方式です
<cite>[tcode-ml:2006,2012]</cite>。
</p>
<p>
橋田ニモニックでは、たとえば、
T-Code の『漢』は「<span class="code">てぎ</span>」、
TUT-Code の『漢』は「<span class="code">さひじ</span>」となります。
</p>
<p style="clear: both;">
キーボード上の各キーと、かなの対応は、次のとおり。
</p>
<ul>
<li> 最上段は「か行」、上段は「さ行」、中段は「た行」、下段は「は行」
<li> 人さし指は「あ・い段」、中指は「う段」、薬指は「え段」、小指は「お段」
<li> 右手は清音、左手は濁音
</ul>
<p>
なお、もともとの橋田ニモニックにはスペースキーへの割り当てはありませんが、
eelll/JS では、 TUT-Code の記号などを配慮して、
スペースキーには「ん」を割り当てています。
</p>
<h3><a name="subsec_stroke_table" href="#subsec_stroke_table">ストローク表 (木を見て森を見る表)</a></h3>
<pre class="helpsample" title="RL のストローク表"
style="line-height: 100%; font-size: 10pt;">
<span class="em1">R</span><span class="em2">L</span>
<span class="blk">・・・・・</span> <span class="blk">・・・・・</span> <span class="blk">・・・・・</span> <span class="st2">・・・・・</span> <span class="blk">・・・・・</span>
<span class="blk">請境系探象</span> <span class="blk">尚賀岸責漁</span> <span class="blk">舎喜幹丘糖</span> <span class="st2">布苦圧恵固</span> <span class="blk">姿絶密秘押</span>
<span class="blk">盛革突温捕</span> <span class="blk">益援周域荒</span> <span class="blk">康徒景処ぜ</span> <span class="st2">邦舞雑<span class="st1">漢</span>緊</span> <span class="blk">衆節杉肉除</span>
<span class="blk">依繊借須訳</span> <span class="blk">織父枚乱香</span> <span class="blk">譲ヘ模降走</span> <span class="st2">激干彦均又</span> <span class="blk">測血散笑弁</span>
<span class="blk">酸昼炭稲湯</span> <span class="blk">貿捜異隣旧</span> <span class="blk">攻焼闘奈夕</span> <span class="blk">盤帯易速拡</span> <span class="blk">汽換延雪互</span>
<span class="blk">歩回務島開</span> <span class="blk">キせ区百木</span> <span class="blk">や出タ手保</span> <span class="blk">コ山者発立</span> <span class="blk">ナ金マ和女</span>
<span class="blk">給員ど代レ</span> <span class="blk">分よル千ア</span> <span class="blk">7か(トれ</span> <span class="blk">きっ日国二</span> <span class="blk">上く8え年</span>
<span class="blk">相家的対歴</span> <span class="blk">付プばュ作</span> <span class="blk">内工八テ見</span> <span class="blk">九名川機チ</span> <span class="blk">サ建パ第入</span>
<span class="blk">桜瀬鳥催障</span> <span class="blk">典博筋忠乳</span> <span class="blk">採謡希仏察</span> <span class="blk">君純副盟標</span> <span class="blk">犯余堀肩療</span>
<span class="blk">中スもお定</span> <span class="blk">わラ東生ろ</span> <span class="blk">う4)十リ</span> <span class="blk">あこ6学月</span> <span class="blk">本さら高シ</span>
<span class="blk">3と〇てる</span> <span class="blk">ーした一が</span> <span class="blk">い、の51</span> <span class="blk">。‐0・2</span> <span class="blk">ではになを</span>
<span class="blk">ッ人三京ち</span> <span class="blk">ロク万方フ</span> <span class="blk">んまンつ四</span> <span class="blk">けイす電地</span> <span class="blk">業時「長み</span>
<span class="blk">呼幅歓功盗</span> <span class="blk">紀破郡抗幡</span> <span class="blk">房績識属衣</span> <span class="blk">去疑ぢ綿離</span> <span class="blk">秒範核影麻</span>
<span class="blk">店持町所ほ</span> <span class="blk">全じ自議明</span> <span class="blk">バ部六経動</span> <span class="blk">後間場ニ産</span> <span class="blk">問ム七住北</span>
<span class="blk">行ド円小ジ</span> <span class="blk">通カ社野同</span> <span class="blk">だり―め大</span> <span class="blk">新」9子五</span> <span class="blk">事田会前そ</span>
<span class="blk">海道ず西げ</span> <span class="blk">当理メウグ</span> <span class="blk">不合面政オ</span> <span class="blk">委化ビ目市</span> <span class="blk">気売下都株</span>
</pre>
<p>
<a href="http://openlab.jp/tcode/soft.html#software">tc2 や EELLL, DOGGG</a>
などで、打鍵図とともに T-Code でよく用いられる図示です。
ストローク表は RL, RR, LL, LR の 4 つの部分表に分かれています。
各部分表の中では、大きく 5×4 にブロックが並び、
各ブロックの中で、やはり 5×4 に文字が並んでいいます。
</p>
<p>
部分表とブロックは、どちらも、
キーボードの右手側または左手側の半面を表しています。
文字がブロックの中でどこにあるかが、その文字の第一打鍵の位置を示し、
ブロックが部分表全体の中でどこにあるかが、第二打鍵の位置を示します。
</p>
<p style="clear: both;">
図は、ストローク表のうちの RL 表です。
この表から、たとえば『漢』のコードは、次のように読みとることができます。
まず、表の左上に「<em>RL</em>」とあることから、
「<em>第一打鍵が右手、第二打鍵が左手</em>」(Right to Left)
であることが分かります。
次に、『漢』が、5×4 ブロックの、<em>中段、左端から 4 列目</em>にあることから、
第一打はキーボード右手側、<em>中段、薬指</em>となります。
また、『漢』を含むブロックが、表全体の、
<em>最上段、右端から 2 列目</em>にあることから、
第二打はキーボード左手側、<em>最上段、人さし指</em>となります。
結局、『漢』の打ち方は、
「右手・中段・薬指 → 左手・最上段・人さし指」となりることが分かります。
</p>
<p>
このように、
表の内側から外側へと読ませることによって、コードを表現することから、
ストローク表は「木を見て森を見る」表とも呼ばれます。
</p>
<h3><a name="subsec_help_refs" href="#subsec_help_refs">References</a></h3>
<dl class="ref">
<dt> [tcode-ml:988]
<dd> 前田薫,
filled circle vs. white circle,
1996-02-29.
<dd> →
<q>第一打鍵を○、第二打鍵を●としたのは、単にJIS文字コード
順とか、そういういいかげんな基準で決めてしまったのですが、
実際に表を使うときには色が濃い方が目立つので、今は●を第
一打鍵としています。最初に認知科学の専門家に相談していれ
ばこんなことにならなかったのでしょうけど</q>
<dd> →
<q>私はぬりつぶしてある●をパッと見つけ、それを打っている間に見つか
りにくい○をさがします。第一打鍵を打ち終えるころには第二打鍵が見
つかっているという感じです。</q>
<dt> [tcode-ml:2006]
<dd> 橋田 (HASIDA Koiti),
[tcode-ml:2006] Re: Mnemonic,
2001-11-09.
<dd> →
<q>ニモーニックになっていれば忘れても簡単に思い出せて習得のコストが小さくなる可能性は大いにあると思います。</q>,
<dd> →
<q>というわけで提案ですが、下のように40個のキーにひらがなを割り当ててニモーニックを定義して使ってみるというのはどうでしょうか。</q>
<dt> [tcode-ml:2012]
<dd> 橋田 (HASIDA Koiti),
[tcode-ml:2012] Re: Mnemonic,
2001-11-09.
<dd> →
<q>仮名と指の位置をシステマティックに対応付けている</q>
<dt> [tcode-ml:2033]
<dd> 北嶋暁,
[tcode-ml:2033] Re: tc-2.2pre2,
2001-12-13.
<dd> →
tc-2.2pre2 で
<q>橋田さんが提案されたニーモニックでヘルプを表示する設定</q>
</dl>
<!-- ============================================================= -->
<h2><a name="sec_lt" href="#sec_lt">eelll/JS の練習テキスト</a></h2>
<p>
eelll/JS に組みこんでいる練習テキストについて記します。
</p>
<h3><a name="subsec_lt_eellltxt" href="#subsec_lt_eellltxt">EELLLTXT</a></h3>
<ul>
<li> T-Code 用の標準テキスト。
T-Code の基本文字 (現在は 1353 文字) のうち、約 1200 字をカバーする。
「うなぎぎぎてきすと」と読む。
<li> 出典は <a href="http://openlab.jp/tcode/soft.html">tc 2.3.1</a>
の EELLLTXT
(<a href="http://openlab.jp/tcode/soft.html">DOGGG</a>
の練習テキストもほぼ同じ内容)。
<li> eelll/JS に移植する際に、次の変更を行った。
<ul>
<li> 語の区切りの半角空白 2 つを 1 つにした
(Lesson 21–25, 211, 454)。
<li> Lesson 600 番台の熟語レッスンの語の区切りの『・』を半角空白にした。
<br>
→
語の区切りが、半角空白 2 つや『・』だったのは、
<a href="http://openlab.jp/tcode/soft.html">DOGGG</a>
の LCS アルゴリズムの仕様
(文字の区切りが 2 バイトごとになければならない)
に合わせたものではないかと思われる。
<li> Lesson-chars (各レッスンの最初に、ヒントが表示される文字)
を適当に (新出文字だけに) 絞りこんだ。
<br>
→
tc 2.3.1 の EELLLTXT では、各レッスンに出現する全文字を、
機械的に拾い出して Lesson-chars としているようだが、
対象の文字数が多くなりすぎて、
かえってヘルプ表から索字するのが困難になっているように思われる。
</ul>
<li> 現在 680 課まであるが、
番号は次のように、レッスン内容で分類して振られており、
実際の課数は 197 課。
<ul>
<li> 000 番台・100 番台 → かな・記号・数字・『年月日時分円人』など
<li> 200 番台 → 漢字 (RL)
<li> 300 番台 → 漢字 (RR)
<li> 400 番台 → 漢字 (LL)
<li> 500 番台 → 漢字 (LR)
<li> 600 番台 → 漢字 (RL!・LR!)
</ul>
<li> →
各レッスンの内容の詳細は
<a href="eellltxtindex.html">EELLLTXT のもくじ</a>
を参照。
<li> 足りないと思われるレッスンがある。
ひらがなの『ゆ』、RR・LL・LR のかたかな、RR!・LL! の漢字、など。
復習用のレッスンも、途中でとぎれていると思われるところがある。
<li> いくつかのレッスンが長すぎて、練習者にとってつらい (たとえば 213) ので、
短く分割した方がいいのではないだろうか。
</ul>
<h3><a name="subsec_lt_kanji_a1" href="#subsec_lt_kanji_a1">kanji_a1.txt</a></h3>
<ul>
<li> TUT-Code の漢字の標準的なテキスト。
TUT-Code の二打鍵の漢字 (725 字) のうち、
約 320 字を全 60 課でカバーする。
<li> 出典: 大岩千穂子さんの
<a href="http://web.archive.org/web/*/http://www.crew.sfc.keio.ac.jp/~chk/">以前の TUT-code Home Page</a>
||
<a href="http://www.crew.sfc.keio.ac.jp/~chk/index-old.html">過去の TUT-code Home Page</a>
の
<a href="http://www.crew.sfc.keio.ac.jp/~chk/shutoku.html">習得と練習テキスト</a>
の
<a href="http://www.crew.sfc.keio.ac.jp/~chk/data/kanji_a1.txt">kanji_a1.txt</a>
(漢字練習テキスト A1)。
<li> 「漢字練習テキスト A2」は未完成とのこと
<cite>[tut-code:0000398]</cite>。
<li> <a href="http://openlab.jp/tcode/soft.html">tc 2.3.1</a>
の EELLL にも、 EELLLTXT.tut として移植されている。
<li> 原本にある誤植を修正した。
<br>
[第 38 課]
「科学の進歩はどとまるところを知らない。」
→
「科学の進歩はとどまるところを知らない。」
<br>
[第 60 課]
(320+7)
→
(320+0)
</ul>
<h3><a name="subsec_lt_eellltxt_tt" href="#subsec_lt_eellltxt_tt">EELLLTXT-ttr, EELLLTXT-ttl</a></h3>
<ul>
<li> TT-Code の拡張部分の文字を対象に、
筆者 (ゆせ) が pubdic などから熟語を拾って作ったテキスト。
<li> 出典:
安宅さんが
<a href="http://web.archive.org/web/*/http://pop-club.hp.infoseek.co.jp/emacs/tcode/">The code name is T.</a>
で公開してくださっている
<a href="http://web.archive.org/web/*/http://pop-club.hp.infoseek.co.jp/emacs/tcode/EELLLTXT.tt.gz">EELLLTXT.tt.gz</a>。
<li> EELLLTXT.tt.gz は、
新出文字を覚えるためのランダムレッスン (1000 番台) と、
復習用の熟語レッスン (2000 番台) を含む。
eelll/JS では、ランダムレッスンを割愛し、熟語レッスンを加筆した。
特に左表の練習のために、EELLLTXT-ttl (3000 番台) を新設した。
<li> 内容は、T-Code で外字扱いになっている文字のうち、
常用漢字約 830 字 (EELLLTXT-ttr)、および、
その他の第一水準の漢字約 980 字 (EELLLTXT-ttl)。
語の順序はランダム。
EELLLTXT と EELLLTXT-ttr までをマスターすれば、
日常的な文章は、ほぼ直接入力だけで足りるようになるようだ
(人名や地名を除く)。
EELLLTXT-ttl の内容に関しては、
TT-Code 左表の文字すべてを習得するというのは、
あまり現実的ではなく、再検討の余地あり。
<li> EELLLTXT-ttr は、T-Code で外字となっている常用漢字を網羅しているので、
Try-Code の拡張部分の復習にも適しているのではないかと思う。
</ul>
<h3><a href="#subsec_lt_common2136" name="subsec_lt_common2136">常用漢字</a></h3>
<ul>
<li> 常用漢字 2136 文字を対象にした汎用テキスト。
<li> 出典: オリジナル。
<li> 「常用漢字 (学年・級別)」は、常用漢字 2136
文字を、配当学年順に練習するテキスト。
1 課ごとに 5 文字ずつ新出漢字を増やしていく。
各配当学年内の漢字の出題順は、おおむね漢字の読みの五十音順。全 430 課。
<li> 「常用漢字 (復習)」も、同様に 430 課で常用漢字 2136
文字を練習するが、こちらは最初から全ての漢字が出題される。
「常用漢字 (学年・級別)」を一通り練習し終えた人向け。
</ul>
<h3><a name="subsec_lt_refs" href="#subsec_lt_refs">Reference</a></h3>
<dl class="ref">
<dt> [tut-code:0000398]
<dd> 大岩千穂子,
[tut-code:0000398] Re: 漢字練習テキストA2,
2001-01-26.
<dd> →
<q>A1(320字まで)は、1課から順番にやって全部覚えることを前提に作って
あります。従って既習漢字もできるだけバランスよく出現するように配慮し
たつもりです。</q>
<dd> →
<q>続きのA2ですが、作りかけで2年も放置しておりました・・。</q>,
<q>今見たら、150字分ぐらい作ってありました。</q>
</dl>
<!-- ============================================================= -->
<h2><a name="sec_howto_lesson" href="#sec_howto_lesson">練習の方法について</a></h2>
<p>
練習のやり方に関するノウハウを集めてまとめてみたい。
</p>
<h3><a name="subsec_tc2_info" href="#subsec_tc2_info">tc2 info (tc.info)</a></h3>
<p>
<a href="http://openlab.jp/tcode/soft.html">tc 2.3.1</a>
のマニュアル tc.info の [Tコードの練習]-[練習のヒント] から。
</p>
<blockquote
style="border: solid 1px #80b0e0; padding: 1em; background-color: #f0f8ff;">
<p style="border-bottom-style: double; font-weight: bold; font-size: large;"
>練習のヒント</p>
<p>
練習は基本的にはテキストの順に行えばよいのですが、ひらがなをだいたい
覚えたら、数字やカタカナなどは後まわしにして、漢字に進んでも構いません。
漢字が簡単に入力できることを早目に体験しておくと、練習意欲が増すかもし
れません。
</p>
<p>さて、練習にあたって心がけておくとよい点をあげておきましょう。</p>
<dl>
<dt> 指の動きでコード(キーの入力順)を覚える。
<dd> <p>例えば「kd」で「の」という覚え方ではなく、「右手中指→左手中指」
の動きで「の」というように覚えましょう。</p>
<dt> 入力はリズムよく。
<dd> <p>正確に打つことも大事ですが、一定のリズムで入力することがもっと重
要です。EELLLでは、1行の入力が終わるまで入力した文字列が画面上に
現れないようになっていますが、それはリズムを重視した練習を行いや
すくするためです。</p>
<dt> 練習は継続的に。
<dd> <p>毎日決まった量(時間)を練習しましょう。なお、1日に2時間以上練習し
ても効果は上がらないそうです。30分とか1時間とか、時間を決めて効率
的に練習しましょう。</p>
<dt> 覚えたはずの字のコードを忘れても気にしない。
<dd> <p>人間誰でも忘れるもの。忘れたらまた覚えればいいだけのことです。</p>
</dl>
</blockquote>
<h3><a name="subsec_ML" href="#subsec_ML">T-Code ML</a></h3>
<p>
T-Code メーリングリストの過去記事から
(<cite>[tcode-ml:294]</cite>, <cite>[tcode-ml:453]</cite>,
<cite>[tcode-ml:1645]</cite>)。
</p>
<ul>
<li> 速度よりも正確さを重視すること。
エラーレート 5% 未満が目安。
</li>
<li> 速度は遅くてもリズムを一定に保つほうがいい。
</li>
<li> EELLLTXT で練習する場合、
10 ~ 20 のレッスンを平行してやるとよい。
</li>
<li> (T-Code の場合) ひらがな・かたかな・数字をすべてマスターする前に、
漢字の練習を開始した方がよい。
</li>
</ul>
<h3><a name="subsec_ref" href="#subsec_ref">References</a></h3>
<dl class="ref">
<dt> [tcode-ml:294]
<dd> 前田薫,
DOGGG vs. business,
tcode-ml:294,
1992-05-11
<dd> →
<q>「実務で使いながら覚える」レベルまで行くのが結構大変</q>,
<dd> <q>使いながら覚えるのをあきらめて、使うときは使う、習うときは習うというふうにしては</q>,
<dd> テキストの <q>内容を気にすると効率が下がるといわれています</q>,
<dd> <q>私の経験から言うと速度より誤
打鍵に重点を置いたほうがいいと思います。それに速度は遅く
てもいいからリズムが一定のほうがいいですね。「タタッタタッ
タタッタタッ」という 250ms. を目指すよりは「タンタンタン
タン」という 350ms. を目指してください。</q>
<dt> [tcode-ml:453]
<dd> 前田薫,
My semi-certain strokes,
tcode-ml:453,
1993-09-14.
<dd> →
<q>ゆっくりでもいいか
ら、同じリズムでミスなく打てることが大事です。エラーレー
トが5%を切らないうちは、スピードを遅くしてでも正確に打鍵
するよう心がけましょう。</q>
<dt> [tcode-ml:1645]
<dd> 前田薫,
[tcode-ml:1645] Re: typing speed with kana-kanji henkan,
2000-05-09.
<dd> →
<q>doggg/EELLLの練習テキストを使う場合のコツですが、10~20のレッス
ンを平行してやるとよいです。ひらがなを卒業する前に漢字の練習を開
始した方がよい、と言いかえた方がいいかもしれません。</q>
<dd> →
<q>数字のレッスンが苦痛になることはよく知られて
いますので、ほどほどにサボりましょう。早めに漢字に突入した方が
T-Codeのうれしさがわかり、情熱が上がります。</q>
</dl>
<!-- ============================================================= -->
<h2><a name="sec_LCS" href="#sec_LCS">誤字判定アルゴリズムについて</a></h2>
<p>
T-Code や TUT-Code の練習プログラムに限らず、
一般のタイピング練習プログラムにおいては、
テキストの問題文と練習者の入力文を比較して、
入力ミスを見つけ出す誤字判定アルゴリズムはたいへん重要なものです。
ここでは、 eelll/JS の誤字判定アルゴリズムについて、
少しだけ触れておこうと思います。
</p>
<h3><a name="subsec_LCS" href="#subsec_LCS">誤字判定の意義と難しさ</a></h3>
<p>
DOGGG や EELLL は、他の多くのタイプ練習プログラムと異なり、
練習者のタイプミスをその場で指摘したり訂正を求めたりせず、
かわりに一行の入力が終わるごとに、まとめてエラーを示すという方法をとっています。
これは、スムーズなタイプ作業の形成を妨げないための配慮であり、
入力したキーをエコーバックしないのも、この理由によるものです
<cite>[HOY82]</cite>, <cite>[tcode-ml:1090]</cite>。
</p>
<p>
このような設定で、練習者の学習を効率的に支援するためには、
入力されたひとまとまりのキー列から、“正しい”部分と“そうでない部分”を、
練習プログラムの側がうまく判断することが必要となります。
</p>
<p>
たとえば、『なのはなははるのはななの』という問題文に対して、
練習者は『なのはるなはなるのはなはなの』と入力したとします。
全体をみると両者は異なる文字列ですが、
次のように部分部分をうまくマッチさせると…
</p>
<table class="lcs_samp">
<tbody>
<tr> <th></th> <th colspan="8">打鍵列</th> </tr>
<tr> <th>問題文</th>
<td>なのは</td>
<td></td>
<td>なは</td>
<td>は</td>
<td></td>
<td>るのはな</td>
<td></td>
<td>なの</td>
</tr>
<tr> <th>入力文</th>
<td>なのは</td>
<td><span class="err">る</span></td>
<td>なは</td>
<td></td>
<td><span class="err">な</span></td>
<td>るのはな</td>
<td><span class="err">は</span></td>
<td>なの</td>
</tr>
</tbody>
</table>
<p>
『る』と『は』が余分であった一方で、
『は』を『な』とミスタイプしたこと、そしてここが重要なのですが、
それ以外の部分は正しく入力したこと、が分かります。
</p>
<p>
このような部分部分のマッチングは、T-Code や TUT-Code のように、
(冗長度の低い符号化を行っている) 2 ストローク系入力方式の場合は、
特に重要です。
</p>
<p>
たとえば、『なのはなははるのはななの』
(『<samp>lgkdjglgjgjg;akdjglglgkd</samp>』)
(QWERTY 配列での T-Code の打鍵列、以下同様) と入力するべきところを、
誤って『<samp>lg<span class="err">k</span>kdjglgjgjg;akdjglglgkd</samp>』
と打鍵した場合を考えてみます。
このとき、入力キー列を単純に T-Code として解釈すると
『なエ助言流流渋基助言言争d』
となり、ほとんどの文字を誤入力したことになってしまいます。
しかし、もし最初の『<samp>lg<span class="err">k</span></samp>』の以降の
『<samp>kdjg</samp>…』以降の部分が互いに一致することを検出することができれば、
実は誤りは『<samp><span class="err">k</span></samp>』
の 1 打鍵だけだったと (正しく) 判断できるのです。
</p>
<p>
タイピング練習プログラムにおいて、
まちがった入力を正しいと誤判定するのは、もちろんしてはいけないことですが、
正しいはずの入力を誤りであると誤判定することも、
非常に好ましくないということに注意しておきたいところです。
なぜなら、そのような誤った判定は、練習者の学習意欲を低下させるだけでなく、
文字から打鍵列という反射運動の形成を阻害しかねないと思われるからです。
</p>
<p>
しかし、だからといって、問題文と練習者の入力キー列を比較するだけで、
誤りを過不足なく正確に指摘することは、必ずしも可能であるわけではありません。
たとえば、『必要』(<samp>shhh</samp>) という問題文に対して、
練習者のキー入力が『<samp>hshhh</samp>』であった場合、
(1) 『<samp>h必要</samp>』(『<samp>h</samp>』が余分)、
(2) 『<samp>hs要h</samp>』(『必』を逆に打ち、
さらに『<samp>h</samp
>』が余分――ストロークを逆順に打ってしまうのはよくある間違いです)、
の二通りの解釈が可能となります。
しかし、練習者のミスが実際にはどちらであったのかは、
練習者自身にしか分からないでしょうし、
練習者自身にも必ずしも分からないかも知れません。
</p>
<p>
ただ、「練習者の入力を<em>最も好意的に</em>解釈して、
<em>最も誤りが少なくなるような判定</em>を (とりあえず) 示す」という方針は、
自然に見え、また、多くの場合でうまく働くように思えます。
そのような理由から …かはよく分かりませんが、
T-Code の世界では、誤字判定に <dfn>LCS</dfn> (Longest Common Subsequence)
を用いるのが伝統になっています (たとえば <cite>[HOY82]</cite>)。
LCS とは、与えられた二つの列 (ここでは打鍵列) の中の、
互いに共通する部分部分 (の組み合わせ) のうち、
長さの総和が最も大きくなるようなものを指します。
</p>
<p>
LCS は Unix の diff のアルゴリズムにも用いられている …らしく、
また、LCS を計算するためのアルゴリズムも、
すでに様々なものが研究されている …らしいです。
</p>
<p>
しかし、T-Code や TUT-Code などの 2 ストローク系入力方式の場合、
単純にキー列の LCS をとるだけでは不十分です。
たとえば、『はるの』(<samp>jg;akd</samp>) という問題文に対して、
練習者が『<samp>kg;aks</samp>』と入力した場合を考えてみます。
単純なマッチングでは、真中の 4 打鍵
『<samp>g;ak</samp>』が lcs となってしまいますが、
入力列『<samp>kg;aks</samp>』は、T-Code として解釈すると『にるた』となるので、
有効な LCS は (『る』に対応する) 『<samp>;a</samp>』の 2 打鍵のみになります。
</p>
<p>
つまり、2 ストローク系入力方式の場合は、
“コードの境界”を意識した比較を行うことが必要となります。
特に、TUT-Code は、コードの長さが一定でない
(2 ストローク・3 ストローク・4 ストロークコードが混在する不定長コード)
ために、すべてのコードが 2 ストローク (固定長コード) である
T-Code に比べて問題が難しくなる傾向がある …かもしれません。
</p>
<h3><a name="subsec_LCS_sample" href="#subsec_LCS_sample">各練習プログラムの誤字判定の比較</a></h3>
<p>
eelll/JS は、
非常に精度のよい<em>すばらしい</em>誤字判定機能を備えているのですが、
以下では、このことを伝えるために、
他の代表的な T-Code または TUT-Code の練習プログラム
DOGGG, EELLL, SFCxTYPE をとりあげて、
その誤字判定の様子を比較してみます。
</p>
<p>
比較には、次の二つの例を用いることにします
(この例文は、有名な EELLLTXT の Lesson 1 からとったものです)。
</p>
<dl>
<dt> 例 1:
問題文『の、が、のが』(<samp>kdjd;sjdkd;s</samp>) に対して、
入力文『<span class="err">た</span>の、が、のが』(<samp>kskdjd;sjdkd;s</samp>) を与える。
<dd> <p>
このときの望ましい誤字判定は、
『<span class="err">ks</span>の、が、のが』
である。
</p>
<dt> 例 2:
問題文『の、が、のが』(<samp>kdjd;sjdkd;s</samp>) に対して、
入力文『<span class="err">、</span>の、が、のが』(<samp>jdkdjd;sjdkd;s</samp>) を与える。
<dd> <p>
このときの望ましい誤字判定は、
『<span class="err">jd</span>の、が、のが』
である。
</p>
</dl>
<p>
この二つの例は、特に人工的な例というわけではないことを、
強調しておきたいところです。
たとえば、例 1 は、『の』(<samp>kd</samp>) を打つつもりで『た』(<samp>ks</samp>)
と打ってしまった状況ですが、
このように、第一打鍵が同じ (別の) 文字を誤って打ってしまうのは、