1. 背景:スマホ入力のストレスとネットワークの制約
PCで作成したテキストをスマホに送りたい場面は多いものです。しかし、セキュリティポリシーによりPCとスマホを同一セグメントのネットワークに接続できない環境(KDE Connect等が使えない状況)では、テキスト転送は意外と面倒なものです。
本稿では、QRコードを媒介にした「エアギャップ(物理隔離)」越えの転送手法を紹介します。スマホのソフトウェアキーボードによる入力ストレスから解放される、きわめてプリミティブで堅牢な解決策です。
2. 実装のロジック
仕組みは単純です。
- PC側で任意のテキストをQRコード(PNG画像)に変換して表示。
- スマホのカメラ(Googleレンズ等)で読み取り、クリップボードにコピー。
依存ツールのインストール
以下のパッケージが必要です。
-
qrencode: テキストのQRコード変換 -
xclip: クリップボード操作 -
xdg-utils: 画像ビューアの呼び出し
3. シェルスクリプト:qr-send.sh
入力ソースを「標準入力」「引数」「クリップボード」から柔軟に受け取れるようにしました。
#!/bin/bash
# 依存コマンドチェック
if ! command -v qrencode &> /dev/null; then
echo "Error: qrencode がありません。"
exit 1
fi
if ! command -v xclip &> /dev/null; then
echo "Error: xclip がありません。"
exit 1
fi
# 一時ファイル作成
TEMP_IMG=$(mktemp /tmp/qrcode.XXXXXX.png)
# --- 入力ソースの取得ロジック ---
if [ -p /dev/stdin ]; then
# パイプ入力がある場合
INPUT=$(cat)
elif [ -n "$1" ]; then
# 引数がある場合
INPUT="$1"
else
# 何もない場合はクリップボードから
echo "クリップボードから取得中..."
INPUT=$(xclip -o -selection clipboard)
fi
# 入力が空なら対話入力を促す
if [ -z "$INPUT" ]; then
echo "テキストを入力してください(入力完了は Ctrl+D):"
INPUT=$(cat)
fi
# --- QRコード生成 ---
# -s 10: ドットサイズ
qrencode -s 10 -o "$TEMP_IMG" "$INPUT"
# --- 表示 ---
if [ -f "$TEMP_IMG" ]; then
echo "QRコードを表示します: $TEMP_IMG"
nohup xdg-open "$TEMP_IMG" >/dev/null 2>&1 &
else
echo "生成に失敗しました。"
exit 1
fi
使い方
-
クリップボードを転送:
qr-send.sh -
特定の文字列を転送:
qr-send.sh "Hello World" -
コマンド出力を転送:
cat memo.txt | qr-send.sh
4. Emacsからの連携:my-region-to-qrcode
エディタから離れることなく、選択範囲(Region)を即座にスマホへ送出します。
;; == QR Code Generation ==
(defun my-region-to-qrcode (start end)
(interactive "r")
(let ((text-file (make-temp-file "qr-text" nil ".txt"))
(img-file (make-temp-file "qr-image" nil ".png"))
(exit-code 0))
;; 1. テキスト書き出し
(write-region start end text-file)
;; 2. qrencode 実行
(setq exit-code
(call-process "qrencode" nil nil nil "-s" "10" "-r" text-file "-o" img-file))
(if (and (= exit-code 0) (file-exists-p img-file))
(progn
(message "QRコードを表示: %s" img-file)
(call-process-shell-command
(format "nohup xdg-open %s >/dev/null 2>&1 &" img-file)
nil 0))
(message "QRコード生成失敗 (Exit code: %d)" exit-code))))
5. 運用上の留意点
- データ量: QRコードの特性上、実用的な転送量は数百文字〜1,000文字程度です(このスクリプトを書いた動機も、SNSへの投稿メッセージをPCで入力することでした)。
-
セキュリティ: 生成された画像は
/tmpに保存されます。共有PCを利用している場合は、画像ビューアを閉じた後に手動で削除するか、atコマンド等で時間差削除する設定を検討してください。