Wiki page をデータベース管理ページに変更 : hkob の雑記録 (351)

はじめに

hkob の雑記録の第351回目は、職場の東京都立産業技術高等専門学校の学生生活ハンドブックを Wiki page からデータベース管理ページに変更した件を解説します。本記事は2025年ユカスタマスの17日目(2023年ユカスタマスの748日目)の記事になります。

今年度の学生生活ハンドブックとその問題点

今年度の学生生活ハンドブックは印刷版との差異を減らすためと、年度末に急ぎで作成したこともあり、Wiki page で作成しました。当時としては妥当な判断だったと思います。

Wiki page による学生生活ハンドブック

先日の会議において、来年度については Notion での公開のみということが確定しました。これにより、いよいよ教職員に直接 Notion の編集権限を渡して編集することになります。

ところで、この 1 年の間にデータベースは非常に大きなアップデートがあり、以下の機能が使えるようになっています。

  1. ページレイアウトを自由に設定可能
  2. Person プロパティに登録されたユーザに編集権限を付与可能

まだ Notion に不慣れな職員の方に仕事をお願いする手前、後者は非常に有効です。ところが、Wiki のデータベースには、この二つの機能が実装されていません。Wiki の使い勝手は非常に嬉しいのですが、編集権限をいちいちメニューから設定してもらうのは難しいです。プロパティであれば、セルのコピーで権限を複製できるというのも時短につながります。

Wiki の取り消しと管理データベースの作成

まず、最初に Wiki の設定を削除しました。メニューから「Wiki を元に戻す」とします。これにより単なるページに戻りました。

Wiki を元に戻す

次にページの下部にページを登録するデータベースを追加しました。

データベースを追加

データベースのプロパティは以下のように設定しました。次ページ・前ページは依存関係、親ページ、サブページはサブアイテムで作成したものです。

データベースのプロパティ

編集者に鍵マークが付いていますが、ページレベルのアクセスで「編集権限」を付与しているためです。私を含む管理者の何人かを除き、ほとんどのユーザには閲覧権限しか与えていません。しかし、編集者にユーザを登録するだけでそのユーザに編集権限を付与することができるわけです。プロパティであれば、Notion AI を使って値を変更することもできるので、CSV などを使って一括権限設定ができるのではと期待しています。

ページレベルのアクセス

No. はいつも利用している通番の自動設定フォーミュラです。ページを並べた順に自動的に通番が設定されるものです。

通番の自動設定フォーミュラ

数式もこちらに示しておきます。並び順が変わると自動的に No も書き変わります。

prop("親ページ").first().prop("サブページ").map(current.id()).findIndex(current == id())+1

もう一つボタンとして「前ページ自動設定」を用意しています。これは、節のサブページに対して、前ページを自動的にリレーション設定してくれるボタンです。ボタンを押したら、前ページのプロパティを自動的に検出して置換するものです。

前ページ自動設定 ボタン

置換するページの一覧は以下のように取得します。

置換するページの一覧

数式は以下のようになります。親(parent)とそのサブページ(children)を取得し、children から自分の No よりも一つ小さいものを pre として取得します。ここで、No が 2 以上の場合には pre を使い、1 の場合には parent を返します。そもそも parent がない場合などの場合には、変数はすべて empty なので何も設定せずに終わります。Notion formula の嬉しいのは、途中で empty になってもエラーにならずに empty を返してくれるところですね。Objective-C と同じ考え方で懐かしく感じます。

lets(
    parent, context("このページ").prop("親ページ").first(),
    children, parent.prop("サブページ"),
    pre, children.filter(current.prop("No") == context("このページ").prop("No") - 1),
    pre.empty() ? [parent] : pre
)

レイアウトの修正

データベースに変更したもう一つの理由はレイアウトの自由度が高いことです。今回は、ページの上部に以下のようなナビゲーションを追加しました。依存関係とサブアイテムのおかげで、いい感じのナビになっていると思います。

レイアウトの修正

ページのリンク作成とデータベースへの移動

とりあえず職場で1章と2章はページリンクを作成し、ページをデータベースに移動しました。トップページからはデータベースページへのリンクを追加する形になっています。

1章のページリンク

ここでは、まだ移行できていない第3章を使って、リンク作成、データベース移動、前ページリンクの追加のやり方を記録しておきます。3章はこのようにまだ節のページが並んでいるだけです。

移行できていない第3章

まず、この節のページを一括で選択し、「全てのリンクをコピー」とします。

全てのリンクをコピー

このリンクを上にペーストした後で、ページリンクを作成とします。

ページリンクを作成

これで一気にページリンクが追加されました。

追加されたページリンク

この後に一番下に置いていたデータベースをサイドピークで開き、ページをドラッグして移動します。

ページをドラッグして移動

データベースにしてしまうとタイトル編集が簡単になるので、ここで節の番号に章番号追加しました。

節の番号に章番号追加

次に節を開くと副節のページが現れました。これらもデータベースに登録します。リンク作成、データベース登録までは同じなので、説明は省略します。

副節のページ

副節のページも単なる移動では、副節も全て節と同じレベルで登録されてしまっています。

副節も全て節と同じレベルで登録

副節をサブアイテムに設定すると、自動的に No が通番として振られます。

自動的に No が通番

第2章の最後のページについては、次ページが設定されていません。これについては手動で設定します。3-1 と節番がついているので、設定は簡単です。

手動で設定

残りの (1) から (6) のページは副節であるため、先に作成した「前ページ自動設定」ボタンが利用可能です。青枠で示されているところから、下に向けてボタンをクリックしまくるだけです。

前ページ自動設定ボタン

ボタンを押すだけで、自動的に相互リンクが作成されました。やはりオートメーションは便利です。これであれば後で他の編集者がページを間に挟んだとしても、ボタンをクリックし直すだけでリンクが自動設定されます。このため、このボタンはこの後も残しておこうと思います。

ボタンによる自動設定後

おわりに

Wiki からの移行はかなり大変ではないかと思いましたが、意外と「すべてのリンクをコピー」が有効に使えました。あと、「前ページ自動設定」のアイディアを思いついたのがかなりの時短に繋がりましたね。

hkob.notion.site