JSLSTARGLOBE

JavaScript学習を始めよう!

ゲーム感覚でプログラミングの基礎を学べます

学習進捗

0/32 問題完了

0 ポイント
0 バッジ

学習統計

0 連続日数
0m 学習時間

レッスン一覧

レッスン1: 変数と値

プログラムで情報を保存する方法を学ぼう(5問)

完了

レッスン2: 計算と演算子

コンピューターに計算をさせてみよう(6問)

学習中
🔒

レッスン3: 条件分岐(if文)

プログラムに判断をさせよう(5問)

未開始
🔒

レッスン4: 繰り返し処理(for文)

同じ処理を繰り返してみよう(5問)

未開始
🔒

レッスン5: 関数の基礎

処理をまとめて再利用しよう(5問)

未開始
🔒

レッスン6: 配列の操作

複数のデータを管理しよう(5問)

未開始
🔒

レッスン7: 文字列の操作

文字列を自在に操ろう(5問)

未開始
🔒

レッスン8: オブジェクトの基礎

データをまとめて管理しよう(5問)

未開始
🔒

レッスン9: より複雑な条件分岐

複雑な判断をプログラムに任せよう(5問)

未開始
🔒

レッスン10: 配列の高度な処理

配列をもっと活用しよう(5問)

未開始
🔒

レッスン11: 高度な関数

関数をマスターしよう(5問)

未開始
🔒

レッスン12: 配列メソッド入門

配列を効率的に操作しよう(5問)

未開始
🔒

レッスン13: 文字列メソッド

文字列を効率的に操作しよう(5問)

未開始
🔒

レッスン14: 演算子の応用

便利な演算子を覚えよう(5問)

未開始
🔒

レッスン15: while文とdo-while文

条件による繰り返し処理(5問)

未開始
🔒

レッスン16: ネストした構造

構造を組み合わせよう(5問)

未開始
🔒

レッスン17: オブジェクトの操作

オブジェクトを自在に操ろう(5問)

未開始
🔒

レッスン18: 高度な配列メソッド

配列メソッドをマスターしよう(5問)

未開始
🔒

レッスン19: 関数式とスコープ

関数の高度な概念を理解しよう(5問)

未開始
🔒

レッスン20: スコープと定数

スコープと定数を使いこなそう(5問)

未開始
🔒

レッスン21: DOM操作の基礎

Webページを動的に変更しよう(5問)

未開始
🔒

レッスン22: イベント処理

ユーザーの操作に反応しよう(5問)

未開始
🔒

レッスン23: フォーム操作

フォームデータを扱おう(5問)

未開始
🔒

レッスン24: ローカルストレージ

データを保存しよう(5問)

未開始
🔒

レッスン25: JSON操作

データ形式を理解しよう(5問)

未開始
🔒

レッスン26: エラーハンドリング

エラーに対処しよう(5問)

未開始
🔒

レッスン27: 非同期処理入門

時間のかかる処理を扱おう(5問)

未開始
🔒

レッスン28: Web API連携

外部データを取得しよう(5問)

未開始
🔒

レッスン29: モジュール化

コードを整理しよう(5問)

未開始
🔒

レッスン30: 総合プロジェクト

これまでの知識を活用しよう(5問)

未開始

演習問題

基礎問題 1-1
基礎問題 1-2

実践プロジェクト

簡単な計算機

足し算、引き算ができる計算機を作ろう

レッスン2: 計算と演算子

計算をしてみよう

JavaScriptでは、コンピューターに計算をさせることができます。

例:基本的な計算

console.log(5 + 3);  // 8
console.log(10 - 4); // 6
console.log(3 * 4);  // 12
console.log(8 / 2);  // 4

試してみよう

演習問題

問題1: 基本的な計算

10と5を足した結果をコンソールに表示してください。

プロジェクト

計算機アプリ

学んだ知識を使って計算機を作ろう

MBTI風心理テスト

あなたの性格タイプを診断する心理テスト

おみくじアプリ

ランダムな結果を表示するアプリ

計算機アプリ

進捗: 0/5
1

ディスプレイの作成

計算結果を表示する画面を作ろう

2

数字ボタンの実装

0-9の数字ボタンを作ろう

3

演算子ボタンの実装

+, -, ×, ÷ ボタンを作ろう

4

計算機能の実装

実際に計算できるようにしよう

5

クリア機能の実装

C、AC ボタンを実装しよう

ステップ1: ディスプレイの作成

まずは計算結果を表示するディスプレイ部分を作成しましょう。

HTML構造

<div class="calculator-display">
  <input type="text" id="display" readonly value="0">
</div>

ステップ2: 数字ボタンの実装

0から9までの数字ボタンを作成しましょう。

ボタンのHTML

<div class="calculator-numbers">
  <button onclick="addNumber('7')">7</button>
  <button onclick="addNumber('8')">8</button>
  <button onclick="addNumber('9')">9</button>
  // 他の数字ボタンも追加
</div>

ステップ3: 演算子ボタンの実装

+、-、×、÷ の演算子ボタンを作成しましょう。

ステップ4: 計算機能の実装

入力された式を計算する機能を実装しましょう。

ステップ5: クリア機能の実装

Cボタン(1文字削除)とACボタン(全削除)を実装しましょう。

プレビュー

ここに作成した計算機が表示されます

MBTI風 性格診断テスト

質問 1 / 20
🧠

あなたの性格タイプを発見しよう!

このテストは、MBTIの理論に基づいてあなたの性格タイプを診断します。

📊 20の質問でサクッと診断
🎯 16タイプの詳細な結果
💡 性格の特徴と適職をアドバイス

診断される16タイプ

INTJ
建築家
INTP
論理学者
ENTJ
指揮官
ENTP
討論者
INFJ
提唱者
INFP
仲介者
ENFJ
主人公
ENFP
運動家
ISTJ
管理者
ISFJ
擁護者
ESTJ
幹部
ESFJ
領事官
ISTP
巨匠
ISFP
冒険家
ESTP
起業家
ESFP
エンターテイナー
質問 1

🎭

あなたの性格タイプは...

ENFP
運動家

特性の内訳

外向性 (E) vs 内向性 (I)
60% 外向性
感覚 (S) vs 直感 (N)
70% 直感
思考 (T) vs 感情 (F)
65% 感情
判断 (J) vs 知覚 (P)
75% 知覚

性格の特徴

強み

    改善点

      向いている職業

      MBTI風心理テスト - 開発解説

      🎯 プロジェクト概要

      🧠

      MBTI理論の実装

      4つの軸(E/I, S/N, T/F, J/P)で16タイプの性格を判定する心理学理論をWebアプリケーションとして実装

      📊

      データ駆動設計

      質問データベース、スコア計算、結果マッピングを体系的に設計した本格的な診断システム

      🎨

      リッチなUI/UX

      プログレスバー、アニメーション、レスポンシブデザインを駆使したモダンなユーザー体験

      インタラクティブ機能

      結果シェア、データ保存、再テスト機能など、実用的なWebアプリケーション機能を完備

      🚀 実装した主要機能

      質問システム 20問の戦略的質問設計、前後ナビゲーション
      スコア計算 リアルタイムMBTIスコア算出、パーセンテージ表示
      結果表示 16タイプ詳細解説、強み・弱み・適職提案
      データ管理 localStorage活用、結果保存・共有機能

      🏗️ アプリケーション構造

      プレゼンテーション層

      スタート画面
      質問画面
      結果画面

      ロジック層

      PersonalityTest クラス
      スコア計算エンジン
      データ管理システム

      データ層

      質問データベース
      性格タイプ定義
      localStorage

      📁 ファイル構成

      📄 index.html メインHTML(3つの画面構造)
      🎨 styles.css レスポンシブ&テーマ対応CSS
      personality-test.js メインロジック(400行超)
      🔧 app.js ナビゲーション統合

      🧮 MBTI判定ロジック

      1

      質問設計

      4つの軸(E/I, S/N, T/F, J/P)を各5問ずつ、計20問で構成

      { text: "パーティーでは?",
        answers: {
          A: { text: "新しい人と話す", trait: "E" },
          B: { text: "知人とじっくり", trait: "I" }
        }}
      2

      スコア蓄積

      各回答で対応する特性にスコア+1。リアルタイムで4軸のスコアを管理

      this.mbtiScores = { E: 0, I: 0, S: 0, N: 0, T: 0, F: 0, J: 0, P: 0 };
      this.mbtiScores[selectedTrait]++;
      3

      タイプ判定

      各軸でスコアの高い方を選択し、4文字の性格タイプを決定

      type += this.mbtiScores.E > this.mbtiScores.I ? 'E' : 'I';
      type += this.mbtiScores.S > this.mbtiScores.N ? 'S' : 'N';
      // → "ENFP" など
      4

      結果マッピング

      判定されたタイプから詳細情報(説明、強み、適職など)を表示

      this.personalityTypes[mbtiType] = {
        name: "運動家", icon: "🎪",
        description: "情熱的で創造力豊か...",
        strengths: ["熱意", "創造性"]
      };

      🎯 4つの判定軸

      E vs I (外向性 vs 内向性)

      エネルギーの方向性:外部から得るか内部から得るか

      E: パーティーで積極的 I: 一人の時間でリフレッシュ
      S vs N (感覚 vs 直感)

      情報の処理方法:具体的事実か抽象的可能性か

      S: 段階的に着実学習 N: 全体像から詳細へ
      T vs F (思考 vs 感情)

      意思決定の基準:論理的分析か価値観・感情か

      T: データで議論 F: みんなが納得する解決策
      J vs P (判断 vs 知覚)

      外界への態度:計画的・規則的か柔軟・適応的か

      J: 詳細な計画で実行 P: 柔軟に状況対応

      🎨 UI/UX設計のポイント

      🎯

      直感的操作

      A/Bの明確な選択肢、視覚的フィードバック、自動遷移で迷わない操作フロー

      ✓ 大きなボタン ✓ ホバーエフェクト ✓ 選択状態の視覚化
      📊

      進捗の可視化

      プログレスバー、質問番号で現在位置を明確に。完了感を演出

      ✓ アニメーション付きバー ✓ リアルタイム更新 ✓ 残り質問数表示
      🎪

      エンゲージメント

      楽しいアニメーション、アイコン、カラフルなデザインで飽きさせない

      ✓ キャラクター絵文字 ✓ ホバーアニメーション ✓ 結果発表演出
      📱

      レスポンシブ

      スマホからPCまで、デバイスサイズに応じた最適な表示

      ✓ モバイルファースト ✓ 可変グリッド ✓ タッチ操作対応

      ✨ アニメーション一覧

      スライドイン 画面遷移時の滑らかな登場 transform: translateY(20px) → 0
      パルス アイコンの注意引きアニメーション transform: scale(1) → 1.1 → 1
      プログレスバー 進捗の視覚的変化 width: 0% → 100%
      結果表示 段階的な結果発表 順次 opacity: 0 → 1

      💻 重要なコード解説

      🏗️ クラス設計

      class PersonalityTest {
          constructor() {
              this.currentQuestionIndex = 0;
              this.answers = [];
              this.mbtiScores = { E: 0, I: 0, S: 0, N: 0, T: 0, F: 0, J: 0, P: 0 };
              this.questions = [...]; // 20問のデータ
              this.personalityTypes = {...}; // 16タイプの詳細
          }
      }

      📝 状態管理を一元化し、テスト進行を制御するメインクラス

      🎯 回答処理ロジック

      selectAnswer(target) {
          const value = answerBtn.getAttribute('data-value');
          this.answers[this.currentQuestionIndex] = value;
      
          // MBTIスコア更新
          const question = this.questions[this.currentQuestionIndex];
          const selectedTrait = question.answers[value].trait;
          this.mbtiScores[selectedTrait]++;
      
          // 自動遷移
          setTimeout(() => this.nextQuestion(), 800);
      }

      📝 回答選択と同時にスコア更新、UX向上の自動遷移実装

      🧮 性格タイプ算出

      calculateMBTIType() {
          let type = '';
          type += this.mbtiScores.E > this.mbtiScores.I ? 'E' : 'I';
          type += this.mbtiScores.S > this.mbtiScores.N ? 'S' : 'N';
          type += this.mbtiScores.T > this.mbtiScores.F ? 'T' : 'F';
          type += this.mbtiScores.J > this.mbtiScores.P ? 'J' : 'P';
          return type; // "ENFP" など
      }

      📝 4軸の比較で16通りの性格タイプを決定する核心ロジック

      📊 結果可視化

      updateTraitBars() {
          traits.forEach(trait => {
              const firstScore = this.mbtiScores[trait.first];
              const secondScore = this.mbtiScores[trait.second];
              const percentage = (firstScore / (firstScore + secondScore)) * 100;
      
              // アニメーション付きでバー表示
              setTimeout(() => {
                  bar.style.width = `${percentage}%`;
              }, 100);
          });
      }

      📝 スコアをパーセンテージ化し、視覚的なバーグラフで表現

      💾 データ永続化

      saveResults() {
          const results = {
              mbtiType: mbtiType,
              personalityName: personalityName,
              scores: this.mbtiScores,
              date: new Date().toISOString(),
              answers: this.answers
          };
          localStorage.setItem('personality-test-results', JSON.stringify(results));
      }

      📝 テスト結果をlocalStorageで永続化、再訪時の体験向上

      📚 学習ポイント

      JavaScript設計パターン
      • ES6クラス設計
      • モジュラープログラミング
      • イベント駆動アーキテクチャ
      データ構造とアルゴリズム
      • オブジェクト指向データ管理
      • スコア計算アルゴリズム
      • 条件分岐による分類
      Web API活用
      • localStorage データ永続化
      • Web Share API連携
      • Clipboard API使用
      CSS/アニメーション
      • CSS Grid/Flexbox レイアウト
      • CSS Transform/Transition
      • レスポンシブデザイン

      プロフィール

      学習統計

      1,250 総ポイント
      5 獲得バッジ
      25% 進捗率
      0 連続学習日数
      0m 総学習時間
      0 最長ストリーク

      獲得バッジ

      🏆
      初級者
      電光石火
      🎯
      正確無比

      設定

      学習データのリセット

      すべての学習進捗、ポイント、バッジをリセットします。この操作は取り消せません。

      ⚠️ 学習データをリセット

      本当にすべての学習データをリセットしますか?
      以下のデータが削除されます:

      ⚠️ この操作は取り消すことができません。

      学習データをリセットしました