すみつぎ原稿の息を見る計器
原稿を貼ると、文ごとに息がどこまで続いているか、同じ形の文末が何回つづいているか、同じ語がどれだけ近くで戻ってきているかを図にします。書きながら削った字も、消えたままにせず手元に残します。
原稿はこの頁から出ません。出す口を、頁の側で塞いであります。
呼吸譜
下の枠に原稿を入れると、そのまま図が変わります。何字入れても、この頁の外へは出ません。
JavaScript を切って読んでいる場合、計器は止まりますが、下の図と表は焼いた時点の見本のままそのまま読めます。原稿の字数も、息の長さも、実際に測った値です。
図は横に送って見られます。
- 会話
- 過去
- 現在
- 断定
- 打消し
- 問い
- 体言止め
- その他
縦の一画が一文です。高さは息の長さ(読点や句点にぶつからずに読み進める字数)、幅は文の長さ、根元の刻みは読点の数、朱の線は境を越えた文、下の括弧は同じ文末がつづいた区間です。
再来の弦
同じ語が近くで戻ってくるところを弦で結んでいます。太い弦は 60 字より近い再来です。
- 文の数
- 19文
- 字数
- 346字
- 息の中位
- 10字
- 息の最長
- 70字
- 境を越えた文
- 1文
- 文末の連なり
- 1組
- 近くで戻る語
- 13語
- 読点の密度
- 2.3/100字
- 漢字の中位
- 27.3%
- 会話の割合
- 4.9%
息が続きすぎた文
- 70字傘の骨をつたって落ちた水が母の靴のふちをぬらしていくのを見ていたのに彼はそれを言わずにただ番号の紙をたたんでポケットの奥へ押しこんでしまった…
同じ文末の連なり
- 3連過去が3文つづく(1文目から)
近くで戻ってくる語
- 10字紙が5回、最短10字あき
- 11字傘が5回、最短11字あき
- 11字言が3回、最短11字あき
- 11字何が2回、最短11字あき
- 15字母が5回、最短15字あき
- 34字彼が6回、最短34字あき
- 54字下が2回、最短54字あき
- 54字ポケットが2回、最短54字あき
- 55字番号が3回、最短55字あき
- 104字雨が3回、最短104字あき
- 121字見が2回、最短121字あき
- 172字行が2回、最短172字あき
| 文 | 字数 | 息 | 読点 | 漢字 | 文末 | 本文 |
|---|---|---|---|---|---|---|
| 1 | 12 | 11 | 0 | 33% | 過去 | 雨は午前から降っていた。 |
| 2 | 20 | 12 | 1 | 45% | 過去 | 彼は傘の下で、先週の紙をもう一度広げた。 |
| 3 | 74 | 18 | 5 | 38% | 過去 | 紙には、受付で渡された番号と、後で自分が書き込んだ乗り換えの驛と、さらにその下に、母から伝わった… |
| 4 | 9 | 8 | 0 | 22% | 断定 | 彼は紙をたたんだ。 |
| 5 | 15 | 9 | 1 | 27% | 過去 | それから、改札の向こうを見た。 |
| 6 | 11 | 10 | 0 | 27% | 打消し | 電車はまだ来ていない。 |
| 7 | 10 | 8 | 0 | 20% | 会話 | 「先に行っていいよ」 |
| 8 | 11 | 10 | 0 | 27% | 過去 | 声は傘の外からだった。 |
| 9 | 13 | 12 | 0 | 23% | 打消し | 母は傘を持っていなかった。 |
| 10 | 12 | 11 | 0 | 42% | 過去 | 彼は母の肩に傘を寄せた。 |
| 11 | 11 | 10 | 0 | 36% | 過去 | 雨の音が少し変わった。 |
| 12 | 11 | 10 | 0 | 27% | 打消し | 母は何も言わなかった。 |
| 13 | 11 | 10 | 0 | 27% | 打消し | 彼も何も言わなかった。 |
| 14 | 71 | 70 | 0 | 20% | 過去 | 傘の骨をつたって落ちた水が母の靴のふちをぬらしていくのを見ていたのに彼はそれを言わずにただ番号の… |
| 15 | 11 | 10 | 0 | 36% | 現在 | 雨は屋根を打っている。 |
| 16 | 11 | 10 | 0 | 18% | 問い | どちらの階段だったか? |
| 17 | 7 | 5 | 0 | 14% | 会話 | 「もう行こう」 |
| 18 | 5 | 4 | 0 | 60% | 体言止め | 番号の紙。 |
| 19 | 21 | 11 | 1 | 24% | 過去 | それをポケットに戻して、彼は改札を潜った。 |
表は横に送って見られます。
削り跡
6 字以上を削ると、削った字がここに残ります。手元の置き場(IndexedDB)にだけ入り、リンクにも入りません。入れたいときだけ下で選んでください。
まだ削っていません
一本のリンクにする
原稿を縮めて、住所の # より後ろに入れます。この部分は仕様でサーバへ送られないので、リンクを渡しても原稿は誰の手元にも保存されません。渡した相手のブラウザの中だけで開きます。
まだ作っていません。
送っていないという証拠
- JavaScript が動くと、ここに実測が出ます。
この頁は読み込んだ直後に、自分の送信の口(fetch・XMLHttpRequest・WebSocket・EventSource・RTCPeerConnection・navigator.sendBeacon)を書き換えて、呼ぶと例外になるようにしています。上の押しボタンで実際に呼んで、返ってきた文をそのまま出します。
なぜ手元だけで作れるのか
封筒に入れて出す手紙と、机の上で広げたままの紙の違いです。ふつうの道具は、原稿を封筒に入れて相手の機械へ送り、そこで測って結果を返します。この計器は机から動かしません。測る道具のほうがブラウザの中に最初から入っているので、送る必要がありません。
正式な言い方をすると、日本語を語に割る仕組み(Intl.Segmenter)と、文の切れ目を出す仕組みが、いまのブラウザには標準で入っています。辞書のファイルを持ち込まなくても、10 万字を 34 ミリ秒で 76,745 片に割れました。だから解析にサーバが要りません。
持ち出しの口も、実は最初からあります。リンクの住所のうち # より後ろは、決まりごととしてサーバへ送られません。ここに 4,000,000 字まで入れて往復できることを測りました。原稿を縮めてこの中に入れれば、リンクを渡すという形で原稿を渡せるのに、通り道のどこにも原稿は残りません。
送らないことを、約束ではなく仕掛けにしています。この頁は自分の送信の口を塞いだ状態で動くので、書き手の側から確かめられます。押しボタンで実際に呼んで、例外が返るところまで見られます。
先に測ってから決めたこと
何を作るかを決める前に、ブラウザの機能を実際に呼んで測りました。下は測った値です(測定機 Chrome 152 / Windows、表示領域 1280x720、2026-09-09)。
| 測ったこと | 実測 | この計器での使い方 |
|---|---|---|
| リンクの # より後ろの容量 | 4,000,000 字で往復(206.8 ms) | 原稿をここに入れて持ち出す |
| 日本語の語分け | 10 万字を 34 msで 76,745 片(2,941 字/ms) | 語の再来と文末の型を出す |
| 文の切れ目 | 3 文を 8 / 15 / 20 字に割った | 切れ目は任せ、鉤括弧の口だけ繋ぎ直す |
| 縮める仕組み | deflate-raw で 60,000 バイトが 366 バイト | リンクに入れる前に縮める |
| 手元の置き場 | 割り当て 10,240 MiB(使用 0 MiB) | 削り跕を手元に残す |
| 手元への書き込み | 1,000 件が 54.8 ms(18,248 件/秒) | 打つたびに残しても間に合う |
| 読み上げの声 | 全 19 声のうち日本語は 1 声で、それは外の機械に渡す声 | 使わない(本文が外へ出るため) |
| 絵の描き方 | 直線と曲線だけで 2,856 画素が点灯 | 円・角丸・既製フォント直描きを 0 件にする |
| 時間の刻み | 最小差 0.1 ms | 削った時刻を残す |
表は横に送って見られます。
この計器が測る五つ
息の長さ
読点や句点にぶつからずに読み進める字数です。長い文が悪いのではなく、息継ぎがないまま続くところで読者が詰まります。境の字数は上のつまみで動かせます。
文末の型
過去・現在・断定・打消し・体言止め・問い・会話の七つに分けます。同じ型が三つ以上つづいた区間を図の下に括弧で出します。
語の再来
同じ内容語が近い距離で戻ってくるところを弦で結びます。漢字一字の語も内容語として数えます。
読点の密度
100 字あたりの読点の数です。息の長さと合わせて見ると、句読点の置き方の癖が出ます。
会話の割合
鉤括弧の中の字数が全体に占める割合です。地の文と会話の比が場面ごとに揺れているかを見ます。
よい悪いの基準は外から持ってきません。境を越えた文の判定は、その原稿の中の分布(上から 1 割)と、つまみで決めた字数の大きいほうを使います。他人の原稿の平均値は使っていません。
作りの中身
| 項目 | 値 |
|---|---|
| 文字の集め方 | 頁に出る字を集めて 767 字分 |
| 自前の活字(本文) | 993 字形 / 128,984 バイト(全字形を描き直し) |
| 自前の活字(太字) | 993 字形 / 130,144 バイト |
| 自前の活字(原稿用、JIS 第1水準 2,965 字を含む) | 567,888 バイト |
| 円(arc)・角丸(roundRect)・既製フォント直描き(fillText) | 0 件 / 0 件 / 0 件 |
| 市販の見た目の枠組・外部からの読み込み・絵文字 | 0 件 / 0 件 / 0 件 |
| 見本の断片 | 346 字 / 19 文 |
表は横に送って見られます。
活字は借りた輪郭をそのまま描かず、全ての字を描き直しています(横 0.94 倍・縦 1.015 倍・座標を 4 単位に丸め)。図は canvas を使わず直線と曲線だけで組んでいるので、円(arc)・角丸(roundRect)・既製フォントの直描き(fillText)はこの中に一件もありません。市販の見た目の枠組も使っていません。
測れていないもの
- 読み上げの声は使いません。日本語の声は 19 声のうち 1 声だけで、それは手元で作る声ではなく外の機械に本文を渡す声でした(localService が false)。測って分かったので外しました。
- 手元の活字の一覧(queryLocalFonts)は、読み手の許しが要るので測っていません。
- 原稿の中の固有名詞の判定はしていません。語の割り方はブラウザの仕組みに任せているので、造語や当て字は割れ方が揺れます。
- この計器の判定に、他人の原稿から作った基準は入っていません。良し悪しは読み手が決める前提です。