# プロジェクト経験概要
航空貨物業界で働く荷主・フォワーダー・航空会社向けDX推進Webアプリ「CargoLabo」の開発に、プロジェクト立ち上げ時から約1年半参画。
フライト予約、貨物輸送の見積もり計算、分析、顧客・会社情報管理などをWeb上で一元管理するSaaSとして、基盤構築から機能開発、保守・運用まで幅広く担当。
フロントエンド・バックエンド・DB・インフラ・外部サービス連携まで、要件整理から設計、実装、検証、運用まで一貫して携わった。
# チーム情報
* 体制:3名(代表・エンジニア2名)
* 参画:プロジェクト立ち上げ時から約1年半
* 役割:エンジニア
* 担当工程:要件整理 / 設計 / 実装 / 検証 / 保守・運用
* 開発環境:開発環境・本番環境を分離
* ソースコード管理:GitHub
* 開発手法:チケット単位でブランチ・Pull Requestを作成し、エンジニア間で相互レビュー
# 開発・実装内容A:見積もり計算機能
## 【概要】
航空貨物の輸送条件をもとに料金を算出する見積もり計算機能を再設計・再実装。
## 【どのような機能の開発・実装か】
* 貨物の縦・横・高さ・重量など複数の入力値から輸送費用を算出
* 貨物がスタック可能かどうかなど、条件によって計算方法が変わる業務ロジックを実装
* React / TypeScriptによる入力・結果表示画面を実装
* Bun / Hono / TypeScriptによるREST API・計算ロジックを実装
## 【課題・問題点】
外注による既存プロトタイプが存在していたが、以下の課題があった。
* 処理の責務が明確に分離されていない
* 1ファイルに複数の役割の関数が混在
* 変数名・関数名の命名規則が不統一
* 不要な処理が散見される
* 既存コードにバグが多い
* DBテーブルに用途が明確でない予備カラムが存在
* 複数の条件分岐を含む見積もり計算を既存コードに追加すると、さらに複雑化する懸念があった
## 【打ち手・使用した技術】
既存コードを部分修正して拡張するのではなく、今後の機能追加・保守性を考慮し、見積もり計算機能をゼロから再設計・再実装。
* 関数・ファイルを役割ごとに分割し、責務を整理
* 変数名・関数名の命名規則を統一
* 不要な処理を削除
* 既存コードのバグを修正
* DBの予備カラムなど不要な構造を整理
* 代表とのミーティングを通じて航空貨物特有の業務ルール・専門用語を確認
* 業務ルールを整理したうえで計算ロジックへ反映
* DDDの方針に沿って開発
* React / TypeScriptでフロントエンドを実装
* Bun / Hono / TypeScriptでAPI・計算ロジックを実装
* MySQL / DrizzleでDBアクセス処理を実装
# 開発・実装内容B:サブスクリプション・決済機能
## 【概要】
CargoLaboの各機能を月額サブスクリプションとして提供するための契約・決済機能を開発。
## 【どのような機能の開発・実装か】
* Booking機能、見積もり計算機能、分析機能などを個別の月額プランとして提供
* 初月無料・翌月以降自動課金の料金体系を実装
* Stripeとアプリケーションを連携
* React / TypeScriptによる決済画面を実装
* Bun / Hono / TypeScriptによる決済関連API・外部サービス連携処理を実装
## 【課題・問題点】
* 複数の機能をそれぞれ異なるサブスクリプションとして提供する必要があった
* 初月無料期間と翌月以降の自動課金を実現する必要があった
* アプリケーションと外部決済サービスを連携させる必要があった
## 【打ち手・使用した技術】
* Stripeを利用してサブスクリプション型決済を構築
* 無料期間はStripe側で管理
* React / TypeScriptで決済画面を実装
* Bun / Hono / TypeScriptで決済関連API・Stripe連携処理を実装
# 開発・実装内容C:顧客・会社情報管理
## 【概要】
CargoLaboを利用する顧客・会社情報をWeb上で管理する機能を開発。
## 【どのような機能の開発・実装か】
* 顧客・会社情報の登録・参照・更新
* 設定・管理画面の実装
* フロントエンドからAPI、DBまでのデータ連携
* REST APIによるデータ取得・更新処理
## 【課題・問題点】
Webアプリケーション上で管理する情報を、フロントエンド・API・DB間で一貫して扱う必要があった。
## 【打ち手・使用した技術】
* React / TypeScriptで設定・管理画面を実装
* Bun / Hono / TypeScriptでREST APIを設計・実装
* MySQL / DrizzleでDBアクセス処理を実装
* 入力値バリデーション、エラーハンドリングを実装
# 開発・実装内容D:アプリケーション基盤・インフラ
## 【概要】
アプリケーション開発に加え、DB・インフラを含む開発基盤の構築・運用にも携わった。
## 【どのような機能の開発・実装か】
* アプリケーション実行環境の構築
* DB環境の構築・運用
* ファイル・オブジェクトの保存環境の構築
* 開発環境・本番環境の分離
## 【課題・問題点】
プロダクト開発と並行して、継続的に機能開発・検証できる環境と本番環境を分離して管理する必要があった。
## 【打ち手・使用した技術】
* AWS EC2を利用したアプリケーション環境の構築・運用
* AWS RDSを利用したDB環境の構築・運用
* AWS S3を利用したファイル・オブジェクト管理
* 開発環境と本番環境を分離
* Dockerを利用した開発・実行環境の構築
* GitHubでチケット単位のブランチ・Pull Request運用
# その他の担当
* 航空貨物業務の理解・要件整理
* ユーザー向け操作説明
* サービス導入時のマニュアル作成
* エンジニア採用面接
* 入社時の開発環境セットアップマニュアル作成