未経験からプロへ！.NETを実践的に学ぶBIPROGYの研修プログラム

# はじめに

本稿では、BIPROGYグループの新人研修コースのひとつである.NET研修について紹介します。.NET研修は、当グループに入社された新人の方が受講する可能性のあるコースで、システム開発が未経験の方を対象としています。

# .NET研修の概要

.NET研修は、大きく2つのコースから構成されています。

## .NET基礎（8日間）

.NET基礎の前半では、.NETでできることや、Visual Studioの使い方、C#の文法などを学びます。基礎の基礎である変数や制御構文から、クラスやインターフェース、デリゲート、LINQなど、C#の基本的な言語機能を網羅します。プログラムの書き方をゼロから学べるので、プログラミング未経験の方でも安心してスキルを習得できます。

.NET基礎の後半では、ASP.NET Coreを使ったWebアプリケーションの開発を学びます。Webアプリケーションフレームワークは、他の言語に置き換えても応用のききやすいASP.NET Core MVCを学習します。またデータアクセスに利用することが多いEntity Framework Coreも学びます。

.NET基礎は、学んだ単元ごとに演習が準備してあります。学んだ知識を活かしてコーディングする問題を、ふんだんに用意しています。

<table>
  <caption>.NET基礎 カリキュラム（2024年度）</caption>
  <thead>
    <tr>
      <th>日程</th>
      <th>内容</th>
    </tr>
  </thead>
  <tr>
    <td>1日目</td>
    <td>
      <ul>
        <li>環境構築</li>
        <li>変数と定数を使えるようになろう</li>
        <li>演算子の種類と役割を理解しよう</li>
        <li>配列、リスト、ディクショナリを使おう</li>
        <li>条件分岐と繰り返しを使えるようになろう</li>
      </ul>
    </td>
  </tr>
  <tr>
    <td>2日目</td>
    <td>
      <ul>
        <li>オブジェクト指向プログラミングの基本を理解しよう</li>
        <li>オブジェクト指向プログラミングができるようになろう</li>
        <li>構造体を作ってみよう</li>
        <li>継承とインターフェースを使えるようになろう</li>
        <li>例外処理の基本を学ぼう</li>
      </ul>
    </td>
  </tr>
  <tr>
    <td>3日目</td>
    <td>
      <ul>
        <li>さらに高度なプログラミング技術を学ぼう</li>
        <li>ラムダ式を使いこなそう</li>
        <li>基本ライブラリを使いこなそう</li>
      </ul>
    </td>
  </tr>
  <tr>
    <td>4日目</td>
    <td>
      <ul>
        <li>非同期プログラミングができるようになろう</li>
        <li>例外処理の基本を学ぼう</li>
        <li>ASP.NET Coreとは何かを学ぼう</li>
      </ul>
    </td>
  </tr>
  <tr>
    <td>5日目</td>
    <td>
      <ul>
        <li>ASP.NET Core MVCの構成要素を学ぼう</li>
        <li>入力フォームがあるWebアプリケーションを作れるようになろう</li>
        <li>入力エラーを検出できるようにしよう</li>
      </ul>
    </td>
  </tr>
  <tr>
    <td>6日目</td>
    <td>
      <ul>
        <li>実践的なWebアプリケーション開発を学ぼう</li>
        <li>外部パッケージを使いこなそう</li>
      </ul>
    </td>
  </tr>
  <tr>
    <td>7日目</td>
    <td>
      <ul>
        <li>Entity Framework Coreを利用してデータベースを構築しよう</li>
        <li>データベースアクセスを行うWebアプリケーションを作ろう</li>
      </ul>
    </td>
  </tr>
  <tr>
    <td>8日目</td>
    <td>
      <ul>
        <li>Webアプリケーションに認証・認可の機能を組み込もう</li>
        <li>ふりかえり</li>
        <li>確認テスト</li>
      </ul>
    </td>
  </tr>
</table>

## .NET実装（8日間）

.NET実装では、エンタープライズシステムの開発に不可欠な、テスト・設計・チーム開発の基礎を学びます。「.NET」と冠がついていますが、扱う内容は言語によらない普遍的な内容です。.NETのアプリケーションを演習の題材として利用しています。

エンタープライズシステムの開発では、テストが欠かせません。.NET実装では単体テストにフォーカスを絞って学習します。まず単体テスト設計の方法を学び、実際にテストフレームワーク（xUnit）を使ってテストを作る演習を行います。

設計のパートは、要件定義から外部設計、内部設計、実装までの流れを学びます。ある程度自分で設計を考える時間を確保しつつ、受講生同士で会話しながらブラッシュアップする時間を設けています。他の人が何を考えてどうなったかを知ることで、設計の難しさや楽しさ、重要性を実感してもらえるように工夫しています。

チーム開発のパートでは、Gitの使い方や、コードレビューの方法、ALMツールの使い方を学びます。ALMツールはAzure DevOpsを利用しています。実際の開発で利用するツールはGitHubなど多種多様です。このコースでは、今の標準的な開発の流れを体験することに重きを置いています。

.NET実装で学習するアプリケーションのアーキテクチャは、後述する [AlesInfiny Maris](#alesinfiny-maris) をベースにしています。エンタープライズシステムの開発にそのまま活用できる技術要素を含むため、現場に出ても活かせる知識を習得できます。

.NET実装は、全体の7～8割が演習に取り組む時間です。座学で基本的な知識を身につけてから、演習問題にチャレンジし、「しらない」から「わかる」、「わかる」から「できる」へとステップアップする構成をとっています。

<table>
  <caption>.NET実装 カリキュラム（2024年度）</caption>
  <thead>
    <tr>
      <th>日程</th>
      <th>内容</th>
    </tr>
  </thead>
  <tr>
    <td>1日目</td>
    <td>
      <ul>
        <li>環境構築</li>
        <li>.NET Webアプリケーションのアーキテクチャ（クリーンアーキテクチャ）</li>
        <li>アプリケーション開発プロセスの概略</li>
        <li>単体テスト設計</li>
      </ul>
    </td>
  </tr>
  <tr>
    <td>2日目</td>
    <td>
      <ul>
        <li>【演習】単体テスト設計</li>
        <li>【演習】xUnitを用いた単体テストの作成と実施</li>
        <li>依存性の注入(DI)を用いた依存関係の逆転</li>
      </ul>
    </td>
  </tr>
  <tr>
    <td>3日目</td>
    <td>
      <ul>
        <li>【演習】テストダブル（モック）を活用した単体テスト</li>
        <li>Entity Framework Coreにおけるトランザクション管理</li>
        <li>プログラム設計とコーディングの進め方</li>
      </ul>
    </td>
  </tr>
  <tr>
    <td>4日目</td>
    <td>
      <ul>
        <li>【演習】リポジトリの実装</li>
        <li>【演習】アプリケーションサービスの実装</li>
        <li>内部設計の進め方</li>
      </ul>
    </td>
  </tr>
  <tr>
    <td>5～8日目</td>
    <td>
      <ul>
        <li>【演習】エンティティの内部設計</li>
        <li>【演習】リポジトリ、アプリケーションサービスの内部設計</li>
        <li>【演習】Azure DevOpsを使ったコードレビューとGitHub flow</li>
        <li>【演習】発展課題（ここまでの演習を時間内に完走した受講生向けの実践演習）</li>
        <li>確認テスト</li>
      </ul>
    </td>
  </tr>
</table>

.NET実装のコース内容は、開発未経験の新人を対象とすると、少々レベルの高い内容です。そのため、受講生10名に対して、現場で活躍するSEを1名講師として配置し、しっかりとサポートする体制を整えています。また各演習は個人ワークとグループワークをバランスよく配置し、受講生同士の会話から、気づきを得られるようなコース設計になっています。

# AlesInfiny Maris

## AlesInfiny Marisとは

AlesInfiny Marisは、.NETアプリケーションのアーキテクチャを定めたものです。以下のWebサイトを通じて、一般に公開されています。

https://maris.alesinfiny.org/

掲載しているドキュメントやサンプルアプリケーションは、BIPROGYがオープンソースで開発を進めています。

https://github.com/AlesInfiny/maris

## アーキテクチャ

AlesInfiny Marisは、最新の.NETをベースにしています。2025年1月現在、Vue.jsを用いたSPA（Single Page Application）のサンプルと、コンソールアプリケーションのサンプル、各種ドキュメントが公開されています。

新人研修では、学習負荷の低いMPA（Multi Page Application）のアプリケーションを演習に利用します。ただし、バックエンドアプリケーションの核となるアーキテクチャは、AlesInfiny Marisと共通で、クリーンアーキテクチャを採用しています。依存関係逆転の原則を意識した設計で、業務ロジックをフレームワークから切り離すことで、テスト容易性や保守性を高めるよう工夫されています。

## Java版はないの？

AlesInfiny Marisの兄弟として、Spring Bootで構築したAlesInfiny Maiaも公開されています。

https://maia.alesinfiny.org/

こちらもオープンソースで開発を進めており、以下のリポジトリで公開しています。

https://github.com/AlesInfiny/maia

基本的なアーキテクチャはAlesInfiny Marisと同等で、クリーンアーキテクチャに基づいています。

# 研修教材

.NET基礎の前半は、外部の教材を利用して学習を進めています。こちらはどなたでも購入いただけます。

https://zenn.dev/tsuna_can/books/dotnet8-basic-csharp-programming

# まとめ

本稿では、BIPROGYグループの新人研修コースのひとつである.NET研修について紹介しました。.NET研修以外にも、様々な研修コースを用意していますので、興味のある方はぜひ当社の採用情報をご覧ください。

## We Are Hiring!

https://www.biprogy.com/recruit/recruiting/