「Javaの勉強をしているけれど、何を作ればいいのか分からない」
「実際に動くアプリを作って自信をつけたい」
そんな悩みを抱える方にぴったりなのが、掲示板アプリの自作です。
このアプリでは、投稿・一覧表示・保存・読み込みといった基本機能を通じて、
Javaのクラス設計・ファイル操作・リスト処理・文字列操作などをまんべんなく学ぶことができます。
この記事では、初心者でも作れるシンプルな掲示板アプリの作成手順を、コード付きでていねいに解説していきます。
掲示板アプリとは?
誰でも作れて応用もしやすい学習課題です
結論:掲示板は「入力→保存→表示」という基本構造が学べる最高の教材です。
投稿機能と一覧表示、そしてファイルへの保存・読み込みという流れを経験することで、
Javaの基礎を自然と身につけることができます。
文部科学省の「情報活用能力」の育成方針でも、情報の蓄積・共有・活用の仕組みの理解が推奨されています。
(出典:https://www.mext.go.jp/a_menu/shotou/zyouhou/detail/1375607.htm)
掲示板アプリの機能設計を考える
必要な機能はたった3つです
結論:以下の基本機能だけで十分学べて動く掲示板が完成します。
- 投稿(名前とメッセージを入力して追加)
- 一覧表示(過去の投稿を表示)
- 保存・読み込み(投稿内容をファイルに記録)
クラス構造は次の通り:
Post.java // 投稿1件を表すクラス
BulletinBoard.java // 投稿全体を扱うメインクラス
posts.txt // 保存用テキストファイル
Postクラスの作成
名前・メッセージ・日時を保持する構造
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class Post {
private String name;
private String message;
private String timestamp;
public Post(String name, String message) {
this.name = name;
this.message = message;
this.timestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"));
}
public String toText() {
return "[" + timestamp + "] " + name + ": " + message;
}
public String toDataLine() {
return name + "##" + message + "##" + timestamp;
}
public static Post fromDataLine(String line) {
String[] parts = line.split("##");
if (parts.length != 3) return null;
Post p = new Post(parts[0], parts[1]);
p.timestamp = parts[2];
return p;
}
}
メインクラス:BulletinBoardの実装
投稿・表示・保存機能をまとめて構築
import java.io.*;
import java.util.*;
public class BulletinBoard {
private static final String FILE = "posts.txt";
private static List<Post> posts = new ArrayList<>();
public static void main(String[] args) {
loadPosts();
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("\n--- 掲示板 ---");
System.out.println("1. 投稿する");
System.out.println("2. 一覧を見る");
System.out.println("0. 終了");
System.out.print("選択:");
String input = sc.nextLine();
switch (input) {
case "1":
System.out.print("名前:");
String name = sc.nextLine();
System.out.print("メッセージ:");
String msg = sc.nextLine();
Post newPost = new Post(name, msg);
posts.add(newPost);
savePosts();
System.out.println("投稿しました!");
break;
case "2":
System.out.println("\n--- 投稿一覧 ---");
for (Post p : posts) {
System.out.println(p.toText());
}
break;
case "0":
System.out.println("終了します。");
return;
default:
System.out.println("無効な入力です。");
}
}
}
private static void savePosts() {
try (BufferedWriter writer = new BufferedWriter(new FileWriter(FILE))) {
for (Post p : posts) {
writer.write(p.toDataLine());
writer.newLine();
}
} catch (IOException e) {
System.out.println("保存に失敗しました。");
}
}
private static void loadPosts() {
File file = new File(FILE);
if (!file.exists()) return;
try (BufferedReader reader = new BufferedReader(new FileReader(FILE))) {
String line;
while ((line = reader.readLine()) != null) {
Post p = Post.fromDataLine(line);
if (p != null) posts.add(p);
}
} catch (IOException e) {
System.out.println("読み込みに失敗しました。");
}
}
}
よくあるエラーとその対策
ファイル関連と入力まわりの注意点
- 改行や空白の扱いに注意
- 保存時は文字コード(UTF-8)を統一
- 投稿が表示されないときは
split()
やnull
チェックを確認
応用アイデアでレベルアップ
GUIやキーワード検索も追加できます
Swing
でGUI掲示板に変身- 投稿にIDをつけて削除機能を追加
- キーワード検索(部分一致)や投稿日時の並べ替え
完成形コードまとめと構成
Post.java
:投稿のデータ管理クラスBulletinBoard.java
:投稿・一覧表示・保存処理posts.txt
:実際に投稿が保存されるテキストファイル
まとめ:掲示板でJavaの基本をすべて学べる
この記事では、Javaで作る掲示板アプリの作成方法を解説しました。
身につく力:
- クラスとメソッドの役割分担
- リスト処理とデータの永続化(保存)
- 実用的なファイル操作と整形出力
このアプリを自分流にアレンジして、「世界で一つだけの掲示板」に育てていきましょう!