## 目的
---
本アプリケーションは、マインドマップの様にタスクの細分化とタスク進捗率を可視化するものです
## 概要
---
一つの目標に対してタスクを細分化、ネストしていくことで「今何をすべきか、部下は何をしているか、何が原因で進捗していないのか」を把握することが可能です。
最大20層まで子タスクを作成することができ、それぞれに進捗率と達成率を割り当てたり、メンバーを割り当てることができます
タスクと子タスクの紐付けや移動はドラッグ&ドロップを用いて実行することができる様にUIにもこだわっております(Vue-Dragableを使用)
また、カレンダー機能ではgoogleカレンダーと連携することができ、アプリケーション側で各会議にアジェンダや議事録を紐付けられる様になっています。
## 担当
---
入社 => QA(1ヶ月)=> プロジェクトマネジメント(4ヶ月) => サーバーサイド開発(詳細設計、APIスキーマ定義、テーブル設計、実装、バグ修正)とフロントエンド開発(バグ修正)を9ヶ月
## サーバーサイド概要
---
Laravel_8.4(PHP_8.0)
アプリケーション層・サービス層(Usecase, Service共に使用)・リポジトリ層に分けて実装
## 開発上大変だったこと
---
Google Calendar をアプリケーションに連携させ、Workspacesメンバー全員のイベントの取得、作成、更新、削除ができる様にすること
(簡単に言い換えると、google calendarでできることを本アプリケーションでも実行できること)
日本での文献を探しても「メンバーのイベントを取得する」や「繰り返し会議の操作」まで言及されておらず、英語で検索したりトライアンドエラーを繰り返しました。
結論、下記スコープを用いてgoogleカレンダー同様の挙動を表現することができました
>https://www.googleapis.com/auth/admin.directory.user
https://www.googleapis.com/auth/admin.directory.resource.calendar
https://www.googleapis.com/auth/calendar
https://www.googleapis.com/auth/drive.file
また「繰り返し会議の更新・削除」ですが、こちらは
1,2,3,4,5,6,7 の連続した会議があった時、
「4以降を削除したい時」は
会議の終了日を3にupdateすることで実現いたしました
「4以降の会議開始を2h遅らせたい時」は
会議の終了日を3にupdateし、4以降の会議を新規で作成することで実現いたしました
これは公式ドキュメントにも記載が少なく、googleカレンダーを細かく検証しながら判明した事実でした
(カレンダーを様々なパターンで更新・削除をし、event_idが変わるのかを検証した)
https://developers.google.com/calendar/api/guides/recurringevents?hl=en
## プロジェクトマネージャー概要
---
本案件の途中でPM業務を引き継ぎました。
顧客からの要望を受け止め、工数算出、詳細仕様の検討、追加テーブル設計、顧客からの技術質問回答を担当いたしました。
何よりもWebエンジニアになって間も無い頃にPMを担当した為わからないことばかりでしたが、チームとのコミュニケーションを密に取ったり(適宜お声がけして会議を行ったり)、サービスについて誰よりも詳しくなろうとドキュメントを読み込んだり、過失があった場合は自分が怒られに行ったりして信頼を得ることができました。また、サービスの細かい仕様(権限、バリデーションルール)をチーム一把握し指摘したりメンバーの疑問に回答できる存在になれました。
自身が担当していた時期は安定して稼動(過度な残業、炎上は一切なし)させることができました
メンバーからは会社で一番PM業務が上手いとお褒めの言葉をいただけることもありました