ByteScope

Type Quest

本物のコードを打つ — 打ち終えた作品がすぐ隣で動き出す。

ファイルはブラウザから送信されません — 処理はすべてローカルで行われます。

Pick a project — type it, watch it come alive. Progress is stored only in your browser.

language

clock

JS

bounce

JS

counter

JS

loader

CSS

card

CSS

stopwatch

JS

breakout

JS

orbit

TS

python

Python· typing only (no preview)

c

C· typing only (no preview)

cpp

C++· typing only (no preview)

go

Go· typing only (no preview)

rust

Rust· typing only (no preview)

java

Java· typing only (no preview)

このツールについて

Type Quest は「成果物が残る」コードタイピング練習です。各レッスンは小さな自己完結型のフロントエンド作品(動くデジタル時計、跳ねるボールのアニメーション、CSSローダーなど)で、あなたが打つコードがそのまま実行されるコードです。易しいレッスンでは打つそばからプレビューが育っていき、難しいレッスンでは最後の1文字を打った瞬間に完成した作品が一気に描画されます。タイピングテストを終えるのではなく「動くもの」を完成させる体験で、打ち上げた作品は単一のHTMLファイルとしてダウンロードできます。

タイピングエンジンは数字をごまかしません:難しい文字の自動スキップなし、バックスペースにも実コスト、表示されるWPMは未修正エラーを差し引いたネットWPMです。行頭インデントは自動処理されるので、意味のある文字に集中できます。正しいキーを連続で打つとコンボ倍率が上がり、正打ごとにペンタトニック音階を昇る音が鳴り(コンボでオクターブが上がる)、レッスンクリアで8bitファンファーレが流れます。

毎回のプレイ後には計測機器スタイルの結果レポート — セッション中のWPM曲線、キー別レイテンシヒートマップ、最も遅い記号Top 5、正確率、最大コンボ — が表示され、進捗はローカルに蓄積されます:レッスン別ベストWPM、セッションをまたぐ成長曲線、苦手キーの統計。すべてブラウザのlocalStorageのみに保存され、アップロードもアカウントも不要。ボタン1つで全消去できます。

ボス戦はこのゲームのクライマックスです。断片ではなく丸ごと1つの動くプロジェクトを、ボスの反撃を受けながら打ち切ります:マークされた文字まで期限内に打ち急ぐ「ラッシュ」攻撃、時間内ノーミスで耐える「フォーカス」の呪い、画面シェイク、表示がわざと嘘をつく「タイポトラップ」、さらに全体の制限時間も。あなたのミスはボスの必殺技を、高コンボの継続はあなたの必殺技をチャージします。プレビューは最後の1文字までロックされ、打ち終えることこそがとどめの一撃 — たった今自分が打ち上げた作品が画面上でボスを倒します。コンボは音楽そのものも動かします:パーカッションのパルスがタイピングを支え、コンボ階級が上がるほどベースラインとメロディ伴奏が重なり(テンポはあなたの打鍵速度に追従)、コンボが切れると曲はパルスだけに剥がれ落ちます。

レッスンのコードはすべて本サイト向けにオフラインで機械生成されたオリジナルコードです。第三者のコードは一切使っていません。一貫したスタイルで整形され、パース可能かつ実際に動くことを検証済みです。

Type Quest はフロントエンド言語だけにとどまりません。TypeScript のレッスンは完全に実行可能で、型付きソースを打つと、ライブプレビューはそれをオフラインでトランスパイルした JavaScript を実行します。Python・C・C++・Go・Rust・Java はタイピング専用です。ブラウザではこれらを実行できないため、ライブプレビューはなく、プレイ画面もそのことを正直に伝えます —— 見返りはタイピング練習そのもので、慣用的で難易度に応じたスニペット(チャネルを使った Go のワーカープール、ライフタイムと match を使う Rust のジェネリックスタック、Java のストリーム処理、C++ のテンプレートと STL など)を打ちます。各言語はそれぞれの流儀(4スペースインデント、または Go の gofmt のタブ)で整形されます。タブも行頭インデントとしてスペースと同じように自動スキップされるので、打つ必要はありません。ブラウザ内のパーサーではこれらの言語を Web レッスンのように検証できないため、タイピング専用スニペットはすべて出荷前に人手でレビューしています。レッスン一覧の上にある言語フィルターで、目的の言語へ直接ジャンプできます。

レッスンライブラリはマップでもあります:各プロジェクトタイプが1つの「リージョン」で、それぞれ独自の難易度ラダーを持ち、1ステップをクリアすると同じリージョンの次のステップが解放されます —— 他のリージョンを試すために1つのリージョンを極める必要はありません。ボスレッスン(The Chrono Keeper、The Brick Warden)はマップ上のテーマ性を持ったゲートです:そのボスへ至るすべてのリージョンに少なくとも1回触れると解放され、同じ区間に複数のボスがいる場合はさらに直前のボスを倒す必要があります。クリアしたレッスンはボスかどうかにかかわらずすべてコレクションギャラリーに追加されます:ベスト記録と実際の作品のサムネイル付きのカードで、再実行(同時に動くライブプレビューは常に1つだけなのでページは軽快)、フルサイズ表示、HTMLとしてダウンロード、レッスンのやり直しができます。

診断はそのままトレーニングにつながります。進捗タブには全セッション累積の、キーボード型のヒートマップが表示されます — オレンジの塗りは自分の他のキーより遅いキー、マゼンタの枠はミスの多いキー(最低試行回数に達したキーだけが対象になるので、序盤の1回のタイポで烙印を押されることはありません)。このプロファイルから「Train weak keys(弱点キー特訓)」が、あなたの苦手文字を最も濃く含むレッスンを推薦し、理由も明示します:そのレッスンが狙う文字と、各文字の現在のエラー率。推薦レッスンをクリアすると対象キーのビフォー/アフター比較が表示され、その後のセッションでヒートマップが冷えていくのを見届けられます。目標WPMでクリア済みのレッスンは推薦から除外されるため、推薦は常に「まだ伸びしろのある場所」を指します。

長期的な再訪の仕組みがループを締めくくります。デイリーチャレンジは日付の固定ハッシュで1つのレッスンを選びます — 同じUTCの暦日であれば誰が訪れても同じレッスンで、バックエンドは一切使いません。1回クリアすればその日の記録として保存され、今日のWPMが昨日と比べてどうかと、連続達成日数(ストリーク)が表示されます。レッスンのクリア、あるプロジェクトタイプの全難易度制覇、全D5レッスンのクリア、ボス撃破、WPMの節目達成、7日間のストリーク維持、フラグの立った苦手キーをエラー率5%未満まで鍛え直すこと — これらすべてが実績バッジを解除し、新しく解除されるとすぐにトースト通知が出て、進捗タブのBadgesセクションには獲得済みのバッジが解除日付とともに残り続けます。通常練習・ボス戦・デイリーチャレンジのどの結果画面でも、実績解除のトーストからでも、共有可能なPNGの結果カード — ブラウザ内でcanvasにより完全に生成され、アップロードは一切発生しません — を作成でき、ダウンロードするか端末の共有シートに渡せます。

よくある質問

デイリーチャレンジとは何ですか?
UTCの暦日ごとに、日付の固定ハッシュがライブラリから1つのレッスンを選びます — 同じ日にアクセスした人は誰でも同じレッスンになり、バックエンドは一切使いません。1回クリアするとその日の記録として保存され、やり直した場合は一番良い記録だけが残ります。Practiceタブのデイリーカードには、今日の記録(プレイ済みの場合)、昨日との比較、現在の連続達成日数が表示されます。
実績・バッジはどう機能しますか?
初回クリア、あるプロジェクトタイプの全難易度制覇、全D5レッスンのクリア、各ボスの撃破、記号密度の高いレッスンでの99%以上の正確率、3段階のWPMマイルストーン、デイリーチャレンジの7日間ストリーク、フラグの立った苦手キーをエラー率5%未満まで鍛え直すこと — といった一連のルールが、プレイのたびに再評価されます。新しく解除された実績はすぐにトースト通知が出て、進捗タブの「Badges」セクションに解除日付とともに残り続けます。一度解除された実績が取り消されることはありません。
結果を共有できますか?
はい — どの結果画面にも実績解除のトーストにも、共有/ダウンロードボタンがあります。ブラウザのcanvas APIで端末上にPNGカード(レッスン名、WPM/正確率/コンボ、簡易WPM曲線)を生成し、端末の共有シート(主にスマートフォン)に渡すか、ダウンロードします。生成にあたって何もアップロードされません。
タイピングデータはどこかにアップロードされますか?
いいえ。タイピングエンジン、統計、音の合成、ライブプレビューはすべてブラウザ内で動作します。進捗(ベストWPM、履歴、苦手キー、音量設定)はブラウザのlocalStorageのみに保存され、サーバーもアカウントもありません。クリアボタンですべて削除できます。
WPMはどう計算されますか?
グロスWPMは全キーストローク÷5を毎分換算した値、ネットWPMはそこから未修正エラーを差し引いた値です。レポートには両方表示されますが、記録と成長曲線は常にネットWPMを使います。バックスペースは無料ではなく、難しい文字のスキップもないため、数字は実力を反映します。
インデントも打つ必要がありますか?
いいえ — 行頭のインデントは自動的にスキップされ、意味のある文字に集中できます。これはレッスンがスペースでインデントしていても、タブ(Go の gofmt スタイル)でインデントしていても同じで、どちらの行頭の連なりも同様に自動スキップされます。行の途中のスペース、改行(Enter)、すべての記号は正確に打つ必要があります。スペースは·、改行は↵、タブは⇥で表示されます。
どのプログラミング言語を練習できますか?
実行可能なレッスンはフロントエンドの Web コード —— JavaScript・CSS・TypeScript —— を扱い、打った内容がそのままライブで動くプレビューになります(TypeScript では型付きソースを打ち、サンドボックスがオフラインでトランスパイルした JavaScript を実行します)。それに加えて Type Quest には Python・C・C++・Go・Rust・Java のタイピング専用レッスンがあります。ブラウザはこれらの言語を実行できないため、ライブプレビューはなく、プレイ画面は集中できる単一列のタイピング表示になり、そのことを正直に示します。いずれも慣用的で難易度に応じたスニペットで、各言語の流儀(4スペースインデント、または Go の gofmt のタブ。タブはスペースと同じくインデントとして自動スキップされます)で整形されています。ブラウザ内のパーサーで検証できないため、タイピング専用レッスンはすべて出荷前に人手でレビューしています。レッスン一覧の上の言語フィルターで目的の言語へ直接移動できます。
一部のレッスンでプレビューが最後にしか出ないのはなぜ?
難易度1〜2のレッスンは打ちながら段階的に描画され、作品が育つ様子が見られます。難しいレッスンは完成の瞬間まで描画を保留し、クリアの瞬間に爆発的に表示されます。書きかけのコードは構文エラーになりがちなので、難しいJSは途中では動かないという実情にも合っています。
打ち上げた作品は保存できますか?
はい — レッスンクリア後、打ち上げた作品を単一の自己完結型HTMLファイルとしてダウンロードでき、どのブラウザでもオフラインで動きます。
レッスンのコードはどこから来ていますか?
すべて本サイト向けにオフラインで生成されたオリジナルコード(license: generated)です。オープンソースからの収集は行っておらず、第三者の著作権の問題はありません。各レッスンは出荷前にパースと実行の機械検証を通過しています。
ボス戦はどう遊ぶのですか?
ボスレッスンは攻撃を受けながら丸ごと1つの動くプロジェクトを打ち切る戦いです。ボスは攻撃を予告します:「ラッシュ」はマークされた文字へ期限内に到達(スピード)でブロック、「フォーカス」はウィンドウ内ノーミス(正確さ)で耐えます。ブロック失敗はあなたのHPを削り、あなたのミスはボスの回避不能な必殺技をチャージ、高コンボはあなた自身の必殺をチャージします。勝つ方法はただ1つ、プロジェクトを完成させること — 描画は最後の1文字までロックされ、完成した作品がとどめの一撃を放ちます。負けた場合(HPゼロか時間切れ)は敗因を正直にまとめたサマリーが出て、すぐ再挑戦できます。
表示どおりに打ったのに不正解になりました。バグですか?
それは「タイポトラップ」— ボスの妨害技の1つです。後半フェーズでは、これから打つ1文字の表示がわざと嘘をつきます(実際のコードは ; なのに : と表示するなど)。コードが「本来どうあるべきか」を打てば回避でき、引っかかるとバックスペースで修正が必要になります。コードパネル下の通知が、トラップの解除タイミングと嘘の内容を教えてくれます。トラップはボス戦だけの仕掛けで、フリー練習の表示は常に正直です。
マップタブとは何ですか?
レッスンライブラリ全体を1つの旅として表示します。各プロジェクトタイプは独自のD1→D3→D5のはしごを持つリージョンで、1ステップをクリアすると同じリージョンの次のステップが解放されます —— 他のリージョンを試すために先に1つを完了させる必要はありません。ボスレッスンはゲートとして配置されます:そのボスへ至るすべてのリージョンで少なくとも1回クリアすると解放され、同じ区間に複数のボスがいる場合は直前のボスを倒した後に解放されます。ロックされたノードには、常に何をすれば解放されるかが表示されます。
ギャラリー(コレクション)とは何ですか?
クリアしたレッスンは通常レッスンでもボス戦でも、すべてコレクションにカードとして追加されます:そのレッスンのベストWPM・正確率・最大コンボと、実際に動くプロジェクトです。サムネイルをクリックするとライブで実行できます(ページを軽快に保つため、同時に動くプレビューは常に1つだけ)。フルサイズで開く、単一のHTMLファイルとしてダウンロードする、レッスンをもう一度プレイし直すこともできます。
弱点キー特訓(Train weak keys)はどう機能しますか?
打鍵のたびに文字ごとのエラーと遅延が記録され、セッションをまたいでブラウザ内に蓄積されます。進捗タブではそれをキーボード型ヒートマップとして表示し(オレンジ=自分の他のキーより遅い、マゼンタ=ミスが多い)、さらに各レッスンのコードがあなたの苦手文字をどれだけ濃く含むかでレッスンライブラリをランク付けします。上位の推薦は「Train weak keys」カードとして表示され、狙う文字と各文字のエラー率が明示されます。推薦レッスンをクリアすると対象キーのビフォー/アフター比較が出ます。目標WPMでクリア済みのレッスンは除外されるので、特訓は常に本当の弱点に向かいます。
よくミスするキーがヒートマップや推薦に出てこないのはなぜ?
文字が対象になるには、全セッション合計で最低試行回数(5回)が必要です — 珍しい記号での1回のミスはまだ弱点とは言えないため、序盤のデータにはあえて反応しません。遅さも絶対速度ではなく自分の中央値との比較で判定されるので、全体的に慎重なペースでもすべてが弱点扱いにはなりません。プレイを重ねれば条件を満たしたキーが点灯し、十分な試行と本物の弱点シグナルを持つ文字が現れた時点で推薦が表示されます。