### プロジェクト概要
#### 参加したプロジェクトは、どのようなプロジェクトだったか?
法律を味方に、企業を伸ばすを理念に。
経営、運営する中で起こる法律に関わる疑問に対して、カジュアルな内容から専門的な内容まで気軽に質問ができ、24時間後に登録弁護士の複数回答を受け取ることができるサービスです。
#### 自分の役割
##### 開発者として
サービス立ち上げから参加させて頂き、技術設計、技術選定、API設計、開発環境構築、CI,CD導入、制作、サーバー構築、保守、運用までの全ての作業を担当しました。
#### マネージメントとして
基本的にやっていたことが営業、戦略チームとのやり取り、開発チームの開発スケジュール管理、全体的なクオリティーチェック、タスクの割り振りなどの
マネージメント業務を行っていました。
### 取り組んだ内容
#### どのような業務に取り組んだか
参画当初はフロントのみの担当でしたが、途中でバックエンドの方が抜けたのでバックエンド、インフラ構築も担当しました。
そのあとは、チーム開発の運用を円滑に行うために、営業、戦略チームからの要望から開発してローンチするまでのロードマップを作成して会社全体に定着させるなどの
技術者としてだけではなく、プロダクトマネージャー的な仕事もやっていました。
#### 具体的に、どのようなアプローチで取り組んだか?
##### 技術者
###### フロントエンド
主にやっていたこと、使っていた技術。
- フロントエンドはNext.js + TypeScriptを使って開発
- yarnのworkspaceの環境を構築 (3つほどのprojectを全て一つのリポジトリで管理)
- Storybookを使ってUI管理
- Stripeを使った決済開発
- skywayを使ったビデオチャット機能作成
- Visual Regression Test、Jestを使ったtest (スナップショットのみのtestです。)
- 企業と弁護士のメッセージチャット機能
- バックエンドがREST APIで開発していたのでSWRとかを使わずに自作のhookを開発してAPIとの連携をしやすいように環境構築
###### バックエンド
主にやっていたこと、使っていた技術。
- バックエンドの言語はGO、データベースはMySQLを使用
- ORMはgorm、web frameworkにはginを使っていました。
- 自分がバックエンドに携わる前はMVC設計だったのですが、プロジェクトの設計をドメイン駆動設計にしようって話になり、ディレクトリ構成から、データベースの設計のリファクタリングを行っていました。
- 検索機能のチューニング。主にsqlの見直し、全体検索をelastic searchに移行など
- 自分がバックエンドに携わる前はTestが書かれていなかったのでTestを導入 (関数単体のテスト、実際にAPIを叩いた時にテスト)
- Stripeを使ったサブスクリプション開発
##### その他
- github actionを使ったCI、CD構築
- GCPのBigQueryを使ったログ集計
- レビュアーとしてコードのチェック
##### マネージメント
営業、戦略チームから降りてきた要望をgithubのissueにタメてもらい、会社の状況と開発状況からどの要望をいつまでに対応するかなどを営業、戦略チームと交渉。
決まった内容を細かくタスク分割をして、自分を含め手伝ってもらっていたエンジニア2名、デザイナー1名にタスクを割り振り作業を円滑に進められるようにしていました。
ちなみにタスク管理は全てgithubのprojectsを使って管理、ドキュメントの管理は全てNotionを使って管理してました。