どうもこんにちは。
今回は、8月後半に弊社で行なったインターンシップの概要について備忘録として残したいと思います。
ご参加いただいた学生にとってはかなり満足度の高いコンテンツとなったようでしたので、参考になればと思います。
概要
Ruby on Railsを使用してWebアプリケーションを開発してもらい、デプロイ、試験を通じてシステム開発の一連の流れを体験してもらう。
募集人数
5人
前提
本インターンシップで開発してもらったWebアプリは以下です。
レベル1: 自分用タスク管理アプリ(Todo機能のみ)
レベル2: 自部署用タスク管理アプリ(Todo + ユーザ管理 + ログイン/ログアウト)
レベル3: 社内用タスク管理アプリ(Todo + ユーザ管理 + ログイン/ログアウト + 部署管理)
上記のように、レベル/進捗状況によって、成果物を分けました。
(レベル1が終わったらレベル2、レベル2が終わったらレベル3というように実施)
最初のタスク管理アプリを開発するための枠組みは、自分の方で作っています。
- Docker, DockerComposeを使用してタスク管理アプリの枠を作成
- 枠組みの内容は、ViewファイルやControllerファイルは用意しているが、コーディングがされていない、必要なコードが欠けているという状態です
- 作成した枠組みはgitリポジトリへ
実施スケジュール
本インターンは、5日間で実施しました。また、3,4日目の間に3日間の休み期間を設けました。
1日目
- タスク管理アプリの要件、概要、設計内容を説明
- 要件定義から設計までできれば良かったが、今回は自分の方で対応
- AWS Cloud9で開発環境のセットアップ
- VScode + Dockerを使用した開発も検討しましたが、Cloud9が最も環境を合わせやすいと判断
- https://aws.amazon.com/jp/cloud9/
- 今までCloud9を使用して来なかった場合は、新規利用ができなくなっているので、PaizaCloudなどのクラウド型IDEを使用するのをお勧めします
- 基本的な部分の開発
- Viewはどのように記述すれば良いか、Controllerはどのように記述すれば良いかというのを説明しながら、一緒にコーディング
2日目
- 開発実施
- 2日目からは、自力で開発
- 質問は適宜受けています
3日目
- 開発実施
- 2日目同様
- 中間成果発表
- 3日間でどれだけできたか、1人5分程度で発表
休み期間
- 強制ではなく任意課題として、自身の気になるところや頑張りたいところを開発
- 今回参加してくれた学生は、CSS(デザインやレイアウトのところ)に力を入れてくれました
4日目
- AWS ElasticBeanstalkでデプロイ体験
- EC2やElasticBeanstalk,VPCの説明をしたのち、ebコマンドを使用してデプロイ
- 試験仕様書作成
- 普段は、Testrailを使用してテスト仕様書の管理をしていますが、今回はExcelを使用してテスト仕様書の作成を実施
5日目
- 試験実施
- 4日目に作成してもらったテスト仕様書を使用してテストを実施
- 不具合箇所については、Backlogに課題を追加
- 不具合箇所の修正
- Backlogに追加してもらった課題を解決するために、修正作業
- 最終成果発表
- 経営陣などに向けてどのようなシステムを開発したのかを発表
結果
70点かなぁ...
理由
- 要件定義、設計も学生にやってもらえれば、学生の満足度はもっと上がるはず
- その分、各学生の考え方や適正を図ることができる
- ただし、日程調整などがシビアになる
- デプロイ体験時にエラーが発生してしまったこと
- 原因は、各学生がユーザ管理機能を開発したときに各環境のマイグレーションファイルのバージョンが異なっていたこと
- マイグレーションファイルって、
2024083014001010_create_users.rb
みたいに日時でバージョン管理がされているんですよね - これが異なっていると、同じDB構成のアプリケーションをデプロイしようとしても、「またusersテーブル作るの?」って怒られます
- エラーの解消に手間取ってグダってしまったので、ここは反省...
まとめ
こちらとしても新しい気づきを得ることができたインターンシップになりました。
来年はAWS API GatewayやLambda,DynamoDBを使ってサーバーレスのアプリケーションを作ってもらうのもありかなぁと考えている今日この頃です。
以上