Skip to content

harumiWeb/eitango

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

205 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

logo

eitango - TUI English Vocabulary Tool

GitHub Release WinGet Package Version GitHub go.mod Go version Apache-2.0 CI Codacy Badge


eitango

オフラインで動く英単語トレーニング TUI です。Bubble Tea ベースの対話UIとローカル SQLite を使い、待ち時間に短く回せる学習セッションを想定しています。

SRS での復習に加えて、選択式の choice と入力式の write の 2 モードを用意していて、音声再生もサポートしています。

デフォルトで内部に語彙が組み込まれており(現在の語彙数: 約8000)、外部 CSV / JSONL からの辞書インポートもサポートしています。学習統計や進捗管理、更新通知、診断ツールも備えています。

English README / コントリビューションガイド / Security Policy

home

現在できること

  • eitango でホーム画面を表示し、TUIでモード選択や設定変更が可能

プレイしている様子

choice mode

write mode

write mode

  • ホーム画面で Tab により choice / write を切り替え、Enter で play、r で review を開始
  • ホーム設定で Write 難易度 basic / hard を切り替え可能
  • ホーム設定で default / no_color / neon / custom のテーマモードを切り替え可能
  • ホーム設定から Key Bindings Editor を開き、キーバインドを保存して即時反映可能
  • macOS / Windows では Ctrl+P で現在の単語を発話し、Shift+Tab でセッション内の自動再生を切り替え可能
  • eitango play [choice|write] で通常学習セッションを開始
  • eitango review [choice|write] で復習セッションを開始
    • due があれば通常の due-only 復習を開始
    • due が 0 件でも、確認後に「過去に出題済み語だけのランダム復習」を開始可能
    • reviewed-only fallback では SRS を更新せず、feedback は Enter で次へ進むだけ
  • eitango stats で学習統計を表示
  • eitango version で現在のビルド情報と最新 release を確認
  • eitango doctor で DB と辞書の read-only 診断を実行
  • eitango validate で組み込み辞書や外部 CSV / JSONL を検証
  • eitango import / eitango export / eitango reset で辞書と進捗を保守

インストール

1. Windows は winget を使う

Windows では winget から install できます。manifest は GitHub Releases に公開した Windows zip を参照します。

winget install HarumiWeb.Eitango

更新は次です。

winget upgrade HarumiWeb.Eitango

winget を使わない場合は後述の GitHub Releases の zip からも利用できます。

Note

winget は 都合上、他の配布手段よりリリースからの反映が遅れる可能性があります。最新 release をすぐに使いたい場合は、次のいずれかを選択してください。

2. macOS / Linux は Homebrew を使う

macOS / Linux では Homebrew tap からも install できます。formula は GitHub Releases に公開した darwin / linux の tar.gz を参照します。

brew tap harumiWeb/eitango
brew install eitango

更新は次です。

brew upgrade eitango

3. macOS / Linux は curl | sh を使う

install.sh--version を省略した場合に GitHub Releases API (/releases/latest) へアクセスして最新 version を解決し、そのうえで対応する archive と checksums.txt を取得します。SHA256 検証が通ったときだけ ~/.eitango/ へ展開し、shell rc は自動変更しません。

curl -fsSL https://raw.githubusercontent.com/harumiWeb/eitango/main/install.sh | sh

特定 version を入れるときは次を使ってください。

curl -fsSL https://raw.githubusercontent.com/harumiWeb/eitango/main/install.sh | sh -s -- --version v0.2.0

インストール後は次が配置されます。

  • ~/.eitango/bin/eitango
  • ~/.eitango/version
  • ~/.eitango/share/

法務ファイルと notice は ~/.eitango/share/ に保持されます。PATH に ~/.eitango/bin が無い場合は次を shell 設定へ追加してください。

export PATH="$HOME/.eitango/bin:$PATH"

script を pipe せず確認してから実行したい場合は次でも同じです。

curl -fsSLo install.sh https://raw.githubusercontent.com/harumiWeb/eitango/main/install.sh
sh install.sh --version v0.2.0

アンインストールは次です。既定では学習データを残します。

curl -fsSL https://raw.githubusercontent.com/harumiWeb/eitango/main/install.sh | sh -s -- --uninstall

学習データも消す場合は --purge-data を付けます。EITANGO_DATA_DIR を使っている場合は、同じ env を付けて実行してください。

curl -fsSL https://raw.githubusercontent.com/harumiWeb/eitango/main/install.sh | sh -s -- --uninstall --purge-data

必要ツールは sh, curl, tar, mktemp と、sha256sum / shasum / openssl のいずれか 1 つです。Windows は今回の installer 対象外なので、winget か release zip を使ってください。

4. GitHub Releases から使う

公開アーカイブにはバイナリに加えて LICENSETHIRD_PARTY_NOTICES.mdthird_party/licenses/ が同梱されます。自分のOS向けの成果物を展開して eitango を実行してください。

PATHへの追加は手動で行う必要があります。

5. Go からインストールする

Go 1.26 以降を前提にしています。

go install github.com/harumiWeb/eitango/cmd/eitango@latest

go install で導入した build でも、eitango version は埋め込まれた module version を表示します。

クイックスタート

eitango

モード指定で起動することもできます。

eitango play
eitango play write
eitango review --focus-mode
eitango review write
eitango stats
eitango version
eitango doctor

eitango learn は後方互換の alias として残っています。新しい案内では eitango play を使います。

学習データは初回起動時にローカル DB へ初期化されます。デフォルトでは組み込みの assets/words_core.jsonl を seed として使用します。

Support Policy

  • 対応 OS は Windows / macOS / Linux です
  • 音声再生の初期対応 OS は macOS / Windows です
  • Linux では音声再生なしで、学習・復習・統計・辞書管理などの主要機能を利用できます
  • 対応範囲やサポート方針は、将来の release で変わる可能性があります
  • 脆弱性報告の手順と対応バージョン方針は SECURITY.md を参照してください

狭い端末幅

  • 主要画面では、最小幅以上なら同じ layout が panel の枠を保ったまま terminal 幅へ連続的に追従して縮みます
  • 収まらない key guide や keymap 表示などの単一行 UI は ... 付きで省略します
  • さらに狭い幅では、レイアウト崩れを避けるため通常 UI の代わりに専用メッセージを表示します
  • ターミナルの横幅を広げると、自動で通常表示へ戻ります
  • 分割ペインや SSH 先などで表示が簡略化された場合は、まず横幅を広げてください

Write 難易度

  • write_mode_difficulty = "basic" が既定値です
  • basic では Learn + Write の新規枠に、Choice で一度出題された語だけを使います
  • hard では従来どおり、Choice 未出題語も Write に出します
  • basic では候補が少ないと session の新規問題数が減ることがあります

config.toml では次の key で切り替えます。

write_mode_difficulty = "basic"

表示テーマ

テーマモード切り替え

  • theme_mode = "default" は既定の配色です
  • theme_mode = "no_color" は色指定を外し、terminal の既定色で表示します
  • theme_mode = "neon" はライトグリーン基調の高コントラスト preset です
  • theme_mode = "custom"theme_palette で role ごとの色を上書きします
  • ホーム設定 overlay では theme mode だけを切り替え、custom の詳細色は config.toml で編集します

最小設定は次です。

theme_mode = "no_color"

カスタムテーマは次です。

theme_mode = "custom"

[theme_palette]
accent = "#00D7FF"
success = "#00FF87"
danger = "#FF5F5F"
muted = "#B2B2B2"
border = "#FFFFFF"

音声再生

  • 初期対応 OS は macOS / Windows です。Linux では音声 backend を持たず、学習機能だけそのまま使えます
  • Ctrl+P で現在の単語を手動再生できます
  • Shift+Tab で現在セッションだけの自動再生 ON/OFF を切り替えできます
  • 自動再生は session 開始直後と次の問題表示直後に動きます

config.toml では次の key を使います。

audio_enabled = true
audio_autoplay = false
audio_voice = "Samantha"
  • audio_voice を空文字または未指定にすると、既定の英語 voice を自動選択します
  • ホーム設定 overlay の Local voice 行から、利用可能な local voice を切り替えられます
  • audio_enabled = false でも voice 候補の確認と保存はできます
  • 保存済み voice が見つからない場合は、自動選択へ fallback して音声再生を継続します

キーバインド

キーバインド設定

  • ホーム設定の キーバインド 行から editor を開けます
  • editor では context ごとに add / clear / reset / save を行えます
  • keymap を保存すると、settings overlay 上でまだ未保存だった設定変更も一緒に保存されます
  • 保存後は help と各画面の key guide にその場で反映されます
  • quiz.write では answer 入力と衝突する英字 1 文字 key は保存できません
  • record 中の cancel は Ctrl+G です。Esc 自体も editor から割り当てできます

config.toml では [keymap] を使います。

[keymap]
version = 1

[keymap.home]
toggle_answer_mode = ["x"]

[keymap.quiz.write]
hint = ["tab"]
skip = ["ctrl+s"]
confirm = ["enter"]
write_quit = ["esc"]

データ保存先

  • Windows: %AppData%\\eitango-cli\\
  • macOS: ~/Library/Application Support/eitango-cli/
  • Linux: ~/.local/share/eitango-cli/

次のファイルが作成されます。

  • user.db
  • config.toml
  • logs/
  • update-check.json

保存先は EITANGO_DATA_DIR で上書きできます。

Network / 更新チェック

通常の学習データはローカル SQLite に保存され、日常的な学習フローはオフラインで完結します。ネットワーク通信が発生するのは主に更新チェックで、eitango / eitango play / eitango review / eitango version が GitHub Releases の latest release 情報を確認するときです。

  • 更新チェックは補助機能であり、学習開始や回答処理の必須要件ではありません
  • 取得するのは主に最新 release の version / URL などの更新案内に必要な情報です
  • ホーム画面の通知は既定では起動ごとに非同期で latest release を再確認し、ホーム設定または config.tomlstartup_update_check で ON/OFF できます
  • 初回の成功確認では通知せず、次回以降の起動で差分があればホーム画面に軽く表示します
  • update-check.json には直前の successful check 結果を保存し、タイムアウトやオフライン時の fallback に使います
  • eitango version は現在の build info に加えて latest release URL も表示します
  • タイムアウトやオフライン時は黙ってスキップし、学習体験を止めません
  • EITANGO_DISABLE_UPDATE_CHECK=1 で完全に無効化できます

更新自体は自動化していません。必要に応じて GitHub Releases の最新成果物を取り直すか、Go インストールなら次を再実行してください。

go install github.com/harumiWeb/eitango/cmd/eitango@latest

curl | sh で入れた場合も self-update はしません。最新版へ上げるときは installer を再実行してください。

curl -fsSL https://raw.githubusercontent.com/harumiWeb/eitango/main/install.sh | sh

コマンド一覧

コマンド 役割
eitango version 現在の build info と latest release を表示
eitango play [choice write] [--focus-mode] [--questions N] 通常学習セッションを開始
eitango review [choice write] [--focus-mode] [--questions N] [--restart] 復習を開始。due が 0 件なら SRS 非反映の reviewed-only ランダム復習へ入れる
eitango stats 統計を表示
eitango --license 同梱ライセンスと notice を表示
eitango doctor DB / 辞書の診断
eitango validate --embedded-core 組み込み core 辞書を検証
eitango validate --file words.csv --format csv --kind import import 用辞書を検証
eitango import --file words.jsonl --format jsonl --source my-pack 外部辞書を取り込み
eitango export wrong-words --output wrong.csv 苦手語を CSV 出力
eitango export progress --output progress.json 進捗を JSON 出力
eitango reset --progress / eitango reset --reseed 学習履歴の初期化 / 組み込み core 再投入

TUI のホーム画面では、Tabchoice / write を切り替え、Enter で play、r で review を開始します。write は日本語の意味を見て英単語を入力するモードで、Tab で段階ヒント、Ctrl+S でスキップできます。 quiz / feedback では Ctrl+P で現在語を再生し、Shift+Tab でそのセッションだけの自動再生を切り替えられます。write では答えを露出しすぎないため、音声再生と自動再生は正解/不正解の feedback 画面でのみ有効です。Write 難易度と音声既定値はホーム設定または config.toml で管理し、CLI flag での一時 override はありません。

辞書データとライセンス

eitango のコードは Apache License 2.0 です。ただし、配布物に含まれる assets/words_core.jsonl はコードとは別に出所を持つ語彙データであり、Apache-2.0 だけで完結するものとして扱っていません。

このリポジトリでは、bundled core の語彙由来を Leipzig Corpora Collection English News 2024 1M word list と Japanese WordNet (wnjpn.db) に限定しています。

  • assets/words_core.jsonl はプロジェクトが編集・整備した core 語彙データです
  • meaning_ja は Japanese WordNet を参照して整備した日本語意味データです
  • frequency_rank は Leipzig Corpora Collection English News 2024 1M word list 由来の bundled-core ranking です
  • levelcore-1 から core-4 の内部バケットであり、上流データセットのラベルではありません
  • 語彙生成スクリプトはローカル入力の tmp/eng_news_2024_1M-words.txttmp/wnjpn.db を参照します
  • raw の Leipzig / WordNet 入力は配布物に含めず、生成条件は scripts/vocab/source_manifest.json に固定します
  • Japanese WordNet を直接・間接に使った成果公開や再配布では、third_party/licenses/Japanese-WordNet.txt にまとめた上流推奨のクレジット文言・リンク・ライセンス案内を保持してください

公開成果物での Japanese WordNet 帰属表示は、少なくとも次のような文言を含める想定です(ローカル入力を別版に差し替えた場合は版番号も合わせて更新してください)。

Japanese Wordnet (v1.1) © 2009-2011 NICT, 2012-2015 Francis Bond and 2016-2024 Francis Bond, Takayuki Kuribayashi
https://bond-lab.github.io/wnja/index.en.html
日本語ワードネット(1.1版)© 2009-2011 NICT, 2012-2015 Francis Bond and 2016-2024 Francis Bond, Takayuki Kuribayashi
https://bond-lab.github.io/wnja/index.ja.html

再配布や派生利用の前に、必ず次を確認してください。

特に words_core.jsonl を含む再配布物では、第三者データ由来の注意書きに加えて、Japanese WordNet の帰属表示案内も保持する前提で扱ってください。

開発メモ

アプリ本体は Go だけで動作しますが、辞書生成パイプラインには Python 3.11 以降を使います。

uv sync
go test ./...
go build ./...
shellcheck install.sh
golangci-lint run
go run ./cmd/eitango --help

コミット前の補助として lefthook の pre-commit では goimports -w cmd internal assetsgolangci-lint rungo test ./... を自動実行します。hook は開発体験向上のための補助で、CI では golangci-lint runshellcheck install.shgo test ./...go build ./... を必須チェックとして扱います。

CI の lint が失敗したときは、同じコマンドをローカルで順に再実行すると原因を切り分けやすくなります。

辞書生成スクリプトは scripts/vocab/ にあり、tmp/eng_news_2024_1M-words.txttmp/wnjpn.db のようなローカル入力を前提とします。これらはエンドユーザーの通常利用には不要です。

ライセンス

About

Offline TUI English vocabulary trainer built with Go, Bubble Tea, and SQLite.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors