🌟

新卒向けログラス短期インターンシップを支える技術

2024/10/29に公開

背景

株式会社ログラスは2024年の夏から新しく新卒エンジニアの採用に向けて短期インターンシップの開催を始めました。
コンテンツを作成するにあたり、学生の皆さんにとってログラスの魅力が伝わるにはどうしたらいいだろうか、どうしたら学びのあるコンテンツになるだろうかなどさまざまな観点で議論を重ねてきました。
この記事ではその議論の結果選定した開発手法・言語・フレームワークなどの紹介とその選定理由などについて記載していきます。

インターンシップの内容

5日間でミニLoglassをスクラムチームで作ってもらうという内容です。
あらかじめベースのソースコードを用意しており、そのコードに対して機能を追加していきます。
1チーム2~3名に対して、メンターが1名つく形にしており、疑問点などがある場合はすぐにメンターに聞ける環境を整えています。
まずはじめに全体でスクラムやDDDについての講義の時間があり、その後はチームに分かれモデリング→実装をスプリント内で繰り返していくという内容になっています。

工夫した点

インターンシップで利用するアプリケーションはゼロベースで構築しています。
実務で利用する開発手法およびバックエンド開発における実務レベルのコードの書き方を持ち帰ってほしいポイントとして考えていたので、それ以外はなるべくシンプルになるように構成しています。

スクラム開発

1チーム2~3名でスクラム開発を5日間で行います。
スプリントは2.5日という単位になっており、5日間なので2サイクル行う形です。
ログラスが大事にしている「顧客志向でより価値のあるものを開発をしていく」という点を感じてもらう、実際の実務に近い形式で開発を行うという点を意識して採用しています。
1チーム2~3名としているのは4名以上となると議論にうまく入っていけない方や役割を見つけられない方も出てくるだろうという想定の元、そのような人数構成にしています。
また、スクラム開発未経験の学生も多いと想定していたため講義の時間も設けています。

モデリング

機能を開発する際にモデリングを行うようにしました。
具体的には以下の図をメンターと一緒に作成する形にしています。

  • システム関連図
  • ユースケース図
  • ドメインモデル図
  • オブジェクト図

[参考]
https://little-hands.hatenablog.com/entry/2022/06/01/ddd-modeling

実際の内容はお見せできませんが、イメージとしては以下のような雰囲気の図が作成されます。

言語・ツール・ライブラリなど

Spring Boot, Kotlin

アプリケーションのフレームワークにはSpring Boot、言語はKotlinを採用しています。
https://spring.io/projects/spring-boot
https://kotlinlang.org/

実際にLoglassで採用している技術に触れてほしいためここは私たちの技術スタックに合わせる形で採用しています。

また、ファイルの構成はオニオンアーキテクチャになるように構成しており以下のようになっています。

インターンではそれぞれの層でどのようなコードを記述していくべきなのかメンターと議論しながらコードを書いていく流れになっています。
実務レベルのオブジェクト指向な開発を体験してもらうという点が5日間で技術面で持ち帰ってほしいポイントになっており、後続の技術選定ではなるべく参加者の負担にならないような選定にしています。
オニオンアーキテクチャの経験がない状態でいきなり書いてくださいという形だと難しいためインターンシップの前半で講義という形で簡単に解説も行なっていますし、ベースのソースコードの中にサンプルコードを用意しておくことでイメージがしやすい状態を作っています。

H2 Database, mustache

データベースにはH2 Database, テンプレートエンジンにはmustacheを採用しています。
https://www.h2database.com/html/main.html
https://mustache.github.io/

実際のLoglassと同様の技術であるPostgreSQL, Reactという選択肢もあったのですが、今回はバックエンドのアプリケーションのコードをメインのコンテンツにしたかったかつそこまで触れたことのある学生も少ないだろうと思っていたので、DBやフロントエンドはなるべくシンプルになるように構成しました。

無機質にならないようにCSSについてはしっかりと書いており、実際のLoglassの画面と似た印象になるような形にしています。
自身で修正したコードを動かした時にテンションが上がるかという点は重要だと考え、この点はこだわる形にしました。

実際にインターンシップをこなしていくとデータベースの操作やフロントエンドのフレームワークをすでに学習されている方も多かったので、次回以降はPostgreSQL, Reactに変更しても良いかもと思っています。

その他ツール

データベースのマイグレーションツールとしてFlyway, ORMはjOOQを利用しています。

https://www.red-gate.com/products/flyway/
https://www.jooq.org/

こちらもLoglassで利用している技術を採用する形にしています。

おわりに

目的を定めそれに沿った内容にすることで納得のいくものが作れたと感じています。
実際参加いただいた方の評価も高かったので素直に嬉しかったです。

GitHubで編集を提案
株式会社ログラス テックブログ

Discussion