from /villagepump/ScrapboxプロジェクトをKozanebaにインポートする(開発) サクッとできる話ではないことがわかったので思考過程をここに置いていく
Kozanebaのサンプルコードで「ソースコードからKozaneba用のJSONを作成する」があるので、これを使ってScrapboxからエクスポートしたJSONからKozaneba用のJSONを作ればいいと思った
- エスクポートしたJSONにはリンクの情報がなかった
前提として「ページの間のリンクをKozanebaの矢印としてインポートする」という仕様
- 線のないバラバラの要素としてから今でもできる
各ページのAPIを叩いてリンク情報を取得する?
- リンク情報付きでページ一覧が得られるAPIがあったはず
- /scrapboxlab/api/pages/:projectname/search/titles
- でもこれだと本文がない
- エクスポートしたJSONから作るケースなら手元に本文はある
- というかKozaneba的には本文は使わないな
- そんなことなかった、まあいいや
- UI経由で追加した時にはその時点でAPIを叩いてdescriptionを取得してる
- 一旦descriptionを空でやる
- 後で考える
- というかKozaneba的には本文は使わないな
- これで良さそう
- 先日inlineに井戸端補完機能をつけるときに使ったばかり
- レスポンス眺めてみた、これで良さそう
- 赤リンクも含まれるはず、まぁあっても良いか
- あった方が面白いかない方がいいかは不明
とりあえず100ページ程度のプロジェクトを対象に実験しようとしているので、全ページ対象で良い
- が一般的にこの機能がリリースされた時に使ってみようとする人は10000ページあったりするので全体でやっても毛玉問題になるだけ
- ページを指定して、そのページと1ホップでリンクされているのものだけを対象にするのが一番有用だと思う
- 100リンク超えてしまったようなページを指定して読み込む
- そうすると子のページの間のリンクが見えて、子をグループに分ける助けになる
- このユースケースだったら親から子へのリンクは自明だから描かない方がいいな
有用かどうかはさておき面白いかもしれないこと
- 指定したページ(orランダムページ)からランダムにリンクをたどっていくのを100回くらいやった結果を表示
/scrapboxlab/api/pages/:projectname/search/titles
- タイトルはある
- 画像URLはある
- 本文はない
- このページ自体のURLはない
- スペースの置換とURLエンコードをすればいいかな?
- リンク情報はリンク先のページタイトルになってる 方針
- 大した分量ではないので素直に頂点集合と辺の集合をつくる
- 有向辺にするかどうか
- するのはできるけど双方向のやつをどう表示しようかな
- 両矢印でいいか
- 赤リンクを含むためページ一覧に存在しない端点が発生しうる
- 赤リンクの先をこざねとして追加しよう
赤リンク、予想以上に多かったw
-
- 赤リンクをインポートするのはやめます
さて…
-
実は物理エンジン実装してある
- あんまり役に立ったことがないので公式ドキュメントにはないw
-
うーん、人類はこの毛玉問題を解決する手段をまだ発明していない…
- 孤立してるものを傍にどけたり、1つとしかつながってないものをそれのそばに置いたりするところまでは自明
- そこから先が急に難問になる
- 数百枚でのKJ法経験が何度もある僕にとってすら、この100枚のカードの毛玉を解きほぐすのに困難がある
- 巨大なハブになってる雑談ページをリンクから外そう
- あ、Scrapboxこざねにleave from linesメニューがついてないぞ…
- まあインポートはできたし続きはまた明日
- あ、そうか、cloneして削除で同じことできるな
- Scrapboxこざねにcloneも付いてないじゃん!
メモ
- ページ99枚
- リンク400本