HTMLで電卓を作る: ゼロからのステップバイステップガイド

HTMLと少しのJavaScriptを使用して、基本的な電卓を作成する方法を共有したいと思います。

## 概要
この電卓は、標準的な加減乗除の計算ができるように設計されています。HTMLでUIを構築し、JavaScriptで動的な計算機能を組み込みます。それでは、まず基本的なHTMLから始めましょう。

## HTMLの設定
以下のコードスニペットは、電卓のHTML構造です。

```html
<!DOCTYPE html>
<html>
<head>
    <title>簡単な計算機</title>
    <style>
        /* スタイル定義 */
    </style>
</head>
<body>
    <h1>簡単な計算機</h1>
    <div id="calculator">
        <!-- 計算機のUI部分 -->
    </div>
    
    <script>
        // JavaScriptの機能
    </script>
</body>
</html>
```

## スタイル定義
`<style>`タグ内には、電卓の見た目を整えるためのCSSが含まれています。ここでは、背景色やボタンのスタイルなど、ユーザーインターフェースの見た目に関わる部分を調整します。

## JavaScriptの機能
最後に、`<script>`タグ内のJavaScriptが、電卓の心臓部です。入力された値を処理し、計算を実行して結果を表示します。

`appendToDisplay`関数は、ユーザーがボタンをクリックしたときにディスプレイに値を追加します。`clearDisplay`はディスプレイをクリアし、`calculateResult`は入力された式を評価して結果を表示します。

## 注意点
- 安全性の観点から、`eval`関数の使用は通常推奨されませんが、この基本的な例ではそのまま使用しています。
- より高度な機能やセキュリティを考慮した電卓を作成する際には、`eval`の代わりに安全な計算ロジックを実装することを検討してください。

## 全ソースコード
ここに完全なHTML、CSS、JavaScriptのコードを掲載します。皆さんがどのようにこれを基にカスタマイズしていくか楽しみです！

```html
<!DOCTYPE html>
<html>
<head>
    <title>簡単な計算機</title>
    <style>
        body {
            text-align: center;
            background-color: #f2f2f2;
            font-family: Arial, sans-serif;
        }

        h1 {
            color: #333;
        }

        #calculator {
            width: 300px;
            margin: 0 auto;
            background-color: #fff;
            border-radius: 5px;
            padding: 20px;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
        }

        input[type="text"] {
            width: 100%;
            height: 40px;
            font-size: 18px;
            margin-bottom: 10px;
        }

        table {
            width: 100%;
        }

        button {
            width: 60px; /* ボタンの幅を変更 */
            height: 60px; /* ボタンの高さを変更 */
            font-size: 24px;
            margin: 5px;
            background-color: #4CAF50;
            color: white;
            border: none;
            border-radius: 5px;
            cursor: pointer;
        }

        button:hover {
            background-color: #45a049;
        }
    </style>
</head>
<body>
    <h1>簡単な計算機</h1>
    <div id="calculator">
        <input type="text" id="display" disabled>
        <table>
            <tr>
                <td><button onclick="appendToDisplay('7')">7</button></td>
                <td><button onclick="appendToDisplay('8')">8</button></td>
                <td><button onclick="appendToDisplay('9')">9</button></td>
                <td><button onclick="appendToDisplay('+')">+</button></td>
            </tr>
            <tr>
                <td><button onclick="appendToDisplay('4')">4</button></td>
                <td><button onclick="appendToDisplay('5')">5</button></td>
                <td><button onclick="appendToDisplay('6')">6</button></td>
                <td><button onclick="appendToDisplay('-')">-</button></td>
            </tr>
            <tr>
                <td><button onclick="appendToDisplay('1')">1</button></td>
                <td><button onclick="appendToDisplay('2')">2</button></td>
                <td><button onclick="appendToDisplay('3')">3</button></td>
                <td><button onclick="appendToDisplay('*')">*</button></td>
            </tr>
            <tr>
                <td><button onclick="appendToDisplay('0')">0</button></td>
                <td><button onclick="clearDisplay()">C</button></td>
                <td><button onclick="calculateResult()">=</button></td>
                <td><button onclick="appendToDisplay('/')">/</button></td>
            </tr>
        </table>
    </div>
    
    <script>
        function appendToDisplay(value) {
            document.getElementById('display').value += value;
        }
        
        function clearDisplay() {
            document.getElementById('display').value = '';
        }
        
        function calculateResult() {
            try {
                const result = eval(document.getElementById('display').value);
                document.getElementById('display').value = result;
            } catch (error) {
                document.getElementById('display').value = 'Error';
            }
        }
    </script>
</body>
</html>
```