【Javaで実装】ユーザー登録機能はどう作る?クラスで役割分担する考え方 更新日: 2026年1月16日 私がまだJavaの勉強を始めたばかりの頃、初めて「ユーザー登録機能」を作った時のことです。 「ユーザー名とパスワードを受け取って、ファイルに保存するだけだろ?簡単じゃん!」 そう思って勢いでコードを書いた私は、2つの大きな過ちを犯しました。 すべての処理を main メソッドの中にダラダラと書いてしまい、後から一行も読めないスパゲッティコードを生み出したこと。 パスワードを「そのまま(平文で)」保存してしまい、先輩に「セキュリティ意識が低すぎる!」と激怒されたこと。 今日は、当時の私のような失敗をしないために、Javaエンジニアが実践する「クラスの役割分担」の考え方と、最低限守るべきセキュリティの基本を、実際のコードと共に解説します。 ステップ1:ユーザー情報を入れる「器」を設計する (Userクラス) まず最初にやるべきことは、ユーザーがどのような情報を持つのかを決めることです。 ID、ユーザー名、メールアドレス、パスワード…これらの情報をまとめて管理するための「器」が必要になります。 そこで登場するのが、前回学んだ「クラス」です。 ユーザー情報を専門に扱う User クラスを設計しましょう。これは、ユーザー一人分のデータを入れるための、専用の箱(オブジェクト)の設計図です。 // ユーザー情報を表現するための設計図 public class User { private String username; private String email; private String password; public User(String username, String email, String password) { this.username = username; this.email = email; this.password = password; } // ... getterメソッドなど ... } この User クラスは、「ユーザーとは何か」をプログラムの世界で定義したものです。 この設計図さえあれば、何人分のユーザー情報でも、同じ形で整然と扱うことができます。 ステップ2:ユーザー情報を「保管庫」に出し入れする (UserRepositoryクラス) User クラスという「器」はできましたが、それだけではプログラムが終わると情報は消えてしまいます。 登録されたユーザー情報を永続的に保存しておく「保管庫」の役割を持つクラスが必要です。 この保管庫の役割を担うのが、リポジトリ (Repository) と呼ばれるクラスです。 ここで「役割分担」が重要になります。User クラスに「保存する機能」を持たせてはいけません。それは User の仕事ではないからです。 // ユーザー情報の保管庫(データベースの代わり) public class UserRepository { private List database = new ArrayList<>(); public void save(User user) { // ここで本来はデータベースへの保存処理を行う database.add(user); System.out.println(user.getUsername() + "さんを登録しました。"); } } UserRepository の仕事は、User オブジェクトを database というリストに追加(保存)することだけです。 このように、「データそのもの(User)」と「データを操作する処理(UserRepository)」をはっきりと分けることが、プロのコードへの第一歩です。 ステップ3:実際にユーザー登録を実行してみる (Mainクラス) 設計図(User)と保管庫(UserRepository)が揃いました。 いよいよ、これらを組み合わせて、実際にユーザーを登録する処理を書いてみましょう。 public class Main { public static void main(String[] args) { // 1. 保管庫の準備 UserRepository userRepository = new UserRepository(); // 2. 登録したいユーザーの情報を用意 // 【重要】パスワードは必ずハッシュ化(暗号化のようなもの)して保存すること! // ※今回は学習用のため平文ですが、実務では絶対NGです。 User user1 = new User("田中 太郎", "tanaka@example.com", "password123"); // 3. ユーザーを保管庫に保存する userRepository.save(user1); } } どうでしょうか。main メソッドの中では、「何をするか」という大きな流れだけが書かれており、細かい処理はそれぞれのクラスに任されています。 これが、クラスで役割分担する最大のメリットです。 まとめ ユーザー登録機能は、単にデータを保存するだけの処理ではありません。 Userクラスで、データの「構造」を定義し、 UserRepositoryクラスで、データの「保存」という責務を専門に担当させる。 このように、それぞれのクラスに明確な「役割」を与えること。 これが、Javaをはじめとするオブジェクト指向言語で、変更に強く、読みやすいコードを書くための、非常に重要な第一歩なのです。 プログラミング学習に必須ツール! 記事で紹介したコードがよく分からなかったり、ご自身のコードについてもっと知りたい場合は、AIコード解説ツールが便利です。コードを貼り付けるだけで、AIが日本語で分かりやすく解説します。 AIコード解説ツールを使ってみる →