1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

短期集中インターンで体験したDDDとスクラム開発の基礎 〜損益計算書・貸借対照表システムの開発を通して〜

Posted at

はじめに

5日間の短期エンジニアインターンシップで、ドメイン駆動設計(DDD)とスクラム開発を体験しました。本記事では、会計システム(損益計算書・貸借対照表)の開発を通じて学んだ以下の内容を紹介します。

  • DDD・スクラムの基本的な考え方
  • モデリング〜実装〜チーム開発のプロセス
  • 実践して得られた気付きや学び

「DDDって結局何?」「インターンでアジャイル開発ってどんな感じ?」と思っている方に、実体験ベースでお届けします。


なぜDDDとスクラムを学ぶのか?

今回の開発課題は、会社の経営状態を表す損益計算書(PL)と貸借対照表(BS)を作成するシステムの構築でした。

これに取り組むにあたり、以下の2つの開発手法を採用しました。

  • DDD(ドメイン駆動設計)
    ソフトウェアが解決すべき「ドメイン」に深く入り込み、機能性と保守性を両立した設計を実現する手法。

  • スクラム開発
    アジャイル開発の一種で、小さな単位(スプリント)で開発を進めながら、ユーザーに価値を届けるフレームワーク。

この2つを組み合わせることで、「意味あるシステム」を「チームで素早く」作ることが可能になります。


ドメイン駆動設計(DDD)の実践

DDDの目的とアプローチ

DDDの主目的は、ドメインに根差した問題解決力のあるソフトウェアを作ること。そのために以下の2点を重視しました。

  1. 機能性向上

    • 業務知識を「ドメインモデル」に落とし込む
    • モデルは開発中も継続的に見直す
  2. 保守性向上

    • 頻繁な変更に耐えられる設計パターンを使う(例:エンティティ、リポジトリ、値オブジェクト)

モデリング手法:"sudo"モデリングの活用

導入しやすく、DDDのエッセンスを体験できる「sudoモデリング」を実施しました。以下の4種類の図を作成しました。

1. システム関連図(System Context Diagram)

  • 会計システムと「経営企画部門」などの外部アクターとの関係を定義
  • 例:ユーザーが仕訳データを入力 → PL/BSを確認する流れ

2. ユースケース図(Use Case Diagram)

  • ユーザーの視点から必要な機能を洗い出し
  • 登場したユースケース例:
    • 部署登録 / 科目登録 / 仕訳登録
    • 損益計算書・貸借対照表の閲覧
    • CSVダウンロード、仕訳のフィルタリングなど

3. オブジェクト図(Object Diagram)

  • ドメインオブジェクトの具体例を示した図
  • 例:部署「東京営業1課」や、勘定科目「給料」「交通費」、仕訳データのサンプルなど

4. ドメインモデル図(Domain Model Diagram)

  • 上記を抽象化して整理したクラス図形式
  • 属性・制約・関連性・集約の範囲などを明示
  • Department, Account, JournalEntry などのエンティティを定義
  • 借方・貸方の明細や勘定科目の階層構造などもモデルに反映

モデルとコードの整合性 + レイヤードアーキテクチャ

DDDの核心は、「モデル ≒ コード」にすること

その実現のため、以下のような設計方針を採用しました。

  • レイヤードアーキテクチャ(ドメイン層・アプリケーション層・インフラ層の分離)
  • 依存性逆転の原則(DIP)によって安定性と保守性を確保
    例:UseCase層はインターフェースに依存し、実装はインフラ層に任せる

スクラム開発の体験

スプリント構成

5日間のインターンで、2つのスプリント(2.5日 × 2)を実施。各スプリントで以下のイベントを行いました。

  • スプリントプランニング
  • デイリースクラム
  • スプリントレビュー
  • レトロスペクティブ(KPT)

チームビルディング

  • インセプションデッキで開発目的を共有
    → PL/BS作成の自動化による経営者の工数削減がゴール

  • ワーキングアグリーメントでチームの行動規範を明確化
    →「楽しく開発しよう」「AIも使おう」「何でも聞こう」など


使用技術と開発環境

  • Docker + MySQL による開発環境構築
  • バックエンドは Spring Boot / Kotlin(DIも意識)
  • 開発中のトラブル(DB接続など)は Claude などのAIツールで解決支援

インターンを通して得られた学び

DDDに関する学び

  • モデル→実装→再モデリングの循環が開発に深みを与える
  • DDDによって「何を作るべきか」がクリアになり、開発が進めやすくなった

スクラム開発の学び

  • チーム開発の楽しさと、目的の共有が重要だと実感
  • モブプロ・ペアプロでの会話が、理解を深め、バグ防止にもつながった

その他の気づき

  • AI活用は便利だが、中身の理解あってこそ本領を発揮する
  • エンジニアとしてのキャリアや働き方を考えるきっかけになった

今後の課題・挑戦したいこと

  • 削除・編集機能の実装
  • PL/BSの高度なフィルタリング・期間指定
  • 負債の解消
  • フロントエンドの改良(リファクタリング、CSV出力など)

参考資料リンク集


最後に

たった5日間のインターンでしたが、DDDとスクラムという「現場で求められる開発スキル」を実践的に体験できたことは、大きな財産になりました。

この記事が、これからDDDやスクラムに触れてみたい方の一歩になれば嬉しいです!

1
1
0

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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?