はじめに

このチュートリアルでは、Javaを使って簡単な計算機アプリケーションを作成する方法を学びます。プログラミング初心者の方でも理解しやすいように、ステップバイステップで説明していきます。

必要なもの

  • JDK (Java Development Kit) - バージョン11以上推奨
  • 統合開発環境(IDE)- Eclipse, IntelliJ IDEA, または Visual Studio Codeなど
  • 基本的なコンピューターの操作スキル

ステップ1: 開発環境のセットアップ

JDKのインストール

  1. Oracle公式サイトからJDKをダウンロードします
  2. ダウンロードしたインストーラーを実行し、指示に従ってインストールします
  3. 環境変数の設定:
    • Windowsの場合:システムのプロパティ > 環境変数 > 新規でJAVA_HOMEを追加
    • MacやLinuxの場合:~/.bash_profileか~/.zshrcにexport JAVA_HOME=...を追加

IDEのインストール

初心者にはVisual Studio Code(VS Code)をお勧めします:

  1. VS Code公式サイトからダウンロード
  2. インストール後、Extensionsタブから「Extension Pack for Java」をインストール

ステップ2: 新しいJavaプロジェクトの作成

  1. VS Codeを起動します
  2. File > New Folder からプロジェクト用のフォルダを作成(例:SimpleCalculator
  3. そのフォルダを開いたら、Javaプロジェクトを作成します:
    • Ctrl+Shift+P(または Cmd+Shift+P)でコマンドパレットを開く
    • 「Java: Create Java Project」と入力して選択
    • 「No build tools」を選択
    • プロジェクト名を入力(例:SimpleCalculator

ステップ3: 最初のJavaクラスを作成

  1. srcフォルダを右クリックし、「New File」を選択
  2. Calculator.javaという名前のファイルを作成します
  3. 以下のコードを入力します:
public class Calculator {
    public static void main(String[] args) {
        System.out.println("簡単な計算機へようこそ!");
    }
}
  1. ファイルを保存します(Ctrl+S または Cmd+S)
  2. 実行ボタン(▶)をクリックするか、右クリックして「Run Java」を選択

コンソールに「簡単な計算機へようこそ!」というメッセージが表示されれば成功です!

ステップ4: 計算機の機能を追加

Calculator.javaファイルを以下のように編集して、基本的な計算機能を追加します:

import java.util.Scanner;

public class Calculator {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("簡単な計算機へようこそ!");
        
        // ユーザーから最初の数値を取得
        System.out.print("最初の数値を入力してください: ");
        double num1 = scanner.nextDouble();
        
        // ユーザーから演算子を取得
        System.out.print("演算子を入力してください (+, -, *, /): ");
        char operator = scanner.next().charAt(0);
        
        // ユーザーから2番目の数値を取得
        System.out.print("2番目の数値を入力してください: ");
        double num2 = scanner.nextDouble();
        
        // 計算を実行
        double result = 0.0;
        
        switch(operator) {
            case '+':
                result = num1 + num2;
                break;
            case '-':
                result = num1 - num2;
                break;
            case '*':
                result = num1 * num2;
                break;
            case '/':
                if(num2 != 0) {
                    result = num1 / num2;
                } else {
                    System.out.println("エラー: 0で割ることはできません");
                    scanner.close();
                    return;
                }
                break;
            default:
                System.out.println("無効な演算子です");
                scanner.close();
                return;
        }
        
        // 結果を表示
        System.out.println(num1 + " " + operator + " " + num2 + " = " + result);
        
        scanner.close();
    }
}

このコードでは以下の要素を使用しています:

  • Scannerクラス:ユーザー入力を取得するためのクラス
  • 変数:数値や演算子を保存するためのメモリ領域
  • 条件分岐(switch文):演算子に応じて異なる計算を実行

ステップ5: アプリケーションの実行とテスト

  1. ファイルを保存します
  2. 実行ボタンをクリックしてプログラムを実行
  3. コンソールに表示される指示に従って、数値と演算子を入力
  4. 結果が正しく表示されることを確認

ステップ6: GUIアプリケーションへの拡張(オプション)

コンソールアプリケーションをマスターしたら、グラフィカルインターフェース(GUI)を持つアプリケーションに拡張できます。新しいファイル CalculatorGUI.java を作成し、以下のコードを追加します:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class CalculatorGUI extends JFrame implements ActionListener {
    private JTextField displayField;
    private double num1, num2, result;
    private char operator;
    
    public CalculatorGUI() {
        // ウィンドウの設定
        setTitle("簡単電卓");
        setSize(300, 400);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new BorderLayout());
        
        // 表示フィールド
        displayField = new JTextField();
        displayField.setFont(new Font("Arial", Font.PLAIN, 24));
        displayField.setHorizontalAlignment(JTextField.RIGHT);
        displayField.setEditable(false);
        add(displayField, BorderLayout.NORTH);
        
        // ボタンパネル
        JPanel buttonPanel = new JPanel();
        buttonPanel.setLayout(new GridLayout(5, 4, 5, 5));
        
        // ボタンの配列
        String[] buttonLabels = {
            "7", "8", "9", "/",
            "4", "5", "6", "*",
            "1", "2", "3", "-",
            "0", ".", "=", "+",
            "C"
        };
        
        // ボタンを追加
        for (String label : buttonLabels) {
            JButton button = new JButton(label);
            button.setFont(new Font("Arial", Font.PLAIN, 18));
            button.addActionListener(this);
            buttonPanel.add(button);
        }
        
        add(buttonPanel, BorderLayout.CENTER);
        
        // ウィンドウを表示
        setVisible(true);
    }
    
    @Override
    public void actionPerformed(ActionEvent e) {
        String command = e.getActionCommand();
        
        // 数字かドットの場合
        if ((command.charAt(0) >= '0' && command.charAt(0) <= '9') || command.equals(".")) {
            displayField.setText(displayField.getText() + command);
        }
        // クリアボタンの場合
        else if (command.equals("C")) {
            displayField.setText("");
            num1 = num2 = result = 0;
            operator = '\0';
        }
        // 演算子の場合
        else if (command.equals("+") || command.equals("-") || command.equals("*") || command.equals("/")) {
            num1 = Double.parseDouble(displayField.getText());
            operator = command.charAt(0);
            displayField.setText("");
        }
        // イコールの場合
        else if (command.equals("=")) {
            num2 = Double.parseDouble(displayField.getText());
            
            switch(operator) {
                case '+': result = num1 + num2; break;
                case '-': result = num1 - num2; break;
                case '*': result = num1 * num2; break;
                case '/': 
                    if(num2 != 0) {
                        result = num1 / num2;
                    } else {
                        displayField.setText("エラー");
                        return;
                    }
                    break;
            }
            
            displayField.setText(String.valueOf(result));
        }
    }
    
    public static void main(String[] args) {
        // イベントディスパッチスレッドでGUIを作成
        SwingUtilities.invokeLater(() -> {
            new CalculatorGUI();
        });
    }
}

このコードでは、Swingライブラリを使ってGUIアプリケーションを作成しています。

まとめと次のステップ

おめでとうございます!基本的なJavaアプリケーションの作成方法を学びました。このチュートリアルで学んだ概念:

  • Java開発環境のセットアップ
  • 基本的なJavaプログラムの構造
  • 変数と演算子
  • ユーザー入力の処理
  • 条件分岐と制御構造
  • GUIプログラミングの基礎(オプション)

次のステップとして以下のことに挑戦してみましょう:

  1. 電卓アプリに新しい機能を追加する(平方根、パーセント計算など)
  2. エラー処理を改善する
  3. ファイルやデータベースとの連携を学ぶ
  4. オブジェクト指向プログラミングの概念をさらに深く学ぶ

プログラミングは練習あるのみです。小さなプロジェクトから始めて、徐々に複雑なアプリケーションに挑戦していきましょう!