今回のアプリ
使い方
「Copy!」ボタンをクリックやタップなどすると、ゼロ幅スペース (U+200B) 1個がクリップボードにコピーされる。
特徴
- シンプルに、ゼロ幅スペース (U+200B) のコピーに特化!
- 文字の情報などの表示は無し!
- 他の文字のコピーは無し!
- 軽い!
- 1ファイルで完結!
- 約2KB!128kbpsの回線でも、理論上1秒以下で読み込める!?
背景
ゼロ幅スペース
ゼロ幅スペースとは、幅がゼロのスペースである。
表示するソフトによっては、幅がゼロにならないこともある。
例えば、hoge.zip などのファイル名や jig.jp などの社名を勝手にリンクにしてしまうふざけたSNSなどにおいて、これらの . の直前にゼロ幅スペースを置くことで、見た目への影響を避けつつ勝手にリンクにされるのを防ぐのを狙える。
また、投稿しようとした内容が最近の投稿と同一だとして投稿を拒否された際にも、ゼロ幅スペースを加えることで投稿の拒否の回避を狙える。
既存のアプリ
U+200B ZERO WIDTH SPACE - Unicode Explorer
では、ゼロ幅スペースをボタン1個でクリップボードにコピーできる。
しかし、時々繋がらなくなることがある。
- ゼロ幅スペース, Unicode番号: U+200B 📖 シンボルの意味を知る ✂ コピー & 📋 ペースト (◕‿◕) SYMBL
にもコピーボタンがあるが、広告が多く、通信制限下では読み込みに長時間かかるようだった。
技術
クリップボードへのコピー
navigator.clipboard.writeText 関数にコピーしたいテキストを渡すことで、テキストをクリップボードにコピーできる。
コピーインジケータの表示の消し方
今回のアプリでは、ゼロ幅スペースをコピーした際に「Copied!」を表示させ、タイマーを用いてその1秒後にその表示を消している。
しかし、実装によっては、1秒未満の間隔で立て続けにコピーボタンを押すと、2回目に押したことによる表示が1回目に押したことによる表示を消す処理で消され、コピーボタンを押してから表示が消えるまでの時間が1秒を下回ってしまう可能性がある。
そこで、前に押した際の表示が消える前にまた押された際は、前に押したときの表示を消す処理のタイマーを取り消すことで、これを防ぐようにした。
おわりに
このアプリを使うのもいいけど、U+200B をIMEのユーザー辞書に登録しておくのもいいかもね。
