Scrapboxでゲームブックを作る
Scrapboxの各ページにゲームの本文などを書く
ユーザーが読むテキスト(本文)
つぎのページを選ぶリンク
ビューアーの見た目を切り替えるタグ
固定の設定ページにタグの設定を書く
背景色
文字色
BGM
ビューアー
Scrapboxとは別のアプリ
Jupyter Notebook Viewerのように、読み込むScrapboxプロジェクトのゲームの起点ページを指定する
対応するScrapbox記法
地の文と箇条書きは単なる文字列として扱う
空行があれば、そこで段落を分ける
コードブロックはXSSのリスクがあるので無視する
文字修飾は無視して、単なる文字列として扱う
画像のリンクはイラストとして扱う
それ以外のリンクは無視して、単なる文字列として扱う
Scrapboxとの連携方法
ウェブブラウザーからJavaScriptを用いてAPIを呼び出すのは、技術的に不可能
ウェブブラウザーではないクライアントからAPIを呼び出すのは可能なので、Herokuのようなホスティングサービスに連携するサービスを置く
この場合、プライベートプロジェクトにアクセスできないが、良しとする
投稿者が電子書籍の形式でコンテンツをダウンロードできると嬉しいかも?
PDF生成にはRe:Viewを使いたい
本体サービスとは別のサービスとしてRubyプロセスを走らせる?
メモ
ほほう。自分で作ろうと思っていたけど、もしかして、これをそのまま使えば済むかも?
これを採用するならば、サーバーサイドはNode.jsで実装することになるなあ
状態管理
Scrapboxプロジェクト名
現在のページ(≒URL)
フェッチしたページ内容
ページの先読み
現在のページのリンク先を非同期にフェッチすると、リンクをクリックしたときにページ内容があったりなかったりする
JavaのCompletableFutureみたいなものを自作する?
storeにPromiseをセットして、viewでwaitするぐらいで良さそう
wait中は全画面にマスクを掛けてやるか、あえて何もしないか、いずれかになるので