Web系受託開発企業 / バックエンド兼フロントエンドエンジニア
高速バスチケット予約管理ツール 新規開発
※現在進行中のプロジェクトのため随時、追記していきます ✅ 1. 概要 高速バスのチケットを予約できるサービスサイトの予約管理を行うための管理ツールの開発 某高速バス運営会社の依頼により、チケット販売サイト(Webアプリケーション)とともに0から開発し、同時期の2023年7月にローンチ予定 フロントエンド・バックエンドの開発、システムテストの実施・改修など、立ち上げメンバーとしてフルスタックに携わった ✅ 2. チーム構成 日本側開発メンバーとしてプロジェクトに参画し、他の開発メンバーのタスク管理やコードレビューなども担当。 - PM 1名 - 日本側テックリード 1名 - 日本側開発メンバー 1名 - ベトナム側開発メンバー 2名 - ブリッジSE 1名 - QAエンジニア 2名(外注) ✅ 3. 使用技術 プロジェクトでの使用技術は以下の通りです。 自身の担当としては、主にフロントエンドとバックエンドを使用しました。 - フロントエンド:HTML, SCSS, TypeScript, Angular(15.1.5) - バックエンド:Scala(2.12.17), Playframework(2.8.19) - ヘッドレスCMS:microCMS - IDass:Auth0 - データベース:MySQL, Slick - インフラ:AWS(EC2, Lambda, DynamoDB, RDS, ECS, ECR 等) - IaC:Terraform - 仮想化基盤:Docker - CI/CD:GitHub Actions - プロジェクト管理:JIRA, instagantt - ドキュメント管理:Confluence - ソースコード管理:Git, GitHub - デザインツール:Figma - コミュニケーションツール:Slack, Google Meet ✅ 4. 業務上の貢献・工夫した点 ## 4-1. 主な機能開発 - Auth0 による認証機能の実装 - 最小工数でのリリースを求められていたため、ログインするユーザーの招待や承認機能などは対象外とし、メールアドレス+パスワード形式でログイン機能のみを実装した - フロントエンド側(SPA)は auth0-angular のライブラリを利用 - テストを安全に実施できるように環境ごとにテナントを作成。 - ログイン時にユーザーIDを検証して、管理者ユーザーを持っていないときはデータとしてDBに保存 - ログイン画面の日本語化対応、ログイン画面でのサインアップの制限、環境ごとにテナントやアプリケーションの作成を行うなどの対応を実施 - 日時指定可能な予約キャンセル機能の実装 - サービスサイトからのキャンセルではなく、運営会社に問い合わせがあったときに高速バス運営会社側でキャンセルが実行できるように対応 - キャンセル実行時にどのユーザが実行したかわかるように、ログイン時に払い出した管理者ユーザーIDをDBに登録させる - 日時指定 UI には Angular Material の Datepicker を採用 - 日付選択範囲はデフォルトだと上限も下限も設定されていないため、予約情報データに登録されている「予約日時」と「キャンセル可能日時」で範囲指定を行った - 予約一覧画面の実装 - Angular Material のコンポーネントをベースとして UI 実装を行なった - ページ単位でディレクトリを分割、さらに1つのページの中でもセクションごとにコンポーネントを分割し、1ページのコード量が肥大化することを防止 - 一覧テーブルの UI は、カスタマイズ性や大量のデータでも効率的に動作する点からngx-datatable を採用 ## 4-2. テックリード不在の中での開発推進 **【課題】** これまで、フルタイムで稼働してくれたテックリードが週10時間ほどしか稼働ができなくなってしまい、設計や開発に専念してもらうために、開発メンバーのマネジメントは全て私が担当することになった。 しかし、これまで技術的な相談を全てテックリードに行っていたため、相談相手がいない状況で開発が滞ってしまったり、要件定義なども開発メンバー側で実施しなければいけない状況だった。 **【解決策】** 1人で解決できそうにないことや解決までに時間がかかりそうなものに関しては、ブリッジSEを通じてベトナム側の開発メンバーとコミュニケーションを測ったり、PMや他プロジェクトにいるメンバーを巻き込んで問題解決に取り組んだ。 **【成果】** テックリードが不在の状態でも、遅延することなく開発を進めることができている。 全てを1人で抱え込もうとせずに、チームとして成果を残すことを第一に考えることの重要性を身をもって実感することができた。