monkeytypeについて



monkeytypeとは
システム(速度・正確性関連)
ランキング
多言語
筆者の記録
筆者のmonkeytype参戦史
その他攻略
各種資料


●monkeytypeとは

monkeytypeとは、Miodec氏が開発されたオンラインタイピングサイトである。ソースコードは
GitHubで共同管理されている。英語をはじめとする89言語(code, other等を除く)につき、所定の制限時間で速度と正確性を測定できる。筆者はInterstenoの多言語への対策として、ノーミスを前提に、主に制限時間30秒で多言語100wpm以上を目指している。

公式サイトおよびネットランキングはこちら

【概要】

・ランダムに並んでいる単語を打鍵し、速度を競う。
・ミスした場合もそのまま先に進むことができる。
・制限時間は基本的に15秒・30秒・60秒・120秒の四種類。細かい設定も可能。


●システム(速度・正確性関連)

【速度の表示】

速度はwpm(words per minute / 1分間あたりのワード数)で表示される。1ワードは5文字固定で換算される。結果表示画面左側には1wpm単位で表示される。小数点以下は四捨五入される。マウスポインタを当てると0.01wpm単位でポップアップ表示される。ランキング画面(上部の右から四番目の王冠のアイコンから行ける)や練習履歴画面(上部の一番右のアイコンから行ける)には最初から0.01wpm単位で表示される。

なお、制限時間30秒であっても、実際の打鍵時間は30.01秒以上と計測されることがある。このため、単純に「正解打鍵数×60÷制限時間÷5」で速度を計算することはできない。また、30秒設定で250文字打ち、画面に100wpmと表示されても、小数点以下を見ると100wpmに届いていないことがある。

練習履歴→[filters]→[advanced]→[language]で言語の一覧が見える。ここで選択した言語は練習履歴に反映され、[Export CSV]からCSVファイルにも出力される。これで、全言語につき小数点以下第二位まで速度を把握できる。

【正確性の表示】

正確性は0%〜100%の範囲で、結果表示画面左側のaccには1%単位で表示される。小数点以下は切り捨てられる。マウスポインタを当てると0.01wpm単位でポップアップ表示される。ランキング画面と練習履歴画面では最初から0.01%単位で表示される。基本的に「正解打鍵数÷(正解打鍵数+失敗打鍵数)」で算出される。はず。

筆者はノーミスを前提とし、1回でもミスタッチしたら即Escする。このため、正確性が100%でない時の仕様は把握していない。

結果表示画面の中央やや左、charactersには、文字数/誤字数/余字数/脱字数が表示される。ミスタッチした場合でもBSして正確に打ち直せば、誤字・余字・脱字は0になる。しかしその場合でもaccの値は100%にはならないし、グラフ上にはミスした箇所が赤い×マークで表示される。即ち、ノーミスタッチに失敗した場合にはBSしても誤魔化せない。


●ランキング

ネットランキングは画面上部の王冠のアイコン(右から四番目)をクリックすれば閲覧できる。対象は英語(15秒・60秒)、スペイン語(以下60秒のみ)、ドイツ語、ポルトガル語、インドネシア語、イタリア語、ロシア語である。初期状態では上位50名が表示されている。一番下まで行けば50名単位で順次スクロールできる。1050位まで閲覧できることは確認済みだ。どこまで閲覧できるかは不明。

以下、ランキングに掲載されている項目の意味を説明する。

項目説明
#2786順位
namedqmaniac名前(HN)
wpm140.95速度(0.01wpm単位)
accuracy100.00%正確性(0.01%単位)
raw140.95ミスを含めた速度(0.01wpm単位)
consistency86.40%速度のばらつき(0.01%単位)
date26 Feb 2022 20:44達成日時

※rawは、正解打鍵数を「打鍵時間からミス文字を打鍵した時間を引いた時間」で割った値?


●多言語

画面上部の設定アイコン(右から二番目)をクリックすると、各種設定画面に遷移する。[behavior]グループの[language]から、言語を選択可能である。2024.7.17現在、89言語を選択できる(code, other, wordle, league of legends, klingon, lorem ipsumを除く)。このうち、ラテン文字(A, B, C, ...)を用いるのは52言語、キリル文字(А, Б, В, ...)を用いるのは10言語、その他の文字を用いるのは27言語である。

筆者はラテン文字とキリル文字を用いる計62言語にギリシャ語(ギリシャ文字を用いる)、日本語(ひらがなを用いる)、朝鮮語/韓国語(ハングルを用いる)、ヘブライ語(ヘブライ文字を用いる)を加えた計66言語で100wpmノーミスを達成済みである。

【表: 達成速度毎の言語の数】

達成速度(wpm)ラテン文字キリル文字その他合計備考
160.00〜1001英語
150.00〜159.994004ポルトガル語、イタリア語、スペイン語等
140.00〜149.994105広東語、ドイツ語、オランダ語等
130.00〜139.99271028ハウサ語、エストニア語等。ここまで38言語
120.00〜129.99114116ウクライナ語、ブルガリア語、ポーランド語等
110.00〜119.992204アイスランド語、ウドムルト語、コサ語等
100.00〜109.993238ギリシャ語、朝鮮語/韓国語等。ここまで66言語
〜99.99002323
52102789 

※アイルランド語、ヨルバ語、スワヒリ語、マオリ語は、1kのみ存在する。これらを(語彙増加版でなく)通常版とみなす。
※日本語は「120.00〜129.99」に分類した。Japanese romaji(文字が違う)でのみ150wpmノーミスを達成し、通常版では未達成であるため。
※タミル語、ペルシャ語、ヒンディー語、サンスクリット語は「〜99.99」に分類した。Tanglish, Persian romanized, Hinglish, Sanskrit roman(文字が違う)でのみ100wpmノーミスを達成し、通常版では未達成であるため。
※wordle, league of legends, klingon, lorem ipsumは対象外。個人的にはotherに入れるべきと考えているため。

【多言語の攻略法1: Interstenoと共通の16言語(日本語、セルビア語(キリル)を除く)】

配列を検討した上で、各言語を対策する。ここまでで詰まるようなら、まずは特殊文字がほぼ無い英語のベース速度を最低120wpm、できれば140wpm以上まで上げることをお勧めする。また、以下の記述はInterstenoと共通の16言語(日本語、セルビア語(キリル)を除く)で100wpmを達成する実力があることを前提とする。

【多言語の攻略法2: Interstenoで使用した配列の使用(ラテン文字使用言語)】

以下の17言語は、Interstenoで用いた配列を使用することで容易に100wpmを達成可能である。

なお、各言語に出現する単語は、GitHubにある各言語・各種目のjsonファイルから抽出できる。その結果を用いて、出現する特殊文字を特定し、その頻度を計算できる。このデータが、配列作成時の参考になる。

言語特殊文字難易度配列備考
ラテン語
インドネシア語
タガログ語
マレー語
広東語
スワヒリ語
ショナ語
ウズベク語
トキポナ
コサ語
オロモ語
バスク語
-C英語配列 
スロベニア語[č][š][ž]Cスロバキア語配列/クロアチア語配列qwxyは出現しない
アイルランド語[á][é][í][ó][ú]Cスペイン語配列jkqwxyzは出現しない
スウェーデン語[å][ä][ö]Cフィンランド語・ドイツ語配列 
マダガスカル語[à][ô]Cイタリア語・フランス語配列 
フリウリ語フランス語とほぼ同じ 

※難易度の説明
 C: 既存の配列で対応可能
 C+: Cに加えて相当の練習が必要
 B: 既存の配列を少し変更するだけで対応可能
 B+: Bに加えて相当の練習が必要
 A: 大掛かりな配列作成が必要
 A+: Aに加えて相当の練習が必要
 S: Aに加えて個別の攻略が必要
 S+: Sに加えて相当の期間が必要
 SS: 別格すぎる難易度であり、打ちこなせる存在自体が神

【多言語の攻略法3: 個別の配列作成(ラテン文字使用言語)】

以下の18言語は、Interstenoで用いた配列だけでは対応できない。このため、個別に配列を作成して練習する必要がある。とはいえ、Intersteno対策に準じた方法で対応できるため、まだ楽な方だ。

言語特殊文字特殊文字(稀)難易度配列
アルバニア語[ç][ë]Bオランダ語配列に
çâêôûを追加
アフリカーンス語[ê][é][ë][ö][ô][û][è]B
西フリジア語[â][ê][û][ú][ô]B
オック語[à][è][ò][á][é][í][ó][ç][ú][ë][ï][ü][ê]B
ハウサ語[ã][ẽ][ƙ][ɗ][ú][ž][ĩ]B新規作成
ウェールズ語[ô][â][ê][î][û][ŵ][ŷ]B新規作成※
デンマーク語
ノルウェー語
[å][ø][æ]B新規作成
エスペラント語[ĉ][ĝ][ŝ][ŭ][ĥ][ĵ][ø][æ][á][é][ó][ý]
[ä][ö][ü][ű][þ]
B
マルタ語[ċ][ġ][ż][ħ][à]B+新規作成
エストニア語[ä][ö][ü][õ][š][ž]B+芬独配列にšžõを追加
ラトビア語[š][ž][ā][ē][ī][ū][ģ][ķ][ļ][ņ][č][ŗ]A新規作成
マオリ語[ā][ē][ī][ō][ū]A
リトアニア語[ą][ę][į][č][š][ž][ė][ū][ų]A新規作成
カタルーニャ語[é][í][ó][ú][à][è][ò][ï][ü][ç][ŀ]A新規作成
アイスランド語[á][é][í][ó][ú][ý][ð][þ][æ][ö]A新規作成
ヨルバ語[ẹ][ọ][ṣ][á][é][í][ó][ú][à][ì][ò][ù][õ][š][ė]A新規作成
アゼルバイジャン語[ö][ü][ç][ş][ğ][ı][ə]A+新規作成※

※ウェールズ語配列は、もともと伊仏配列に[ŵ][ŷ]を追加して作成した。しかし、頻出する[w](伊仏配列ではデッドキー[:]を使用)への対応が困難であるため、新規作成した。
※アゼルバイジャン語配列は、もともとトルコ語配列に[ə]を追加して作成した。しかし、頻出する[q][x](トルコ語配列ではデッドキー[:]を使用)への対応が困難であるため、新規作成した。

【多言語の攻略法4: キリル文字使用言語】

ブルガリア語は、ロシア語配列で対応可能である(しかしロシア語とは別の難しさがある)。また、他の8言語に関しては、ロシア語配列に特殊文字を加えた配列を別途作成し、練習する必要がある。

なお、キリル文字のラスボスはモンゴル語である。理由は、頻出する[э]と[з]、[ө]と[е]、[ү]と[у]と[ч]の区別が非常に難しいためだ。

言語特殊文字特殊文字(稀)難易度配列備考
ブルガリア語[ъ][ь]C+ロシア語配列[э][ы]は出現しない
セルビア語[ј][њ][љ][ћ][ђ][џ]A新規作成[ы]は稀
マケドニア語[џ][ћ][ђ][ѓ][ќ][ѕ]A
ウクライナ語[є][і][ї][Ї][ґ]B+新規作成[ё][ы][э]は出現しない
ベラルーシ語[э][ё][і][ў]B+新規作成[ы]が頻出。[и]は稀。[щ][ъ]は出現しない
カザフ語[ә][ғ][і][ң]
[қ][ө][ү][ұ]
[һ]A+新規作成[ф][х]は稀。[ё][ъ]は出現しない
キルギス語[э][ң][ө][ү]A新規作成[ф][х][ё][ъ]は稀。[і]は出現しない
モンゴル語[э][ө][ү][ё]S新規作成[е][к][щ]は稀。[ъ]は1k,10kにのみ稀に出現
ウドムルト語[э][ё][ӧ][ӟ][ӥ][ӵ][ӝ]A+新規作成[ф][х]は稀

※セルビア語の[џ]は、通常版には出現しない。10kには出現する。
※マケドニア語の[њ][љ][џ][ћ][ђ][ѕ]は、通常版には出現しない。1k以上には出現する。
※セルビア語、マケドニア語の[ј]は、ラテン文字の[j]と別
※マケドニア語の[ѕ]は、ラテン文字の[s]と別
※ウクライナ語、ベラルーシ語、カザフ語の[і]は、ラテン文字の[i]と別
※ウクライナ語の[ї][Ї]は、ラテン文字の[ï][Ï]と別
※ウドムルト語の[ӧ]は、ラテン文字の[ö]と別

【多言語の攻略法5: ベトナム語、中国語(ピンイン)】

ベトナム語は、ラテン文字のラスボスである。難易度はS+と言って良いだろう。ラテン文字をベースとしつつも、特殊文字の種類が非常に多いため、配列の考え方に工夫が必要である。また、質・量ともに充実した練習が不可欠である。以下の例ではデッドキーを多用するため、英語等と比較して打鍵数が約4割増える。従って、ベトナム語で100wpmを達成するには、英語で140wpm相当の打鍵速度が必要となる。さらに、デッドキーがキーボードの右端や最上段など打ち辛い場所にあるため、チェコ語やスロバキア語のような運指範囲の広い言語を並行して鍛錬する必要がある。

以下にベトナム語の特殊文字と配列の考え方の一例を示す。ベトナム語の一般的な入力方法(VNI方式)を参考としつつも、筆者にとって打ちやすいようにアレンジしている。

まず、[ă][â][ê][ô][ơ][ư][đ][à][ạ][ộ][ữ][ợ]はそこそこ出現するため、それぞれ1キーに割り当てる。筆者は日本語配列でいう[1][2][3][4][[][]][j][w][z][7][8][9]に割り当てている。

次に、[5][6][^][:][@]をデッドキーとして、順に「グレイヴ」「フック」「チルダ」「アキュートアクセント」「アンダードット」を割り振る。具体的には以下の通り。[縦のキー→横のキー]の順に打鍵することで、各文字を入力できる。例えば[ẳ]は[6→1]で入力できる。

aeiouy1234[]
5àèìòù
6
^ãĩõũ
:áéíóúýế
@

数字および[j][w][z]は出現頻度が低いため、[半角/全角→数字][:→j]等に割り当てれば対応できる。例えば[61]は[半角/全角→6→半角/全角→1]で入力できる。

……

中国語(ピンイン)も、似た考え方で配列を作成する。難易度はS。

まず、[à][è][ì][ü]はそこそこ出現するため、それぞれ1キーに割り当てる。筆者は日本語配列でいう[v][3][]][7]に割り当てている。

次に、[5][:][@][[]をデッドキーとして、順に「グレイヴ」「アキュートアクセント」「カロン」「マクロン」を割り振る。具体的には以下の通り。[縦のキー→横のキー]の順に打鍵することで、各文字を入力できる。例えば[ǜ]は[5→7]で入力できる。

aeiouü
5àèìòùǜ
:áéíóúǘ
@ǎěǐǒǔǚ
[āēīōūǖ

[3][5][7][v]は出現頻度が低いため、[半角/全角→数字][:→v]に割り当てれば対応できる。例えば[35]は[半角/全角→3→半角/全角→5]で入力できる。

【多言語の攻略法6: ギリシャ語】

ギリシャ文字(ラテン文字ともキリル文字とも違う)を用いるため、個別に対策が必要である。難易度はS+と言って良いだろう。

過去の発表資料

多言語タイピングにおけるギリシャ語の強化

【多言語の攻略法7: 日本語】

hiragana, katakana, romajiを選択できる。漢字は出現しない。筆者にとって母国語であるため、認識に問題は無い。しかしhiragana, katakanaで100wpmを出すのは相当難しい。目的とするかなを表示させた後にいちいち確定させる(Enterキーを叩く)手間が追加され、速度が低下するためだ。さらに、仕様上ノーミスが不可能だ。ローマ字入力ではあ行を除き、入力中の文字列がすべてミス判定になる。かな入力で打った場合でも、濁音と半濁音が確実にミス判定になる。例えばローマ字入力で[ka]と打つと、[k]がミス判定。かな入力で[が]を打つと、[か]がミス判定だ。

⇒Firefoxでは、IMEのSPACEキーの設定を空白に変更することにより、上記の問題は発生しない。(TEA_Rさんに教えて頂きました。ありがとうございます!) この方法を用いる場合、難易度はC。

※Windows10の場合、右下の[あ]を右クリック→[プロパティ]で[Microsoft IME の設定]を起動する。次に[詳細設定]→[編集操作]→[変更]として、[SPACE]-[入力文字のみ]の設定を[全変換]から[空白]に変更する。かな入力の場合、同様にして[Shift+SPACE]-[入力文字のみ]の設定を[全変換]から[空白]に変更する。普段の文章執筆時に支障が出るので、monkeytypeが終了したら元に戻す。

※Windows11の場合、まず古いIMEを使用するように設定する。例えばFMVサポートのQ&Aが参考になる。次に、右下のIMEツールバーの[ツール]を左クリック→[プロパティ]で[Microsoft IME の設定]を起動する。次に[詳細設定]→[全般]タブ→[編集操作]→[変更]とする。後はWindows10の場合と同様。

⇒Chromeでは、上記の方法ではうまく入力できない。しかし、専用の配列を準備することで、上記の問題を回避できる。この方法を用いる場合、難易度はA+。

【JISかなベースの配列】

MSKLCで、JISかなに似せた位置に文字を割り振る。筆者はこの配列でも100wpmノーミスを達成済みである。

但し難点が三つある。

(1) 濁音・半濁音の打鍵が通常のJISかなと逆になる。
(2) [ろ][ー]を配置するキーが無い。左Shiftの隣に仕込んでも打てない。
(3) hiraganaしか入力できない。

(1)は濁点・半濁点をデッドキーに仕込むためだ。例えば[が]は[@→t]と打つ。[t]をデッドキーとして[t→@]とすれば通常のJISかなと同じ順番になる。しかし、今度は[か]を打つ時に例えば[t→Space]がいちいち必要となり、かえって速度が低下する。

(2)の暫定措置として、[ろ][ー]を[@→n][@→m]に仕込んだ。必然的に、濁音・半濁音・[ろ][ー]を含む単語では遅くなる。これにShift文字が重なると難易度は想像を絶する。

(3)に関して、katakanaの攻略には別の配列が必要だ。カタカナ語では[ー]の出現率が高いため、他の出現頻度の低いキーを潰して1打鍵化すべきかもしれない。もちろん変換もできない。あくまでもmonkeytype攻略用の配列だ。

【QWERTYローマ字入力ベースの配列】

試作品は以下の通り。筆者はこの配列で78.37wpmノーミスが最高だった。配列に工夫の余地はまだあるものの、100wpmノーミスは遠い。

あ行は[a][i][u][e][o]にそのまま仕込む。他の五十音および濁音・半濁音は、例えば[k]をデッドキーとして、[k→a]で[か]を打つ。[c][f][j][x]もデッドキーにすれば、[ca][cu][co][fu][ji][xn]にも対応可能だ。但しこの配列にも難点がある。

(1) [ん]はn1回では入力できず、[nn],[xn]のどちらかが必要。
(2) 拗音・促音で死ぬ。
(3) hiraganaしか入力できない。

(2)に関して、[ゃ][ゅ][ょ][っ]を[la][lu][lo][lt]に仕込んでみた。背景として、hiraganaには[ぁ][ぅ][ぉ]が出現しない。しかし、この方法は明らかに失敗だった。せめて[7][8][9][v]等に仕込んで1打鍵化すべきだ。

(3)はJISかな入力ベースの配列と同様。

【日本語の100wpm達成に必要な実質速度】

種目入力方法速度タイプウェル換算(参考)筆者のノーミス記録
hiraganaかな入力542.054kpm30.993秒(XX後半)663.455kpm / 25.322秒(ZH前半)
ローマ字入力782.760kpm30.661秒(XX後半)773.520kpm / 31.027秒(XX前半)
katakanaかな入力563.665kpm29.805秒(ZJ前半)557.991kpm / 30.108秒(XX後半)
ローマ字入力767.081kpm31.287秒(XX前半)740.078kpm / 32.429秒(XS後半)

※上記はFireFoxを用いた場合の比較である。Chromeを用いる場合は難易度がさらに上がる。
※hiraganaはタイプウェル国語K/Rの基本常用語、katakanaはカタカナ語と比較した。
※Excelの試算結果は[hiragana][katakana]の通り。

筆者の場合、hiraganaではかな入力で余裕を持って100wpmに届く。超頑張れば120wpmにも届く。katakanaでもかな入力で頑張れば100wpmに届く。但し難易度は高い。頻出する[ー]が打ち辛い上、濁音・半濁音の増加に伴い打鍵数も増えるためだ。そしてローマ字入力ではやや厳しい。katakanaでは[ー]が多いため、ローマ字入力の打鍵数はやや減る。しかし[ー]は打ち辛いため、実質的な難易度は大して変わらない。

【解析方法】

GitHubの単語リストによれば、hiraganaには554語の単語が含まれる。すべての単語が1回ずつ出現し、単語の後には必ずSpaceがあると仮定してモデルを作成する。すると総文字数は2152となる。次にこの2152文字を出現文字別に分類し、かな入力・ローマ字入力に分けて打鍵数を集計する。かな入力では濁音と半濁音が2打鍵、他が1打鍵だ。Shiftを使う文字も1打鍵と数えることに注意する。ローマ字入力ではあ行と[っ]が1打鍵。[ゃ][ゅ][ょ]はじゃ行の時のみ0打鍵で他は1打鍵。[ん]は末尾の時のみ2打鍵で他は1打鍵となる。

katakanaは全343語、総文字数1610となる。hiraganaとの主な違いは、ファ行、[ティ][ディ][ー]が追加され、しかも[ー]の出現率が高いことだ。

※出現文字別の分類と集計には、以前から大変お世話になっている文字出現頻度分析ツールを使用しました。ありがとうございます。日本語のみならず多言語の解析に、大変役立っています。

【多言語の攻略法8: 朝鮮語/韓国語】

ハングルという固有の文字を用いるため、個別に対策が必要である。難易度はS+と言って良いだろう。

多言語タイピングにおける朝鮮語/韓国語の強化

朝鮮語/韓国語では、日本語や英語と違って、文字数でなく打鍵数(即ちパーツの数)を測定している。即ち、画面上で30秒間に約125文字しか打っていないように見えても、250打鍵(250パーツ打鍵)していれば100wpmと算出される。

【多言語の攻略法9: ヘブライ語】

ヘブライ文字という固有の文字を用いるため、個別に対策が必要である。難易度はS+と言って良いだろう。

当初は「右から左に読む」ことが難関要因となり得ると考えた。だが、通常版の100wpm程度であれば思っていたよりスムーズに打てる。語彙増加版で100wpmを狙う段階になるとまた違うのかもしれないが。

【多言語の攻略法10: その他】

アラビア語、ペルシャ語、ヒンディー語、タイ語等では、100wpmを未達成である。いずれも独自の文字を用いるため、個別の配列作成および攻略が必須である。加えて、アラビア語、ペルシャ語等は「右から左に読む」ことが難関要因となり得る。難易度はS++〜SSと言って良いだろう。

中国語(繁体字/簡体字)での100wpm達成は、ローマ字入力かそれに類する方法では厳しい。日本語と同様、1文字入力するのに2打鍵以上必要になる文字が大半であるためだ。敢えてローマ字入力で挑戦するなら、その速度を少なくとも日本語並みにまで上げる必要がある。果たして何年かかることか。日本語のかな入力に相当する方法を模索する方が早いかもしれない。

【多言語の攻略法11: code, other等】

ほぼすべてのcodeは、日本語配列または英語配列で対応可能である。大文字が頻出するcodeに関しては、大文字をデッドキー[;]を使って打てる英語配列で打ち、左の負荷を減らすことが多い。全部大文字となるcode sqlや、ほぼすべて大文字となるcode assemblyは、Caps Lock状態で打つ。大雑把な難易度は以下の通り。

難易度言語
Cpascal, go, csharp, fsharp, rockstar, wordle, typing of the dead
C+lua, luau, c++, perl, visual basic, git, typescript, league of legend
Barduino, vimscript, powershell, systemverilog, python, c, dart,
julia, java, kotlin, swift, scala, bash, sql, php, gdscript, v
B+javascript
A-assembly, lojban gismu, lojban cmavo, pig latin, lorem ipsum
Aemotes, haskell, rust, ruby, r, latex, matlab, vim, opencl, elixir, zig, gdscript 2, ook, klingon
Sbrainfck

※難易度の説明
 C: ほぼ英単語のみ
 C+: 英単語の組み合わせを含む。大文字を少し含む場合もある
 B: 記号/大文字を少し含む
 A-: ランダム文字列に近い
 A: 記号/大文字を大量に含む
 S: 複数の難関要素を含む

ookとbrainfckのみ毛色が違う(出現する文字がそれぞれ6種類のみ、8種類のみ)ため、専用の配列を作成した。

ookに関して、出現する単語は[Ook!][Ook?][Ook.]のみである。そこで、[s][d][f]に[O][o][k]、[j][k][l]に[!][?][.]を配置する。要するに、[Ook]およびSpaceを左手にまとめてスピード源とする一方で、[!][?][.]を右手に担当させて脳の負荷を減らす。同時に、Shiftを排除して減速要因をなくす。

brainfckに関しては以下の通り。

この専用配列の意図は、以下三点である。

(1) Shiftの排除。対象は+<>のみ
(2) 頻出単語対策。具体的には[-], <+>をそれぞれ234, xcvに仕込む
(3) 連打対策。---, +++, <<<, >>>をそれぞれwer, sdf, uio, jklに仕込む

(1)に関して、出現する文字は-[].,+<>の8種類のみだ。日本語配列や英語配列では、うち3種類にShiftが必要となる。これでは明らかに非効率なので、Shiftを使わなくても済むように配列を変更する。

(2)に関して、>+<をvcxで打てるようになるという副次効果もある。また、<, >を8, 9に配置したのは、[-]<[-]<[-]<[-]や[-]>[-]>[-]>[-]で右手に負荷分散して加速するためである。

(3)に関して、複数のキーに同じ文字を配置できることを最大限に利用する。-+<>の最大連打数はそれぞれ17, 15, 9, 6なので、-, +の連打対策を優先する(当初はuio, jklにも---, +++を配置していた)。キーに余裕があれば<, >の連打対策も考慮する。

※半角/全角,1に[、5に]、q,tに-、a,gに+等を配置した意図は、カスリ対策である。当初はカスリ(あるいは、さらに進んで複数キー同時押し)も利用して高速化できないかと考えた。しかし、この対策は無意味だった。カスリや複数キー同時押しを検知した時点で脳がミスと判定して打鍵を停止するためだ。配列を元の文字に戻すのも面倒(というよりも高速化に寄与しない)なのと、将来さらなる高速化が必要になった時に何か役立つことがあるかもしれないのとで、そのままにしている。

※yに-、hに+を配置した意図は、-,+の連打対策として右手に負荷分散することだ。しかし実際には、上記の通り右手は<,>の連打対策に充てた。また、例えばwerywery...と連打するとuにカスる事故が頻発した。それならばwerwer...の方が速度も正確性もまだマシだ。

※6,7に何も配置していないのは、打ち辛い位置にあり、良い使い道を見出せなかったため。ここに何らかのキーを配置するくらいなら、y,h等の有効活用を検討した方がまだマシだ。


●筆者の記録

ラテン文字・キリル文字・ギリシャ文字・ひらがな・カタカナ・ハングル・ヘブライ文字を用いる66言語の30秒・ノーミスの記録を主に記載する。Interstenoの日本語を除く17言語のみ、60秒・ノーミスの記録を記載する。他のタイム設定で打った記録や、ミスを許容した記録は、ほとんど存在しないため省略する。

【通常版】

すべて100wpm以上。最も速いのは英語だ。以下、ポルトガル語、イタリア語、スペイン語、フランス語と続き、ここまでが150wpm以上。

※語彙増加版、code, other, wordle, league of legends, klingon, lorem ipsumは別表の通り。
※文字欄の[l]はラテン文字、[c]はキリル文字、[g]はギリシャ文字、[j]はひらがな/カタカナ、[h]はハングル、[a]はヘブライ文字。

言語速度(wpm)文字
30秒60秒
English英語162.00143.58l
Spanishスペイン語150.33125.38l
Frenchフランス語150.25131.00l
Germanドイツ語145.53126.96l
Portugueseポルトガル語152.37123.60l
Italianイタリア語150.75131.58l
Friulianフリウリ語130.76l
Latinラテン語135.20l
Afrikaansアフリカーンス語133.11l
Mongolianモンゴル語102.77c
Korean朝鮮語/韓国語101.17h
Russianロシア語143.19135.99c
Polishポーランド語125.57121.39l
Czechチェコ語123.99114.78l
Slovakスロバキア語122.38112.16l
Ukrainianウクライナ語126.75c
Lithuanianリトアニア語132.76l
Indonesianインドネシア語132.40l
Greekギリシャ語101.17g
Turkishトルコ語131.07126.56l
Irishアイルランド語121.16l
Slovenianスロベニア語130.76l
Croatianクロアチア語130.27125.98l
Dutchオランダ語145.17127.18l
Filipinoタガログ語133.11l
Danishデンマーク語133.51l
Hungarianハンガリー語121.96110.58l
Norwegian bokmalノルウェー語131.11l
Hebrewヘブライ語101.59a
Icelandic 1kアイスランド語115.16l
Malagasyマダガスカル語132.36l
Malayマレー語132.80l
Romanianルーマニア語135.15124.18l
Finnishフィンランド語136.26123.58l
Estonianエストニア語137.15l
Udmurtウドムルト語111.20c
Welshウェールズ語122.76l
Kazakhカザフ語102.73c
Vietnameseベトナム語103.97l
Jyutping広東語146.40l
Pinyin中国語107.20l
Hausaハウサ語137.20l
Swedishスウェーデン語135.15l
Serbianセルビア語131.15121.98c
Yoruba 1kヨルバ語121.56l
Swahili 1kスワヒリ語132.71l
Maori 1kマオリ語130.31l
Catalanカタルーニャ語135.11l
Bulgarianブルガリア語125.58c
Esperantoエスペラント語133.16l
Albanianアルバニア語135.51l
Shonaショナ語131.56l
Japanese日本語121.16110.39j
Macedonianマケドニア語123.95c
Uzbekウズベク語132.76l
Belarusianベラルーシ語121.19c
Azerbaijaniアゼルバイジャン語102.77l
Latvianラトビア語120.76l
Malteseマルタ語120.72l
Toki Ponaトキポナ143.15l
Xhosaコサ語111.16l
Oromoオロモ語121.56l
Kyrgyzキルギス語110.39c
Frysk西フリジア語132.76l
Euskeraバスク語130.38l
Occitanオック語124.75l

【語彙増加版】

練習中のヘブライ語を除き、30秒ではすべて100wpm以上。最も速いのは日本語romajiだ。以下英語1k、英語5k、英語contractions、トキポナku suli、フランス語1k、トキポナku lili、英語commonly misspelled、英語10kと続き、ここまでが140wpm以上。通常版と比較して難易度が高い。理由は以下二点。

(1) 長く複雑な単語が増える。即ち、読み辛いand/or打ち辛い単語の割合が増える。
(2) 特定の加速単語や苦手単語に絞った対策(いわゆるワード慣れ)が困難になる。

目安として10kくらいまでは、頻出する語頭や語尾に慣れるという攻略法がある程度通用する。しかし10kを超えるとそれさえも通用せず、ランダム練習とほとんど変わらなくなる。100kを超えると各単語が相当長くなるため、難易度がより高くなる。

言語速度(wpm)文字
30秒60秒
English 1k英語154.00134.47l
English 5k142.75131.38
English 10k140.00128.78
English 25k128.36121.18
English 450k118.68114.56
English commonly misspelled140.35131.20
English contractions142.75133.18
English doubleletter130.31121.32
English Shakespearean133.94130.99
English old111.17
English medical109.18110.20
Spanish 1kスペイン語134.36120.78l
Spanish 10k129.07118.59
Spanish 650k105.56101.40
French 1kフランス語140.97128.20l
French 2k132.31119.98
French 10k130.31118.16
French 600k112.33102.39
German 1kドイツ語119.92109.38l
German 10k110.73102.80
German 250k104.7399.19
Swiss German130.76114.80
Swiss German 1k115.20100.77
Swiss German 2k104.80103.15
Portuguese 3kポルトガル語122.74116.80l
Portuguese 5k120.36115.37
Portuguese 320k107.14104.79
Portuguese 550k104.76100.39
Portuguese acentos e cedilha110.33103.78
Italian 1kイタリア語134.62123.18l
Italian 7k130.76120.78
Italian 60k121.56110.98
Italian 280k120.72111.18
Afrikaans 1kアフリカーンス語123.96l
Afrikaans 10k121.60
Mongolian 10kモンゴル語100.73c
Korean 1k朝鮮語/韓国語102.76h
Korean 5k100.38
Russian 1kロシア語125.96112.37c
Russian 10k116.78105.76
Russian 25k111.98102.78
Russian 50k108.33103.98
Russian 375k106.76100.99
Polish 2kポーランド語112.76102.97l
Polish 5k105.60102.58
Polish 10k108.00101.17
Polish 20k105.89100.57
Polish 40k105.96100.57
Polish 200k103.5799.20
Czech 1kチェコ語114.76107.96l
Czech 10k107.93103.58
Slovak 1kスロバキア語116.34110.58l
Slovak 10k113.18105.79
Ukrainian 1kウクライナ語101.93c
Ukrainian 10k100.33
Ukrainian 50k101.97
Ukrainian endings111.53
Ukrainian Latynka104.70l
Ukrainian Latynka 1k106.76
Ukrainian Latynka 10k101.90
Ukrainian Latynka 50k100.73
Ukrainian Latynka endings113.89
Lithuanian 1kリトアニア語124.28l
Lithuanian 3k120.00
Indonesian 1kインドネシア語125.96l
Indonesian 10k122.00
Greek 1kギリシャ語102.33g
Greek 5k101.13
Greek 10k101.13
Greek 25k101.90
Greeklish107.53l
Greeklish 1k102.40
Greeklish 5k106.36
Greeklish 10k104.73
Greeklish 25k104.80
Turkish 1kトルコ語122.72116.74l
Turkish 5k110.73108.38
Tanglishタミル語122.36l
Dutch 1kオランダ語133.16120.38l
Dutch 10k113.56106.98
Filipino 1kタガログ語131.20l
Danish 1kデンマーク語121.08l
Danish 10k119.96
Hungarian 2kハンガリー語113.56109.38l
Norwegian bokmal 1kノルウェー語124.19l
Norwegian bokmal 5k121.56
Norwegian bokmal 10k123.16
Norwegian bokmal 150k106.73
Norwegian bokmal 600k106.76
Norwegian nynorsk131.60
Norwegian nynorsk 1k128.54
Norwegian nynorsk 5k118.80
Norwegian nynorsk 10k115.41
Norwegian nynorsk 100k104.80
Norwegian nynorsk 400k106.76
Malagasy 1kマダガスカル語121.56l
Malay 1kマレー語117.58l
Romanian 1kルーマニア語111.18101.98l
Romanian 5k101.55100.98
Romanian 10k103.57103.00
Romanian 25k105.99102.39
Romanian 50k107.18104.58
Romanian 100k103.20102.40
Romanian 200k106.78101.18
Finnish 1kフィンランド語122.72117.58l
Finnish 10k112.36106.00
Estonian 1kエストニア語123.04l
Estonian 5k117.97
Estonian 10k115.92
Welsh 1kウェールズ語113.92l
Persian romanizedペルシャ語114.36l
Kazakh 1kカザフ語100.73l
Vietnamese 1kベトナム語103.17l
Vietnamese 5k100.00
Pinyin 1k中国語104.37l
Pinyin 10k103.53
Hausa 1kハウサ語133.20l
Swedish 1kスウェーデン語114.76l
Swedish diacritics101.13
Serbian 10kセルビア語110.37101.38c
Serbian latin128.79128.16l
Serbian latin 10k117.16107.79
Catalan 1kカタルーニャ語124.32l
Esperanto 1kエスペラント語132.76l
Esperanto 10k121.60
Esperanto 25k121.20
Esperanto 36k123.56
Esperanto x sistemo130.76
Esperanto x sistemo 1k124.76
Esperanto x sistemo 10k121.16
Esperanto x sistemo 25k122.40
Esperanto x sistemo 36k121.12
Esperanto h sistemo139.60
Esperanto h sistemo 1k134.36
Esperanto h sistemo 10k123.56
Esperanto h sistemo 25k122.36
Esperanto h sistemo 36k123.16
Albanian 1kアルバニア語120.36l
Shona 1kショナ語123.16l
Japanese katakana日本語100.37j
Japanese romaji154.35142.99l
Japanese romaji 1k146.39133.98l
Hinglishヒンディー語136.80 l
Sanskrit romanサンスクリット語108.37 l
Macedonian 1kマケドニア語111.09c
Macedonian 10k103.17
Macedonian 75k100.77
Uzbek 1kウズベク語123.96l
Uzbek 70k106.36
Belarusian 1kベラルーシ語110.77c
Belarusian 5k103.97
Belarusian 10k103.58
Belarusian 25k100.00
Belarusian 50k103.19
Belarusian 100k103.95
Belarusian lacinka110.37l
Belarusian lacinka 1k103.55
Azerbaijani 1kアゼルバイジャン語100.37l
Latvian 1kラトビア語114.36l
Maltese 1kマルタ語113.52l
Toki Pona ku suliトキポナ142.40l
Toki Pona ku lili140.75
Oromo 1kオロモ語106.80l
Oromo 5k104.37
Kyrgyz 1kキルギス語105.97l
Frysk 1k西フリジア語121.16l
Occitan 1kオック語108.37l
Occitan 2k115.99
Occitan 5k114.37
Occitan 10k115.58

【code, other等】

すべて100wpm以上。最も速いのはcode pascalだ。以下code rockstar, go, fsharp, wordle, vと続き、ここまでが145wpm以上。英語ベースの言語が多いため、英語に慣れていれば概して打ちやすい。しかし大文字や記号が入ってくると打ち辛くなる。

言語速度(wpm)
codepython135.20
python 1k123.98
python 2k115.19
python 5k115.99
c124.78
csharp140.33
c++136.73
dart124.36
brainfck101.60
fsharp146.69
javascript103.97
javascript 1k116.28
julia125.56
haskell117.92
html130.31
nim118.76
nix101.57
pascal160.34
java124.36
kotlin122.36
go151.96

言語速度(wpm)
coderockstar154.72
rust102.70
ruby100.70
r100.37
r 2k109.56
swift119.48
scala126.36
bash107.13
powershell131.11
lua140.30
luau141.83
latex108.69
matlab110.36
sql109.13
perl133.16
php126.36
vim101.17
vimscript131.20
opencl117.56
visual basic144.76
arduino131.97

言語速度(wpm)
codesystemverilog130.80
elixir109.56
zig103.39
gdscript122.68
gdscript 2107.96
assembly113.12
v145.92
ook117.15
typescript127.55
cobol135.56
otherlojban gismu109.13
lojban cmavo111.13
pig latin101.53
twitch emotes101.53
git141.57
typing of the dead141.55
wordle145.99
wordle 1k141.52
league of legends134.39
klingon101.16
klingon 1k102.39
lorem ipsum125.56

※すべて30秒・ノーミスの記録。
※文字はすべてラテン文字。

【難関言語の100wpm到達までの日数】

朝鮮語/韓国語、ギリシャ語が別格の最難関だ。それに続くのがラテン文字のラスボスのベトナム語、キリル文字のラスボスのモンゴル語だ。中国語(ピンイン)も難関だが、ベトナム語ほどではない。特殊な配列を使用したcode brainfckにも大苦戦した。なおアラビア語等、他の文字を使う言語ではさらなる苦闘が予想される。

言語語彙開始終了日数ノーミス達成数
中国語(ピンイン) -2022.5.162022.5.23※8(8)45
1k2022.5.242022.5.296(5)17
10k2022.5.282022.5.292(2)2
ベトナム語 -2022.5.302022.6.1820(18)81
1k2022.6.182022.7.316(13)51
5k2022.7.32022.7.3129(23)60
モンゴル語 -2022.4.212022.5.1424(17)121
10k2022.6.232022.7.2331(24)79
code brainfck -2022.6.132022.8.2170(19)77
ギリシャ語 -2022.8.232022.9.2837(31)153
1k2022.9.292022.11.2760(41)216
5k2022.11.272023.1.742(28)166
10k2023.1.82023.1.147(5)22
25k2023.1.152023.2.118(10)50
朝鮮語/韓国語 -2023.5.242023.10.1131(129)697
1k2023.10.22023.12.2484(79)327
5k2023.12.252024.2.1955(52)203

※()内の日数は、休養日、夏休み、休止期間を除いた実質日数。
※ノーミス達成数は、途中で棄権したトライアルを除く。
※中国語(ピンイン)の通常版は、2022/5/23時点では小数点以下まで見ると99.97wpmで、100wpmに到達していなかった。2022/8/1〜5に改めて練習し、小数点以下を含め100wpmを突破した。追加の練習は5日、ノーミス達成数は11回だった。


●筆者のmonkeytype参戦史

時期100wpm
到達言語数
内容
2022.2.12初プレイ。英語で146wpm、ロシア語で102wpm
2022.2.34トルコ語、フランス語で120wpm突破。dqmaniacでユーザー登録
2022.2.4〜2.2236Interstenoの16言語(日本語除く)および、比較的簡単な言語に絞って
100wpmを順次達成。英語で151wpmを記録。
2022.2.23〜4.736Intersteno2022対策として、16言語に絞って60秒や語彙増加版を試す
2022.4.1839残しておいた難関言語の打鍵を再開。新規追加された言語もついでに打つ。
ラテン語、アフリカーンス語で100wpm突破。
トキポナがotherから主要言語に昇格したため、100wpm到達言語数に追加。
2022.4.1940マケドニア語で100wpm突破
2022.4.2042セルビア語、ウクライナ語で100wpm突破
2022.4.2443ベラルーシ語で100wpm突破
2022.5.444アゼルバイジャン語で100wpmに到達
2022.5.1445モンゴル語で100wpm突破
2022.5.1546カザフ語で100wpm突破
2022.5.2347中国語(ピンイン)で100wpmに到達
2022.6.1048オロモ語で100wpmに到達
2022.6.1448→45ベトナム語で99.97wpmに到達。
しかし小数点以下まで見ると100wpmに到達していないことが判明。
中国語(ピンイン)、ブルガリア語、アゼルバイジャン語も同様。
2022.6.1646ブルガリア語で小数点以下含め100wpm突破
2022.6.1848ベトナム語、アゼルバイジャン語で小数点以下含め100wpm突破
2022.7.2852ショナ語、ハウサ語、ラトビア語、マルタ語で100wpm突破
2022.8.553中国語(ピンイン)で小数点以下含め100wpm突破
2022.8.753英語で162.00wpmを記録。全言語通して初の160wpm突破
2022.8.1654広東語(ユッピン)で100wpm突破
2022.8.2154code brainfckで100wpm突破
2022.8.2254code htmlで100wpm突破
2022.9.2655フリウリ語で100wpm突破
2022.9.2856ギリシャ語で100wpm突破
2022.9.3057ウドムルト語で100wpm突破
2022.10.1758キルギス語で100wpm突破
2023.1.1859ウズベク語で100wpm突破
2023.4.3060日本語で100wpm突破
2023.6.761西フリジア語で100wpm突破
2023.10.162朝鮮語/韓国語で100wpm突破
2024.1.1963バスク語で100wpm突破
2024.4.1664コサ語で100wpm突破
2024.7.1765オック語で100wpm突破
2024.8.1866ヘブライ語で100wpm突破

※語彙増加版、code, other等も並行して攻略。

【今後の野望】

・まずヘブライ語で100wpm達成
・残った難関23言語で順次100wpm達成
・言語数を増やすよう働きかけて、100言語100wpmを目指す。当面の候補は、TypeRacerや10 fast fingersに含まれてmonkeytypeに含まれないXX言語。ガリシア語等
・100wpmの次は110wpm、120wpm
・30秒の次は60秒、120秒


●その他攻略

【頻出記号の1打鍵化】

英語、フランス語、イタリア語等では[']の頻度が比較的高いため、1打鍵化した方が良い。例えばUSインターナショナル配列では日本語配列の[:]を打鍵することで[']を入力できる。日本語配列の[Shift+7]よりも遥かに速く打つことができ、無駄な疲労も軽減できる。代わりに、[I'll]のようなShift押しっ放しで突破できた一部の単語が打ち辛くなる(しかしそのような単語は限定的である)。また、[:]が[Shift+;]になって2打鍵必要となる。[:]の頻度が高い言語では、1打鍵化を検討した方が良い(しかしそのような言語に出会ったことがない)。

【大文字のデッドキー化】

大文字をデッドキー化する。例えば[A]を[Shift+a]でなく[;→a]で入力できるようにする。左Shiftを主に使っている場合、左手の負荷が軽減される。特に、文頭のみならず文中にも左手範囲の大文字が頻出するドイツ語に効果がある。

【画面の解像度設定、ブラウザのズーム機能の活用】

初期状態では、装飾のついた文字(例: ラテン文字のダイアクリティカルマーク)や、画数の多い文字(例: ハングルの4打鍵文字)の識別が困難な場合がある。そのような場合、画面の解像度設定やブラウザのズーム機能を用いて文字を拡大すると良い。筆者は画面の解像度を1920x1080から1280x720に下げ、さらにChromeのズーム110%を常用している。朝鮮語/韓国語のみ、125%を採用する。なお、150%以上にするとかえって不利になる。これは、1行あたりの文字数が減って改行の回数が増えるためだ。改行時の視点の移動によるロスは極めて甚大なので、可能な限り少ない方が良い。

【ブラウザによるフォントの違い】

朝鮮語/韓国語では、フォントを初期設定のRoboto Monoにした場合、ChromeとFireFoxで見た目が異なる。筆者はChromeのフォントに慣れているため、FireFoxで打つとろくに認識できず、速度が著しく低下する。他のフォントに設定した場合にどうなるかは未確認。


●各種資料

Intersteno拡張dq配列(基本16言語)
Intersteno拡張dq配列(拡張44言語)
→Intersteno, TypeRacer, monkeytypeで使用した配列。インストーラとともにMSKLC用のファイルもあります。基本16言語はIntersteno攻略用(日本語除く16言語)、拡張44言語はそれに加えてTypeRacer, monkeytype攻略用です。

注1:言語によっては慣れるまでに相応の時間が必要であり、短期決戦には不向きです。
注2:このMSKLCファイルはWindows10/11環境でBuildできないことがあります(エラー対処を実施していないため)。必要ならばBuildできる環境を見つけてBuildし、結果ファイルをコピーして下さい。
注3:朝鮮語/韓国語は含まれません。Windows標準の配列を用いているため。

Intersteno拡張dq配列:仕様書
→上記配列の仕様書。


トップページに戻る
タイピングページに戻る
タイピング日記最新版へ