7大国家資格 忘却曲線×過去問演習Webアプリ
⚡ ITパスポート・基本情報・7大国家資格フル対応・登録不要・端末自動保存
7大国家資格 忘却曲線×過去問演習Webアプリ
通勤電車の片手操作で合格ラインまで最短ナビゲート!
間違えた問題はエビングハウスの忘却曲線(明日・3日後・7日後)で自動復習できます。
📱
スキマ資格ガイド 公式アプリ
💻 ITパスポート 頻出マスター10問
🔥 連続学習: 1日目
🎯 今日のスキマ目標(10問)
0 / 10問
通勤時間(約15分)で10問達成できます!
📊 推定合格判定
判定中…
–%
(目標合格ライン: 80%)
問題を解き進めると判定が表示されます
ITパスポート 全体進捗
● マスター: 0 /
● 要復習: 0 /
● 未着手: 0
⚠️ 警告:不正利用・無断転載が検知されました
本アプリは『スキマ資格ガイド』公式限定コンテンツです。
正規サイトへ自動的に移動します…
⏳
最新の頻出問題データを取得中…
(オンデマンド暗号化通信・最新シラバス対応)
⚠️
問題データの取得に失敗しました
電波の良い環境で再度お試しいただくか、ページを再読み込みしてください。
🎉
要復習の問題はありません!
すべての出題をマスターしています。「全問演習」で総復習しましょう。
‘ + q.cat + ‘‘ + q.year + ‘
第 ‘ + (currentIndex + 1) + ‘ 問 / 全 ‘ + qList.length + ‘ 問
‘;
card.appendChild(metaDiv);
// 問題文
var qText = document.createElement(‘div’);
qText.style.cssText = ‘font-size:16px;font-weight:bold;line-height:1.65;color:#0f172a;margin-bottom:20px;padding:14px 16px;background:#f8fafc;border-left:4px solid #0d9488;border-radius:4px;’;
qText.textContent = q.q;
card.appendChild(qText);
// 選択肢コンテナ
var optContainer = document.createElement(‘div’);
optContainer.id = ‘options-container’;
optContainer.style.cssText = ‘display:flex;flex-direction:column;gap:10px;margin-bottom:20px;’;
q.options.forEach(function(opt, oIdx) {
var btn = document.createElement(‘button’);
btn.className = ‘quiz-opt-btn’;
btn.style.cssText = ‘background:#fff;border:1.5px solid #cbd5e1;padding:12px 16px;border-radius:10px;text-align:left;font-size:14.5px;color:#1e293b;cursor:pointer;transition:all 0.15s;line-height:1.5;box-shadow:0 1px 3px rgba(0,0,0,0.04);’;
btn.textContent = opt.text;
btn.onclick = function() {
if (answered) return;
selectOption(q, oIdx, qList);
};
optContainer.appendChild(btn);
});
card.appendChild(optContainer);
// 解説領域(初期非表示)
var expBox = document.createElement(‘div’);
expBox.id = ‘explanation-box’;
expBox.style.cssText = ‘display:none;padding:16px 18px;border-radius:12px;margin-bottom:20px;line-height:1.6;font-size:14px;’;
card.appendChild(expBox);
// 次へボタン領域
var navDiv = document.createElement(‘div’);
navDiv.id = ‘quiz-nav’;
navDiv.style.cssText = ‘display:none;justify-content:space-between;align-items:center;’;
navDiv.innerHTML = ‘💾 端末内に自動保存中‘;
card.appendChild(navDiv);
document.getElementById(‘btn-next-q’).onclick = function() {
if (currentIndex + 1 < qList.length) {
currentIndex++;
} else {
currentIndex = 0;
}
renderQuestion();
};
}
// 9. 回答選択時の処理
function selectOption(q, chosenIdx, qList) {
answered = true;
var chosenOpt = q.options[chosenIdx];
var isCorrect = chosenOpt.isCorrect;
var stats = loadExamStats();
stats.todayCount += 1;
// 正誤リスト更新
if (isCorrect) {
if (stats.correctList.indexOf(q.id) === -1) stats.correctList.push(q.id);
var wIdx = stats.wrongList.indexOf(q.id);
if (wIdx !== -1) stats.wrongList.splice(wIdx, 1);
} else {
if (stats.wrongList.indexOf(q.id) === -1) stats.wrongList.push(q.id);
var cIdx = stats.correctList.indexOf(q.id);
if (cIdx !== -1) stats.correctList.splice(cIdx, 1);
// 忘却曲線:次回再出題日(明日)をセット
var tomorrow = new Date();
tomorrow.setDate(tomorrow.getDate() + 1);
stats.nextReviews[q.id] = tomorrow.toISOString().split('T')[0];
}
saveExamStats(stats);
// 選択肢ボタンのカラー変更
var btns = document.querySelectorAll('.quiz-opt-btn');
btns.forEach(function(b, idx) {
b.style.cursor = 'default';
if (q.options[idx].isCorrect) {
b.style.background = '#dcfce7';
b.style.borderColor = '#22c55e';
b.style.color = '#15803d';
b.style.fontWeight = 'bold';
} else if (idx === chosenIdx) {
b.style.background = '#fee2e2';
b.style.borderColor = '#ef4444';
b.style.color = '#b91c1c';
} else {
b.style.opacity = '0.5';
}
});
// 解説ボックス表示
var expBox = document.getElementById('explanation-box');
expBox.style.display = 'block';
if (isCorrect) {
expBox.style.background = '#f0fdf4';
expBox.style.border = '1.5px solid #86efac';
expBox.style.color = '#166534';
expBox.innerHTML = '⭕ 正解です!素晴らしい!
‘ + ‘‘ + chosenOpt.exp + ‘
‘;
} else {
expBox.style.background = ‘#fef2f2’;
expBox.style.border = ‘1.5px solid #fca5a5’;
expBox.style.color = ‘#991b1b’;
expBox.innerHTML = ‘❌ 不正解…(忘却曲線:明日の復習に登録されました)
‘ + ‘あなたの選択: ‘ + chosenOpt.exp + ‘
‘ + ‘正解の理由: ‘ + q.options.find(function(o){return o.isCorrect;}).exp + ‘
‘;
}
document.getElementById(‘quiz-nav’).style.display = ‘flex’;
var allQ = examCache[currentExam] || qList;
updateDashboardUI(allQ);
renderQuestionMap(qList, stats);
}
// 10. 外部公開API(タブ・モード切替)
window.switchExam = function(examKey) {
currentExam = examKey;
currentIndex = 0;
answered = false;
document.querySelectorAll(‘.exam-tab’).forEach(function(b) {
b.style.background = ‘#e2e8f0’;
b.style.color = ‘#334155’;
b.style.border = ‘1.5px solid transparent’;
b.style.boxShadow = ‘none’;
});
var activeBtn = document.getElementById(‘tab-‘ + examKey);
if (activeBtn) {
activeBtn.style.background = ‘#0f766e’;
activeBtn.style.color = ‘#fff’;
activeBtn.style.border = ‘1.5px solid #0f766e’;
activeBtn.style.boxShadow = ‘0 2px 4px rgba(15,118,110,0.2)’;
}
renderQuestion();
};
window.setMode = function(mode) {
currentMode = mode;
currentIndex = 0;
answered = false;
if (mode === ‘all’) {
document.getElementById(‘mode-all’).style.background = ‘#0d9488’;
document.getElementById(‘mode-all’).style.color = ‘#fff’;
document.getElementById(‘mode-wrong’).style.background = ‘#fff’;
document.getElementById(‘mode-wrong’).style.color = ‘#0f766e’;
} else {
document.getElementById(‘mode-wrong’).style.background = ‘#0d9488’;
document.getElementById(‘mode-wrong’).style.color = ‘#fff’;
document.getElementById(‘mode-all’).style.background = ‘#fff’;
document.getElementById(‘mode-all’).style.color = ‘#0d9488’;
}
renderQuestion();
};
window.resetExamProgress = function() {
if (confirm(‘現在の資格の学習進捗(マスター・要復習データ)を初期化しますか?’)) {
localStorage.removeItem(getStoreKey(currentExam));
renderQuestion();
}
};
// アプリ自動初期化(ITパスポートを初期ロード)
if (document.readyState === ‘loading’) {
document.addEventListener(‘DOMContentLoaded’, function() {
window.switchExam(‘itpass’);
});
} else {
window.switchExam(‘itpass’);
}
})();