Skip to content

mr110825/JavaScript_Lab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

🧪 JavaScript Lab

JavaScript Lab は、JavaScriptコードの実行と構造解析を同時に行える学習支援ツールです。

✨ 主な機能

1. インタラクティブなコードエディタ

  • シンタックスハイライト(Monokai テーマ)
  • 行番号表示
  • 自動括弧補完
  • Ctrl+Enter でコード実行

2. リアルタイムコード実行

  • console.log() 出力のキャプチャ
  • エラーメッセージの詳細表示
  • 実行時間の計測
  • alert() のキャプチャと表示

3. コード構造解析

Structure View(構造ビュー)

  • 各行の種類を分類(文、コメント、空行)
  • セミコロンの有無を可視化
  • 総文数のカウント

AST View(抽象構文木)

  • Acorn パーサーによる構文解析
  • ツリー構造での表示
  • ノードタイプと値の可視化

Semicolon Analysis(セミコロン解析)

  • セミコロン自動挿入のパターン検出
  • 潜在的な問題の警告
  • 修正提案の表示

4. コード例(スニペット)

  • Hello World
  • セミコロン問題の例
  • 配列操作
  • 関数定義

🚀 使い方

起動方法

JavaScript Labは静的なWebアプリケーションのため、HTTPサーバーで起動して使用します。

Python 3を使用(推奨)

# JavaScript_Labディレクトリに移動
cd /path/to/JavaScript_Lab

# HTTPサーバーを起動
python3 -m http.server 8000

# ブラウザで以下のURLにアクセス
# http://localhost:8000

他のHTTPサーバーを使用する場合

Node.js (http-server)

npx http-server -p 8000

PHP

php -S localhost:8000

サーバーの停止

ターミナルで Ctrl+C を押してサーバーを停止します。

基本的な使い方

  1. コードを入力

    • 左側のエディタにJavaScriptコードを入力
  2. 実行

    • 「▶ 実行」ボタンをクリック
    • または Ctrl+Enter (Mac: Cmd+Enter)
  3. 結果を確認

    • 右上パネル: 実行結果とconsole.log出力
    • 右下パネル: コード構造解析(3つのタブ)

コード例を試す

  1. ヘッダーのドロップダウンから「コード例を選択...」
  2. 試したい例を選択(自動的にエディタに読み込まれます)
  3. 「▶ 実行」で動作を確認

📂 プロジェクト構造

JavaScript_Lab/
├── index.html           # メインHTML
├── css/
│   └── style.css        # スタイルシート
├── js/
│   ├── editor.js        # エディタ管理
│   ├── executor.js      # コード実行エンジン
│   ├── analyzer.js      # コード解析エンジン
│   └── main.js          # メインロジック
└── README.md            # このファイル

🛠️ 技術スタック

  • エディタ: CodeMirror 5
  • パーサー: Acorn
  • スタイル: Vanilla CSS(CSS Grid/Flexbox)
  • JavaScript: ES6+ (クラス構文、アロー関数等)

💡 学習のポイント

セミコロン自動挿入の理解

// ❌ 問題のあるコード
alert("Hello")
[1, 2, 3].forEach(console.log)

// ✅ 正しいコード
alert("Hello");
[1, 2, 3].forEach(console.log);

JavaScript Lab では、このような潜在的な問題を自動的に検出し、警告を表示します。

コード構造の可視化

「Structure」タブでは、各行が以下のように分類されます:

  • ✅ 文(セミコロンあり)
  • ⚠️ 文(セミコロンなし)
  • 💬 コメント
  • (空行)

AST(抽象構文木)の理解

「AST」タブでは、コードがどのように解析されるかを確認できます:

  • Program: プログラム全体
  • ExpressionStatement: 式文
  • CallExpression: 関数呼び出し
  • など

🎯 活用例

1. JavaScriptの基礎学習

  • コードを書いて即座に実行
  • エラーメッセージから学ぶ
  • 構造を視覚的に理解

2. セミコロン問題のデバッグ

  • セミコロンが原因のバグを発見
  • 自動挿入のルールを体験
  • 安全なコーディングスタイルを学習

3. AST(抽象構文木)の理解

  • パーサーがコードをどう解釈するか
  • ツリー構造での表現を確認
  • コンパイラやトランスパイラの仕組みを学習

🔧 カスタマイズ

テーマの変更

index.html の CodeMirror テーマを変更:

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.16/theme/dracula.min.css">

エディタの初期化時にテーマを指定:

this.editor = CodeMirror.fromTextArea(textarea, {
    theme: 'dracula', // monokai から変更
    // ...
});

スニペットの追加

js/main.jssnippets オブジェクトに追加:

const snippets = {
    // 既存のスニペット...
    mySnippet: `// 新しいスニペット
console.log('カスタムスニペット');`
};

index.html の select 要素に option を追加:

<option value="mySnippet">カスタムスニペット</option>

📚 参考リンク

🎓 学習メモとの連携

このプロジェクトは、以下の学習メモの内容を実践するために作成されました:

  • 02_Active/現代のJavaScriptチュートリアル/ 配下のメモ
  • JavaScriptの基礎、コード構造、開発者ツールなど

🐛 既知の制限事項

  • 非同期コード(Promise、async/await)は簡易的な対応
  • DOMへの直接アクセスは制限あり
  • セキュリティのため、一部の機能は実行できません
  • 複雑なコードでは AST の深さ制限があります(パフォーマンス対策)

🚀 今後の拡張案

  • コードの保存・読み込み機能
  • より詳細なエラー解説
  • ES6+ 機能の対応状況チェック
  • コードフォーマッター統合
  • PWA化(オフライン対応)
  • コードの共有機能

📝 ライセンス

このプロジェクトは学習目的で作成されました。自由に使用・改変してください。


Made with ❤️ for JavaScript learners

About

JavaScriptコードの実行と構造解析を同時に行える学習支援ツール

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published