「Javaの勉強をしているけれど、何を作ればいいのか分からない」
「実際に動くアプリを作って自信をつけたい」
そんな悩みを抱える方にぴったりなのが、掲示板アプリの自作です。
このアプリでは、投稿・一覧表示・保存・読み込みといった基本機能を通じて、
Javaのクラス設計・ファイル操作・リスト処理・文字列操作などをまんべんなく学ぶことができます。
この記事では、初心者でも作れるシンプルな掲示板アプリの作成手順を、コード付きでていねいに解説していきます。
掲示板アプリとは?
誰でも作れて応用もしやすい学習課題です
結論:掲示板は「入力→保存→表示」という基本構造が学べる最高の教材です。
投稿機能と一覧表示、そしてファイルへの保存・読み込みという流れを経験することで、
Javaの基礎を自然と身につけることができます。
文部科学省の「情報活用能力」の育成方針でも、情報の蓄積・共有・活用の仕組みの理解が推奨されています。
(出典:https://www.mext.go.jp/a_menu/shotou/zyouhou/detail/1375607.htm)
掲示板アプリの機能設計を考える
必要な機能はたった3つです
結論:以下の基本機能だけで十分学べて動く掲示板が完成します。
- 投稿(名前とメッセージを入力して追加)
- 一覧表示(過去の投稿を表示)
- 保存・読み込み(投稿内容をファイルに記録)
クラス構造は次の通り:
1 2 3 | Post.java // 投稿1件を表すクラス BulletinBoard.java // 投稿全体を扱うメインクラス posts.txt // 保存用テキストファイル |
Postクラスの作成
名前・メッセージ・日時を保持する構造
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | 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の実装
投稿・表示・保存機能をまとめて構築
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | 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で作る掲示板アプリの作成方法を解説しました。
身につく力:
- クラスとメソッドの役割分担
- リスト処理とデータの永続化(保存)
- 実用的なファイル操作と整形出力
このアプリを自分流にアレンジして、「世界で一つだけの掲示板」に育てていきましょう!