vCard QRコード作成
100%プライベート、ローカル処理 — データがブラウザの外に出ることはありません。これらのQRコードは恒久的で、期限切れになることはありません。
連絡先カードの設定
デザイン
中央にロゴを追加
画像はこのページ内で読み込まれ、data: URLとしてコードに埋め込まれます。アップロードはされず、ダウンロードするファイルの中に留まります。
その他のデザイン設定
コードの暗いほうの半分です。背景より明度を十分低く保ってください。
モジュール同士の隙間だけでなく、クワイエットゾーンも塗ります。背景を透過にするとファイルから省かれるので、この色では何も描画されません。
モジュールと背景のコントラストは11.5:1です。
PNGとWebPはアルファチャンネルを保持し、SVGは背景の矩形をそのまま省きます。コードを置いた面が、コントラストの明るいほうの半分になります。
グラデーションは暗いモジュールだけを塗ります。明るいほうの端がスキャナーの実際に得るコントラストを決めるので、両端とも暗いままにする必要があります。
2色目で、グラデーションを選んでいる間だけ使われます。1色目と並べてコントラストが測定されます。
左から右への向きを起点とした時計回りの角度です。放射グラデーションは中心から外へ広がるため、角度が効くのは線形のときだけです。
丸い形はセルを覆う面積が小さくなります。デコーダーが標本を取る中心は覆われたままですが、密度の高いコードを小さく印刷する場合は四角のほうが安定して読み取れます。
3つの位置検出パターンの外枠です。
各位置検出パターンの中にある目にあたる部分です。
コードの周囲の余白で、モジュール単位で測ります。規格上の最小値は4です。
復元レベルが高いほど多くの損傷に耐えられますが容量を消費するため、同じ内容でもシンボルが密になります。
中央にロゴがあり、レベルをHに固定しています。幅の上限はシンボルに応じて変わり、最小のコードで14%、密なコードで30%です。
ライブプレビューと書き出し
姓か名のどちらかを入力してください。vCardは表示名を運ぶ必要があるため、どちらもないカードは正しいレコードになりません。
書き出し
ラスター、画面向け
フォームを入力するとダウンロードが有効になります。
書き出しサイズとエンコードされたテキスト
- ペイロード
- まだ何もエンコードされていません
- シンボル
- まだ生成されていません
- 復元レベル
- M
入力待ち
vCardのQRコードは連絡先レコード全体を運ぶため、スキャンするとページを開くのではなく連絡先の保存を提案します。入力した項目の分だけバイト数が増えてシンボルも大きくなるので、フル記入のカードは単なるリンクより大きく印刷する必要があります。
スキャンしたときの動作
スマートフォンが連絡先のプレビューを表示してアドレス帳への追加を提案し、ページは読み込まれず、何もダウンロードされません。
vCard 4.0のレコードの姿
ペイロードはリンクではなく、小さなプレーンテキストの文書です。BEGIN:VCARDとVERSION:4.0で始まり、1行に1つのプロパティをキャリッジリターンとラインフィードで区切って並べ、END:VCARDで閉じます。バージョン4.0はRFC 6350で定義されています。
名前は2つのプロパティが受け持ち、役割が異なります。Nは構造化された名前を5つの決まった順序のスロットに保持し、姓が先頭です。FNはアドレス帳が表示する単一の表示用文字列を保持し、RFC 6350はFNを必須としています。名前がまったくないカードが有効なレコードにならないのは、そのためです。
ADRは7つのコンポーネントを決まった順序で並べた1つのプロパティで、空のコンポーネントにも区切り文字が必要です。私書箱のない住所が、番地の前にセミコロン2つで始まるのはそれが理由です。
- N:山田;花子;;; のあとに FN:山田 花子
- ORG:北門製本所 と TITLE:製造部長
- TEL;TYPE=cell:+819012345678 と TEL;TYPE=work,voice:+81312345678
- ADR;TYPE=work:;;神田錦町3-1;千代田区;東京都;101-0054;日本
- RFC 6350はTELをtel: URIとして型付けしますが、ここで使っている短い素の番号形式は、3.0世代のパーサーが期待する書き方でもあります
連絡先カードのシンボルが大きくなる理由
このページのすべての項目を埋めたカードは、およそ400バイトのテキストになります。一般的なWebリンクの数倍です。レベルHはシンボルのコードワードの約3分の2を誤り訂正に使い、バージョン40では3,706のうち2,430がそれにあたります。それがシンボルの約30パーセントを復元できる根拠です。同時にHは最も格納量が少ないレベルでもあり、バージョン20のグリッドはHで382バイトしか入りません。ここでの既定がMなのはそのためで、同じ情報を目に見えて小さなグリッドに載せられます。
バージョン20は97モジュール幅です。規格が各辺に求める4モジュールのクワイエットゾーンを足すと、端から端まで105モジュールになります。幅25 mmで印刷すると1モジュールは約0.24 mmです。印刷の目安は1モジュールあたり0.4〜0.5 mmを下限としているので、105モジュール分の幅には42〜53 mm程度が必要で、フル記入の連絡先カードを25 mmで刷るのはどちらの数字にも遠く届きません。
コードを小さくしなければならないなら、対処は復元を増やすことではなくバイト数を減らすことです。メモ、2つ目の電話番号、都道府県を落とすだけでペイロードから100バイト前後が消え、バージョンが数段下がることがよくあります。
- アクセント付きの文字やラテン文字以外の文字はUTF-8でエンコードされ、1文字あたり1バイトではなく2〜4バイトかかります
- 中央のロゴはレベルHを強制するため、フル記入のカードにロゴを載せるなら大きめの印刷サイズが必要です
- 1つのシンボルの絶対的な上限は、レベルLで2,953バイトです
バージョン4.0と、それを今も読めるもの
流通しているvCardのバージョンは3つあります。2.1、RFC 2426の3.0、そしてRFC 6350の4.0です。このページが書き出すのは4.0で、現行の仕様であり、文字セットをパラメータ任せにせずエンコーディングをUTF-8と定めているバージョンです。
iOSの連絡先と現行のAndroidの連絡先アプリは、スキャンした4.0のレコードを読み取ります。ただし、それより下では対応が行き渡っていません。古いサードパーティ製の連絡先アプリや企業向けのアドレス帳には2.1や3.0を前提に作られたものがあり、認識できないプロパティを無視するか、レコードごと拒否します。古い端末が大量にある相手に配るなら、1,000枚刷る前に1枚試してください。
レコードの内容は何も検証されません。vCardは入力されたことをそのまま述べるだけなので、スキャンは連絡先を保存する提案であって、その連絡先が本物であることの証明ではありません。どのプラットフォームも、アドレス帳に書き込む前に確認画面を表示します。
よくある質問
1枚のカードにどれくらい入れると読み取れなくなりますか?
限界は形式ではなく印刷サイズです。フル記入のカードは約400バイトで、レベルMならおおよそ77〜85モジュールのグリッドになります。幅45 mm以上で印刷すれば腕を伸ばした距離から読み取れますが、25 mmで印刷するとモジュールが約0.24 mmまで細くなり、スマートフォンのカメラが取りこぼし始めます。
なぜ3.0ではなく4.0なのですか?
4.0が現行の仕様であるRFC 6350だからです。文字エンコーディングをUTF-8に固定するため、アクセント付きの名前やラテン文字以外の文字が、charsetパラメータなしで往復しても壊れません。引き換えに、2.1や3.0向けに作られた古い連絡先アプリの一部が、認識できないプロパティを落とす可能性があります。
カードに写真を入れられますか?
埋め込みはできません。PHOTOプロパティは画像をbase64で運びますが、小さな顔写真でも数十キロバイトになり、シンボル全体の絶対的な上限である2,953バイトに対して桁が違います。画像はご自分のページに置いて、代わりにWebサイトの項目を使ってください。
アクセント付きの文字やラテン文字以外の文字はどうなりますか?
UTF-8でエンコードされ、QRコードのバイトモードに格納されます。動きますが、無料ではありません。素のASCIIから外れた文字は1バイトではなく2〜4バイトかかるため、ギリシャ語、アラビア語、日本語の名前はシンボルを1つか2つバージョン押し上げます。
静的QRコードの仕組み
このサイトのコードはすべて静的です。ペイロードは白黒のモジュールそのものに書き込まれています。読み取り時に何かを参照することはなく、当サイトのサーバーが関与することもなく、印刷されたコードをサブスクリプションが支えているわけでもありません。同じ性質が限界でもあります。一度印刷すると、中身は変更できません。
印刷したコードが読めるかどうかを決めるのは3つです。ペイロードが何バイトになったか、どの復元レベルが損傷を吸収するか、そして紙の上で1モジュールがどれだけの幅になるか。以下のガイドは、そのそれぞれを数字とともに扱います。