0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

単語修行アプリ 要件定義書

0
Posted at
Page 1 of 23

単語鉄壁修行アプリ 要件定義書

1. 目的

本アプリは、スマートフォンで高速に英単語学習を回すための、単一HTMLファイル型の暗記アプリである。
単なる単語表示ではなく、忘却曲線を意識した数値管理を行い、苦手な単語ほど前に出しやすくする。
学習状態の保存は外部サーバーを使わず、コピー&ペーストだけで完結させる。
特に、今回の要件では「間違った単語のコピー」と「暗記状態を表す数値データのコピー」を明確に分離し、どちらも使いやすくすることを重視する。これは、苦手語の復習用出力と、状態復元用の数値出力を別にしたいという既存方針の延長である。


2. 対象端末

対象端末はスマートフォンを最優先とする。
主対象は iPhone と Android のブラウザ利用である。
PCでも動作してよいが、UI設計はスマートフォン中心とする。
画面中央に単語を大きく表示し、大きな操作ボタンで片手操作しやすい構成を前提とする。


3. 提供形態

アプリは単一HTMLファイルで提供する。
HTML、CSS、JavaScript はすべて1ファイル内に含める。
通信なしでも動作する形とする。
外部ライブラリは使わない。
読み上げはブラウザ標準の Web Speech API を使う。


4. 基本構成

本アプリで扱うデータは、次の2種類に分ける。

単語帳本体データ
暗記管理データ

この2つは必ず分離して扱う。
さらに、出力についても次の2種類を分離する。

間違った単語リスト
暗記管理データのコピー用文字列

つまり、入力2系統、出力2系統の構造を持つ。
既存仕様でも、苦手単語リストと暗記管理データは別用途なので別欄で扱うことが明示されている。


5. 単語帳本体の配置方針

5-1. 単語帳はHTML内に持つ

今回の要件では、単語帳本体は外部ファイルから読み込むのではなく、HTMLファイル内にあらかじめ埋め込む。
これにより、ファイル1つで持ち運べる状態を保つ。

5-2. ただし編集しやすいように分離する

HTML内には含めるが、実装上はアプリ本体ロジックとは分離した専用ブロックに置く。
たとえば次のいずれかの形を前提とする。

const WORDS_TEXT = \...``のような専用定数
または <script type="text/plain" id="words-data">...</script> のような専用領域

要するに、単語データを書き換える場所を1か所に固定し、あとで差し替えやすくする。
UIロジックやSRSロジックの中に単語を散らさない。

5-3. 変更容易性の要件

単語帳を変更したい場合、ユーザーはその専用ブロックだけを編集すればよい。
JavaScript本体を触らなくても差し替えできる構成とする。


6. 単語帳本体データ仕様

6-1. 形式

1行につき1単語を記述する。
標準形式は以下とする。

英語[TAB]日本語番号


abandon 捨てる1
abstract 抽象的な2
access 利用する3

この形式は、英語、日本語、番号を1行で扱え、コピペしやすく、生成もしやすい。

6-2. 番号ルール

すべての単語は 1 から始まる連番で管理する。
番号は必ず連続していなければならない。
欠番、重複、途中開始は不可とする。
番号は単語IDであり、暗記管理データとの対応、範囲指定、出題制御、復元処理の基準になる。

6-3. 日本語の後ろに番号を付ける理由

単語一覧として見たときに識別しやすい。
暗記管理データを番号だけで持てる。
生成AIで作りやすい。
コピペしやすい。


7. 暗記管理データ仕様

7-1. 目的

暗記管理データは、各単語の記憶状態を軽量な数値だけで管理し、次回の学習状態を復元するために使う。
既存方針でも、単語全文ではなく番号ベースで保存することでデータ量を小さくすることが重視されている。

7-2. 管理項目

各単語は次の3項目を持つ。

番号
level
interval

意味は次の通り。

番号
単語ID

level
記憶の強さ

interval
次に後ろへ回す強さ

7-3. 標準保存形式

暗記管理データの標準保存形式は次とする。

番号:level:interval


1:0:1
2:3:5
3:-2:1

7-4. コピペしやすい圧縮形式

通常のコピー出力では、次の1行圧縮形式を使う。

1:0:1,2:3:5,3:-2:1

この形式を標準のエクスポート形式とする。
単語文字列を含まないため短く、保存しやすく、再入力もしやすい。

7-5. インポートしやすさの要件

暗記管理データは、貼り付けるだけで読み込めることを必須とする。
番号で照合し、対応する単語へ level と interval を復元する。
単語文字列一致ではなく番号一致で処理する。
これにより、インポート時の判定が単純になり、保存データも短いまま保てる。

7-6. 初期値

暗記管理データが未入力で開始された場合、全単語に対して次を自動設定する。

level = 0
interval = 1


8. 忘却曲線を意識した暗記ロジック

8-1. 基本方針

本アプリは、Ankiに近い考え方として、覚えている単語は出題頻度を下げ、苦手な単語はすぐ再出題しやすくする。
ただし、日時やカレンダーではなく数値だけで管理する。

8-2. 更新規則

わかる を選んだ場合
level = level + 1
interval = interval × 2 + 1

苦手 を選んだ場合
level = level - 2
interval = 1

時間切れ の場合
level = level - 2
interval = 1

8-3. 制限値

level の下限は -5
level の上限は 10
interval の下限は 1

8-4. 意味

level が低いほど苦手である。
interval が小さいほど近いうちに再出題されやすい。
この2値により、忘れやすい単語を前に出す。
既存の方針でも、苦手または時間切れを強く前に戻し、覚えた単語は後ろへ回す設計が前提になっている。


9. 出題アルゴリズム

9-1. 出題対象

修行開始時に、選択された範囲内の単語だけを対象とする。

9-2. 優先度

出題優先度は、次の式で求める。

優先度 = interval - level

値が小さい単語ほど先に出題する。

9-3. 同点時の処理

同じ優先度の単語は内部でシャッフルする。
毎回同じ並びにならないようにする。
既存要件でも、苦手優先と同点シャッフルは必須機能に含まれている。

9-4. セッション中の再出題

苦手または時間切れになった単語は、そのセッション中にも再度出せるようにする。
初期版では、セッション末尾へ再追加する方式でよい。


10. 範囲指定

10-1. 基本方針

範囲は単語番号で指定する。
100語単位のボタンで範囲選択できるようにする。


1-100
101-200
201-300
301-400

10-2. 複数選択

複数範囲を同時選択できるようにする。
既存要件でも、百語単位の範囲選択は初期版の必須機能に含まれている。


11. テスト進行仕様

11-1. 二段階表示

各問題は次の順で進行する。

英語のみ表示
想起待ち
日本語表示
判定入力
数値更新
次へ移動

11-2. 想起フェーズ

最初に英語だけを表示する。
ユーザーはこの間に意味を思い出す。

11-3. 確認フェーズ

設定した時間が経過したら日本語を表示する。
必要に応じて読み上げを行う。

11-4. 判定フェーズ

日本語表示後に解答制限時間を設ける。
その間に「わかる」または「苦手」を入力する。
未入力なら自動で苦手扱いにする。
この時間切れ自動苦手も既存必須機能に含まれている。


12. 時間設定

設定項目は次の2つとする。

英語表示秒数
解答制限秒数

テンポよく回せる短い初期値を用意する。
スマートフォンでの周回学習を前提とする。


13. UI要件

13-1. スマートフォン優先UI

画面中央に英単語を大きく表示する。
日本語はその下に表示する。
下部に大きな操作ボタンを配置する。
スマートフォン向け大ボタンUIは既存要件でも必須である。

13-2. 必須ボタン

開始
停止
わかる
苦手
再読

13-3. 表示情報

現在何問目か
正解数
不正解数
進行率

これらは小さく見やすく表示する。
余計な情報は減らし、単語に集中しやすい画面とする。

13-4. スワイプ対応

右スワイプ = わかる
左スワイプ = 苦手

初期版ではタップ操作優先でもよいが、対応余地を持たせる。


14. キーボード操作

PCでは次を使えるようにする。

Z = わかる
A = 苦手
C = 再読
Space = 停止または再開

このキー割り当ても既存仕様に含まれている。


15. 読み上げ

読み上げはブラウザ標準TTSを用いる。
英語読み上げを優先する。
必要に応じて日本語読み上げも切り替え可能にする。
速度調整を設ける。


16. 結果表示

修行終了後、以下を表示する。

開始時刻
終了時刻
経過秒数
出題数
正解数
不正解数
正答率

これは学習の確認用である。


17. コピペ出力機能

今回の追加要件の中心はここである。
コピペしやすい出力は、必ず次の2系統に分ける。

17-1. 間違った単語コピー

目的は復習用である。
今回のセッションで間違えた単語だけを抽出し、単語帳と同じ形式で出力する。

形式
英語[TAB]日本語番号


abandon 捨てる1
access 利用する3

この欄は、生成AIへ貼る、復習メモに保存する、苦手リストを再利用する、といった用途を想定する。
既存仕様でも、苦手単語リストは単語帳と同じ形式でワンタップコピーできることが求められている。

17-2. 暗記っぽい数値コピー

目的は状態保存と次回復元用である。
全単語分の暗記状態を、圧縮した数値列で出力する。

形式
1:0:1,2:3:5,3:-2:1

この欄は、次回の学習状態を復元するために使う。
単語文字列を含まないため短く、コピペしやすい。
既存仕様でも、暗記管理データは番号ベースの軽量形式で一括保存し、コピペで復元する方針になっている。

17-3. 分離要件

「間違った単語コピー」と「暗記っぽい数値コピー」は、別のテキストエリア、別のコピーボタン、別の見出しで扱う。
1つに混ぜない。
用途がまったく違うためである。


18. インポート機能

18-1. 暗記っぽい数値のインポート

貼り付け欄に数値列を貼るだけで読み込めることを必須とする。
入力形式は圧縮形式を標準とする。


1:0:1,2:3:5,3:-2:1

必要なら改行形式も読めるようにしてよい。


1:0:1
2:3:5
3:-2:1

18-2. 読み込み方法

カンマまたは改行で分割し、各要素を 番号:level:interval として解析する。
番号で単語に対応付ける。
単語全文照合は行わない。
これにより、インポートしやすく、壊れにくく、短い形式を保てる。

18-3. インポート優先設計

暗記っぽい数値は、出力しやすいだけでなく、再入力しやすいことを重視する。
そのため、次を要件とする。

余計な説明文を含めない
データ部分だけをコピーできる
前後の空白や改行を許容する
カンマ区切り1行でも貼れる
改行形式でも貼れる


19. エラー処理

次の場合はエラー表示を行う。

単語帳の番号が 1 から始まっていない
番号が飛んでいる
番号が重複している
英語または日本語が空
暗記管理データの番号が単語帳に存在しない
数値形式が壊れている

エラー時は問題のある行や要素を示す。
これらの検証項目は既存仕様でも明示されている。


20. 初期版で必須の機能

単一HTMLで動作
単語帳はHTML内に保持し、専用ブロックで分離して編集しやすくする
単語は 1 からの連番で検証する
暗記管理データのインポート欄を持つ
暗記管理データを軽量形式でエクスポートできる
間違った単語だけを別欄でエクスポートできる
苦手優先の出題
同点シャッフル
百語単位の範囲選択
英語表示後に日本語表示
時間切れ自動苦手
スマートフォン向け大ボタンUI
Z と A のキー対応
結果表示

既存の必須機能一覧を踏まえつつ、今回の追加点は「単語帳のHTML内分離」「間違った単語コピーと暗記数値コピーの明確な二分化」「暗記数値のインポートしやすさ強化」である。


21. データ例

21-1. 単語帳本体

abandon 捨てる1
abstract 抽象的な2
access 利用する3

21-2. 暗記っぽい数値

1:0:1,2:3:5,3:-2:1

21-3. 間違った単語コピー

abandon 捨てる1
access 利用する3

これらの基本形式は既存仕様の例と整合する。


22. 要点まとめ

単語帳はHTML内に持つが、編集しやすいように専用ブロックへ分離する。
単語は必ず 1 からの連番で管理する。
暗記状態は 番号:level:interval で管理する。
忘却曲線を意識し、覚えた単語は後ろへ、苦手単語は前へ出しやすくする。
コピペ出力は「間違った単語」と「暗記っぽい数値」に分ける。
暗記っぽい数値は短い圧縮形式で出し、そのまま貼ってインポートしやすくする。
スマートフォンで使いやすい大ボタンUIにする。
単一HTMLだけで完結する。


follow,~の後に続く/~に従う1
consider,~を考慮する2
increase,増える/~を増やす3
expect,~を予期する4
decide,~することを決意する5
develop,発達する/~を発達させる6
provide,~を供給する/与える7
continue,続く/~を続ける8
include,~を含む/含める9
remain,ままでいる10
reach,~に着く/~に達する11
allow,~を許可する12
force,~を強制する13
offer,~を申し出る14
realize,~を悟る15
suggest,~と提案する/~をほのめかす16
require,~を必要とする17
worry,心配する18
wonder,~かと疑問に思う19
cost,~を要する20
tend,~する傾向がある/~しがちである21
depend,~に依存する/~しだいで決まる22
share,~を分け合う/共有する23
demand,~を要求する24
support,~を支持する25
hire,~を雇う26
regard,AをBだと思う/みなす27
base,AがBに基づいている28
improve,~を向上させる29
recognize,~を認める30
notice,~に気づく31
suppose,~だと思う32
raise,~を上げる/~を育てる33
prefer,~をより好む34
cheer,~を励ます35
suffer,~を経験する/受ける/苦しむ36
describe,~を描写する/~の特徴を説明する37
prevent,~をさまたげる38
reduce,~を減らす39
mistake,~を誤解する/まちがえる40
prepare,~の準備をする41
encourage,はげます42
prove,~だとわかる43
treat,~をあつかう44
establish,~を設立する/創立する45
relate,関係がある46
compare,~を比較する/~をたとえる47
spread,~を広げる/広がる48
refer,~を指示する49
supply,~を供給する50
gain,~を得る51
destroy,~を破壊する52
apply,当てはまる/申し込む53
seek,~を求める54
search,~を捜す55
claim,~と主張する56
draw,~を引っぱる57
refuse,~を断る58
respond,~に返答する59
mention,~について述べる60
judge,~を判断する61
approach,~に接近する/~に取り組む/方法62
admit,~を認める63
reflect,~を反映する/~を反射する64
perform,~を行う/~を遂行する65
bore,~をうんざりさせる66
survive,生き残る67
represent,~を表す68
argue,~と主張する69
grant,~を認める/~を与える70
indicate,~を指し示す71
belong,所属している72
acquire,~を習得する73
reply,返事をする74
feed,~にエサをやる75
escape,逃げる76
replace,~に取って代わる/~を取り替える77
reveal,~を明らかにする78
surround,~を取り囲む79
suit,~に合う80
estimate,~を推定する81
aim,~をねらう82
earn,~をもうける/かせぐ83
decline,衰退する/低下する/~を辞退する84
afford,~をする余裕がある85
confuse,~を当惑させる86
graduate,~を卒業する87
vary,変わる/さまざまである88
remove,~を移す/取り去る89
insist,~と主張する/言い張る90
examine,~を調査する91
remind,AにBを思い出させる92
contribute,~に貢献する/~の一因となる/AをBに寄付する93
warn,~に警告する94
connect,~をつなぐ95
match,~に匹敵する/~に調和する96
focus,焦点を合わせる97
reject,~を断る98
convince,~を納得させる/確信させる99
associate,AをBに関連づける/AからBを連想する100
rush,急いで行く101
stress,~を強調する102
attract,~を引きつける103
rely,Aに頼る104
regret,~を後悔する105
adopt,~を採用する106
shake,~を振る107
hurt,~を傷つける108
operate,作動する/~を操作する/手術する109
extend,~を広げる/延長する110
blame,~を非難する/~のせいにする111
consist,Aで構成されている112
persuade,~を説得する113
admire,~に感心する114
disappoint,~を失望させる115
expand,拡大する116
preserve,~を保護する117
struggle,苦闘する/もがく118
arrange,~の手はずを整える/~を配列する119
disturb,~を妨げる120
employ,~を雇う/~を用いる121
engage,Aに従事する/Aを行う122
abandon,~を捨てる123
display,~を展示する/~を表す124
encounter,~に偶然出会う125
amuse,~を楽しませる126
bother,~に面倒をかける/困らせる127
concentrate,集中する128
adapt,~を適応させる/適応する129
puzzle,~を当惑させる130
appeal,Aに訴える/~を引きつける131
combine,~を結合させる132
delay,~を遅らせる133
repair,~を修理する134
fascinate,~を夢中にさせる135
pardon,~を許す136
import,~を輸入する137
remark,述べる138
reserve,~を予約する/~を取っておく139
amaze,~を驚嘆させる140
frighten,~をおびえさせる141
release,~を解放する/~を発表する142
rent,~を賃借りする143
recover,Aから回復する144
suspect,~ではないかと思う/~を疑う145
deliver,~を配達する/渡す/~をする146
identify,~の正体をつきとめる/Aと共感する147
locate,位置する148
manufacture,~を製造する149
occupy,~を占める150
own,~を所有している151
expose,AをBにさらす152
translate,~を翻訳する153
cure,~を治療する154
perceive,~を知覚する155
adjust,~に慣れる/調節して合わせる156
alarm,~をぎょっとさせる/おびえさせる157
assist,~を助ける/~を手伝う158
freeze,凍りつく159
spoil,~を台無しにする160
shift,~を変える161
embarrass,~を困惑させる/~に恥ずかしい思いをさせる162
approve,賛成する/~を承認する163
weigh,~の重さがある/~を比較検討する/よく考える164
stretch,~を広げる165
participate,Aに参加する166
exhibit,~を展示する167
owe,AのことはBのおかげだ168
celebrate,~を祝う169
decorate,~を装飾する170
forgive,~を許す171
seat,(be seated)座っている172
injure,~を傷つける173
sew,~を縫う174
result,結果175
feature,特徴176
society,社会/協会/団体177
wheel,車輪/ハンドル178
value,価値179
effect,効果/影響/結果180
individual,個人181
influence,影響182
fee,謝礼/料金183
rate,割合/速度184
sign,印/兆候185
service,公共事業/業務186
advance,前進/進歩187
laughter,笑い188
material,物質189
industry,工業190
attempt,試み191
trade,貿易192
progress,進歩/前進193
excuse,言い訳194
custom,習慣/税関195
passage,一節/経過/通行196
economy,経済197
track,小道/足跡198
transportation,交通機関/輸送199
official,役人200
sight,見ること、光景、視力201
taste,味、好み202
range,範囲203
appointment,約束、予約204
patient,患者、忍耐強い205
project,計画206
favor,好意207
appearance,外見、様子、出現208
risk,危険209
benefit,利益210
resident,住民211
relative,親族、親戚212
region,地域213
characteristic,特徴214
pain,苦痛215
twin,双子の一方、双生児216
occasion,場合、機会217
principle,原理、原則218
department,部門、学科219
duty,義務、関税220
scene,場面、現場221
jam,渋滞222
spirit,精神223
medium,手段224
mass,一般大衆、多くの225
audience,聴衆、観客226
element,要素、元素227
climate,気候228
revolution,革命229
quarter,4分の1230
furniture,家具231
brain,脳232
atmosphere,大気、雰囲気233
property,財産234
reward,報酬235
security,安全236
delight,大喜び237
desert,砂漠238
background,背景、生い立ち、経歴239
trend,傾向240
vote,投票241
impact,影響、衝撃242
institution,機関、制度243
interaction,交流244
alternative,代わりのもの245
harm,害246
agency,機関、代理店247
capacity,能力248
minister,大臣249
volunteer,ボランティア250
access,利用する権利251
quantity,量252
branch,枝、支店、支局、部門、分野253
common,共通の、普通の254
rough,荒い、大雑把な255
likely,ありそうな、~する可能性が高い256
serious,深刻な257
particular,ある特定の、特有の258
available,手に入る、利用できる259
bilingual,二言語使用の260
ready,用意ができた261
correct,正しい262
familiar,熟知している、くわしい263
physical,身体の、肉体の264
worth,~の価値がある265
involved,~に関係している、参加している266
fantastic,すばらしい267
private,個人の、私的な268
obvious,明白な269
native,母国の270
complex,複雑な271
willing,~する気がある、~してもかまわない272
current,最新の273
male,男の274
proper,適切な275
capable,~する能力がある276
independent,独立した277
positive,積極的な278
pleasant,楽しい279
significant,重要な280
former,前の281
chemical,化学的な282
upset,動揺している283
previous,前の284
calm,冷静な285
specific,特定の286
conscious,意識している287
superior,よりすぐれている288
efficient,効率がいい289
fundamental,基本的な290
narrow,狭い291
reasonable,理にかなった292
nervous,神経質な、不安な293
alike,似ている294
domestic,家庭の、国内の295
negative,否定の296
moral,道徳的な297
eager,熱望している298
remarkable,すばらしい299
evil,悪い300
awake,目を覚まして301
aged,年老いた302
anxious,心配して、切望して303
tough,たくましい、骨の折れる304
nuclear,核の、原子力の305
legal,合法の、法律の306
curious,好奇心の強い307
civil,一般市民の308
recent,最近の309
senior,上級の、先輩の310
afterward,その後311
nearly,ほとんど312
therefore,それゆえに313
exactly,正確に314
possibly,ひょっとすると、どうしてもVできない315
contrary,反対に316
occasionally,時々317
somehow,どういうわけか、なぜか318
seldom,めったに~ない319
thus,それゆえ、そのように320
throughout,いたる所に321
unlike,~と違って322
besides,~に加えて323
beyond,~の向こうに;~できる範囲をこえて324
within,~以内で325
nor,~もない326
unless,~しない限り327
except,~を除いて328
ought,~すべきである329
in spite of,~にもかかわらず330
whether,~かどうか、~であろうとなかろうと331
explain,~を説明する332
accept,~を受け入れる333
produce,~を生産する334
exist,存在する335
express,~を表現する336
add,~を加える337
avoid,~を避ける338
marry,~と結婚する339
protect,~を守る340
affect,~に影響する341
determine,~を決定する342
solve,~を解決する343
contain,~を含んでいる344
discuss,~を議論する345
ignore,~を無視する346
guess,~を推測する347
exchange,交換する348
satisfy,~を満たす349
complain,苦情を言う350
achieve,~を達成する351
enable,~を可能にする352
intend,つもりだ353
obtain,~を得る354
divide,分割する355
annoy,~をいらいらさせる356
differ,異なる357
educate,~を教育する358
borrow,~を借りる359
invent,~を発明する360
promote,~を促進する361
advise,~に忠告する362
retire,辞める363
permit,~を許す364
recommend,~を勧める365
apologize,謝る366
inform,~に知らせる367
oppose,~に反対する368
trust,~を信用する369
select,~を選ぶ370
praise,~をほめる371
handle,~に対処する372
propose,~を提案する373
breathe,~を呼吸する374
criticize,~を非難する375
overcome,~に打ち勝つ376
possess,~を持っている377
predict,~を予言する378
publish,~を出版する379
floating,浮かぶ380
recall,~を思い出す381
explore,~を探検する382
pretend,ふりをする383
absorb,~を吸収する384
resemble,~に似ている385
tear,~を引き裂く386
consume,~を消費する387
compete,競争する388
quit,~をやめる389
announce,~を発表する390
react,反応する391
wander,歩き回る392
text,メールを送る393
generate,~を生み出す394
score,~を取る395
government,政府396
knowledge,知識397
nation,国398
effort,努力399
period,時代400
population,人口401
purpose,目的402
behavior,行動403
lack,不足404
skill,技術405
quality,質406
environment,環境407
role,役割408
attitude,態度409
author,筆者410
research,研究411
opportunity,機会412
source,源413
carbon,炭素414
shape,形415
advantage,利点416
method,方法417
habit,習慣418
detail,細部419
distance,距離420
crowd,群衆421
instance,例422
desire,願望423
standard,水準424
task,仕事425
generation,世代426
responsibility,責任427
experiment,実験428
athlete,運動選手429
decade,10年430
loss,損失431
fever,熱432
theory,理論433
statement,記述434
professor,教授435
function,機能436
surface,表面437
envelope,封筒438
organization,組織439
policy,政策440
resource,資源441
contrast,対比442
flood,洪水443
mate,連れ合い444
goods,商品445
creature,動物446
structure,構造447
tradition,伝統448
weight,体重449
charity,慈善450
citizen,市民451
impression,印象452
cartoon,マンガ453
career,経歴454
site,用地455
passenger,乗客456
violence,暴力457
income,所得458
temperature,気温459
majority,大多数460
origin,起源461
literature,文学462
equipment,設備463
stranger,見知らぬ人464
strength,強さ465
planet,惑星466
fiction,小説467
religion,宗教468
pollution,汚染469
wealth,富470
document,文書471
profit,もうけ472
technique,技術473
emotion,感情474
phenomenon,現象475
horror,恐怖476
ladder,はしご477
billion,十億478
status,地位479
youth,若者480
confidence,自信481
edge,周辺482
household,家庭483
scholar,学者484
survey,調査485
vocabulary,語彙486
enemy,敵487
construction,建設488
lecture,講義489
instruction,指示490
crisis,危機491
instrument,器具492
crop,作物493
weapon,兵器494
device,装置495
path,道496
earthquake,地震497
stream,小川498
notion,概念499
yard,庭500
victim,犠牲者501
fuel,燃料502
ancestor,祖先503
soil,土壌504
debate,討論505
crime,犯罪506
colleague,同僚507
shelf,棚508
analysis,分析509
universe,宇宙510
electricity,電気511
insect,昆虫512
web,巣513
storm,嵐514
plenty,十分な515
agriculture,農業516
gene,遺伝子517
evidence,証拠518
consequence,結果519
infant,幼児520
leisure,暇521
cell,細胞522
talent,才能523
advertising,広告524
extent,程度525
garbage,ごみ526
general,一般527
various,さまざまな528
similar,似ている529
complete,完全な530
sharp,急激な531
expensive,高価な532
political,政治的な533
aware,気づいている534
ancient,古代の535
medical,医学の536
essential,不可欠だ537
huge,巨大な538
terrible,ひどい539
practical,実用的な540
entire,全541
favorite,いちばん好きな542
comfortable,快適な543
minor,小さい544
typical,典型的な545
ideal,理想的な546
principal,主要な547
appropriate,適切な548
empty,からの549
rapid,急速な550
mental,精神の551
excellent,すばらしい552
convenient,都合がいい553
potential,潜在的な554
financial,財政的な555
enormous,莫大な556
rare,珍しい557
artificial,人工558
tiny,ちっちゃな559
considerable,かなりの560
sensitive,敏感な561
intellectual,知的な562
thirsty,のどが渇く563
polite,礼儀正しい564
accurate,正確な565
rude,失礼な566
sufficient,十分な567
urban,都会の568
temporary,一時的な569
primitive,原始的な570
permanent,永久571
elderly,高齢の572
severe,厳しい573
brief,簡潔な574
mobile,流動的な575
latest,最新の576
military,軍事的な577
strict,厳しい578
solid,固体の579
stupid,ばかな580
biological,生物581
probably,おそらく582
hardly,ほとんど~ない583
immediately,すぐに584
eventually,ついに585
frequently,しばしば586
extremely,非常に587
gradually,だんだん588
instantly,すぐに589
nevertheless,それにもかかわらず590
moreover,その上591
relatively,比較的592
apparently,一見593
definitely,絶対594
largely,主に595
mostly,大部分は596
approximately,およそ597
overnight,一晩598
accidentally,偶然599
despite,にもかかわらず600
proceed,進む601
ensure,~を確実にする602
interpret,~を解釈する603
cease,~しなくなる604
ban,(公式に)~を禁止する605
obey,~に従う606
eliminate,(不要なもの)を除去する607
resist,~に抵抗する608
accompany,〈人〉に同伴する609
commit,〈罪など〉を犯す、~をゆだねる、委任する、(本気で)取り組む610
pursue,~を追求する611
demonstrate,(証明などが)~を明らかに示す612
bet,きっと~だと思う613
ruin,~を台無しにする、破滅させる614
threaten,~を脅迫する615
attach,AをBにくっつける616
reverse,~を反対にする、逆転する617
restrict,~を制限する618
compose,~を組み立てる619
lean,よりかかる、もたれる620
substitute,~を代わりに用いる621
trace,~の跡をたどる622
interrupt,~を妨げる623
confront,~の前に立ちふさがる、~に立ち向かう624
illustrate,~を(例で)示す625
arrest,~を逮捕する626
stimulate,~を刺激する627
assure,(~を)保証する628
consult,~に相談する、~を参照する629
depress,~を憂鬱にさせる630
crash,激突する631
inspire,~を奮起させる、やる気にさせる632
specialize,Aを専門にする、専攻する633
cultivate,(植物)を栽培する、(感情・能力などを)育む634
fulfill,(約束・夢など)を果たす635
transmit,~を送る、伝える636
found,~を創立する、設立する637
clap,(手など)をたたく638
burst,破裂する、突然~しだす639
bow,おじぎする640
dismiss,(考えなど)を無視する、(人)を解雇する、解散する641
breed,~を繁殖させる、繁殖する642
prohibit,〈法・団体が〉~を禁じる643
oblige,~に強いる644
qualify,Aに適任である645
invest,(金)を投資する646
grasp,~を理解する647
collapse,崩壊する648
overlook,~を見落とす、~を見逃す649
accuse,~を非難する650
frustrate,〈人〉を欲求不満にさせる651
deprive,AからBを奪う652
astonish,~を驚嘆させる653
register,~を登録する654
correspond,一致する655
cast,~を投げる656
attribute,AはBのおかげだと思う657
neglect,~を無視する、怠る658
starve,飢える659
resolve,(問題など)を解決する660
impose,AをBに課す、押し付ける661
convert,~を転換する662
scare,~をおびえさせる663
constitute,~を構成する、占める、~である664
appoint,~を任命する665
imply,~を(暗に)意味する666
assign,(仕事・物)を割り当てる667
nod,うなずく668
elect,~を選挙で選ぶ669
transfer,~を移す670
rob,AからBを奪う671
capture,~を捕らえる672
undertake,(仕事など)を引き受ける673
drown,おぼれ死ぬ674
split,~を割る、分裂する675
resort,Aに訴える676
descend,下る、降りる677
irritate,~をいらだたせる678
pronounce,〈単語など〉を発音する679
equip,~を装備させる680
cheat,いかさまをする681
emerge,〈隠れていたものが〉現れる682
devote,~をささげる683
heal,〈けがなど〉を治す、治る684
urge,~に強く迫る、~を説得する685
envy,~をうらやむ686
chase,~を追いかける687
prompt,~を促す688
withdraw,~を引っ込める、引きこもる、退く、(預金など)を引き出す689
detect,~を探知する、~を発見する690
interfere,Aを邪魔する691
kid,冗談を言う、からかう692
launch,(ロケットなど)を打ち上げる693
endanger,~を危険にさらす694
foster,~を促進する、育成する695
diminish,減少する、衰える、~を減らす696
spill,~をこぼす697
infect,〈人〉に感染する698
stem,Aから生じる、Aに由来する699
tap,~を軽くたたく700
embrace,受け入れる、含む701
proportion,比率702
contract,契約703
chest,胸704
treasure,財宝705
stock,株(式)706
facility,設備、施設707
sum,金額、合計、要約708
rank,地位709
democracy,民主主義、民主国家710
emergency,緊急事態711
protest,抗議712
immigrant,移民713
vehicle,車、乗り物、手段714
routine,決まりきった仕事、日課715
stuff,物716
row,列717
profile,プロフィール、人物紹介、横顔718
dawn,夜明け719
welfare,福祉720
perspective,見方721
enthusiasm,熱意、情熱722
faith,信頼723
occupation,職業、占領724
witness,証人、目撃者725
kingdom,王国726
equivalent,同等のもの、相当するもの727
objective,目的、目標、客観的な728
pile,積み重ね729
shelter,避難(所)730
trial,試み、裁判731
honor,名誉732
territory,領土、なわ張り733
frame,わく734
border,国境地帯735
statistics,統計(学)736
enterprise,企業、事業737
context,文脈、状況738
load,荷物739
grain,穀物740
review,再検討741
prejudice,偏見742
strain,負担743
trap,わな、閉じ込められる、わなにかける744
temper,気性745
slave,奴隷746
wound,傷747
divorce,離婚748
tune,曲749
height,高さ、最盛期750
faculty,学部、能力751
span,期間752
dimension,側面、要素、次元753
version,型、...版、翻訳、説明754
parallel,類似(物)、匹敵するもの755
horizon,地平線756
acquaintance,知人757
burden,重荷758
basis,基礎、根拠、方式、やり方759
poison,毒760
constitution,憲法761
administration,経営、行政762
charm,魅力763
organ,臓器、器官764
prey,獲物、えじき765
venture,冒険的事業766
mission,使命、任務767
inquiry,調査、質問、問い合わせ768
award,賞769
strip,細長い一片770
distress,苦しみ、悲嘆、苦難771
circulation,循環、流通、発行部数772
shade,陰、日陰773
stereotype,典型的なイメージ、類型、固定観念774
client,依頼人775
output,生産高776
lord,神777
convention,慣習、しきたり、会議、大会778
mine,鉱山779
craft,工芸、技術、巧みに作る780
core,中心、核心781
stroke,脳卒中、発作、打撃、一撃、なでる782
frontier,国境783
peer,同僚、じっと見る784
vessel,血管、船、器785
disability,障害786
gravity,重力787
ethic,倫理(学)788
terminal,終点789
tide,潮流、潮の干満790
abuse,虐待791
guilty,有罪の、罪の意識がある792
vital,きわめて重要な、必要な、活気のある793
fellow,仲間の794
contemporary,現代の795
annual,年に1度の、1年間の796
accustomed,慣れた797
steady,しっかりした798
dull,退屈させる799
keen,熱望して、鋭い800
loose,ゆるい801
delicate,繊細な、微妙で難しい802
internal,内部の、国内の803
casual,形式ばらない、気楽な804
mature,成熟した805
concrete,具体的な806
awful,ひどい807
exhausted,疲れ切っている808
overall,全面的な、全体的な809
tight,引き締まった、きつい810
prime,最も重要な、主要な811
genuine,本物の、真の、心からの812
modest,控えめな、謙虚な、わずかな813
intimate,親密な814
minimum,最小限の815
sophisticated,高度な816
latter,後者の817
bitter,苦い、つらい、腹を立てた818
peculiar,独特の、固有の819
passive,受動的な、消極的な820
ethnic,民族的な、民族の821
noble,高貴な822
vain,むだな823
innocent,無罪の、罪のない、無邪気な824
underlying,根本的な825
alien,外国の、異質な826
relevant,関連のある827
inclined,Vする傾向がある、Vしたい気がある828
awkward,気まずい829
brilliant,すばらしい830
desperate,必死の831
refreshing,さわやかな832
thrilled,とてもうれしい833
inner,内側の834
consistent,矛盾のない、一致した835
plain,明白な、わかりやすい836
vivid,鮮やかな837
miserable,惨めな838
substantial,相当な、多大な839
fond,Aが好きだ840
FALSE,まちがいの841
lazy,怠惰な842
precisely,正確に、まさに、ちょうど843
meanwhile,その間に844
altogether,完全に845
lately,最近846
barely,かろうじて847
scarcely,ほとんど~ない848
accordingly,それ相応に849
deliberately,わざと850
beneath,~の下で851
whereas,~だが一方852
declare,~を宣言する853
alter,~を変える854
arise,生じる855
transform,変える856
defeat,~を打ち負かす857
investigate,~を調査する858
distinguish,~を見分ける859
bury,~を埋める860
cope,うまく対処する861
occur,起こる862
accomplish,~をやりとげる863
hesitate,ためらう864
endure,~に耐える865
conclude,~と結論づける866
guarantee,~を保証する867
dominate,~を支配する868
confirm,~を裏付ける869
greet,~にあいさつする870
entertain,~を楽しませる871
defend,~を守る872
forbid,~を禁じる873
broadcast,~を放送する874
sacrifice,~を犠牲にする875
punish,~を罰する876
glance,ちらりと見る877
retain,~を保持する878
calculate,~を計算する879
sinking,沈む880
rescue,~を救助する881
beg,~と乞う882
define,定義する883
deceive,~をだます884
convey,~を伝える885
sustain,~を維持する886
purchase,~を購入する887
fade,薄れる888
regulate,~を規制する889
distribute,~を分配する890
enhance,~を向上させる891
chat,おしゃべりする892
exceed,~を超える893
wipe,~をふく894
cooperate,協力する895
inherit,~を受け継ぐ896
unite,~を団結させる897
leap,跳ぶ898
exaggerate,~を誇張する899
conquer,~を征服する900
melt,溶ける901
invade,~に侵入する902
modify,~を修正する903
scatter,~をばらまく904
undergo,~を経験する905
evaluate,~を評価する906
bend,身をかがめる907
derive,由来する908
screaming,悲鳴をあげる909
gaze,見つめる910
pray,祈る911
polish,~を磨く912
classify,分類する913
assert,~と主張する914
grab,~をつかむ915
fold,~を折りたたむ916
sweep,~を掃く917
whisper,ささやく918
imitate,~をまねる919
stare,じっと見る920
emphasize,~を強調する921
rid,~を取り除く922
pour,~を注ぐ923
vanish,消える924
restore,~を修復する925
deserve,当然だ926
laboratory,研究所927
conference,会議928
continent,大陸929
insurance,保険930
crew,乗組員たち931
poverty,貧乏932
shortage,不足933
affair,情勢934
exception,例外935
wage,賃金936
wisdom,知恵937
tax,税金938
evolution,進化939
barrier,壁940
category,範ちゅう941
unit,単位942
reputation,評判943
virtue,美徳944
courage,勇気945
sympathy,同情946
union,組合947
civilization,文明948
volume,冊949
blossom,花950
era,時代951
dispute,紛争952
tourism,観光953
mankind,人類954
murder,殺人955
landscape,風景956
destination,目的地957
tale,話958
reform,改革959
muscle,筋肉960
prospect,見通し961
corporation,企業962
colony,植民地963
quarrel,口論964
profession,職業965
aspect,側面966
pause,休止967
conflict,対立968
privilege,特権969
prosperity,繁栄970
genius,天才971
seed,種972
symptom,症状973
merit,長所974
layer,層975
clue,手がかり976
circumstances,状況977
district,地区978
prison,刑務所979
companion,仲間980
executive,重役981
justice,正義982
procedure,手続き983
ray,光線984
heaven,天国985
luxury,贅沢986
oxygen,酸素987
fund,資金988
theme,主題、テーマ989
boundary,境界990
ambition,熱望991
forecast,予報992
psychology,心理学993
labor,労働994
committee,委員会995
physician,医者996
philosophy,哲学997
affection,愛情998
candidate,候補999
bomb,爆弾1000
priority,優先1001
obstacle,障害1002
appetite,食欲1003
tension,緊張1004
tribe,部族1005
budget,予算1006
campaign,運動、キャンペーン1007
sorrow,悲しみ1008
satellite,衛星1009
insight,洞察1010
cough,せき1011
fate,運命1012
scheme,計画1013
insult,侮辱1014
inhabitant,住民1015
fossil,化石1016
motive,動機1017
instinct,本能1018
legend,伝説1019
empire,帝国1020
suburb,郊外1021
architecture,建築1022
passion,情熱1023
cancer,ガン1024
logic,論理1025
dozen,ダース1026
harvest,収穫1027
ingredient,材料1028
hypothesis,仮説1029
voyage,航海1030
editor,編集者1031
option,選択の自由1032
hemisphere,半球1033
mechanism,仕組み1034
anthropologist,人類学者1035
tragedy,悲劇1036
antibiotic,抗生物質1037
fare,運賃1038
debt,借金1039
curriculum,教育課程1040
component,構成要素1041
wheat,小麦1042
usage,語法1043
castle,城1044
famine,飢饉1045
extinction,絶滅1046
purse,財布1047
folk,民族1048
explosion,爆発1049
portion,部分1050
organism,生物1051
merchant,商人1052
myth,神話1053
incident,出来事1054
wildlife,野生生物1055
congress,議会1056
bay,湾1057
penalty,刑1058
heritage,遺産1059
diversity,多様性1060
thumb,親指1061
geography,地理1062
factor,要因1063
discrimination,差別1064
virus,ウイルス1065
statue,像1066
priest,神父1067
pioneer,先駆者1068
trait,特徴1069
bond,きずな1070
grocery,食料品1071
secretary,秘書1072
dialect,方言1073
astronomy,天文学1074
youngster,子供1075
substance,物質1076
finding,発見1077
strategy,戦略1078
lung,肺1079
opponent,敵1080
ritual,儀式1081
outcome,結果1082
conservation,環境保護1083
mammal,哺乳類1084
telescope,望遠鏡1085
refugee,難民1086
code,規則1087
flavor,風味1088
particle,粒子1089
nursing,看護1090
suicide,自殺1091
habitat,生息地1092
bullying,いじめ1093
dinosaur,恐竜1094
council,議会1095
gender,性別1096
surgery,手術1097
innovation,革新1098
protein,タンパク質1099
nutrition,栄養1100
disaster,災害1101
emission,排出1102
ape,類人猿1103
molecule,分子1104
sweat,汗1105
transplant,移植1106
species,種1107
tip,先1108
cattle,牛1109
density,密度1110
concept,概念1111
pale,青白い1112
precious,貴重な1113
loyal,忠実な1114
isolated,孤立している1115
generous,気前のよい1116
tropical,熱帯1117
reluctant,したがらない1118
vague,漠然とした1119
vast,広大な1120
numerous,たくさんの1121
rural,田舎の1122
widespread,広まっている1123
complicated,複雑な1124
visible,目に見える1125
raw,生の1126
remote,へんぴな1127
urgent,緊急の1128
silly,ばかな1129
striking,いちじるしい1130
adequate,十分な1131
extraordinary,並外れた1132
odd,おかしな1133
abstract,抽象的な1134
mutual,相互の1135
excessive,過度の1136
ashamed,恥ずかしい1137
tremendous,とてつもない1138
inevitable,避けられない1139
pure,純1140
stable,安定した1141
indifferent,無関心だ1142
aggressive,攻撃的な1143
ultimate,究極の1144
shy,内気な1145
solar,太陽1146
profound,深い1147
subtle,微妙な1148
conservative,保守1149
brave,勇敢な1150
intense,強烈な1151
alcoholic,アルコールの1152
manual,手を使う1153
cruel,残酷な1154
rational,理性的な1155
initial,最初の1156
immune,免疫1157
linguistic,言語の1158
crucial,重大な1159
verbal,言葉による1160
optimistic,楽観的な1161
flexible,柔軟な1162
grateful,感謝している1163
lively,生き生きとした1164
overwhelming,圧倒的な1165
abundant,豊富な1166
selfish,利己的な1167
ugly,みにくい1168
racial,人種の1169
prominent,有名な1170
controversial,物議を呼ぶ1171
federal,連邦の1172
ridiculous,ばかげた1173
imaginary,架空の1174
harsh,厳しい1175
random,無作為な1176
adolescent,思春期の1177
up-to-date,最新の1178
liberal,自由主義の1179
prior,前の1180
moderate,適度な1181
fluent,流ちょうな1182
elaborate,手の込んだ1183
incredible,信じられない1184
radical,根本的な1185
acid,酸性の1186
deaf,耳が不自由な1187
medieval,中世の1188
ecological,生態1189
slight,少しの1190
ignorant,無知な1191
cognitive,認知1192
absolutely,絶対に1193
virtually,ほとんど1194
somewhat,多少1195
merely,単に1196
literally,文字通り1197
seemingly,一見1198
regardless,関係なく1199
thoroughly,徹底的に1200
submit,Aに服従する、提出する1201
tempt,誘惑する、する気にさせる1202
resign,辞職する1203
conform,従う1204
confine,限定する1205
assemble,組み立てる1206
dedicate,ささげる1207
advocate,主張する1208
thrive,繁栄する1209
provoke,引き起こす1210
dictate,命じる、要求する、決定する1211
exploit,利用する、開発する1212
surrender,降伏する1213
reproduce,再生する、複製する、繁殖する[させる]1214
acknowledge,認める1215
swell,ふくらむ1216
shed,落とす1217
wind,曲がる1218
cite,引き合いに出す1219
digest,消化する1220
skip,とばす、抜かす1221
bind,縛る、束縛する1222
dissolve,溶解する1223
implement,実行する1224
steer,操縦する1225
congratulate,祝福する1226
designate,指定する1227
violate,破る、違反する1228
presume,推定する、思う1229
recruit,(新人を)入れる1230
coincide,同時に起きる、重なる1231
enforce,施行する1232
displace,とってかわる、故郷から追い出す1233
shrink,縮む、縮ませる、減る1234
betray,裏切る、もらす1235
comprise,構成される、構成する、占める1236
indulge,ふける1237
penetrate,入り込む1238
devastate,壊滅させる1239
plunge,突っ込む1240
bounce,はね返る1241
contradict,矛盾する1242
prescribe,処方する1243
oppress,しいたげる1244
cherish,胸に抱く1245
illuminate,照らす、解明する1246
trigger,きっかけになる1247
commute,通勤する、通学する1248
induce,誘う1249
utilize,利用する1250
snap,ポキンと折れる、ポキンと折る1251
donate,提供する1252
hatch,(卵?ヒナ)かえす、かえる1253
enclose,囲む1254
prevail,普及している、広まる1255
sigh,ため息をつく1256
leak,漏れる、漏らす1257
compel,強制する1258
crush,押しつぶす1259
comprehend,理解する1260
negotiate,交渉する1261
persist,持続する、残る1262
multiply,増やす、増える、掛ける1263
conceive,想像する1264
compensate,埋め合わせる1265
suspend,中止する、つるす1266
stir,かきたてる1267
soak,浸す、びしょぬれにする、吸収する1268
refine,洗練する、磨きをかける1269
arouse,刺激する、かき立てる1270
precede,先行する1271
render,OをCにする、変える1272
mount,すえつける、乗る1273
retreat,退く1274
startle,驚かせる1275
dare,する勇気がある1276
sphere,領域、範囲1277
sequence,連続、順番、順序1278
deposit,預金、頭金、堆積物1279
poll,世論調査、投票1280
caution,用心1281
rage,激怒、怒り1282
formula,式、公式、方法、秘訣、解決策1283
plot,筋、たくらみ、陰謀1284
scope,範囲1285
norm,規範1286
disgust,嫌悪1287
compromise,妥協1288
supervisor,監督者1289
paradox,逆説1290
tissue,(生物の)組織;ティッシュペーパー1291
breakdown,崩壊1292
initiative,構想、主導権、1293
fabric,織物、布1294
publicity,宣伝、広告1295
summit,頂上、頂点、首脳会議1296
flock,群れ1297
plague,疫病1298
haste,急ぐこと1299
nap,うたた寝1300
ally,同盟国1301
draft,下書き、草稿1302
spectacle,光景1303
premise,前提1304
asset,財産1305
lag,遅れ1306
therapy,療法、治療法1307
reception,もてなし1308
compound,化合物1309
blessing,ありがたいもの、恵み1310
sensation,感覚、感じ1311
recession,不景気、不況1312
pole,棒、極1313
outlook,態度、考え方、見通し、見込み1314
endeavor,活動1315
mercy,慈悲、情け1316
counterpart,相当するもの1317
session,期間、討論1318
spectrum,変動範囲、領域1319
junk,くず、がらくた1320
worship,崇拝1321
apt,しがちである、する傾向がある1322
humble,謙虚な、粗末な1323
entitled,得る権利がある、題された1324
valid,妥当な、正当な1325
faint,かすかな1326
stiff,堅い1327
obscure,わかりにくい1328
fierce,激しい1329
acute,(問題が)深刻な、(感覚・痛みが)鋭い1330
idle,(仕事がなくて)何もしていない1331
crude,粗末な、粗野な1332
jealous,嫉妬深い、羨ましい1333
pregnant,妊娠している1334
liable,しがちである、可能性が高い1335
stubborn,頑固な1336
decent,まともな1337
marvelous,驚くべき1338
misleading,誤解を招く1339
synthetic,合成の1340
classical,クラシックの1341
Muslim,イスラム教の1342
anticipate,予想する1343
rub,こする1344
dispose,処理する1345
refrain,控える1346
accumulate,蓄積する1347
boost,活気づける1348
drag,引きずる1349
revise,修正する1350
scratch,かく1351
roar,ほえる1352
quote,引用する1353
bloom,咲く1354
insert,差し込む1355
awaiting,待つ1356
dread,恐れる1357
conceal,隠す1358
enrich,豊かにする1359
cling,固執する1360
surpass,まさる1361
suppress,抑える1362
portray,描く1363
soaring,急上昇する1364
drain,排出する1365
glow,ボーッと光る1366
migrate,移住する1367
exclaim,叫ぶ1368
exert,及ぼす1369
disguise,隠す1370
accelerate,加速する1371
dwell,住む1372
integrate,融けこませる1373
weep,泣く1374
reassure,安心させる1375
crawl,はって進む1376
restrain,抑制する1377
resent,腹を立てる1378
yell,大声で叫ぶ1379
assess,評価する1380
carve,彫る1381
halt,止める1382
inspect,検査する1383
tackle,取り組む1384
omit,省く1385
chew,かむ1386
resume,再開する1387
mold,作る1388
accommodate,収容できる1389
erase,消す1390
inferred,推量する1391
revive,生き返らせる1392
contemplate,考える1393
rotate,回転する1394
disrupt,かき乱す1395
navigate,進進路を決める1396
ache,痛む1397
discard,捨てる1398
incorporate,取り入れる1399
overtake,追い越す1400
supplement,補う1401
manipulate,操作する1402
nourish,養う1403
squeeze,しぼる1404
depict,描く1405
distract,そらす1406
disclose,暴露する1407
enroll,入学する1408
nurture,育てる1409
speculate,推測する1410
prolong,延ばす1411
execute,処刑する1412
uncover,明らかにする1413
tremble,震える1414
seize,つかむ1415
abolish,廃止する1416
scold,しかる1417
attain,達成する1418
utter,発する1419
flee,逃げる1420
offending,怒らせる1421
confess,告白する1422
postpone,延期する1423
drift,漂う1424
weave,織る1425
install,備えつける1426
twist,ねじ曲げる1427
extract,取り出す1428
bump,ぶつかる1429
despise,軽蔑する1430
tolerate,我慢する1431
boast,自慢する1432
flourishing,栄えている1433
disregard,無視する1434
tease,からかう1435
reinforce,強める1436
strive,努力する1437
coordinate,合わせる1438
yawn,あくびをする1439
hug,抱きしめる1440
combat,戦う1441
knit,編む1442
fatigue,疲労1443
fame,名声1444
mess,めちゃくちゃ1445
dignity,尊厳1446
canal,運河1447
drought,干ばつ1448
despair,絶望1449
interval,間隔1450
luggage,荷物1451
behalf,代表して1452
impulse,衝動1453
debris,破片1454
beast,野獣1455
superstition,迷信1456
illusion,幻想、錯覚1457
thread,糸1458
intake,摂取量1459
feast,宴会1460
transition,移り変わり1461
misery,悲惨さ1462
radiation,放射線1463
log,丸太1464
consensus,合意1465
deed,行い1466
proverb,ことわざ1467
compliment,ほめ言葉1468
flame,炎1469
anniversary,記念日1470
conscience,良心1471
expedition,探検1472
offspring,子孫1473
allowance,こづかい1474
headline,大見出し1475
treaty,条約1476
monument,記念碑1477
worm,虫1478
remedy,治療法1479
encyclopedia,百科事典1480
glimpse,ちらり1481
personnel,職員1482
triumph,勝利1483
arithmetic,算数1484
self-esteem,自尊心1485
microbe,微生物1486
odds,可能性1487
chaos,混沌1488
destiny,運命1489
diameter,直径1490
lottery,宝くじ1491
souvenir,みやげ物1492
trail,小道1493
ratio,比率1494
sword,剣1495
whistle,笛1496
sentiment,感情1497
chore,雑用1498
courtesy,礼儀1499
mayor,市長1500
surveillance,監視、見張り1501
trash,ごみ1502
prestige,名声1503
headquarters,本部、本社1504
wilderness,荒野1505
orbit,軌道1506
bias,偏見1507
republic,共和国1508
bargain,掘り出し物1509
domain,領域1510
fragment,破片1511
galaxy,星雲1512
lap,ひざ1513
deadline,締め切り1514
bullet,弾丸1515
pedestrian,歩行者1516
wit,機知1517
nuisance,迷惑1518
criteria,基準1519
hardship,苦難1520
glory,栄光1521
pavement,歩道1522
navy,海軍1523
script,台本1524
pension,年金1525
province,州1526
surplus,余剰1527
moisture,水分1528
patch,あて布1529
altitude,高度、標高1530
thermometer,温度計1531
tuition,授業料1532
troop,軍隊1533
primate,霊長類1534
flaw,欠陥1535
nephew,甥1536
garment,衣服、衣類1537
diagnosis,診断1538
commerce,商業1539
antiquity,古代、古物1540
fraction,ほんの一部1541
irony,皮肉1542
nightmare,悪夢1543
defect,欠陥1544
certificate,証明書1545
decay,腐敗1546
erosion,浸食1547
recipe,秘けつ1548
skeleton,骨格1549
grace,優雅さ1550
landmark,名所1551
dementia,認知症1552
flesh,肉1553
collision,衝突、対立1554
hazard,危険なもの1555
tomb,墓1556
injection,注射1557
breakthrough,飛躍的進歩1558
leather,革1559
jewelry,宝石1560
cue,合図1561
ambulance,救急車1562
estate,不動産1563
commodity,商品1564
departure,出発1565
phase,段階1566
thief,泥棒1567
saint,聖1568
sculpture,彫刻1569
grief,悲しみ1570
lane,車線1571
predator,捕食動物1572
fluid,流体1573
incentive,はげみ1574
bride,花嫁1575
intervention,介入1576
margin,差1577
biography,伝記1578
consent,同意1579
volcano,火山1580
rebel,反逆者1581
metaphor,比喩1582
legislation,法律1583
lightning,雷1584
pesticide,殺虫剤1585
column,コラム1586
rumor,うわさ1587
dust,ほほこり1588
dialogue,対話1589
kindergarten,幼稚園1590
diabetes,糖尿病1591
obesity,肥満1592
patent,特許1593
chapter,章1594
palace,宮殿1595
laundry,洗濯1596
ward,病棟1597
outbreak,ぼっ発1598
equation,方程式1599
archaeologist,考古学者1600
corruption,腐敗1601
germ,細菌1602
revenue,収入1603
spouse,配偶者1604
epidemic,流行1605
mortality,死亡1606
syndrome,症候群1607
retail,小売り1608
dose,量1609
beverage,飲み物1610
metabolism,新陳代謝1611
hybrid,交配種1612
scent,香り1613
inflammation,炎症1614
pill,薬1615
grave,重大な1616
fertile,肥えた1617
hostile,反感を持つ1618
indispensable,不可欠な1619
oriented,志向の1620
splendid,すばらしい1621
competent,有能な1622
supreme,最高の1623
straightforward,わかりやすい1624
sacred,聖1625
bold,大胆な1626
uneasy,不安な1627
neat,きちんとした1628
shallow,浅い1629
fake,偽物の1630
superficial,表面的な1631
absurd,ばかげた1632
fragile,壊れやすい1633
respectable,ちゃんとした1634
magnificent,すばらしい1635
infinite,無限の1636
comprehensive,包括的な1637
steep,険しい1638
gross,総1639
subsequent,次に起こる1640
sincere,心からの1641
toxic,有毒な1642
neutral,中立の1643
diligent,勤勉な1644
sore,痛い1645
contaminated,汚染された1646
ambiguous,あいまいな1647
oral,口述の1648
restless,落ち着かない1649
rotten,腐った1650
vigorous,精力的な1651
immense,莫大な1652
metropolitan,大都市の1653
punctual,時間をきっちり守る1654
solitary,孤独な1655
collective,集団1656
diplomatic,外交の1657
nasty,不快な1658
helpless,無力な1659
explicit,明確な、はっきりした1660
bankrupt,破産した1661
eternal,永遠の1662
sole,唯一の1663
sour,すっぱい1664
notable,注目すべき1665
affluent,裕福な1666
naked,裸の1667
vocal,発声1668
feminine,女性の1669
vacant,空いている1670
exotic,外来の1671
rigid,厳格な1672
humid,蒸し暑い1673
outstanding,傑出した1674
addicted,中毒である1675
vulnerable,受けやすい1676
spontaneous,自然に起こる1677
greedy,貪欲な1678
trivial,ささいな1679
per capita,一人当たりの1680
inherent,元から伴う1681
promising,前途有望な1682
physiological,生理的な1683
clinical,臨床1684
chronic,慢性の1685
geological,地質学的な1686
countless,無数の1687
innate,先天的な1688
alert,用心する1689
autonomous,自動運転1690
simultaneously,同時に1691
utterly,まったく1692
drastically,劇的に1693
necessarily,必ずしも1694
thereby,そうすることで1695
frankly,率直に1696
namely,すなわち1697
hence,だから1698
via,経由で1699
owing,のために1700
clarify,明らかにする1701
smash,粉々に砕く1702
mourn,悲しむ1703
summon,呼ぶ1704
shatter,粉々にする1705
linger,残る1706
lament,嘆く1707
endowed,恵まれる1708
rejoice,喜ぶ1709
allocate,配分する1710
slap,ピシャリと打つ1711
contend,主張する1712
swear,誓う1713
discern,識別する1714
degrade,悪化させる1715
erect,築く1716
testify,証言する1717
spur,駆りたてる1718
roam,歩き回る1719
frown,まゆをひそめる1720
lure,呼び込む1721
defy,逆らう1722
stroll,ぶらつく1723
rattle,がたがた鳴らす1724
reconcile,調和させる1725
blur,ぼやかす1726
soothe,なだめる1727
impair,低下させる1728
comply,従う1729
pierce,穴をあける1730
stumble,つまずく1731
hinder,さまたげる1732
mock,あざける1733
embody,具現する1734
stalk,忍び寄る1735
proclaim,宣言する1736
applaud,拍手する1737
inflict,与える1738
merge,合併する1739
evacuated,避難した1740
undone,元に戻る1741
poke,突く1742
haunted,つきまとわれる1743
adhere,固く守る1744
compile,まとめる1745
wither,しぼむ1746
stun,びっくりさせる1747
choke,のどがつまる1748
deteriorate,悪化する1749
dump,捨てる1750
murmur,つぶやく1751
delete,削除する1752
inhibit,阻害する1753
divert,そらす1754
tame,飼いならす1755
reap,手に入れる1756
affirm,断言する1757
immersed,浸る1758
expire,期限が切れる1759
embark,乗り出す1760
vow,誓う1761
foresee,予知する1762
adore,崇拝する1763
yearn,切望する1764
undermine,弱める1765
suck,吸う1766
pledge,誓う1767
intrude,立ち入る1768
sue,訴える1769
distort,歪曲する1770
extinguish,消す1771
preach,説教する1772
curb,抑制する1773
withstand,耐える1774
dip,浸す1775
recite,暗唱する1776
thrust,押し込む1777
plead,嘆願する1778
humiliate,恥をかかせる1779
discharge,放出する1780
condemn,非難する1781
retrieve,検索する1782
shrug,肩をすくめる1783
evoke,呼び起こす1784
fetch,取ってくる1785
flatter,お世辞を言う1786
prose,散文1787
textile,織物1788
timber,材木1789
masterpiece,傑作1790
riot,暴動1791
carriage,車両1792
apparatus,装置1793
fuss,大騒ぎ1794
deficiency,欠乏1795
heir,相続人1796
equator,赤道1797
petroleum,石油1798
witch,魔女1799
vapor,蒸気1800
probe,探査機1801
expertise,専門知識1802
scorn,軽蔑1803
prophet,預言者1804
breeze,そよ風1805
sin,罪1806
surge,急増1807
complement,補うもの1808
queue,列1809
stake,賭け金1810
ambassador,大使1811
jury,陪審員1812
cluster,集団1813
lump,こぶ1814
meadow,牧草地1815
feat,偉業1816
temperament,気質1817
chill,寒気1818
appliance,器具1819
predecessor,前任者1820
entity,存在1821
hospitality,もてなし1822
narrative,話1823
segment,部分、区分1824
catastrophe,大災害1825
monarch,君主、皇帝1826
constraint,制約1827
amendment,改正、修正1828
cosmos,宇宙1829
aisle,通路1830
hierarchy,階級制度1831
toll,通行料1832
transaction,取引1833
burglar,強盗1834
tyranny,圧政1835
parasite,寄生生物1836
intuition,直感1837
communist,共産主義の1838
legacy,遺産1839
vein,静脈1840
discourse,論説1841
dairy,乳製品、酪農1842
artifact,工芸品1843
outlet,はけ口1844
apprehension,不安1845
melancholy,憂うつ1846
novelty,目新しさ1847
specimen,標本1848
hygiene,衛生1849
tactics,戦術1850
monopoly,独占1851
token,印1852
aristocracy,貴族階級1853
revenge,復讐1854
activist,活動家1855
rhetoric,美辞麗句1856
entrepreneur,起業家1857
census,国勢調査1858
verge,瀬戸際1859
advent,出現、到来1860
analogy,類似点1861
irrigation,灌漑1862
coverage,報道1863
cuisine,料理1864
menace,脅威1865
peril,危険1866
limb,手足1867
assault,攻撃1868
hatred,憎しみ1869
autonomy,自主性1870
cram,塾1871
subsidy,補助金1872
empathy,共感1873
slang,俗語1874
posture,姿勢1875
ideology,イデオロギー1876
curse,災いのもと1877
tumor,腫瘍1878
intersection,交差点1879
duration,期間1880
deforestation,森林破壊1881
precaution,用心1882
bunch,ひとたばの1883
shortcoming,欠点1884
aspiration,熱望1885
psychiatrist,精神科医1886
shipping,発送1887
senator,上院議員1888
statesman,政治家1889
subordinate,部下1890
vacuum,空白1891
quest,探究1892
meditation,瞑想1893
subscriber,加入者1894
riddle,謎1895
rag,ぼろ1896
rust,さび1897
sanitation,衛生1898
midst,まっただ中1899
mischief,いたずら1900
proficiency,検定1901
recollection,記憶1902
latitude,緯1903
friction,摩擦1904
botanist,植物学者1905
heredity,遺伝1906
contempt,軽蔑1907
anatomy,構造1908
integrity,誠実1909
cargo,貨物1910
bribe,わいろ1911
eruption,噴火1912
funeral,葬式1913
deficit,赤字1914
bulk,大部分1915
millionaire,百万長者1916
ash,灰1917
realm,領域1918
plantation,農園1919
plow,すき1920
vending,販売1921
orphan,孤児1922
neuron,神経細胞1923
vegetation,植生1924
warrior,戦士1925
mutation,突然変異1926
sewage,下水1927
paradigm,理論的枠組1928
protocol,議定書1929
skyscraper,高層ビル1930
accord,一致1931
bureaucrat,官僚1932
array,多彩1933
clash,衝突1934
torture,拷問1935
reign,統治1936
thesis,論文1937
digit,桁1938
agenda,課題1939
onset,発症1940
peasant,小作農1941
ultraviolet,紫外1942
renowned,有名な1943
transparent,透き通った1944
dim,薄暗い1945
legitimate,正当な1946
adverse,悪1947
swift,すばやい1948
naive,世間知らずの1949
dumb,ばか1950
gloomy,暗い1951
furious,激怒した1952
earnest,まじめな1953
terrific,すばらしい1954
vertical,垂直な1955
wicked,邪悪な1956
subjective,主観的な1957
enlightened,進んだ考えの1958
authentic,本物の1959
brutal,残忍な1960
dizzy,めまい1961
sheer,まったくの1962
naughty,いたずらな1963
damp,湿った1964
static,静的な1965
doomed,運命にある1966
respiratory,呼吸器に関する、呼吸の1967
innumerable,無数の1968
clumsy,不器用な1969
aesthetic,美的1970
obsessed,とりつかれている1971
detached,切り離された1972
wrecked,難破した1973
reckless,無謀な1974
arrogant,傲慢な1975
preoccupied,頭がいっぱいだ1976
gigantic,巨大な1977
conspicuous,顕著な1978
slender,すらりとした1979
manifest,明らかな1980
tidy,きちんと1981
skeptical,懐疑的な1982
notorious,悪名高い1983
anonymous,匿名の1984
monotonous,単調な1985
ample,豊富に1986
trim,こぎれいな1987
savage,野蛮な1988
coherent,一貫した1989
eloquent,雄弁な1990
foul,不快な1991
juvenile,青少年の1992
compulsory,義務的な1993
prone,やすい1994
arbitrary,勝手な1995
ingenious,独創的な1996
divine,神聖なる1997
tender,やさしい1998
outraged,憤慨している1999
intrinsic,本来の2000
paralyzed,麻痺している2001
compatible,適合する2002
patriotic,愛国的な2003
eminent,名高い2004
potent,強力な2005
insane,正気を失っている2006
staple,主要な2007
secondhand,間接2008
indigenous,先住2009
utmost,最も2010
integral,不可欠な2011
intricate,複雑な2012
demographic,人口統計の2013
mighty,強力な2014
intact,無傷の2015
intent,決意をしている2016
intriguing,興味深い2017
merry,陽気な2018
perpetual,永続する2019
spinal,脊椎の2020
susceptible,かかりやすい2021
mandatory,義務的な2022
upright,まっすぐに2023
abruptly,不意に2024
conversely,逆に2025
predominantly,主に2026
lest,~しないように2027



「残りの単語数」をリアルタイムで表示する機能を追加しました。
「ID:◯◯ | ◯ / ◯」という表示の横に、直感的にあと何語で終わるか(残り◯語)が表示されます。単語データ部分は省略していますので、お手持ちのデータを末尾に貼り付けてご使用ください。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0,viewport-fit=cover">
    <title>システム英単語修行 極限管理版V2.1</title>
    <style>
        :root {
            --bg: #070b14;
            --container: #111827;
            --text: #f9fafb;
            --primary: #2563eb;
            --success: #059669;
            --danger: #dc2626;
            --gray: #4b5563;
            --accent: #7c3aed;
        }
        * { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
        html, body { margin: 0; width: 100%; height: 100%; background: var(--bg); font-family: 'Inter', sans-serif; color: var(--text); overflow: hidden; }
        
        #setup, #report { padding: 20px; height: 100vh; overflow-y: auto; display: none; }
        #setup.active, #report.active { display: block; }
        #app { display: none; position: fixed; inset: 0; background: var(--bg); flex-direction: column; padding: 20px; z-index: 100; }
        #app.active { display: flex; }

        .container { max-width: 600px; margin: 0 auto; background: var(--container); border-radius: 32px; padding: 24px; border: 1px solid #1f2937; }
        h1 { font-size: 18px; text-align: center; margin-bottom: 20px; color: var(--primary); font-weight: 900; }
        .label { font-size: 12px; font-weight: bold; color: var(--gray); margin: 15px 0 5px 4px; display: flex; justify-content: space-between; align-items: center; }
        
        .param-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 12px; }
        .input-group { background: #1f2937; padding: 10px; border-radius: 12px; border: 1px solid #374151; }
        .input-group span { font-size: 10px; display: block; margin-bottom: 5px; color: #9ca3af; }
        input { width: 100%; background: transparent; border: none; color: white; font-size: 16px; font-weight: bold; outline: none; }

        .range-box { background: #1e1b4b; padding: 15px; border-radius: 16px; border: 1px solid var(--accent); margin-bottom: 15px; }
        textarea { width: 100%; height: 60px; background: rgba(0,0,0,0.4); color: #94a3b8; border: 1px solid #374151; border-radius: 12px; padding: 10px; font-size: 11px; margin-top: 5px; outline: none; }

        button.main-btn { width: 100%; height: 60px; border: none; border-radius: 20px; font-size: 20px; font-weight: 900; cursor: pointer; background: var(--primary); color: white; transition: 0.2s; box-shadow: 0 4px 15px rgba(37, 99, 235, 0.3); }
        button.main-btn:active { transform: scale(0.98); }
        
        #card { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; position: relative; text-align: center; }
        #englishWord { font-size: 52px; font-weight: 900; letter-spacing: -2px; line-height: 1.1; }
        #japaneseWord { font-size: 26px; margin-top: 20px; color: var(--primary); font-weight: bold; opacity: 0; min-height: 1.5em; }
        #japaneseWord.visible { opacity: 1; }
        
        .progress-container { width: 100%; height: 6px; background: #1f2937; border-radius: 3px; overflow: hidden; margin: 10px 0; }
        #progressBar { height: 100%; background: var(--primary); width: 0%; transition: width 0.3s linear; }
        
        .ans-btns { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; width: 100%; margin-bottom: 20px; }
        .ans-btn { height: 85px; border: none; border-radius: 28px; color: white; font-size: 24px; font-weight: bold; cursor: pointer; }
        #correctBtn { background: var(--success); }
        #wrongBtn { background: var(--danger); }
        
        #gauge { position: absolute; bottom: 0; left: 0; height: 4px; background: var(--success); width: 0%; }
        .toggle-btn { background: #374151; color: white; border: none; padding: 4px 8px; border-radius: 6px; font-size: 10px; cursor: pointer; }
        .toggle-btn.active { background: var(--success); }

        #remainingCounter { font-weight: bold; color: var(--accent); }
    </style>
</head>
<body>

<div id="setup" class="active">
    <div class="container">
        <h1>SYSTEM VOCABULARY</h1>
        
        <div class="range-box">
            <div class="label">修行範囲と出題数設定</div>
            <div class="param-grid">
                <div class="input-group"><span>開始番号</span><input type="number" id="rangeStart" value="1" step="100"></div>
                <div class="input-group"><span>終了番号</span><input type="number" id="rangeEnd" value="2027" step="100"></div>
            </div>
            <div class="input-group" style="background: rgba(255,255,255,0.1);">
                <span>今回のテスト単語数(100語ずつ調整可)</span>
                <input type="number" id="testCount" value="100" step="100">
            </div>
        </div>

        <div class="label">
            音声設定
            <button id="ttsToggle" class="toggle-btn active" onclick="toggleTTS()">読み上げON</button>
        </div>
        <div class="param-grid">
            <div class="input-group"><span>速度</span><input type="number" id="speechRate" value="1.6" step="0.1"></div>
            <div class="input-group"><span>間隔(秒)</span><input type="number" id="voiceGap" value="0.0" step="0.1"></div>
        </div>

        <div class="label">修行時間調整(秒)</div>
        <div class="param-grid">
            <div class="input-group"><span>想起待ち</span><input type="number" id="engTime" value="1.2" step="0.1"></div>
            <div class="input-group"><span>解答制限</span><input type="number" id="japTime" value="1.5" step="0.1"></div>
        </div>

        <div class="label">暗記数値インポート(これに含まれる語を優先)</div>
        <textarea id="importArea" placeholder="数値データをここに貼り付け"></textarea>

        <button class="main-btn" onclick="startTraining()">修行開始</button>
    </div>
</div>

<div id="app">
    <div id="infoText" style="text-align:center; font-size:12px; color:var(--gray); margin-bottom:5px;"></div>
    <div class="progress-container"><div id="progressBar"></div></div>
    
    <div id="card">
        <div id="englishWord"></div>
        <div id="japaneseWord"></div>
        <div id="gauge"></div>
    </div>

    <div class="ans-btns">
        <button id="wrongBtn" class="ans-btn" onclick="processAnswer(false)">苦手(A)</button>
        <button id="correctBtn" class="ans-btn" onclick="processAnswer(true)">正解(Z)</button>
    </div>
    <button onclick="finishTraining()" style="background:none; border:none; color:var(--gray); font-size:12px;">終了 (Space)</button>
</div>

<div id="report">
    <div class="container" style="text-align:center;">
        <h1>修行完了</h1>
        <div id="resultScore" style="font-size:28px; font-weight:900; margin-bottom:20px;"></div>
        
        <div class="label">復習用(間違えた単語)</div>
        <textarea id="wrongWordsArea" style="height:120px;" readonly></textarea>
        <button class="copy-btn" onclick="copyText('wrongWordsArea')" style="width:100%; padding:12px; margin:10px 0; background:var(--accent); border:none; color:white; border-radius:12px; font-weight:bold;">単語をコピー</button>

        <div class="label">保存用(暗記数値データ)</div>
        <textarea id="numericalArea" style="height:80px;" readonly></textarea>
        <button class="copy-btn" onclick="copyText('numericalArea')" style="width:100%; padding:12px; background:var(--primary); border:none; color:white; border-radius:12px; font-weight:bold;">数値をコピー</button>

        <button class="main-btn" onclick="location.reload()" style="margin-top:20px; background:var(--gray);">トップへ</button>
    </div>
</div>

<script>
const WORDS = [];
const mastery = {};
let ttsEnabled = true;
let queue = [];
let results = [];
let activeWord = null;
let timers = { eng: null, jap: null };
let importedIds = new Set();

window.onload = () => {
    const raw = document.getElementById('words-data').textContent.trim();
    raw.split('\n').forEach(line => {
        const parts = line.split(/[,\t]/);
        if (parts.length < 2) return;
        const en = parts[0].trim();
        const jaFull = parts[1].trim();
        const m = jaFull.match(/^(.*?)(\d+)$/);
        if (m) {
            const id = parseInt(m[2]);
            WORDS.push({ id, en, ja: m[1], raw: line });
            mastery[id] = { lv: 0, iv: 1 };
        }
    });
};

function toggleTTS() {
    ttsEnabled = !ttsEnabled;
    const btn = document.getElementById('ttsToggle');
    btn.textContent = ttsEnabled ? "読み上げON" : "読み上げOFF";
    btn.classList.toggle('active', ttsEnabled);
}

function startTraining() {
    const startNum = parseInt(document.getElementById('rangeStart').value);
    const endNum = parseInt(document.getElementById('rangeEnd').value);
    const maxTest = parseInt(document.getElementById('testCount').value);
    importedIds.clear();

    const imp = document.getElementById('importArea').value.trim();
    if (imp) {
        imp.split(/[,\n ]/).forEach(e => {
            const [id, lv, iv] = e.split(':').map(Number);
            if (mastery[id]) {
                mastery[id] = { lv: lv || 0, iv: iv || 1 };
                importedIds.add(id);
            }
        });
    }

    let available = WORDS.filter(w => w.id >= startNum && w.id <= endNum && mastery[w.id].lv < 10);

    available.sort((a, b) => {
        const isAImported = importedIds.has(a.id) ? 0 : 1;
        const isBImported = importedIds.has(b.id) ? 0 : 1;
        if (isAImported !== isBImported) return isAImported - isBImported;
        const scoreA = mastery[a.id].iv - mastery[a.id].lv;
        const scoreB = mastery[b.id].iv - mastery[b.id].lv;
        return scoreA - scoreB || Math.random() - 0.5;
    });

    queue = available.slice(0, maxTest);
    if (queue.length === 0) return alert("修行対象が見つかりません。");

    results = [];
    document.getElementById("setup").classList.remove('active');
    document.getElementById("app").classList.add('active');
    nextWord();
}

function nextWord() {
    clearAllTimers();
    if (queue.length === 0) return finishTraining();

    activeWord = queue.shift();
    const currentNum = results.length + 1;
    const totalNum = results.length + queue.length + 1;
    const remainingNum = queue.length; // 残りの数

    document.getElementById("infoText").innerHTML = 
        `ID:${activeWord.id} (Lv:${mastery[activeWord.id].lv}) | ${currentNum} / ${totalNum} <span id="remainingCounter">(残り ${remainingNum}語)</span>`;
    
    document.getElementById("progressBar").style.width = `${(results.length / totalNum) * 100}%`;
    
    document.getElementById("englishWord").textContent = activeWord.en;
    const jaEl = document.getElementById("japaneseWord");
    jaEl.textContent = activeWord.ja;
    jaEl.classList.remove('visible');
    document.getElementById("gauge").style.width = "0%";

    if (ttsEnabled) speakChain(activeWord.en, activeWord.ja);
    timers.eng = setTimeout(showAnswer, parseFloat(document.getElementById('engTime').value) * 1000);
}

function speakChain(en, ja) {
    speechSynthesis.cancel();
    const rate = parseFloat(document.getElementById('speechRate').value);
    const gap = parseFloat(document.getElementById('voiceGap').value);
    const uEn = new SpeechSynthesisUtterance(en);
    uEn.lang = 'en-US';
    uEn.rate = rate;
    const uJa = new SpeechSynthesisUtterance(ja);
    uJa.lang = 'ja-JP';
    uJa.rate = rate;
    uEn.onend = () => { timers.voiceGap = setTimeout(() => { speechSynthesis.speak(uJa); }, gap * 1000); };
    speechSynthesis.speak(uEn);
}

function showAnswer() {
    document.getElementById("japaneseWord").classList.add('visible');
    const japTime = parseFloat(document.getElementById('japTime').value);
    const g = document.getElementById("gauge");
    g.style.transition = `width ${japTime}s linear`;
    g.style.width = "100%";
    timers.jap = setTimeout(() => processAnswer(false), japTime * 1000);
}

function processAnswer(isOk) {
    clearAllTimers();
    const m = mastery[activeWord.id];
    if (isOk) {
        m.lv = Math.min(10, m.lv + 1);
        m.iv = m.iv * 2 + 1;
    } else {
        m.lv = Math.max(-5, m.lv - 2);
        m.iv = 1;
        queue.push(activeWord); 
    }
    results.push({ ...activeWord, ok: isOk });
    nextWord();
}

function clearAllTimers() {
    for (let k in timers) clearTimeout(timers[k]);
    const g = document.getElementById("gauge");
    g.style.transition = "none";
    g.style.width = "0%";
}

function finishTraining() {
    speechSynthesis.cancel();
    document.getElementById("app").classList.remove('active');
    document.getElementById("report").classList.add('active');
    const missed = results.filter(r => !r.ok);
    const okLen = results.filter(r => r.ok).length;
    document.getElementById("resultScore").textContent = `${okLen} / ${results.length} (${((okLen/results.length)*100 || 0).toFixed(1)}%)`;
    document.getElementById("wrongWordsArea").value = Array.from(new Set(missed.map(m => m.raw))).join('\n');
    document.getElementById("numericalArea").value = Object.keys(mastery).map(id => `${id}:${mastery[id].lv}:${mastery[id].iv}`).join(',');
}

function copyText(id) {
    const el = document.getElementById(id);
    el.select();
    document.execCommand('copy');
    alert("コピーしました");
}

document.onkeydown = (e) => {
    if (!document.getElementById("app").classList.contains('active')) return;
    const k = e.key.toLowerCase();
    if (k === "z") processAnswer(true);
    if (k === "a") processAnswer(false);
    if (e.code === "Space") { e.preventDefault(); finishTraining(); }
};
</script>

<script type="text/plain" id="words-data">
</script>
</body>
</html>
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?