アジャイルでキャリア形成しよ 〜スプリントを管理するDB設計法〜

キャリア設計どうしようかな。って考えることありますよね。

短期的目標設定を軸にしたり、中・長期的目標をがっつり固めたりと、いろんなやり方があると思います。

そこで今回の対象は…。
短期的目標を設定している方です。
要は、**「アジャイルライクな柔軟性を持ちつつ、主体的にキャリアを形成していきたい」** って人向けです。

アジャイルの弱点「振り返り」「次のスプリントでどうしていくか」という部分に強化したキャリア設計を考案しました。

## アジャイルでキャリア設計ってイメージつかないんだけど...。
ひとことで「アジャイル開発」といってもいろんな種類があるようですね。
細かいところは置いといて、キャリア形成へ導入した際、以下の利点があると考えています。

- 目標に対するコミットメントを強化
- 振り返り内容に基づいて、フレキシブル(柔軟)に方向転換を行うことが可能
- 反復的なレビューを行うことが可能

もちろん、柔軟性がかなり高いキャリア設計となってしまうので、ある程度、軸は定める必要がありますね。

## うまくサイクル回せてますか？
業務でアジャイル開発に関わったことがあったので、キャリア設計に取り入れようと思ったんですが、中々うまくサイクルが回らない…。

「目標を設定する」→「タスクを実行」→「振り返りを行う」→「次どうするか考える」のループですね。

「タスクを実行」までは順調でも「振り返りを行う」「次どうするか考える」で止まってしまうこと、結構多いんじゃないでしょうか？

タスクをこなすだけこなしても、振り返りが疎かになってしまっては、ただの自己満足ですもんね...。
せっかくキャリア設計しようと決意したあの日が浮かばれません。

## サイクルが回るようになんかツール使ってる？
「**期間**」「**目標**」「**目標を達成するためのタスク**」「**振り返り**」

それぞれのデータをDocumentかなにかに残すのが理想です。
（ものによってはデータをポートフォリオにも使えると思います）

これを満たせるツールって、もう有料のプロジェクト管理ツールしか無理じゃん。
って思ったので、**「CMS」か「データベース簡単に作れるキット」でシステムを構築しよう**と思いました。

## ってか、テーブル設計どうすんの？
この手のテーブル設計は、鉄板パターンがいくつかあるそうです。
その中でも、個人向けに適してるなって感じたものを紹介します。

### 1. スプリントテーブル (Sprints)
定期的な時間枠（スプリント）を管理。

| Column Name | Data Type | Description |
| --- | --- | --- |
| ID | Integer | スプリントの一意識別子 (主キー) |
| StartDate | Date | スプリントの開始日 |
| EndDate | Date | スプリントの終了日 |
| Focus | Text | スプリントの主な焦点やテーマ |

### 2. 目標テーブル (Goals)
各スプリントに関連する具体的な目標を管理。

| Column Name | Data Type | Description |
| --- | --- | --- |
| ID | Integer | 目標の一意識別子 (主キー) |
| SprintID | Integer | 関連するスプリントのID (外部キー) |
| Description | Text | 目標の詳細説明 |
| Status | Text | 現在の進捗状態（例：未開始、進行中、完了） |
| Priority | Integer | 優先度 |
| CompletionRate | Integer | 完了率 |

### 3. アクションアイテムテーブル (Action Items)
各目標を達成するための具体的なアクションアイテム(タスク)を管理。

| Column Name | Data Type | Description |
| --- | --- | --- |
| ID | Integer | アクションアイテムの一意識別子 (主キー) |
| GoalID | Integer | 関連する目標のID (外部キー) |
| Description | Text | アクションの内容 |
| DueDate | Date | 完了予定日 |
| Status | Text | 状態（例：未開始、進行中、完了） |

### 4. レビューテーブル (Reviews)
各スプリントの終わりに目標の進捗を評価するレビューを記録。振り返りですね。

| Column Name | Data Type | Description |
| --- | --- | --- |
| ID | Integer | レビューの一意識別子 (主キー) |
| SprintID | Integer | レビュー対象のスプリントID (外部キー) |
| ReviewDate | Date | レビュー実施日 |
| Comments | Text | レビューコメント |
| Adjustments | Text | 調整事項 |

### テーブル設計どうでしょうか？
なるほどなと思いました。
たしかにこれだといける。

## なにで組もうかな。
正直このくらいのレベルのテーブル構造であれば、開発する時間ももったいないと思いました。
**なので Notion でさくっと作っちゃいました。**
（**※ キャリア形成ために開発するって正直意味分かんないので**）

- UI こだわりたい
- API 提供したい
- 通知機能いろいろしたい
- 複数人でやりたい

とかがあれば開発してもいいんじゃないですかね。
（そんな複数人でやりたいなら、会社でツール導入してくれって感じですが。）

Notionの個人利用枠の範囲でできるので課金なしでできますね。

## 構築したので簡単に紹介させてね
#### 1. Sprint

スプリントです。開始日と終了日を設定できるフィールドを定義します。

![スクリーンショット 2024-06-22 4.31.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3334980/58271ce4-831f-796a-007e-7e79756e02e0.png)

終了日の通知設定をしてもいいかもですね。

#### 2. Goal

目標です。どのスプリントで実施するかが大事なので、リレーションフィールドを使用して先ほど定義した`Sprint`を参照するように設定します。

![スクリーンショット 2024-06-22 4.31.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3334980/9f958b98-5771-ee72-a35b-a0810ae7482a.png)

「忙しくて目標がスプリントを跨いじゃうよ」って人はスプリントを複数選択できるようにしてもいいかも。

#### 3. Action Item
タスクです。`Goal`と同様、どの目標に紐づかせるかが大事なのでリレーションフィールドを使用します。

![スクリーンショット 2024-06-22 4.32.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3334980/24ba3db8-22e3-898d-6e4d-69bd3159c8bd.png)

#### 4. Review
振り返りですね。`Sprint`ごとの振り返りを行う必要があると思うので`Sprint`を参照させます。

![スクリーンショット 2024-06-22 4.32.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3334980/800570b7-2d32-a20e-e6c1-451692e8057b.png)

### どうですか？

データをRelation前提で持たせているので、「そこまでNotionが重くならない。」と信じています。
これでうまく運用できればいいなぁ…。

スプリントのTemplatePageで、関連する「目標」や「振り返り」が出てくるようにできたらなぁって思ったら簡単にできました。

![スクリーンショット 2024-06-22 4.47.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3334980/45d8384d-6909-c43a-56b5-d65b22fdd02c.png)

高度なフィルター便利。

![スクリーンショット 2024-06-22 4.45.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3334980/efa7b4e9-9816-c0ca-27a3-af0a69293d06.png)

## まとめ
今回のテーブル構成ですと、短期的目標に沿ったキャリア設計しか対応できませんが、アジャイルライクな、柔軟性を持ちつつ、主体的なキャリアを形成できるんじゃないでしょうか。

自身のキャリア設計に活かせる部分が少しでもあるような記事になっていれば幸いです 🤲

フォーマットはかなり使いやすそうですので、好評だったらテンプレート作ろうかな。ちょっと運用をして改善した後に考えます。


## 最後に
「Drupalの方が簡単にできそうだな。UIももっと使いやすく作れそうだし。」
って思いました。（絶対にコラボ機能いらないし、他の人にキャリア設計見せることないので。）

でも絶対やらないです。
何故かというと、**キャリア形成ために開発するって正直意味分かんないので**。