今更ながら、Notionを使い始めました。
以前先輩におススメされたのに、
使い方がイメージできなくて放置しまくっていたNotion。。
やっと使う気になってきましたよ|ω・)
さて、やる気になってきたものの
「可能性は無限大」と言われると困る(´_ゝ`)
タスク管理 機能要件
いろいろチャレンジしてみたいと思ってるので、
目標に向けてタスクの進捗を定量的に確認できるものをやってみます。
シンプルですね。Redmineと同じ感じが実現できれば良いなぁと。
作り方
順を追って説明しますね。
空のページを作る
自分初心者なんで、ここでいきなり躓いたんですよね(/・ω・)/

画面左のメニューに「チームスペース」の
表示があるので、この右隣にある+を押す
モーダルウィンドウが出てくるので
「白紙のページ」を選択

こんな画面が表示されれば成功です!おめでとう!!

テーブルビューを2つ作る
次にテーブルビューなるものを使います。
データベースのように使えるというこの機能。
タイトルを適当に入力してEnterを押します。
改行するので、その場でスラッシュ「/」を
入力してみてください。
右の画像のように、リストが表示されるので
「テーブルビュー」を探し出してクリック!

↓こんな感じの表が出てくれば成功!順調に進んでいます!!

同じ要領で、もう一つテーブルビューを作って、↓のようにしてください。

このままではタスク管理できそうにないので、2つのテーブルに項目を設定していきます。

親子のリレーション(繋がり)を設定する
次に2つのテーブルの繋がりを定義して、連動できるようにしていきます。
ここで一気にDB感が増してきました。
自分が参考にしたサイトだとUIが古かったので、操作する場所が良くわからず混乱しました。
画像多めで載せるので、頑張っていきましょう!
新規テンプレートを設定する
Featuresテーブルの方で、新規テンプレートを定義します。
何をしたいのか?っていうと
Featuresに新規行を追加する際、フォーム画面を使ってデータ入力を行うようにします。
このフォーム画面の中にTodoリストを一緒に表示して、メンテできるようにします。

テンプレート画面が開けたらテーブルビューを挿入していきます。
今回はTodoテーブルを差し込みたいので、テーブルビューを選択した後に出てくる検索ボックスに「Todo」を入力します。先程作ったテーブルが表示されるはずです!



TodoテーブルのTodo列右隣にある「+」をクリックしてリレーションを設定します


リレーションをクリックすると
どのテーブルビューと繋げるか聞いてきます。
Featuresを入力して絞り込んで
選択してください。
テーブルを選択すると、リレーション設定の画面に切り替わります。デフォルトでは双方向リレーションがOFFになっています。
テーブルビューのリレーションには方向が定義されており、デフォルトでは一方通行になります。今行った操作であれば、TodoテーブルからFeaturesテーブルへの連携は可能だが、FeaturesテーブルからTodoテーブルへの連携はできない。という具合です。

後で進捗率を計算する際に、FeaturesテーブルからTodoテーブルを参照する為、
リレーション設定は双方向をONにしておいてください。
「リレーションを追加する」青いボタンを押して決定してください。
また、Todo行を追加した際に自動的にFeatureNameが連携されるように設定します。
この設定が漏れていると、Featuresテーブルとの関連を手動で行う必要が出てきてしまいます。
リレーション定義しただけで勝手になれば良いのになぁ。。とちょっと残念。

左下の新規ページをクリックしてから、このフィルダーを保存をクリックしてください。

次に、今作成したテンプレートを簡単に使えるように設定します。
↓の画像の赤枠に倣ってデフォルト設定してください。
これで、新規ボタンを押した時にテンプレートが表示されるようになります。


左のダイアログが出てきます
これは一番上を選択してください。
ここまで出来たら、早速
新規テンプレートを使って
実際にTodoを登録してみましょう

テンプレート側で入力した情報が、ページのテーブルにも即時反映されます。
関数を埋め込む
お待たせしました。
いよいよ進捗率の計算に入っていきます。
数式列を追加する

これまでやってきたように
列を追加して
数式と書かれているものをクリックします
ちょっとプログラムっぽい記述をすると
数値をいろいろ加工できるみたいです
「数式を編集」をクリックすると以下のような画面になります。

さて、ここでやりたいのは↓のイメージです。
FeatureA
├ Design 33.3% 設計まで終わったら 進捗率33%
├ Coding 33.3% コーディングまで終わったら 進捗率66%
└ Testing 33.3% テストまで終わったら 進捗率100%🎉
これをやりたいので、計算式はこうなります。
完了数 / 全数 × 100 (%)
というわけで、これをNotion数式で表すとこうなります。
prop("Features").filter(current.prop("Done") == true).length() / prop("Features").length() * 100

数式の下に 33.3333…と表示されていますね。これが数式の演算結果になります。
JavaScriptの感覚で書けば大丈夫かと思います。
これを保存すると、テーブルに計算結果が表示されるようになります。

これだとちょっと寂しいので
ステータスバーっぽい表示にします。
数式のヘッダをクリックして、プロパティを編集からの表示方法「バー」

これで見た目が少し良くなりました。

ただ、小数点以下の桁が多いと少し不格好な感じもするので、四捨五入しましょう。
四捨五入にはround()を使います。

また、表示の必要が無い列については非表示にしておくとスッキリしますね。
Features列は2つのテーブルのリレーションに使っているだけなので、表示は不要です。
これはヘッダをクリックして「ビューで非表示」をクリックすると実現できます。

うん、スッキリ!
全部書き終わってから気付いたんだけど、進捗率の表示について
プロパティ編集画面で「数値の形式」でパーセントを選択すれば
計算式内で×100をしなくてよかった。そして、表示に単位が付く。
まとめ
- テーブルを2つ用意して、お互いの関連をリレーションとして定義することで他方の集計値等を取得利用できる!
- Notion関数を使うといろいろなことができる!今回は完了したタスクの数で実現しましたが、実際は各タスク毎の進捗率を表現する必要があるかもしれません。その場合はタスクの進捗率を合算して母数で割る感じですね。
- Redmineで出来ていることを、Notionで頑張ってやる必要ないじゃん( ゚Д゚)と言われれば何も言い返せないですが、自分なりにいろいろカスタムできるという点は面白い!面白いが一番重要!!
ではまた!
参考サイト

