Lingua Cycle
連続学習: 0日目
さあ、学習を始めましょう!
学習時間 (直近7日)
Max0
Avg Time / Q
-
Accuracy
-
Review Debt
-
Recent Improvement
-
Top 10 Mistakes (単語)

今日の目標: 3 タスク

完了タスク 0 / 3
広告
プラグインストア
ストアを見る
公開する
広告
教材ライブラリ

クラウド共有・インポート

教材の編集
教材情報に未保存の変更があります

新規アイテム追加

Sort / Blank以外の出題時に、回答欄の上へヒントとして表示されます。正誤判定には影響しません。
問題編集フォームに未保存の変更があります

登録リスト 0

一括編集モード
チェックした問題だけに操作を適用します。通常の並び替え・個別編集は一括編集を終了すると戻ります。
0件選択中
選択
内容の変更
データ操作
辞書・翻訳
0/0
Typing
Perfect!
一致率: 100%
Question

Clear!

セッションが完了しました。じっくり復習しましょう!

Time
0s
Accuracy
100%
今回の問題を復習する
広告
設定
目標日ベースのタスク自動調整
教材の完成目標日に合わせて、1日のタスク量を自動計算します。
厳格判定モード
大文字/小文字、記号を区別します。スペース数は常に無視します。
自動音声再生 (聞き取り問題のみ)
Dictation時に自動で英語を読み上げます。
% 以上
1.0x
API Keyを設定すると、トップ画面からAIによる特別小テストの生成とフィードバックを受け取れます。
ストレージ使用状況
Publisher ID:
データのフルバックアップ・復元
各プラグイン固有の設定は、プラグインごとに紫色の独立アコーディオンとして表示します。追加・削除・ON/OFF後は安全のため自動で再読み込みします。
この操作を実行すると、教材・学習記録・設定などのローカルデータが消去されます。実行前にJSONエクスポートを推奨します。
処理中...

出題設定

学習メニュー解説

目的に合わせて最適な学習メニューを選びましょう。

学習を開始 (通常学習)
【特徴】目標日などの出題設定に基づき、復習が必要な問題を中心に適切な間隔で出題します。
【おすすめ】毎日の基本ルーティンとして着実に記憶を定着させたい時。
おまかせ
【特徴】まだ完全に記憶に定着していない(復習推奨)の問題のみを自動でピックアップして出題します。
【おすすめ】試験前など、効率的に弱点だけを補強したい時。
エンドレス
【特徴】設定された範囲内で、正解するまで永遠に繰り返し問題が出題される無限ループモードです。
【おすすめ】新しい教材を登録した直後など、頭に徹底的に叩き込みたい時。
苦手克服 AIテスト
【特徴】現在の苦手問題の傾向をAIが分析し、似た文法要素を使った新しいテスト問題を5問自動生成します(APIキー必須)。
【おすすめ】記憶したフレーズを別の文脈でも使えるか、応用力を試したい時。

特殊記法の使い方

解答に以下のマークアップを混ぜることで、解答の判定や穴埋めの指定を自由自在に拡張できます。

① {a|b} : aかb、どれでも正解
例: {This|That} is cute.
→ ThisでもThatでも正解。
② (a|b) : あってもなくても良い選択
例: I (really|very) like you.
→ 省略しても、reallyでもveryでも正解。
③ [a|b] : 強制穴埋めターゲット
例: This is [very|so] important.
→ Blank問題時、この箇所が必ず穴になります。
例: He [like]s the game / u[niversity]
→ 単語の一部分だけをBlankにできます。入力は []内だけでも単語全体でも正解です。
④ [!a|b] : 絶対に穴埋めにしない
例: [!He|She] runs fast.
→ Blank問題時、この箇所が穴埋めになりません。
あなたの評価

プラグインテンプレートと書き方

Lingua Cycleのプラグインは、JSプラグインまたはCSSプラグインとして追加できます。JSは window.LC_API.registerPlugin(...) で登録し、inithooksdispose に役割を分けます。初めて作る場合は「DOMを触る処理は afterRouteRender」「回答判定に関係する処理は beforeAnswerEval / afterAnswerEval」「片付けは必ず dispose」と覚えると安全です。
注意: プラグインはユーザーのブラウザ上で直接実行されます。APIキー、教材データ、localForage、DOMを触れるため、公開前に「不要な外部通信がないか」「データを壊さないか」「無効化時に片付くか」を必ず確認してください。

まず理解する全体像

JSプラグインは、画面・学習・保存・ストアなどのタイミングで本体から呼ばれる hooks に処理を差し込む形式です。初期化は init(context)、終了処理は dispose() に書きます。

CSSプラグインは、見た目だけを変える形式です。本体CSSと衝突しないよう、.lc-my-plugin-... のような独自接頭辞を使い、既存セレクタの直接上書きは最小限にしてください。

registerPluginに書く項目

name
内部ID。英数字・ハイフン推奨。保存キーにも使うため、後から変えないのが安全です。
displayName
画面に表示する名前。日本語可。
version
更新管理用。例: 1.0.0。
type
通常は js。CSSファイルの場合はテンプレートのメタ情報で css とします。
description
機能説明。ストア公開時の説明と矛盾しないようにします。
priority
hook実行順。小さいほど先に実行されます。迷ったら100。
init(context)
有効化・読込時に1回。API取得、style追加、初期イベント登録など。
hooks
本体イベントに反応する処理。routeやpayloadを確認して必要な画面だけで動かします。
dispose()
無効化・削除・再読込前の片付け。イベント、timer、追加DOM、styleを解除します。

最小JS例

window.LC_API.registerPlugin({ name: 'my-plugin-id', displayName: '表示名', version: '1.0.0', type: 'js', description: '何をするプラグインか', priority: 100, async init(context) { const api = context.api || window.LC_API; // 初期化。DOMが必要なら onDOMReady / afterRouteRender 側に分ける。 }, dispose() { // addEventListener / setInterval / 追加DOM / style を片付ける。 }, hooks: { afterRouteRender(payload) { // payload.route を見て必要な画面だけ処理する。 }, afterAnswerEval(payload) { // payload.evaluationResult を見て判定後の補助表示をする。 } } });

完全フック一覧(本体に定義されている全フック)

現在の本体に定義されているフックをすべて列挙しています。payloadの中身はフックごとに違うため、最初は console.log(payload) で確認してください。

beforeAppInit
AppStore初期化処理の直前。保存データ読込前提の処理には向きません。グローバル準備向け。
afterAppInit
AppStore初期化後。assets/stats/settings/pluginsを読めます。重いDOM操作はonDOMReady以降推奨。
onAppReady
本体初期化・画面表示・プラグイン読込後。通常の初期DOM追加はここが最も扱いやすいです。
beforeHomeRender
ホーム描画前。統計値やバナー表示を差し替える準備に使います。
onHomeRender
ホーム表示中/直後の拡張。ホームカードや小さな情報表示の追加向け。
afterHomeRender
ホーム描画完了後。実DOMを取得してボタン追加する場合に安全です。
beforeLibraryRender
教材ライブラリ描画前。教材一覧の補助状態を準備します。
afterLibraryRender
教材ライブラリ描画後。教材カードへのバッジ追加などに使います。
beforeEditorRender
教材編集画面描画前。編集対象データを確認できます。
afterEditorRender
教材編集画面描画後。フォーム横の補助UI追加に使います。
beforeSettingsRender
設定画面描画前。独自設定の準備向け。
afterSettingsRender
設定画面描画後。設定DOMへ説明やボタンを追加する場合に使います。
beforeRouteChange
画面遷移前。未保存確認・一時状態保存・タイマー停止など。
onRouteChange
画面遷移時の汎用通知。route名に応じた処理分岐向け。
afterRouteRender
画面描画後の汎用通知。routeとDOMを見てUI追加する定番フック。
beforeSave
AppStore保存前。保存データ検査向け。ここで重い非同期処理は避けます。
afterSave
AppStore保存後。保存完了後のログ・同期予約向け。
onStoreUpdate
プラグインストア状態更新時。ストア一覧の再集計など。
onError
本体/プラグインのエラー通知。ユーザー通知やログ保存に使います。
onApiRequest
apiFetch前。GAS等への通信を観察する用途。機密情報の扱いに注意。
onApiResponse
apiFetch後。レスポンスログや簡易監視向け。
onDOMReady
DOM構築後。軽いDOM追加・イベント登録向け。
onModalOpen
モーダル表示時。modal idを見て補足説明を追加できます。
onModalClose
モーダル閉鎖時。追加UIや一時状態の片付け向け。
beforeSessionStart
学習セッション開始前。出題プールや設定の確認向け。
onQuestionStart
1問開始時。タイマーや補助表示の開始向け。
afterSessionStart
セッション開始後。学習中UIの追加向け。
beforeSessionFinish
セッション終了前。集計前の最終処理向け。
onSessionFinish
セッション終了時。結果集計やログ保存向け。
afterSessionFinish
セッション終了後。結果画面表示後の補助UI向け。
beforeQuestionSelect
次の問題選択前。出題順や候補の観察向け。
afterQuestionSelect
次の問題選択後。選ばれた問題の記録向け。
beforeQuestionRender
問題表示前。表示直前の補助情報準備向け。
afterQuestionRender
問題表示後。Blank/Sort/Typingなどの表示DOM調整向け。
beforeAnswerInputRead
回答欄から値を読む直前。入力補正の準備向け。
afterAnswerInputRead
回答欄から値を読んだ直後。読み取った入力のログ向け。
onLearnSubmitBeforeEval
回答送信後・判定前。入力補助や判定前ログ向け。
beforeAnswerEval
正誤判定直前。qItem/inputを読めます。判定改変は慎重に。
afterAnswerEval
正誤判定直後。evaluationResultを参照して補助表示や分析に使います。
onLearnSubmitAfterEval
判定後・結果画面前。スコア更新後処理の観察向け。
onAnswerSubmit
回答送信後の汎用通知。細かい判定タイミングに依存しない処理向け。
beforeScoreUpdate
学習スコア更新前。アイテム状態変更前の記録向け。
afterScoreUpdate
学習スコア更新後。新しいreps/ef/nextDateを参照できます。
beforeCheckRender
結果画面描画前。結果表示の補助情報準備向け。
afterCheckRender
結果画面描画後。復習ボタンや説明追加向け。
onDictSearch
辞書検索時。検索語のログや別辞書連携向け。
beforeDictResultRender
辞書結果描画前。結果整形の準備向け。
afterDictResultRender
辞書結果描画後。補足リンク追加向け。
onAssetLoad
教材読込時。教材データの確認や移行処理向け。
onAssetCreate
教材作成時。初期タグ付与などに使えます。
onAssetDelete
教材削除時。関連するプラグインデータ削除向け。
beforeAssetSave
教材保存前。入力検証やメタデータ補正向け。
afterAssetSave
教材保存後。保存完了通知や同期予約向け。
onPluginInstall
プラグイン導入時。初回セットアップや注意表示向け。
beforePluginLoad
プラグイン読込前。安全チェックやログ向け。
afterPluginLoad
プラグイン読込後。読込結果の確認向け。
beforePluginEnable
プラグイン有効化前。依存チェック向け。
afterPluginEnable
プラグイン有効化後。初期UI表示向け。
beforePluginDisable
プラグイン無効化前。状態保存や停止準備向け。
afterPluginDisable
プラグイン無効化後。無効化結果の通知向け。
beforePluginDispose
dispose実行前。片付け前ログ向け。
afterPluginDispose
dispose実行後。片付け漏れ確認向け。
beforePluginListRender
プラグイン一覧描画前。リスト補助データ準備向け。
afterPluginListRender
プラグイン一覧描画後。各プラグイン行へのUI追加向け。
onStoreViewOpen
ストア画面を開いた時。ストア更新や案内表示向け。
beforeStoreRender
ストア描画前。フィルタや並び替え補助向け。
afterStoreRender
ストア描画後。カードへの追加表示向け。
onItemOptionsRender
問題編集フォームのオプション欄描画時。独自設定項目追加向け。

完全一覧: beforeAppInit, afterAppInit, onAppReady, beforeHomeRender, onHomeRender, afterHomeRender, beforeLibraryRender, afterLibraryRender, beforeEditorRender, afterEditorRender, beforeSettingsRender, afterSettingsRender, beforeRouteChange, onRouteChange, afterRouteRender, beforeSave, afterSave, onStoreUpdate, onError, onApiRequest, onApiResponse, onDOMReady, onModalOpen, onModalClose, beforeSessionStart, onQuestionStart, afterSessionStart, beforeSessionFinish, onSessionFinish, afterSessionFinish, beforeQuestionSelect, afterQuestionSelect, beforeQuestionRender, afterQuestionRender, beforeAnswerInputRead, afterAnswerInputRead, onLearnSubmitBeforeEval, beforeAnswerEval, afterAnswerEval, onLearnSubmitAfterEval, onAnswerSubmit, beforeScoreUpdate, afterScoreUpdate, beforeCheckRender, afterCheckRender, onDictSearch, beforeDictResultRender, afterDictResultRender, onAssetLoad, onAssetCreate, onAssetDelete, beforeAssetSave, afterAssetSave, onPluginInstall, beforePluginLoad, afterPluginLoad, beforePluginEnable, afterPluginEnable, beforePluginDisable, afterPluginDisable, beforePluginDispose, afterPluginDispose, beforePluginListRender, afterPluginListRender, onStoreViewOpen, beforeStoreRender, afterStoreRender, onItemOptionsRender

よく使う書き方

  • 画面にボタンを追加: afterRouteRenderpayload.route を見て、対象画面だけDOMを追加します。
  • 問題編集フォームに項目を追加: onItemOptionsRender を使い、保存先はプラグイン専用キーに分けます。
  • 回答判定を観察: beforeAnswerEval / afterAnswerEval で入力や結果を読みます。判定結果の破壊的変更は避けてください。
  • 設定UIを追加: afterSettingsRender で設定DOMへ追加し、変更時はプラグイン専用storageへ保存します。

disposeで必ず片付けるもの

  • addEventListener したイベント
  • setInterval / 長く残る setTimeout
  • 追加したDOM要素
  • 追加した <style>
  • 一時的に差し替えた関数・グローバル変数
  • MutationObserver / ResizeObserver などのobserver

公開前チェックリスト

  • プラグインIDが他と衝突しない
  • 教材データや設定を直接壊していない
  • 保存処理とUI描画を混ぜすぎていない
  • 非同期処理で失敗時に成功表示を出していない
  • 不要な外部通信がない
  • 無効化・削除後にイベントやstyleが残らない
  • スマホ幅でもUIが崩れない

Lingua Cycle へようこそ

初めてご利用の方へ

Lingua Cycleをご利用いただきありがとうございます。

本アプリは、ユーザー自身が教材を作成・管理しながら語学学習を行えるツールです。

以下の内容をご確認の上、ご利用ください。


重要事項・免責について

データの取り扱いについて

本アプリは、原則としてユーザーのデータをローカル環境(ブラウザ)内に保存します。

ユーザーの入力したデータ(教材・学習履歴・設定情報等)は、当アプリ運営側で収集・外部送信することはありません。

ただし、以下の場合を除きます:

  • AI機能(Gemini等)を利用した場合、入力内容が外部APIに送信されることがあります
  • ユーザーが手動でクラウド共有・エクスポート・プラグインストアを利用した場合

広告配信について

本アプリでは、運営費の維持を目的として、第三者配信の広告サービス(例:忍者AdMax)を利用する場合があります。

広告配信事業者は、広告の表示、効果測定、不正利用防止、配信最適化等のため、Cookie、広告識別子、IPアドレス、端末情報、アクセス情報等を取得・利用する場合があります。

広告の内容は広告配信事業者等により自動的に配信されるものであり、本アプリが個別の広告内容を保証・推奨するものではありません。

広告配信に関する詳細は、各広告配信事業者の利用規約およびプライバシーポリシーをご確認ください。

APIキーの取り扱いについて

本アプリでは、一部機能においてAPIキー(例:Gemini API Key)を使用する場合があります。

  • APIキーはユーザーの責任で管理してください
  • 保存したAPIキーは、当アプリ内でのみ使用され、他用途で利用することはありません
  • APIキーの保存は任意であり、いつでも削除できます

プラグインを利用する場合、第三者が作成したコードによってAPIキーを含むデータが意図せず使用される可能性があります。

信頼できるプラグインのみ使用してください

AI機能について

本アプリのAI機能は外部サービス(Gemini等)を利用しています。

そのため:

  • 利用にはAPIキーが必要です
  • APIのレート制限により、短時間での連続利用が制限される場合があります
  • APIの仕様変更・停止により、機能が利用できなくなる可能性があります

また、AIの出力内容の正確性・完全性については保証されません。

教材の共有について

ユーザーは教材を外部に共有することが可能です。

ただし:

  • 他ユーザーが公開した教材の内容について、本アプリは一切責任を負いません
  • 不適切・不正確な内容が含まれている可能性があります
  • ダウンロード・利用は自己責任で行ってください

プラグイン機能について

本アプリでは、JavaScript / CSSによる拡張(プラグイン)を利用できます。

プラグインについて:

  • すべてのプラグインはユーザーの責任で使用してください
  • 動作の保証は一切行いません
  • セキュリティ上のリスクが含まれる可能性があります
  • データ破損・予期しない動作の原因となる場合があります

プラグインを利用する場合、第三者が作成したコードによってAPIキーを含むデータが意図せず使用される可能性があります。

不明なプラグインの使用は推奨しません

データの安全性について

本アプリはブラウザ上で動作するため:

  • ブラウザのデータ削除により、保存データが消失する可能性があります
  • デバイス変更時にはデータが引き継がれません(設定による)

重要なデータは定期的にバックアップしてください


基本的な使い方

教材の作成

  • 「教材ライブラリ」から新規作成
  • 問題と正解を登録
  • タグや目標日を設定可能

学習

  • 通常学習:バランスよく出題
  • おまかせ:苦手問題中心
  • エンドレス:正解するまで繰り返し
  • AIテスト:類似問題を自動生成(APIキーが必要)

出題形式

  • Typing(入力)
  • Dictation(聞いて書く)
  • Speaking(音声)
  • Sort(並び替え)
  • Blank(穴埋め)

辞書・翻訳

  • 単語や文章を検索できます
  • 発音の再生も可能です

データ管理

  • JSON形式でのバックアップ・復元
  • 教材・プラグインの共有

利用にあたって

  • 本アプリは学習支援ツールであり、成果は保証されません
  • すべての機能は予告なく変更・停止される場合があります
  • 本アプリの利用により生じたいかなる損害についても責任を負いません

最後に

Lingua Cycleは、ユーザー自身が学習環境を作り上げるツールです。

安全に、そして継続的に活用するために、上記内容をご理解の上ご利用ください。