この記事は「NEXTSCAPE Advent Calendar 2022」の23日目の記事です。
こんにちは。今年度からネクストスケープに入社した木戸です。
本記事では、IT企業に興味のある学生や就活生に向けて、NEXTSCAPEの新人研修の内容を紹介します。
NEXTSCAPEの新人研修は、4月から9月までの約6ヶ月間あります。
4月から7月の4ヶ月間で、プログラミング言語のC#やデータベース言語のSQLなどの基礎的な内容から、そこから発展したWeb APIやWebアプリケーションの作り方を学びました。さらに、Azureというマイクロソフトが提供するクラウドサービスの基本機能の使い方を学びました。
そして、8月から9月の2ヶ月間は疑似プロジェクトという特別な研修を行いました。それは、新人2名だけで社内システムを開発する研修になります。
短い期間でしたが、たくさんの経験ができたので、その内容を紹介します。
書籍管理システムの概要
私たち新人2名は疑似プロジェクトで「書籍管理システム」を開発しました。書籍管理システムとは、会社が購入した本を管理するシステムです。
NEXTSCAPEには、会社で購入した本を保管する本棚があります。本棚には約1000冊の本が貯蔵されおり、社員は自由に本が借りることができます。
しかし、読みたい本が購入されているのか、誰が借りているかを把握ことは大変でした。また、会社の管理部としても購入した本をデータ化するのに、手間がかかるという課題が生じていました。
そこで、会社にある書籍をリスト化し、社員が書籍の所在を検索できるようなシステムが、書籍管理システムとなります。
画像のように書籍管理システムで「C#」と検索をすると、C#の書籍一覧が表示されます。
他にも、新しい書籍を購入した際に、書籍の管理者が書籍情報をシステムに簡単に登録できるようなシステムです。
スケジュール
まず疑似プロジェクトのスケジュールです。
- 7月末~8月1週目:要件定義
- 8月1週目~8月2週目:設計工程
- 8月2週目~8月末:開発工程
- 9月1週目~9月2週目:バグと要望の対応
- 9月2週目~9月3週目:リリースに向けた最終調整
- 9月4週目:マニュアルの作成や発表資料の作成
新人2名で2ヶ月間と非常に短いプロジェクト期間ということで、要件定義や設計に時間をかけずに、できるだけ開発期間を長くするようなスケジュールを設定しました。
要件定義
要件定義とは、システムを開発をする前の段階で、どのような機能が必要なのかをまとめることです。
そこで、書籍管理システムの開発方針を考えるために、会社で購入する書籍を管理する社員の方と打ち合わせをしました。
会社の書籍を管理するための業務内容やその手順を整理し、システムに代替できる業務はどこか、という部分を整理しました。
その結果、書籍管理システムでは大きく3つの要望を満たすことが必要だとわかりました。
- 書籍の管理業務を簡易化したい
- 会社の書籍情報をシステムで検索できるようにしたい
- 書籍の所在先を追跡したい
1.書籍の管理業務を簡易化したい
会社で購入した書籍は、Excelにリストアップしていました。そして、毎月の初めに先月購入した書籍を集計して社員に共有するという業務があります。
しかし、この業務は意外と手間がかかってしまうということで、社員へ購入した書籍の共有が遅れてしまっている課題がありました。
そこで、書籍情報のリストアップ・集計・情報共有の管理業務をシステムで簡易化するというのが1つ目の要望になりました。
2.会社の書籍情報をシステムで検索できるようにしたい
購入した書籍の情報は社員に共有されていましたが、読みたい本が会社にあるかを簡単に検索することはできませんでした。
そこで、システムでは会社が購入した書籍を検索できるようにするというのが2つ目の要望になりました。
3.書籍の所在先を追跡したい
読みたい本があるときに、他の社員が借りていることもあるため、必ず本棚にあるとは限りません。
そこで、図書館のように、本を借りるときにはシステムで貸出・返却処理ができるようして、この書籍はどこにあるのかを追跡できるようにするというのが3つ目の要望になりました。
設計
要件定義の次は設計を行います。
設計とは、システムで何をするのかを定めた後、それを実現するための全体像・大枠を決めていく作業です。
具体的には以下のような設計をしました。
- 購書籍情報を保管するデータベースの設計
- 開発する機能(API)の設計
- 画面レイアウト設計
1.データベースの設計
システムを開発するには、情報を保存するためのデータベースは欠かせません。
書籍管理システムでは、会社の購入した書籍を扱うので、データベースに書籍情報を保存します。
そこで、データベースにどんな属性を登録するのかを考えます。
例えば1冊の書籍に対して考えてみると、タイトル・著者・出版社・出版日など、様々な属性が紐づきます。
書籍管理システムを開発するために必要なデータベースやその属性は何か、を予め考えるのが、データベース設計になります。
2.開発する機能(API)の設計
要件定義で決まった要望を満たすために必要な機能を考えます。
例えば、
- 書籍情報をデータベースに登録する機能
- 書籍情報をデータベースから検索する機能
- 書籍の貸出と返却をする機能
などがいくつかの機能が必要となります。
システムの開発を進めながら、他に必要な機能を設計していくという開発手法もありますが、今回は要望を満たすための機能に不足がないように予め準備しました。
3.画面レイアウト設計
システムの見た目を考えます。
最初は手書きで作ってみて、ある程度決まったらPowerPointで形にしました。
最終的に細かい部分は開発段階で変更されることもありましたが、基本的な画面上部にはヘッダー、左側にメニューバー、右側にメインコンテンツというレイアウトは最初のこの段階で確定していました。
設計工程は他にも、アーキテクチャやクラス設計なども行っていますが、こちらの内容は明日公開される記事で詳しく説明します。
技術的な話が多くなるので、少し難しいかもしれませんが、設計をするときの工夫を紹介しています。
開発工程
バックエンドの開発
バックエンドとは一般的に、ユーザーの目に見えないサーバーやデータベースの処理を担う部分になります。
したがって、主に設計段階で決まったデータベースに関係する「書籍情報を登録する機能」や「書籍情報を検索する機能」などをプログラミングする作業になります。
特に書籍情報を検索する機能は、書籍タイトル・購入日・所在先などいくつかの条件を組み合わせで検索できるように工夫しました。
開発は順調にいかないことも多く、データベースの処理をプログラミングするときには、C#のEntity Framework Core というライブラリを使ったのですが、最初はその使い方がよくわかりませんでした。
そんなときは、先輩社員に質問して相談に乗ってもらいました。基本的に疑似プロジェクトは新人2名で開発を進めるのですが、わからないことがあったときは相談できるという環境はとても心強かったです。
フロントエンドの開発
フロントエンドとは一般的に、ユーザーが直接操作する部分の処理を担う部分になります。
簡単に説明すると、レイアウト設計で決めた画面を作ったり、画面のボタンを押したときにの処理をプログラミングしたりする作業になります。
私たち新人はフロントエンドの開発は経験がなかったので、先輩社員から何度も意見を貰い、少しずつ使いやすいように改良していました。
特に、要望の「書籍の管理業務を簡易化したい」を満たすために、書籍情報を登録する画面は使いやすさに気にしました。
入力が必須な項目をわかりやすくしたり、また入力ミスをしたときにメッセージが表示されるようにしたりと使用者目線で考えることを意識しました。
研修の学びと感想
プログラミングのスキルがあまりない状態で入社しましたが、4ヶ月の研修でC#やSQL、Azureの基本を学習し、最終的に2ヶ月間の疑似プロジェクトで社内ツールを開発するという研修は正直大変な部分もありました。
ただ、社内ツールという一つのコンテンツを作り上げた経験は、とても自信になったと思います。技術面での学びも多かったですが、それよりもコミュニケーションの部分で学びが多かったです。
研修期間はほとんどリモートワークで、質問や作業報告など、テキストコミュニケーションで行う必要がありました。しかし、疑似プロジェクトが始まったばかりの頃は、わからない部分があったときに先輩社員に質問するための文章を書くのに時間がかかってしまいました。
「わからない部分をわかりやすく伝える」というのが思った以上にスムーズにできず、苦労した記憶があります。それでも、毎日質問や作業報告をする中でコツを掴み、あまり時間をかけずにコミュニケーションができるようになりました。
また疑似プロジェクトの後半では、書籍管理システムの使用感を管理部の社員の方と調整したり、プロジェクトで必要な作業を他の社員の方に作業してもらったりと、入社するまで意識していなかったコミュニケーションをする力が重要だと感じました。
疑似プロジェクトは、プログラミングスキルを学ぶ側面もありましたが、個人的には仕事のやり方やプロジェクトを進める全体像のようなものをイメージできるようになったことが一番の学びになりました。
新人研修で社内システムを作った話(技術編)
明日公開される「NEXTSCAPE Advent Calendar 2022」の24日目の記事では、書籍管理システムの技術的な内容を具体的に紹介します。
ぜひ次の記事も見てみてください!
採用情報
株式会社ネクストスケープでは、開発エンジニア(Web,スマートフォンアプリ,xRなど)やプロジェクトマネージャーを募集しております。
ご興味がありましたら、採用ページのエントリーフォームよりご応募いただけますと幸いです。