タイトル、場所、日時、タイムゾーン、繰り返し、招待者、通知、メモを入力し、.ics ファイルをダウンロードするかカレンダーで直接開きます。日程を貼り付けたり、文書や写真を添付したりして、複数の予定をまとめて作成することもできます。
jCal とは何か、.ics ファイルとどう違うのか?
jCal は JSON として書かれた iCalendar であり、2014年に RFC 7265 として標準化されました。.ics ファイルとまったく同じデータ——同じプロパティ、パラメータ、コンポーネント——を、オブジェクトではなくネストした配列で表現します。これは、コンポーネントがプロパティを繰り返し持つことがあり、順序が意味を持つ場合があるためです。カレンダーは ["vcalendar", [properties], [components]] であり、各プロパティは [name, parameters, valueType, value] なので、SUMMARY:Standup は ["summary", {}, "text", "Standup"] になります。これは、検索エンジン向けにイベントを説明し、その情報のごく一部しか保持しない JSON-LD の schema.org Event とは異なります。ICS Maker は、両者を変換するのではなく、単一のイベントモデルから .ics と jCal を出力するため、この2つがイベントの内容について食い違うことはありません。
その構造
RFC 7265 は、カレンダーにおいて順序と繰り返しが重要であり、JSON オブジェクトではそのどちらも表現できないため、iCalendar をオブジェクトではなく配列にマッピングしています。カレンダーは ["vcalendar", [properties], [components]] であり、各プロパティは [name, parameters, valueType, value] です——名前は小文字化され、パラメータはオブジェクトとなり、型は RFC 5545 の値型のいずれかになります。
そのため、SUMMARY:Standup は ["summary", {}, "text", "Standup"] になり、タイムゾーン付きの開始時刻は ["dtstart", {"tzid":"Europe/London"}, "date-time", "2026-08-15T09:00:00"] になります。日時はここでは iCalendar のコンパクトな表記ではなく ISO 表記が使われ、タイムゾーンはパラメータへと移されます。
なぜ価値があるのか
iCalendar は、行の折り返しやエスケープ規則、CRLF 改行を伴うテキスト形式であり、正しく解析するのは見た目以上に手間がかかります。jCal は、タイムゾーン、繰り返しルール、アラーム、参加者情報といった同じ意味内容を、パーサーを書く必要なく、すでに JSON を扱えるあらゆるものに渡すことができます。これは、このページでも出力できる schema.org の Event とは異なる役割です。JSON-LD は検索エンジン向けにイベントを説明するものであり、カレンダーに必要な情報のほとんどを削ぎ落としてしまいます。
このページはどのように生成しているか
両方の形式は、互いに変換するのではなく、同じイベントから書き出されます。変換を行うと、テキスト形式のあらゆるエスケープ判断を引き継ぐことになりますが、jCal の値は明示的にエスケープを解除されています——JSON が独自に引用符処理を行うためです。両方を1つのモデルから書き出すことで、両者はイベントの内容そのものについて食い違うことはなく、表記の仕方が違うだけになります。
よくある質問
- jCal とは何ですか?
- jCal は iCalendar 用の JSON 形式であり、2014年に RFC 7265 として標準化されました。.ics ファイルとまったく同じデータ——同じプロパティ、パラメータ、コンポーネント——をネストした JSON 配列で表現するため、意味を失うことなくどちらの方向にも変換できます。
- jCal は JSON-LD や schema.org Event と同じものですか?
- いいえ、違います。jCal は iCalendar を完全にマッピングしたものであり、繰り返しルール、タイムゾーン、アラーム、参加者の出欠状況を保持します。JSON-LD の schema.org Event は、検索エンジンなどの読み手向けにイベントを説明するものであり、意図的にその情報のごく一部しか保持しません。このビルダーは同じイベントから両方を出力します。
- jCal はなぜオブジェクトではなく配列を使うのですか?
- カレンダーのコンポーネントは同じプロパティを複数回持つことがあり——複数の参加者や複数の例外日など——、その順序が意味を持つ場合があるためです。プロパティ名をキーとする JSON オブジェクトではそのどちらも表現できないため、RFC 7265 は代わりに位置に基づく配列を採用しています。
- jCal を読み込めるものは何ですか?
- これはニッチな形式ですが、ical.js のような JavaScript のカレンダーライブラリでは十分にサポートされており、いくつかのサーバーサイドの iCalendar ツールキットでも利用できます。主流のカレンダーアプリケーションは依然として .ics を前提としているため、jCal は自分のシステム間でのやり取りに使い、人に渡す際は .ics ファイルを使ってください。