サブWikiの振り返り
TeFWikiおよびその一機能としてサブWIkiというのを考えて実装して使ってきた。 サブWikiは割と独自仕様なので、仕様を考える時に考えていた事はいろいろとブログやWikiに書いてきたが、 それからしばらく経って結構書いたものも蓄積されてきたので、 ここらで振り返って評価してみたいと思う。
ここまで書いてきたものの量はなかなかのもの
仕様を考える時にいろいろ考えても、この手のものは結局はどれだけ有益なコンテンツを生み出したか、が全てだろう。 そういう点で自分が書いてきたものを見てみたい。
ここまで、以下のようなサブWikiをそれなりの量書いている。
- 公開してない個人情報などに関わるメモのWiki
- RandomThoughts 雑多なメモ
- Biochemistry 705x
- Molecular Biology 728x
- CellBiology706x
- JetpackCompose
公開してない個人情報のWikiもかなりうまく機能していて、これまでどこに置くのか困っていたものたちもいい感じに集約されてきている。 また、公開しているものとしてはRandomThoughtsと生物関連は非常に豊富な内容になっている。 これはうまく行った証と言って良いだろう。
生物関連の講義のノートを取るのは現時点でもかなりの負担で、これ以上負担を増やしたら続かない自信がある。 これはそう思って作ったシステムだったが、やはり思った通りだった、というところだ(後述)。
とにかく、生み出したコンテンツの量としては成功したと言って良いだろう。 生物のノートに関してはブログに書いていた頃に比べて遥かに有益になっていて、 見直す事もかなり多いのでWikiで書いて良かったと思っている。 むしろ最初に教科書を読んでた時と700x Introの2つがブログのノートになっていてあまり見直しに使えないのが結構困ってもいる。
RandomThoughtsに関してもブログにするほどのことでも無いと思ったものをちまちま書いていったら意外と膨らんだ、 という事は多いし、自分の作ったものをまとめる場としても、また書いた事を深めていく場としてもブログとは違う形態としてうまく機能していると思う。
書かれたコンテンツとしては割とうまく言っている、と言って良いんじゃないか。
一つのWikiに全て書くか分けるべきか(分けるべきと思う根拠)
サブWikiを評価するにあたり、そもそも一つのWikiではダメなのか、というのが一番最初に考える事だろう。 これはダメだったと思う。
まず分けるデメリットとしてはサブWiki間で共通するものの置き場とか、サブWiki間で関連する概念のネットワークが弱くなる、というのがある。 実際生物の講義では共通する話題も多く、リガンドとかGPCRとかは繰り返し出てくるし、assayの類も同じ話が何度も出てきている。 こうしたものは本来は共通した場所で書いていって新しい追加の内容が出てくる都度追記していく方が望ましいだろう。
でも実際にしばらくノートを取ってみて思った結論としては、そういうのは思うほど多くは無かった。 確かにあるのだが、別にグローバルなURLのリンクで実用上は特に困っていない。 両方にまたがって編集をしていくのは不便なはずだが、過去に書いた事はそれほど変更したいとは思わなかった。 やはり講義のノートは一度講義が終われば比較的stableだ、という仮説は正しかったと言えそう。
また、当初から考えていた通り、講義のノートを取るのは凄く大変だった。 グローバルなWikiでいちいち一意になるように意味のある名前をつけていくのは現実的じゃない。 そのコースの動画の名前だとかUnitのタイトルだとかから適当に名前をつけてとりあえず書き始めて、 もっと適切な名前があとから分かってきたらそこで名前つけて移す、 でも別段そのままというのもしょっちゅうある、というのが現実だ。 やはり名前づけに工夫が必要なものは講義のノートには向かない。
ノートを取る大変さについては以下にも書いた。>講義のノートを取るのは難しいよなぁ - なーんだ、ただの水たまりじゃないか
復習のしやすさという点でも概念ごとにページが分かれているのはダメそうだ。 やはり講義の時系列の内容にある程度沿って、 1ページあたりの情報量がそれなりの分量になるようになっていないと見直しが出来ない。 assayごとにページが分かれていたらきっとあっという間に全体を把握出来なくなっただろう。 やはり講義ごとに独立していて、その講義のページの一覧がすぐに見れる状態でないとノートとしていまいちだ。
講義のノートごとに分かれているメリットは多く、統合されているメリットは持ったより無さそう。
ローカルのテキストファイルであるメリットは大きい(主に検索の速度で)
最近は割とAdvancedなコースに入ってきたので、過去のノートをgrepして見直す事も増えた。 どのコースでやった内容か覚えてないので横断的に検索しては関連するところを見直して思い出す、というのを頻繁にやっている。 この時の検索のキーワードは良く覚えていないので試行錯誤を頻繁に行う必要があり、 正規表現を必要とする事もある。
この辺はgrepで一瞬かつ横断的に検索出来て、何度もトライアンドエラーをしつつ引っかかったものを見たり戻ったりを繰り返せるのは重要だ。 トライアンドエラーのしやすさという点ではローカルのテキストファイルのメリットは大きい。 何よりgrepは早い。早さは正義。 あー、なんだったかなぁ、と思いながら何度も検索する時には特にそう思う。
引っかかった結果を見るのに、mdvcatやmdcatなどをいろいろ使い分けられるのもちょっと嬉しい事がある。 さっと見たい時はmdcat、GUIでじくり見たい時はmdvcat、もっとブラウズまでしたい時はTeFWikiで該当ページまで行く、みたいに。
グローバルなURLが振られている意義は大きい
サブWikiはgit-wikiで公開しているので、公開した結果にはURLがつく。 普段編集しているのはローカルのマークダウンファイル群なのだが、 公開しているサブWikiは全て公開されるので基本的にはURLがつく。 やはりURLは良い。
ブログやSNSに貼れるし、サブWikiをまたいだリンクにも出来る。 プライベートなノートとパブリックなノートを管理出来てパブリックなノートにはURLがつく、というのは大切だよなぁ、と思った。 また、システムを乗り換える時にもURLが乗り換え先でどうなるか想像出来るというのもいいよな。 無意味なidになられると、システム乗り換えでリンクの情報が失われてしまいがち。 サブWikiは日本語だとURLエンコードされているから見るだけでは分からないが、 URLエンコードはデコード出来るしデコードすれば通常のWikiNameになっているので乗り換え先のどのページなのかもちゃんと推測出来る。
その代償としてファイル名として有効なページタイトルしか作れないけれど、このトレードオフは適切だと思う。
サブWikiにツリー構造の意義は全く無い
現状は子Wikiが作れるというシステムになっているが、 子Wikiであるメリットは一切無かった。孫を作る事も無いし。 それよりはフォルダごとに独立したWikiが作れれば十分だったように思う。
親から子へリンクが貼れるのは多少嬉しいがわかりにくさ、独自仕様を入れる割にはいい事が無い。
フォルダごとに複数の独立したWikiが持てればそれでよかったのでは無いか、と思っている。 サブWikiはそんなに頻繁には作らないし、どうせ公開方法のあたりである程度作業が必要になるので、 WikiNameのように手軽に作れる事自体がそれほど意義のある事では無い。
なんとなくツリーにしてしまったが必要なのは「サブ」なWikiじゃなくて独立した別々のWikiだった。
独自仕様にしたのは間違いで、フォルダごとに別々のWikiが開ければそれで良かったように思う。 Android版のアプリのUIを書くのがかったるくてこうなったのだが、そこは頑張っても良かった。
インクリメンタルに開発が進められた
良かった事として、ちょっとずつ公開周辺を改善していけた、というのがある。 最終的には複数のサブWikiを一つのレポジトリで公開出来るように整理したが(Home - サブWiki公開用Wikiに一覧が出るようになっている)、 最初は一つ一つ手作業で公開しては改善していった。 このちょっとずつ洗練していきつつ途中のコンテンツもちゃんと価値あるコンテンツとして公開出来ているのは正しく進められた証に思う。
検索が必要になった時に検索機能を実装せずにmdvcatというGUIのマークダウンビュワーを作ったとか、 テーブルの編集が必要になった時もプラグインを作らずにmdvtblという外部コマンドを作ったというあたりも非常にうまくいったところに思う。 実際最近の生物関連のノートに豊富にテーブルが含まれるようになっているのを見れば、 これらのツールが実際に頻繁に使われている事は外からも分かるだろう。 一つ一つを実際の必要に応じて開発していけたところが成功の秘訣に思う。
最小限のコストでノートを書き始めてだんだんと整備しつつ拡張を続けられているのは、 フォルダごとの独立したWikiとプレーンテキストのマークダウンにファイル名のWikiNameという、コアとなるデータの単純さの勝利に思う。
講義のノートの特徴は大きい
サブWikiがうまく機能したのは、生物の講義のノートだったから、という側面が強い。 例えばプログラムの話題と日常的な事を雑多に混ぜた物で、特に生物学などのコースが含まれなければ、 Wikiを分ける必然性は薄かったと思う。
講義ノートを取る頻度がどのくらいあるかは人に依るので、人によってはサブWikiは必要無いかもしれない。
ただ講義のノートをたくさん取る人にとっては、フォルダごとに独立した小さなWiki群というアイデアはとても良いと思う。 こういうアイデアを具体的な自分の用途から独立に一般論を語っても意味が無い、と思う所でもある。
そして講義ノートをたくさん取る人はそれなりに居ると思うので、それなりの人にマッチしたシステムでは無かろうか。
まとめ
- フォルダごとに独立したWIkiというアイデアとその単位でデプロイを制御するのは正しい
- 独立したWiki間のリンクは貼れなくて良い
- 階層構造は要らない、フラットで良い
- 生み出したコンテンツ量とその内容は素晴らしい(これが結局は一番大事と思う)