plan-viewerでスマホから計画を読んでいるとき、わからない箇所が出てきても「PCに戻ってから聞こう」になりがち。その間に疑問を忘れてしまう。
読んでいるその場で「ここがわからない」を送れれば、次のClaude Codeセッション(私とのチャット)で質問にまとめて回答できる。疑問の鮮度を保ったまま学びにつなげるのが目的よ。
questions.json)に保存される。次にClaude Codeを開いた時に「plan-viewerの質問確認して」と言えば、まとめて回答する右下に2つのボタンが縦に並ぶ。上が質問ボタン、下がリロードボタン。
…server.py(HTTPサーバーの本体ファイル)にPOSTリクエスト(データ送信の仕組み)の受付機能を追加する。これにより質問データをファイルに保存できるようになる…
| 対象 | 変更内容 | 状態 |
|---|---|---|
server.py |
質問データを受け取って保存するPOST受付を追加 | ✅ 済 |
| SKILL.md テンプレート | アノテーション用のボタン・ポップアップ・JavaScriptを追加 | ⏳ 承認待ち |
| 既存HTMLファイル(4件) | 新テンプレートの機能を反映 | 🔜 テンプレート確定後 |
ブラウザが標準で持っている Selection API(テキストの選択状態を読み取る仕組み)を使う。スマホで文章を長押しして選択するのはOSの標準動作なので、追加のライブラリは不要。
選択が変わるたびに発生する selectionchange イベント(テキスト選択が変更されたという通知)を監視して、200ミリ秒(0.2秒)の「待ち時間」を入れる。これはドラッグ中に何十回もイベントが発火するのを防ぐため。
選択されたテキストを <mark> タグ(HTML標準のハイライト用タグ)で囲む。これにより見た目が青くマーキングされる。
ただし、選択範囲が段落をまたぐ場合(たとえば2つの<p>タグにまたがる場合)は少し工夫が必要。この場合はテキストを一度「切り出して」markタグの中に入れ直す。
server.py(plan-viewerのHTTPサーバー)にPOST受付を追加済み。質問を送信すると questions.json というファイルにどんどん追記されていく。保存されるデータは:
外部ライブラリなし。 ブラウザが標準で持っている機能だけで実現するので、CDNもnpmも不要。HTMLファイル1つに全部入る。
既存のリロードボタンはそのまま。 その上に質問ボタンが追加されるだけ。普段の使い勝手は変わらない。
質問はオフラインでは送れない。 サーバー(Mac)が起動していてtailscaleで接続されている必要がある。ただし通常のplan-viewer閲覧時は当然接続されているので問題ない。