0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JavaでCLI版ToDoリストを作ってみた 【学習記録】

Last updated at Posted at 2025-09-23

1.はじめに

こんにちは!
未経験からエンジニアを目指して学習中のhayateです。

今回は 「JavaでCLI版ToDoリストを作ってみた」
をテーマに進めていきます。

「まずはシンプルにJavaでプログラムを動かしてみたい」
「データの追加や削除といった基本的な処理を体験したい」

ということを念頭において、シンプルな流れで実践していきます。

最終的には、ターミナル上で入力したタスクを
追加 → 一覧表示 → 削除 できるToDoリストを完成させます👇


🎯 今回のゴール

  • Javaプロジェクトを新規作成
  • タスクを管理するArrayListを用意
  • 入力フォーム代わりにScannerで値を取得
  • タスクを追加(add)
  • タスクを一覧表示(for文で出力)
  • タスクを削除(remove)

⚙️ 開発環境と事前準備

  • JDK(Java開発環境、バージョン17推奨)
  • 任意のエディタ(IntelliJ IDEA / VS Code / Eclipseなど)
  • ターミナル / コマンドプロンプト

2. 手順の全体像

今回の流れは以下の通りです。

  1. 環境準備 → Javaプロジェクトを作成し、メインクラスを用意
  2. リスト作成 → タスクを保存するための ArrayList を用意
  3. タスク追加Scanner で入力を受け取り、リストに保存
  4. タスク表示 → 登録したタスクを一覧表示
  5. タスク削除 → 指定した番号のタスクを削除
  6. 動作確認 → ターミナルで実行して、ToDoリストを操作

以上の6フェーズ構成で進めていきます。


3. 準備編(環境構築 & Mainクラス)

まずは、Javaでプログラムを動かすための準備をしていきます。
今回作るのは「CLI版(ターミナルで動かす)」のToDoリストなので、
ブラウザや特別なフレームワークは不要です。


1. 開発環境

今回の記事では VS Code を使って進めていきます。
シンプルに Java のコードを書いて動作を確認するだけなので、
特別なプラグインは必須ではありませんが、以下を準備していきます。

  • JDK(Java Development Kit)17 以上
    Java の開発環境です。インストール後、以下のコマンドで確認します👇
java -version

2. Main.javaを作成

Main.java を新規作成し、以下を記述します。

Main.java
public class Main {
    public static void main(String[] args) {
        System.out.println("ToDoリストアプリを起動しました!");
    }
}

ターミナルで下記の内容を実行して確認します👇

javac Main.java
java Main

スクリーンショット 2025-09-22 7.14.29アートボード 1.jpg

「ToDoリストアプリを起動しました!」と表示されたので、次のフェーズに移ります。

4. データ構造編(ArrayListで箱を用意)

タスクを保存するためには、まず「データを入れる箱」が必要です。
Javaでは配列(String[] など)を使うこともできますが、配列は「サイズが固定」されてしまうため、追加や削除がしにくいという欠点があります。

そこで今回は ArrayList を使います。
ArrayListは可変長のリストで、必要に応じてサイズを伸縮できるため、
ToDoリストのように「タスクを追加したり削除したりする処理」にぴったりです。

### 1. ArrayListの基本的な使い方

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        // タスクを保存するためのリストを用意
        ArrayList<String> tasks = new ArrayList<>();

        // タスクを追加
        tasks.add("買い物に行く");
        tasks.add("勉強する");

        // タスクを表示
        System.out.println(tasks);
    }
}

このように、ArrayListを使えば add で要素を追加したり、
get で取り出したり、remove で削除したりと、
「配列よりも柔軟に扱えるリスト」を簡単に作ることができます。

2. 今回のToDoアプリでの役割

今回のToDoアプリでは、このArrayListを 「タスクを一時的に保存する箱」 として利用します。

  • tasks.add(タスク) → 新しいタスクを追加(Create)
  • tasks.get(インデックス) → タスクを参照(Read)
  • tasks.remove(インデックス) → タスクを削除(Delete)
  • tasks.size() → 登録されているタスク数を確認

つまり、ToDoリストの基本機能である 追加 → 表示 → 削除 を、
このArrayListひとつで実現できるわけです。

次の章では、このArrayListにユーザーからの入力を反映して、
実際に「操作できるToDoリストアプリ」に仕上げていきます。


5. 機能実装編(追加・表示・削除)

タスクを保存する箱(ArrayList)が準備できたので、
いよいよ ToDoリストの基本機能である「追加」「表示」「削除」 を実装していきます。


5-1. タスクを追加する(Create)

まずはタスクを追加できるようにします。
ここで使うのは Scanner クラスで、ユーザーから入力を受け取ってArrayListに格納します。

System.out.print("追加するタスクを入力: ");
String task = scanner.nextLine();
tasks.add(task);
System.out.println("タスクを追加しました: " + task);

このコードを実行すると、ターミナル上では次のような流れになります👇

追加するタスクを入力: 買い物に行く
タスクを追加しました: 買い物に行く

ユーザーが「買い物に行く」と入力すると、その文字列が task 変数に入り、
tasks.add(task) によってリストに保存されます。

さらに System.out.println() で追加完了メッセージを表示しているため、
処理の結果がすぐに目で確認できるようになっています。


5-2. タスクを一覧表示する(Read)

タスクを追加しただけでは、中身が確認できません。
そこで for ループを使って、登録済みのタスクを一覧表示します。

System.out.println("【タスク一覧】");
for (int i = 0; i < tasks.size(); i++) {
    System.out.println((i + 1) + ". " + tasks.get(i));
}

このコードを実行すると、ターミナル上では次のような流れになります👇

  1. 買い物に行く
  2. 宿題をやる

tasks.size() で登録数を確認し、tasks.get(i) で要素を取り出しています。
また (i + 1) として番号を振っているので、削除時に「何番目を消すか」
指定できる仕組み
につながります。


5-3. タスクを削除する(Delete)

最後に不要なタスクを削除する処理を追加します。
ユーザーに「削除したい番号」を入力してもらい、その番号のタスクを remove() で消します。

System.out.print("削除するタスク番号を入力: ");
int num = Integer.parseInt(scanner.nextLine());

if (num > 0 && num <= tasks.size()) {
    String removed = tasks.remove(num - 1);
    System.out.println("削除しました: " + removed);
} else {
    System.out.println("番号が正しくありません。");
}

このコードを実行すると、ターミナル上では次のような流れになります👇

削除するタスク番号を入力: 1
削除しました: 買い物に行く

入力は文字列として受け取るので Integer.parseInt() で数値に変換しています。
また、表示時の番号は「1始まり」なので remove(num - 1) として調整。
さらに範囲外の番号が入力された場合にはエラーメッセージを出すことで、
安全に削除できるようにしています。


6. 動作確認編(実際に動かす)

ここまでで「タスクの追加・一覧表示・削除」のコードが揃いました。
最後にターミナルから実行して、実際にToDoリストが操作できるか確認してみます。

6-1. コンパイルと実行

ターミナルで以下を実行します。

javac Main.java   // コンパイル
java Main         // 実行

すると、ターミナル上に以下のように表示されました。

スクリーンショット 2025-09-22 9.45.08アートボード 1.jpg

コンパイルと実行ができたので、次のフェーズに移ります。


6-2. タスクを操作してみる(CRUD編)

プログラムが起動したら、いよいよタスクを実際に操作してみましょう。
ToDoリストの基本は CRUD(Create / Read / Update / Delete) です。
今回のアプリでは「追加(Create)」「一覧表示(Read)」「削除(Delete)」の3つを体験できます。

a. タスクを追加(Create)

数字の 1 を入力すると、新しいタスクを追加できます。

1
追加するタスクを入力: 買い物に行く
タスクを追加しました: 買い物に行く

スクリーンショット 2025-09-21 14.06.58アートボード 1.jpg

入力した文字列が tasks リストに保存され、追加完了メッセージが表示されました。

b. タスクを一覧表示(Read)

数字の 2 を入力すると、登録済みのタスクが一覧表示されます。

2
【タスク一覧】
1. 買い物に行く

スクリーンショット 2025-09-23 9.29.20アートボード 1.jpg

for ループでタスクを順番に表示し、番号を振ることで削除時に指定しやすくしています。

c. タスクを削除(Delete)

数字の 3 を入力すると、指定した番号のタスクを削除できます。

3
削除するタスク番号を入力: 1
削除しました: 買い物に行く

スクリーンショット 2025-09-23 9.36.18アートボード 1.jpg

表示番号は「1始まり」なので、内部処理では remove(num - 1) として対応しています。
範囲外の番号を入力した場合はエラーメッセージが出るため、安全に操作できます。

7. 完成コード編(まとめ)

ここまでで「タスクの追加・一覧表示・削除」の機能を1つずつ作り込みました。
最後に、すべてをまとめた Main.java の完成版を提示します。

途中から読み始めた方でも、このコードをコピー&ペーストして保存すれば、すぐにCLI版ToDoリストを動かすことができます。


Main.java(完成版)

import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        System.out.println("ToDoリストアプリを起動しました!");

        ArrayList<String> tasks = new ArrayList<>();
        Scanner scanner = new Scanner(System.in);

        while (true) {
            System.out.println("\n操作を選んでください: ");
            System.out.println("1. タスク追加");
            System.out.println("2. タスク一覧表示");
            System.out.println("3. タスク削除");
            System.out.println("4. 終了");

            String input = scanner.nextLine();

            if (input.equals("1")) {
                System.out.print("追加するタスクを入力: ");
                String task = scanner.nextLine();
                tasks.add(task);
                System.out.println("タスクを追加しました: " + task);
            } else if (input.equals("2")) {
                System.out.println("【タスク一覧】");
                for (int i = 0; i < tasks.size(); i++) {
                    System.out.println((i + 1) + ". " + tasks.get(i));
                }
            } else if (input.equals("3")) {
                System.out.print("削除するタスク番号を入力: ");
                int num = Integer.parseInt(scanner.nextLine());
                if (num > 0 && num <= tasks.size()) {
                    String removed = tasks.remove(num - 1);
                    System.out.println("削除しました: " + removed);
                } else {
                    System.out.println("番号が正しくありません。");
                }
            } else if (input.equals("4")) {
                System.out.println("アプリを終了します。");
                break;
            } else {
                System.out.println("無効な入力です。");
            }
        }

        scanner.close();
    }
}

コードのポイント
• ArrayList を使うことでタスクの追加・削除が柔軟にできる
• Scanner でユーザーから入力を受け取り、CLI操作を実現
• ループ+条件分岐 によって複数の操作を切り替え

この3つを組み合わせるだけで、シンプルながら「動かして楽しい」アプリが完成します。

6. 学んだこと、つまづいたこと

学んだこと

  • JavaでシンプルなCLIアプリを作る基本的な流れ
  • ArrayList を使ってタスクを管理する方法(追加・表示・削除のCRUD体験)
  • Scanner を使ってユーザー入力を受け取る仕組み
  • if文やループで処理を分岐させ、操作メニューを作る方法

つまづいた点

  • Javaの開発環境構築(JDKのバージョンやPATH設定)で手間取った
  • javacjava コマンドの使い分けに一瞬迷った
  • 削除処理のインデックス指定で「0始まり」と「1始まり」の違いに混乱した
  • Scannerで数値入力を扱うときに Integer.parseInt() が必要な点を見落としかけた

7. まとめ

今回は JavaでCLI版ToDoリストを作成し、基本的なCRUD処理を体験 しました。
ターミナルで動作するシンプルなアプリですが、

  • タスクを追加して管理できること
  • 登録した内容を一覧表示できること
  • 不要なタスクを削除できること

といった一連の操作を、自分の書いたコードで実際に動かせたのは大きな収穫でした。

特に、ArrayList+Scanner+条件分岐 という組み合わせで「実用的な小さなアプリ」ができたことで、
Javaの基本文法が単なる知識ではなく「使えるスキル」として身につきつつあると感じました。

次回は、このCLI版を発展させて CLI版のToDoリストをSpring BootでWebアプリ化
に挑戦していきたいと思います。
より実践的な形に進化させながら、Javaの理解を深めていく予定です!

最後まで読んでいただき、ありがとうございました 🙌

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?