2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JavaScriptを学ぶプロセスを楽しく、遊び心を持って進める「遊び場」。コードをデータとして扱うメタプログミング技法。

Last updated at Posted at 2024-10-23

ショートストーリー:「東京プログラマのコード遊び場」

主人公、翔太は東京に住む若手プログラマ。彼はコードを操ることに情熱を注いでいたが、最近JavaScriptの理解が深まらず、悩んでいた。毎日、目の前にある膨大なドキュメントやチュートリアルを読み込み、サンプルコードを実行しては失敗し、再挑戦を繰り返していた。

ある夜、「コードの遊び場」に出会った。それは、好きなようにコードを入力し、すぐに結果が目の前に表示される、魔法のような場所だった。

「これなら、遊ぶように学べるかもしれない」

翔太はテキストボックスにサンプルコードを入力した。


let sum = 0;
for (let i = 1; i <= 10; i++) {
    sum += i;
}
console.log('1から10までの合計は: ' + sum);

「1から10までの数を足し合わせるだけの単純なコードだけど、基本を固めるのは大事だ」と、翔太は自分に言い聞かせた。

スクリーンショット 2024-10-24 035635.png

実行ボタンを押すと、結果が即座に画面に表示された。

「1から10までの合計は: 55」

その瞬間、翔太は幼い頃に夢中になったゲームのような感覚を思い出した。小さな挑戦をクリアし、そのたびに結果が目の前に現れる。その繰り返しが、学ぶことを楽しく感じさせてくれた。

翌朝、翔太は仕事に向かう電車の中で、また「コードの遊び場」にアクセスしていた。彼は次の挑戦を思いついた。

「今度はもっと複雑な計算をしてみよう」

テキストボックスにコードを入力した。


let sumEven = 0;
let sumOdd = 0;
for (let i = 1; i <= 30; i++) {
    if (i % 2 === 0) {
        sumEven += i;
    } else {
        sumOdd += i;
    }
}
console.log('偶数の合計: ' + sumEven);
console.log('奇数の合計: ' + sumOdd);

スクリーンショット 2024-10-24 035729.png

再び実行ボタンを押すと、結果はすぐに画面に現れた。

「偶数の合計: 240」

「奇数の合計: 225」

翔太はその結果を見て、少しずつ自分がJavaScriptを理解していく感覚を実感した。以前はただの「勉強」だったものが、この「遊び場」ではまるでゲームのように、次々と課題をクリアしていく感覚が新鮮だった。

数週間後、翔太は友人のエンジニア仲間にこの「遊び場」を教え、みんなで楽しみながらコードを書き、改善策を考える時間が増えた。彼は次の大きなプロジェクトに向けて、JavaScriptの知識をしっかりと身に付けていった。遊びのように学んだことで、彼のコードは効率的かつ創造的なものに進化した。

翔太は東京の喧騒を感じながら、こう思った。

「勉強は遊びに変わる。遊びの気持ちが力を生む。遊びが新しい道を開く」

彼は次の大きな挑戦に向けて、またテキストボックスに指を伸ばした。

JavaScriptを学ぶプロセスを楽しく、遊び心を持って進める「遊び場」

テキストボックスには、初期状態として1から10までの数の合計を計算するコードが表示され、実行ボタンを押すと結果がブラウザに表示されます。eval()関数を使用して、ユーザーが入力したJavaScriptコードを実行してます。コードをデータとして扱うメタプログミング技法です。

コードをメモ帳などのテキストエディタに貼り付け、ファイル名を「index.html」として保存します。その後、保存したファイルをブラウザで開けば、コードが実行されます。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Execute JavaScript from Textbox</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            margin: 20px;
        }
        textarea {
            width: 100%;
            height: 150px;
        }
        button {
            margin-top: 10px;
            padding: 10px 20px;
        }
        .result {
            margin-top: 20px;
            padding: 10px;
            border: 1px solid #ccc;
            background-color: #f9f9f9;
        }
    </style>
</head>
<body>

<h2>JavaScript Code Executor</h2>

<p>Enter JavaScript code in the textbox below and press "Run Code" to execute it.</p>

<!-- テキストボックスにサンプルコードを表示 -->
<textarea id="code-input">
// 1から10までの合計を求めるJavaScriptコード
let sum = 0;
for (let i = 1; i <= 10; i++) {
    sum += i;
}
document.getElementById('result').innerText = 'The sum of numbers from 1 to 10 is: ' + sum;
</textarea>

<!-- 実行ボタン -->
<button onclick="runCode()">Run Code</button>

<!-- 結果を表示するエリア -->
<div class="result" id="result">Result will be displayed here.</div>

<script>
    // テキストボックスに入力されたコードを実行する関数
    function runCode() {
        const code = document.getElementById('code-input').value;
        try {
            // コンソールの出力を result エリアに表示するため、console.log() をオーバーライド
            console.log = function(message) {
                document.getElementById('result').innerText = message;
            };
            // eval()でコードを実行
            eval(code);
        } catch (error) {
            // エラーハンドリング
            document.getElementById('result').innerText = 'Error: ' + error.message;
        }
    }
</script>

</body>
</html>

JavaScriptの学習に役立つサンプルコードを5つ用意しました。それぞれ基本的な概念を学ぶのに適したものです。

サンプル1: 条件分岐


// 条件分岐の例: 数字が偶数か奇数かを判断する
let number = 7;
if (number % 2 === 0) {
    console.log(number + 'は偶数です');
} else {
    console.log(number + 'は奇数です');
}

説明: このコードでは、if文を使って、数が偶数か奇数かを判断します。学習者は条件分岐の基本を学べます。

サンプル2: 配列の操作


// 配列を操作して合計を計算する
let numbers = [1, 2, 3, 4, 5];
let total = 0;
for (let i = 0; i < numbers.length; i++) {
    total += numbers[i];
}
console.log('合計は: ' + total);

説明: このコードは、forループを使用して配列内のすべての要素を合計します。配列とループの使い方を理解するのに役立ちます。

サンプル3: 関数の定義


// 引数を受け取る関数を定義する
function greet(name) {
    return 'こんにちは、' + name + '!';
}
console.log(greet('太郎'));

説明: このコードは、名前を引数として受け取り、挨拶を返す関数を定義しています。関数の作成と呼び出し方を学ぶことができます。

サンプル4: オブジェクトの操作


// オブジェクトを作成してプロパティを操作する
let person = {
    name: '花子',
    age: 25,
    greet: function() {
        return 'こんにちは、私の名前は ' + this.name + ' です。';
    }
};
console.log(person.greet());

説明: オブジェクトのプロパティやメソッドの使い方を学ぶためのコードです。thisキーワードについても理解できます。

サンプル5: DOM操作


// DOM操作でHTMLの要素を動的に変更する
document.getElementById('myButton').addEventListener('click', function() {
    document.getElementById('myText').innerText = 'ボタンがクリックされました!';
});

説明: このコードでは、ボタンがクリックされたときにHTMLのテキストを変更します。DOM(ドキュメントオブジェクトモデル)の操作方法を学べます。

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?