エンジニアのための「Notion」入門
株式会社SODAの社内勉強会で使用した資料です
こちらは株式会社SODAのエンジニア社内勉強会にて @decoch が発表したときの資料です。
株式会社SODAについては以下リンクなどをご覧ください。
これはなに?
いま流行りの Notion を使っている方は多いと思うのですが、いまいち使いこなせていない、メモ帳としては使っているけどデータベースってなに? というエンジニアの方向けに Notion の使い方を書いた入門記事です。
Notion とは
notion.so からお借りしました
ドキュメントやテーブルだけでなく望み通りに機能するようにカスタマイズできるワークスペースです。
基本的な使い方
新しくページを作りメモをとったりチェックボックスでタスクを管理したり、Markdown のように使うことができます。
/
と打つことでサジェストされ /page
と入力し決定をすると新しいページを作成できます!
ページ内ではマークダウンのようにメモを取ることができ、
-
#
,##
,###
でタイトル -
-
で Bullet List -
1.
で Numbered List
チェックボックスやトグルなども作成できます。
チェックボックス | トグル |
---|---|
Database と RDB の比較
ここではエンジニアの方向けにDatabaseをRDBと比較します。
/database
で新しいデータベースを作成することができ RDB のテーブルのようにデータを扱うことができます。
Notion | MySQL |
---|---|
データベース | テーブル |
プロパティ | カラム |
ページ | レコード |
フィルター | where |
ソート | order |
リレーション | join |
ロールアップ | select 小テーブル.カラム |
フォーミュラ | select 計算式 |
タスク管理ツールを作ってみよう
今回はスクラム開発で行えるような以下のような仕様を満たすタスク管理ツールを作りながら Notion の説明をしていきます。
- Sprint に対して複数の Task が紐づく
- Task に対して複数 SubTask が紐づく
- SubTasks はタスクの大きさを表すポイントと進捗を表すステータスを持つ
- Task には SubTask の総ポイントを表示できる
- Sprint は Tasks の合計ポイントと完了の進捗率が表示できる
データ構造
UML
@startuml
entity sprints as "Sprints" {
+ id [PK]
--
number [スプリント番号]
}
entity tasks as "Tasks" {
+ id [PK]
--
name [名前]
}
entity sub_tasks as "SubTasks" {
+ id [PK]
--
sprint_id
epic_id
name [名前]
point [ポイント]
status [ステータス]
}
sprints ||-d-o{ tasks
tasks ||-o{ sub_tasks
@enduml
データベース作成
まずは3つのデータベースを作成し必要なプロパティの設定を行います。
Sprints | Tasks | SubTasks |
---|---|---|
リレーションの追加
MySQL では関係性を Tasks が SprintId を保持し FK を貼るといった形で実現しますが、
Notion では Sprints と Tasks にリレーションを貼ることで実現します。
プロパティを追加してリレーションを選択
リレーションで該当のデータベースとその関係性を設定する
同様に SubTasks にも設定すると現在のデータベースは以下のようになります。
Sprints | Tasks | SubTasks |
---|---|---|
ここまでの作業をすることで仕様の中の、
- Sprint に対して複数の Task が紐づく
- Task に対して複数 SubTask が紐づく
- SubTasks はタスクの大きさを表すポイントと進捗を表すステータスを持つ
を実現することができました!
ロールアップで子データベースのプロパティを表示
Tasks にロールアップのプロパティを追加する
SubTasks のポイントをロールアップで集計する
ロールアップのロールアップをすることはできないので一度フォーミュラのプロパティを作成する
集計したポイントを数字として扱えるように toNumber する
Sprints で Tasks の集計したポイントをまた集計する
MySQL であれば join や group_by を使うことができるので簡単に集計できますが、
Notion だとロールアップやフォーミュラを使う必要がありちょっと複雑になってしまいます。
フォーミュラとロールアップで進捗を表示
進捗率を表示するためには完了したポイント数と全体のポイント数を割れば表示することができるので、Notion でも実現をしていきます。
今回は Notion のフォーミュラの if
を使い Done
の場合のみポイントを加算するようにして実現します。
フォーミュラで Done ではない場合 Point が 0 になるようにする
フォーミュラの設定後
その後「ロールアップで子データベースのプロパティを表示」と同様に Tasks の設定をし Sprints の設定を行っていきます。
フォーミュラで進捗を100%で表示できるように計算する
計算した結果をもとにプログレスバーを表示する
最終的なデータベース
Sprints | Tasks | SubTasks |
---|---|---|
最後に
Notion は苦手意識がある方も多いと思いますが、エンジニアにとって馴染みのある Markdown や RDB のように捉えるとわかりやすいのではないかと思い記事を書いてみました。
Notion をまだ使ったことない人やメモ帳としては使っているけどデータベースはよくわからないという方は、この記事を参考にしていろいろな機能をカスタマイズしてくれると嬉しいです!
株式会社SODAの開発組織がお届けするZenn Publicationです。 是非Entrance Bookもご覧ください! → recruit.soda-inc.jp/engineer
Discussion