13
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

『クリーンアーキテクチャ』を3ページで閉じた新卒1年目に起きた変化

13
Last updated at Posted at 2025-12-19

はじめに

上司に「部署で一番設計に詳しくなりなさい」と言われたあの日。
設計に詳しいエンジニア、かっこいい。なんかモテそう。年収も上がりそう。
クリーンアーキテクチャ本を読破した私が "リーナス・トーバルズが言ってそうなこと" を言ってる姿が浮かびました。

現実は、3ページ目で「明日読もう」と本を閉じる自分でした。まだ明日は来ていません。

でも、完全に無駄だったわけじゃありません。難しい本は読めなくても、基礎的な本を読んだり、日々のレビューを噛み砕く中で、自分の中に変化が起きていました。

正解かどうかはわかりません。でも事実として起きた変化を書きます。

変化①:読む順番を意識するようになった

いきなりクリーンアーキテクチャ本を読むのは、九九を知らない小学生が微分積分の教科書を開くようなもの。そりゃ何言ってるかわからない。

調べ直した結果、こんな順番が良さそうだとわかりました。

ステップ 学ぶこと おすすめ書籍
1 良いコードの書き方の基礎 「リーダブルコード」「良いコード/悪いコードで学ぶ設計入門」
2 DDDの考え方の入門 「ドメイン駆動設計入門(成瀬本)」
3 アーキテクチャの全体像 「クリーンアーキテクチャ」「エリック・エヴァンスのDDD本」

自分は今、ステップ1を読み進めているところです。

変化②:型で守ることを意識するようになった

もう一つ意識するようになったのは、値を型で守るということです。

例えばメールアドレス。stringのまま扱っていると、不正な値が紛れ込んでも気づかない。使う側で毎回バリデーションするのも漏れが起きやすい。

これをValueObjectで包むと、不正な値がそもそも存在できなくなります。

class Email {
    private function __construct(
        private readonly string $value
    ) {}
    
    public static function create(string $value): self {
        if (!filter_var($value, FILTER_VALIDATE_EMAIL)) {
            throw new InvalidArgumentException('無効なメールアドレス');
        }
        return new self($value);
    }
    
    public function getValue(): string {
        return $this->value;
    }
}

function registerUser(Email $email) {
    // Email型が来た時点でバリデーション済み
}

特にビジネス的に壊れてはいけない箇所にはこうやって堅く守る。ただし、重要でない箇所まで過度に抽象化するとかえって複雑になるので、どこを守るか見極めるのも大事だと思っています。

さいごに

ここに書いたことが正解かはわかりません。でも、難しい本が読めなくても、日々の積み重ねで変化は起きる。

次は、コードを書く前に設計段階で相談する動きも意識していきたいです。

まだモテてはいないけど、変化は起きている。

同じように「設計勉強しなきゃ」と思っている方の参考になれば嬉しいです。

13
3
1

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
13
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?