1.はじめに
こんにちは!
未経験からエンジニアを目指して学習中のhayateです。
今回は 「JavaでCLI版ToDoリストを作ってみた」
をテーマに進めていきます。
「まずはシンプルにJavaでプログラムを動かしてみたい」
「データの追加や削除といった基本的な処理を体験したい」
ということを念頭において、シンプルな流れで実践していきます。
最終的には、ターミナル上で入力したタスクを
追加 → 一覧表示 → 削除 できるToDoリストを完成させます👇
🎯 今回のゴール
- Javaプロジェクトを新規作成
- タスクを管理するArrayListを用意
- 入力フォーム代わりにScannerで値を取得
- タスクを追加(add)
- タスクを一覧表示(for文で出力)
- タスクを削除(remove)
⚙️ 開発環境と事前準備
- JDK(Java開発環境、バージョン17推奨)
- 任意のエディタ(IntelliJ IDEA / VS Code / Eclipseなど)
- ターミナル / コマンドプロンプト
2. 手順の全体像
今回の流れは以下の通りです。
- 環境準備 → Javaプロジェクトを作成し、メインクラスを用意
-
リスト作成 → タスクを保存するための
ArrayList
を用意 -
タスク追加 →
Scanner
で入力を受け取り、リストに保存 - タスク表示 → 登録したタスクを一覧表示
- タスク削除 → 指定した番号のタスクを削除
- 動作確認 → ターミナルで実行して、ToDoリストを操作
以上の6フェーズ構成で進めていきます。
3. 準備編(環境構築 & Mainクラス)
まずは、Javaでプログラムを動かすための準備をしていきます。
今回作るのは「CLI版(ターミナルで動かす)」のToDoリストなので、
ブラウザや特別なフレームワークは不要です。
1. 開発環境
今回の記事では VS Code を使って進めていきます。
シンプルに Java のコードを書いて動作を確認するだけなので、
特別なプラグインは必須ではありませんが、以下を準備していきます。
-
JDK(Java Development Kit)17 以上
Java の開発環境です。インストール後、以下のコマンドで確認します👇
java -version
2. Main.javaを作成
Main.java を新規作成し、以下を記述します。
public class Main {
public static void main(String[] args) {
System.out.println("ToDoリストアプリを起動しました!");
}
}
ターミナルで下記の内容を実行して確認します👇
javac Main.java
java Main
「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));
}
このコードを実行すると、ターミナル上では次のような流れになります👇
- 買い物に行く
- 宿題をやる
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 // 実行
すると、ターミナル上に以下のように表示されました。
コンパイルと実行ができたので、次のフェーズに移ります。
6-2. タスクを操作してみる(CRUD編)
プログラムが起動したら、いよいよタスクを実際に操作してみましょう。
ToDoリストの基本は CRUD(Create / Read / Update / Delete) です。
今回のアプリでは「追加(Create)」「一覧表示(Read)」「削除(Delete)」の3つを体験できます。
a. タスクを追加(Create)
数字の 1
を入力すると、新しいタスクを追加できます。
1
追加するタスクを入力: 買い物に行く
タスクを追加しました: 買い物に行く
入力した文字列が tasks
リストに保存され、追加完了メッセージが表示されました。
b. タスクを一覧表示(Read)
数字の 2
を入力すると、登録済みのタスクが一覧表示されます。
2
【タスク一覧】
1. 買い物に行く
for
ループでタスクを順番に表示し、番号を振ることで削除時に指定しやすくしています。
c. タスクを削除(Delete)
数字の 3
を入力すると、指定した番号のタスクを削除できます。
3
削除するタスク番号を入力: 1
削除しました: 買い物に行く
表示番号は「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設定)で手間取った
-
javac
とjava
コマンドの使い分けに一瞬迷った - 削除処理のインデックス指定で「0始まり」と「1始まり」の違いに混乱した
- Scannerで数値入力を扱うときに
Integer.parseInt()
が必要な点を見落としかけた
7. まとめ
今回は JavaでCLI版ToDoリストを作成し、基本的なCRUD処理を体験 しました。
ターミナルで動作するシンプルなアプリですが、
- タスクを追加して管理できること
- 登録した内容を一覧表示できること
- 不要なタスクを削除できること
といった一連の操作を、自分の書いたコードで実際に動かせたのは大きな収穫でした。
特に、ArrayList+Scanner+条件分岐 という組み合わせで「実用的な小さなアプリ」ができたことで、
Javaの基本文法が単なる知識ではなく「使えるスキル」として身につきつつあると感じました。
次回は、このCLI版を発展させて CLI版のToDoリストをSpring BootでWebアプリ化
に挑戦していきたいと思います。
より実践的な形に進化させながら、Javaの理解を深めていく予定です!
最後まで読んでいただき、ありがとうございました 🙌