テキスト共有ツール - コードスニペット用の無料ペーストビン
テキストやプログラムのコードをオンラインで手軽に共有できる無料のペーストビンツール。10種類のプログラミング言語に対応した構文ハイライト表示や、リンクの有効期限を分単位から任意に設定できる機能を備え、アカウント登録なしですぐに一意のURLを発行して共有できます。
テキスト共有ツール
ドキュメンテーション
テキスト共有ツール
テキスト共有ツールは、ペーストビンとも呼ばれ、テキストやコードのまとまりを投稿すると、そのテキストを開いた人に表示するリンクが返されるウェブページです。このペーストビンツールはブラウザー内だけで完全に動作し、アカウントは不要で、構文ハイライトやリンクの有効期限も任意で設定できます。
テキスト共有ツールの仕組み
多くのペーストビンサービスはテキストをサーバーに保存し、データベースの行を指す短いリンクを返します。このツールは仕組みが異なります。サーバーもデータベースもありません。その代わり、ペースト全体をリンク自体に格納します。
誰かが「リンクを作成」をクリックすると、ツールは次の4つの処理を行います。
- テキスト、選択した言語、有効期限(「なし」の場合は何もなし)を保持する小さなオブジェクトを作成します。
- そのオブジェクトを1行のJSONテキストに変換します。
- JSON を、ウェブで最も広く使われている文字エンコーディングである UTF-8 を使ってバイト列に変換します。
- そのバイト列を base64url で符号化します。これは任意のバイト列を英字、数字、
-、_に変換する方式で、結果を URL の中で安全に使えます。
符号化されたテキストは、ページの URL の末尾にある#p=の後ろに置かれます。#より後ろの部分はフラグメントと呼ばれます。ブラウザーはページを読み込むとき、フラグメントをサーバーに送信しません。そのため、ペーストの内容がどこかに送られることはありません。リンクの読み取りは、この処理の逆です。base64url のテキストを復号し、UTF-8 でバイト列を JSON 文字列に戻し、JSON を解析してテキスト、言語、有効期限を取り出します。
フラグメントにペースト全体が含まれているため、共有リンクは、作成した端末やブラウザーでなくても、どの端末やブラウザーでも機能します。検索や照会は必要ありません。リンクを開くだけで内容が表示されます。ダウンロードしたファイルを開くときに、そのファイルの内容をサーバーへ問い合わせる必要がないのと同じです。
このツールは利便性のため、各ペーストのローカルコピーをブラウザーのストレージに下書きとして保存します。このコピーは、同じブラウザーで過去に作成したペーストを再び見つけやすくするだけのものです。共有リンクを開く処理には関係せず、リンクがこのコピーに依存していないため、コピーを消去しても共有リンクは壊れません。
構文ハイライト
構文ハイライトは、キーワード、文字列、コメントなどのコードの各部分に色を付け、構造を読みやすくします。このツールは10種類のオプションに対応しています。
- プレーンテキスト(ハイライトなし)
- JavaScript
- TypeScript
- Python
- Java
- HTML
- CSS
- JSON
- SQL
- Bash
選択した言語はエンコードされたペイロード内に保存されるため、閲覧者が何かを選ばなくても、リンクを開いたときにハイライトが自動的に適用されます。
有効期限の計算式
有効期限のオプションは絶対的なタイムスタンプを設定します。これは 1970年1月1日(UTC)からの経過ミリ秒で表されます(Unix エポックと呼ばれる、コンピューターで一般的な基準点です)。このツールは、リンクを作成した時点に一定の時間を加えます。
| オプション | 加算する時間 |
|---|---|
| なし | タイムスタンプは保存されません |
| 1時間 | 60 × 60 × 1,000 ms |
| 1日 | 24 × 60 × 60 × 1,000 ms |
| 1週間 | 7 × 24 × 60 × 60 × 1,000 ms |
| 1か月 | 30 × 24 × 60 × 60 × 1,000 ms(暦上の1か月ではなく、固定の30日) |
たとえば、時計が1,700,000,000,000 msを示しているときにリンクを作成し、作成者が「1週間」を選んだ場合、保存される有効期限は次のようになります。
1,700,000,000,000 + (7 × 24 × 60 × 60 × 1,000) = 1,700,604,800,000 ms
閲覧者がリンクを開くと、ツールは保存されたタイムスタンプと現在時刻を比較します。保存された時刻をすでに過ぎている場合、テキストの代わりに「このコンテンツの有効期限が切れています」というメッセージを表示します。有効期限のタイムスタンプもテキストとともにリンクに含まれているため、この確認はどの端末でも同じように機能します。
例:ペーストがリンクになるまで
誰かが有効期限なしでプレーンテキストHello, world!を共有するとします。ツールはリンクを短く保つため、短いフィールド名を使って次のJSONオブジェクトを作成します。
1{"t":"Hello, world!","l":"plaintext","e":null}
2そのJSONをUTF-8のバイト列に変換し、続いてbase64urlとしてエンコードすると、次のようになります。
1eyJ0IjoiSGVsbG8sIHdvcmxkISIsImwiOiJwbGFpbnRleHQiLCJlIjpudWxsfQ
2完全な共有リンクは、ページのアドレスに#p=の後ろのそのトークンを加えたものです。
1https://whiz.tools/en/development/paste-bin-tool#p=eyJ0IjoiSGVsbG8sIHdvcmxkISIsImwiOiJwbGFpbnRleHQiLCJlIjpudWxsfQ
2そのリンクを開いた人のブラウザーはトークンをデコードし、Hello, world!をプレーンテキストとして読み戻して表示します。サーバーに何かを問い合わせることは一度もありません。
テキストやコードを共有する方法
- テキストボックスにテキストを入力または貼り付けます。入力に応じて文字数が更新されます。
- 必要に応じて、構文ハイライトのメニューから言語を選びます。
- 必要に応じて、リンクを有効にしておく期間を選びます。
- 「リンクを作成」をクリックします。
- 「リンクをコピー」ボタンで生成されたリンクをコピーし、任意の方法で送信します。
共有されたテキストを表示する方法
- 共有リンクを開きます。
- 選択した言語があればハイライト付きで、テキストがすぐに表示されます。
- 「テキストをコピー」を使って内容をクリップボードにコピーします。
- 「新規作成」を使って新しいペーストを始めます。
リンクの作成後にペーストを編集することはできません。テキストを変更するには、新しいペーストを作成して新しいリンクを共有する必要があります。
一般的な用途
- レビューやデバッグの助けを求めるためにコードスニペットを共有する開発者。
- スターターコードや手順を共有する教師。
- リストやメモのまとまりなど、テキストの一部を自分の2台の端末間で移動する人。
複数の人が同時に編集し続ける必要があるテキストには、共有ドキュメントツールのほうが適しています。永続的な履歴が必要なコードには、Gitなどのバージョン管理システムのほうが適しています。
制限とプライバシー
ペースト全体がリンク内に存在するため、実質的なサイズ制限はストレージ容量ではなくURL自体の長さです。ブラウザーは長いURLを処理できますが、多くのメールソフト、チャットアプリ、古いシステムでは非常に長いURLが切り詰められたり拒否されたりするため、非常に大きなペーストは、どの経路でもうまく送信できない場合があります。短いペーストや中程度のペーストには影響ありません。
フラグメントがサーバーへ送信されることはないため、ツール自体が貼り付けられた内容を知ることはありません。ただし、正確なリンクを持つ人は誰でも開けるため、リンクは含まれるテキストと同じように扱う必要があります。この方法でパスワードなどの機密データを共有しないでください。また、内容を非公開にしておく必要がある場合は、リンクを公開の場所に投稿しないでください。
よくある質問
共有されたテキストは実際にはどこに保存されていますか?
リンクとは別の場所には保存されていません。テキスト、選択した言語、有効期限はすべて、リンクのフラグメント、つまり#の後ろの部分に直接エンコードされています。リンク自体が唯一のコピーです。
別の端末やブラウザーでもリンクは機能しますか? はい。内容がリンク内を移動するため、リンクを開いた端末であれば、どの端末でも内容をデコードして表示できます。アカウントも元のブラウザーも必要ありません。
ブラウザーのデータを消去するとどうなりますか? 既存の共有リンクには影響ありません。共有リンクはブラウザーに保存されたデータではなく、リンク自体だけに依存しています。ブラウザーのデータを消去すると、その端末で作成したペーストについてブラウザーが保持しているローカルの便宜的なコピーが削除されるだけです。
リンクを作成した後にペーストを編集できますか? いいえ。作成時に内容がリンクに組み込まれるため、変更するには新しいリンクを作成する必要があります。
ペーストの有効期限が切れるとどうなりますか? 有効期限が切れたリンクを開くと、元のテキストの代わりに、内容の有効期限が切れたことを示すメッセージが表示されます。リンク自体は存在し続けますが、保存された有効期限のタイムスタンプを過ぎると内容を表示しなくなります。
サイズ制限はありますか? 固定されたストレージ容量の制限はありません。ただし、非常に長いURLは一部のメールクライアントやメッセージングアプリで拒否されたり途中で切られたりするため、非常に大きなペーストには専用のファイル共有ツールのほうが適しています。
参考文献
- MDN Web Docs. UTF-8. UTF-8 用語集の項目 — UTF-8 はウェブで最も一般的な文字エンコーディングです。
- Josefsson, S. RFC 4648: The Base16, Base32, and Base64 Data Encodings. RFC Editor, 2006. RFC 4648 — 第5節の base64url は、
-と_を62番目と63番目の文字として使い、パディングは省略できます。 - MDN Web Docs. URI fragment. URI fragment — URI が要求されたとき、フラグメントはサーバーに送信されません。
- MDN Web Docs. Date. JavaScript Date — 日付は、UTC の1970年1月1日の午前零時からの経過ミリ秒です(エポック)。