本文へスキップ
OpenQRS
ツール
現在の言語: 日本語
100%プライベート

イベント QRコード作成

100%プライベート、ローカル処理 — データがブラウザの外に出ることはありません。これらのQRコードは恒久的で、期限切れになることはありません。

イベントの設定

SUMMARYプロパティになり、カレンダーの予定のタイトルになります。

イベント名を入力してください。カレンダーの予定のタイトルになります。

必須です。時刻の欄を両方とも空にすると、終日の予定になります。

24時間表記です。空欄は深夜0時開始ではなく、終日の予定を意味します。

空にすると開始日に終わります。終日の予定では、iCalendarが求めるとおり、終了日を含まない形で書き込みます。

開始時刻があってここが空のときは1時間の予定になります。多くのカレンダーアプリが前提にしている長さです。

1つの会場で開く対面のイベントにはフローティングが向いています。複数のタイムゾーンに参加者がいるオンラインのイベントにはUTCが向いています。

LOCATIONプロパティに入る自由なテキストです。タップすると、カレンダーアプリが自社の地図サービスに渡します。

改行はそのまま保たれます。ここの1文字ごとにコードが大きくなるので、リマインダーに必要な分だけにしてください。

URLプロパティに書き込まれます。対応はまちまちで、タップできるリンクとして表示するアプリもあれば、隠すアプリもあります。

デザイン

モジュールの形
プリセット
コーナーの枠
中央にロゴを追加
画像を選択、またはここにドロップPNG, JPEG, WebPまたはGIF、1000 KBまで

画像はこのページ内で読み込まれ、data: URLとしてコードに埋め込まれます。アップロードはされず、ダウンロードするファイルの中に留まります。

その他のデザイン設定

コードの暗いほうの半分です。背景より明度を十分低く保ってください。

モジュール同士の隙間だけでなく、クワイエットゾーンも塗ります。背景を透過にするとファイルから省かれるので、この色では何も描画されません。

モジュールと背景のコントラストは11.5:1です。

プリセット

PNGとWebPはアルファチャンネルを保持し、SVGは背景の矩形をそのまま省きます。コードを置いた面が、コントラストの明るいほうの半分になります。

グラデーション

グラデーションは暗いモジュールだけを塗ります。明るいほうの端がスキャナーの実際に得るコントラストを決めるので、両端とも暗いままにする必要があります。

2色目で、グラデーションを選んでいる間だけ使われます。1色目と並べてコントラストが測定されます。

45°

左から右への向きを起点とした時計回りの角度です。放射グラデーションは中心から外へ広がるため、角度が効くのは線形のときだけです。

モジュールの形

丸い形はセルを覆う面積が小さくなります。デコーダーが標本を取る中心は覆われたままですが、密度の高いコードを小さく印刷する場合は四角のほうが安定して読み取れます。

コーナーの枠

3つの位置検出パターンの外枠です。

コーナーの中心

各位置検出パターンの中にある目にあたる部分です。

4モジュール

コードの周囲の余白で、モジュール単位で測ります。規格上の最小値は4です。

復元レベルが高いほど多くの損傷に耐えられますが容量を消費するため、同じ内容でもシンボルが密になります。

中央にロゴがあり、レベルをHに固定しています。幅の上限はシンボルに応じて変わり、最小のコードで14%、密なコードで30%です。

ライブプレビューと書き出し

書き出し

書き出し

ラスター、画面向け

フォームを入力するとダウンロードが有効になります。

書き出しサイズとエンコードされたテキスト
ペイロード
まだ何もエンコードされていません
シンボル
まだ生成されていません
復元レベル
M

入力待ち

書き出しサイズ

64〜4096ピクセルの範囲。1024 pxで書き出します。

エンコードされたテキスト

完全なiCalendarイベントを組み立てて印刷します。ペイロードは.icsの中身そのものなので、スマートフォンはどこからもファイルをダウンロードせずに予定を作成できます。

スキャンしたときの動作

最近のカメラやスキャナーアプリの多くはBEGIN:VCALENDARヘッダーを認識して既定のカレンダーへの追加を提案しますが、古いものや簡素なスキャナーはテキストをそのまま表示します。

iCalendarのペイロード、正確に

コードが運ぶのはRFC 5545の完全なオブジェクトであって、そこへのリンクではありません。BEGIN:VCALENDARで始まり、VERSION:2.0とこの生成ツールを示すPRODIDを持ち、1つのVEVENTを包み、END:VCALENDARで閉じます。イベントの中には、仕様が必須とするUIDとDTSTAMPが入り、その隣にDTSTART、DTEND、SUMMARY、そして入力したLOCATION、DESCRIPTION、URLが並びます。

内容行はすべて、復帰改行の順、つまりCRのあとにLFで終わります。パーサーはここに厳格で、LFだけのオブジェクトは、他が正しくてもイベントの取り込みに失敗する原因になります。75オクテットを超える行はCRLFに続けて空白1つを挟むことで折り返され、読み手は解析の前につなぎ直します。長い説明文があってもオブジェクトが壊れないのはそのためです。

イベント全体がパターンの中にあるので、スマートフォンは予定を作るのにネットワークを必要としません。同時にそれは、イベントが凍結されていることも意味します。あとから会場を変えるには、コードを作り直して印刷し直すしかありません。更新できるものが存在しないからです。

フローティング現地時刻とUTC

フローティングモードでは、DTSTARTは末尾のZもTZIDパラメータもない YYYYMMDDTHHMMSS の形で書かれます。RFC 5545はこれをフローティング時刻と呼び、意味は文字どおりです。19:00は、開いた端末がどこにあっても19:00です。コンサート、マルシェの出店、学校の説明会なら、ほとんどの場合これが望むものです。ポスターを読む人は全員、会場と同じタイムゾーンに立っているからです。

UTCモードでは同じプロパティが YYYYMMDDTHHMMSSZ と書かれ、末尾のZが時点を固定します。各端末は取り込みのときに現地時刻へ変換するので、14:00 UTCに設定したイベントは東京では23:00、ニューヨークでは09:00と表示されます。ウェビナーには正しい選択で、町内のお祭りには誤った選択です。

名前付きのタイムゾーン、つまり DTSTART;TZID=Asia/Tokyo は仕様上の3つめの可能性ですが、このツールは提供していません。きちんとやるには夏時間の切り替え規則を全部含んだVTIMEZONEコンポーネントを埋め込む必要があり、1つのシンボルに収めなければならないペイロードに数百バイトを足すことになります。しかも、定義していないTZIDを参照するオブジェクトは不正です。フローティングとUTCなら、その代償なしに印刷物の用途をカバーできます。

エスケープ、終日イベント、そしてサイズ

テキストの値は、ペイロードに入る前に仕様が求めるとおりにエスケープされます。まずバックスラッシュ、次にセミコロンとカンマ、最後に改行の順です。この順序を変えると、直前に入れたバックスラッシュを二重にエスケープしてしまいます。テキスト値の中のコロンはそのままにします。RFC 5545はコロンのエスケープを明確に禁じているからです。古いRFC 2445では必要とされていて、手書きの生成ツールがいまだにここを間違えるのはそのためです。

終日イベントは日付の形を使います。DTSTART;VALUE=DATE:20260904 です。そのDTENDは排他的なので、9月4日の1日だけなら DTEND;VALUE=DATE:20260905 と書きます。ここを間違えると、1日足りない、あるいは1日多いイベントができあがります。

実際の制約になるのはサイズです。QRシンボルが持てるのは最も低い復元レベルでも最大2,953バイトで、カレンダーの包みだけで、あなたの文字が始まる前におよそ200バイトを使います。説明文が長いとシンボルは上位のバージョンに押し上げられ、モジュールが小さくなるので、より大きく印刷するか、より近づいて読み取る必要が出てきます。プレビューは入力に合わせてバージョンを表示するので、その動きを見ていてください。

  • バックスラッシュは \\ に、セミコロンは \; に、カンマは \, になります
  • 改行は \n という2文字になります
  • RFC 5545のテキスト値では、コロンをエスケープすることは決してありません

よくある質問

カレンダーに追加する案内ではなく、文字の塊が表示されるのはなぜですか?

スキャナーがURLを認識せず、ペイロードの表示にフォールバックしたためです。最近のカメラアプリの多くはBEGIN:VCALENDARヘッダーを検出してイベントの作成を提案しますが、機能を絞ったスキャナーはリンクしか扱えないことがあります。QR専用のスキャナーアプリを使うか、サードパーティ製ではなくスマートフォン本体のカメラを使えば、たいていは解決します。

1つのコードに繰り返しのイベントを入れられますか?

このツールではできません。RFC 5545は繰り返しをRRULEプロパティで表現し、記法自体は簡潔ですが、間隔、曜日、回数、除外日の組み合わせを間違いなく入力させるには、それ専用のフォームが要ります。このツールが作るのは、開始が1つ、終了が1つのイベント1件です。

イベントにリマインダーやアラームは付きますか?

付きません。VALARMコンポーネントは、読み取った本人がたいてい自分で設定したい好みのために、すべてのコードにバイトを足すことになりますし、リマインダーの既定の動きはカレンダーアプリごとに大きく異なります。予定はカレンダーに入り、そのカレンダーの既定の設定をそのまま引き継ぎます。

同じ印刷コードを2人が読み取るとどうなりますか?

それぞれが自分のカレンダーに予定を得ます。UIDはイベントの内容から導かれるので、どちらの控えでも同じ文字列になります。同じイベントなのですから、それは正しい動きです。ただし2つの控えは独立しています。招待もなく、参加者の一覧もなく、一方の変更が誰かに届く仕組みもありません。

静的QRコードの仕組み

このサイトのコードはすべて静的です。ペイロードは白黒のモジュールそのものに書き込まれています。読み取り時に何かを参照することはなく、当サイトのサーバーが関与することもなく、印刷されたコードをサブスクリプションが支えているわけでもありません。同じ性質が限界でもあります。一度印刷すると、中身は変更できません。

印刷したコードが読めるかどうかを決めるのは3つです。ペイロードが何バイトになったか、どの復元レベルが損傷を吸収するか、そして紙の上で1モジュールがどれだけの幅になるか。以下のガイドは、そのそれぞれを数字とともに扱います。