wikiでページのURLをIDにすると絶対にうまくいかない
結論
気軽に整理できなくなるから
コラボレーションツールにおいては、最初に書かれた
ページタイトルから
脱線した内容が書かれる事はむしろ有益
なのだが、WiKiページのURLがIDになっていて、IDで外部からリンクされていると脱線ができなくなってしまう
ネットラジオで疑問が出ていたので、答えてみる
> いけがみさんを迎えて、Scrapboxミートアップ, Redash, Learning Musicなどについて話しました
話の中で、ScrapboxにページIDでのリンクが無い事について触れられていた。
「正しい手順」は
権力構造を産み、ドキュメント共有ツールを気軽に編集できなくしてしまう
例えば
ラーメン
というページがあるとする
しばらく時間が経つと、別の内容が追記される事がある
例:ラーメンばかり食べてはダメだ、野菜・運動・瞑想してダイエットしなさいという説教
これを
脱線という大変重要な、良い活動と位置づけています
脱線は、
アイデアを出し切ってみんなで共有する為には絶対に欠かせない
結論ありきで作られた、ただの連絡帳でアイディア出しができるはずが無い
すると、ページ分割をしたくなる
この時
1. ダイエット
というページを作り、 ラーメン
の中から情報を移動させる
2. ラーメン
というページを ダイエット
にリネームしてから、 ラーメン
を新しく再作成して一般的なラーメン情報を移動する
という2つの手順が考えられる
1と2、どちらのページ分割手順を実行しても、WiKiとしては同じページ構造が作れる
どっちでもいい
楽な方でやればいい
どちらでも最終的にはWiKiとしてまともに使える状態になるのだから、どっちでもいい
ここで問題です
もしも ラーメン
に対して、外部サービスから「ページIDによるリンク」があったらどうなるか?
ID: 1234を持つのは ダイエット
の方になってしまったりするかもしれない
私の趣味はこれです、といって ラーメン
を指し示していたつもりが
いつのまにか野菜・運動・瞑想ダイエット大好きの人になってしまう
ページ分割のための、「外部リンクを壊さない正しい手順」
しかし、初見ではわからない
ページタイトルを変更したり、ページ分割する時に、外部リンクの有無を確認するという手間ができてしまう
あるページが外部からリンクされているかどうか?は
人力で確認する、以外の手段は存在しない
正しい手順でページを編集しないと外部リンクが切れてしまう
WiKi管理者に滅茶苦茶怒られるようになる
何も書けなくなってしまう
良かれと思って ラーメン
と ダイエット
に整理したのに…
ページIDの張り替えができればいいのかもしれないが
そうすると外部からのリンクがあるかを必死で確認したり
確認とったり
「タイトル変更願い」みたいなExcelを提出したり?
たぶんひどい事になる
外からのリンクを切りたくない人の為に導入した「ページIDをURLにする」という機能が
外からのリンクの事なんて知らない人にとって、大変邪魔になる
正しい実装
ようは外からのリンクが切れなければいい
2つの機能で実現しました
1. ページタイトルをURLにする
URL pathから得られるページタイトルでproject内を検索し、ページを表示する
こっちは通常の動作
ページが無くなっていた場合は
同pathのアクセスログからページIDを探し、ページIDから移動先タイトルを探し、
リダイレクトする
↑は、このページの古いURLです
クリックしてみて下さい
アクセスログによるリダイレクトが働いている事がわかる
2. タイトル変更時に内部リンク記法 [ページ名]
を全ページ一括置換する機能
こうすると
1. ダイエット
というページを作り、 ラーメン
の中から情報を移動させる
2. ラーメン
というページを ダイエット
にリネームし、それから ラーメン
を新しく再作成する
どちらの手順でページを分割しても、外部リンクも内部リンクも壊れる事が無くなる
組み合わせは、
順不同に行っても問題が発生しないようにしておきたい
WiKi内にえらい人・管理人が産まれて、編集する前にお伺いを立てなければならなくなる要素を全て排除したい
間違えたい
そもそも ラーメン
のページに関係ない事を書くなよ
と思うかもしれないが
こういうちょっとした発想の飛躍
考えの違いに早めに気づくきっかけになったりすると思う
まとめ
ページIDをURLにすると
DB上のページIDと、ページ内容が
脱線していく事がある
人間が複数いればこれはしょうがない
このミスを許容したほうが面白い
認識の違いに気づいて、何かが起こる
IDで外部リンクしてしまうと
内容のズレを修正する、人間の善き行いが
外部リンクを破壊する悪しき行いになってしまう
ページタイトルをURLにするべき
ページタイトル・ページID・アクセスログを組み合わせて、リネーム先のページタイトルにリダイレクトすれば良い