開発 へ戻る
ICS (.ics) パーサー — iCalendar の予定・タスク・繰り返しルールを表示

ICS (.ics) パーサー — iCalendar の予定・タスク・繰り返しルールを表示

**`.ics` ファイル** (iCalendar / RFC 5545) を貼り付けるか選択すると、**予定 (VEVENT)** / **タスク (VTODO)** / **タイムゾーン (VTIMEZONE)** / **通知 (VALARM)** を一覧表示します。**SUMMARY** (件名)、**DTSTART / DTEND** (開始 / 終了、`YYYYMMDDTHHMMSS[Z]` → `YYYY-MM-DDTHH:MM:SS` に整形)、**DURATION** (期間)、**LOCATION** (場所)、**DESCRIPTION** (本文)、**RRULE** (繰り返しルール: FREQ / INTERVAL / COUNT / UNTIL / BYDAY)、**EXDATE / RDATE** (例外日 / 追加日)、**ORGANIZER** (主催者)、**ATTENDEE** (出席者: CN / ROLE / PARTSTAT / RSVP)、**CATEGORIES** (タグ)、**STATUS** (CONFIRMED / TENTATIVE / CANCELLED)、**TRANSP** / **CLASS** / **PRIORITY** / **URL** / **GEO** / **ATTACH** / **CALSCALE** / **METHOD** / **PRODID** をフィールド単位で表示。**Line folding** (75 文字超の継続行)、**TZID** 抽出、**全日予定 (VALUE=DATE)** と UTC (`Z`) フラグ判定もサポート。**完全にブラウザ内** で解析、予定データはサーバーに送信されません。Google Calendar / iCloud Calendar / Outlook / Notion カレンダー / Zoom / TimeTree の `.ics` エクスポートをそのまま読めます。

使い方

**入力欄** に `BEGIN:VCALENDAR` で始まる iCalendar データを貼り付けるか、**ファイルを選択** から `.ics` ファイルを読み込んで **解析** を押すと、**予定 (VEVENT)** と **タスク (VTODO)** がそれぞれカード形式で表示されます。各カードに **件名 / 開始 / 終了 / 場所 / 説明 / 主催者 / 出席者 / 繰り返しルール (RRULE) / 分類 / 通知 (VALARM) / 添付 / 拡張フィールド (X-*)** を整理。**サンプル** ボタンで日本語の週次予定 + 全日祝日 + タスクのデモを流し込み可能。**UID は 1 クリックでクリップボードコピー** できます。

詳細解説

カレンダーデータが持つ業務情報の密度

.ics ファイルや iCalendar フィード (VCALENDAR) には、一見すると単なる日時情報が並んでいるように見えます。しかし実際には「誰と」「どこで」「何を」という会議の文脈が ORGANIZER・ATTENDEE・LOCATION・DESCRIPTION フィールドに詰まっています。ATTENDEE に並ぶメールアドレスはそのまま取引先・顧客・社内関係者の連絡先リストになり、SUMMARY の内容からプロジェクト名・商談フェーズ・採用プロセスの段階が読み取れる場合があります。

さらに繰り返しルール (RRULE) が含まれる予定は週次の定例会議や月次レビューの存在を暗示し、全日予定 (VALUE=DATE) の連続は休暇期間や出張スケジュールを示すことがあります。Google Calendar や Outlook からエクスポートした .ics は個人の行動パターンをほぼ完全に再構築できる情報量を持っています。

オンラインの iCalendar ビューアーにアップロードするリスク

「.ics を開いて中身を確認したい」という需要に対して、オンラインのカレンダーパーサー・ビューアーが多く存在します。これらにファイルをアップロードすると、会議の ATTENDEE リスト・DESCRIPTION に書かれた議事メモ・LOCATION に入力された社内施設名・未公開の採用面接スケジュールなどがすべてサービス提供者のサーバーに届きます。

利用規約でデータの利用範囲が明確でないサービスも多く、「確認のためだけに使った」つもりでも、送信した時点でその情報は信頼境界の外に出ています。社内カレンダーのエクスポートや取引先から受け取った会議招待を確認する目的で使われることが多いだけに、業務上の機密情報が漏洩する経路になりえます。

自前パーサーでブラウザ内に閉じる仕組み

このツールは RFC 5545 (iCalendar 2.0) および RFC 7986 拡張に準拠した自前の iCalendar パーサーをブラウザ内で動作させています。line folding (75 オクテット改行後の継続行) の結合処理、コンポーネント階層 (VCALENDAR > VEVENT > VALARM) の解析、DATE-TIME の基本形式から拡張形式への変換、エスケープ処理まで、すべてブラウザ内の JavaScript で実行されます。外部 API の呼び出しはありません。

VEVENT の ATTENDEE フィールドに含まれるメールアドレス、DESCRIPTION に書かれた会議の詳細、X- 拡張フィールドに含まれるベンダー固有情報はすべてページメモリ内で処理され、ネットワークには出ません。DevTools の Network タブを開いて解析操作を行うと、初期ページ読み込み以降にリクエストが発生しないことを確認できます。

共有前・転用前の内容確認に

外部の参加者を含む会議招待を誰かに転送する前や、カレンダーデータを別のシステムへインポートする前に、このツールで ATTENDEE・DESCRIPTION・LOCATION に想定外の情報が含まれていないかを確認するのに使えます。特に DESCRIPTION には議事メモや会議前の準備事項が自動挿入されているケースがあり、転用先で第三者の目に触れる可能性があります。解析結果を確認してから、必要に応じてエディタで元の .ics を編集する、という運用が実務での典型的な使い方です。連絡先カードや書籍メタデータの確認に併用したい場合は vcard-infoepub-info も同様に閉じた構造で動作します。

RFC 5545 (iCalendar 2.0) のレコード構造と line folding

iCalendar の文法は PROPERTY-NAME[;PARAM=VALUE]:VALUE\r\n という ASCII テキストの行指向フォーマットで、各行が 1 つのプロパティに対応します。VCALENDAR を最上位とし、VEVENT・VTODO・VJOURNAL・VFREEBUSY・VTIMEZONE などのコンポーネントが入れ子になります。RFC 5545 は 1 行が 75 オクテットを超える場合は CRLF + SP/HT (連続行のインデント) で折り返すことを義務付けており、本ツールのパーサーはまず全行を読んで折り返し行を結合してから property を解析します。

DATE-TIME 値には 3 系統あります。20260610T093000Z (末尾 Z) は UTC、20260610T093000 (Z なし) は floating time (タイムゾーン不明)、TZID=Asia/Tokyo:20260610T093000 は明示タイムゾーン付きです。VTIMEZONE コンポーネントは独自のタイムゾーン定義を持ち、夏時間の切り替えルールを STANDARD / DAYLIGHT 子コンポーネントで宣言します。Olson 名 (Asia/Tokyo) を使うのが一般的ですが、Microsoft Outlook は独自の “Tokyo Standard Time” 形式を出力することがあり、相互変換に互換マップが必要です。

RRULE / EXDATE / RDATE の繰り返しルールと RFC 7986 拡張

RRULE (Recurrence Rule) は繰り返し予定を 1 行で表す DSL で、RRULE:FREQ=WEEKLY;BYDAY=MO,WE,FR;UNTIL=20261231T000000Z のように FREQ (頻度: SECONDLY / MINUTELY / HOURLY / DAILY / WEEKLY / MONTHLY / YEARLY)・INTERVAL (間隔)・COUNT (回数)・UNTIL (終了日)・BYDAY / BYMONTH / BYSETPOS などの修飾子を組み合わせます。複雑な RRULE (例: 第 2 第 4 火曜日 = FREQ=MONTHLY;BYDAY=2TU,4TU) は実装ごとに解釈差があり、Google Calendar・iCloud・Outlook で挙動が違うケースが報告されています。

RFC 7986 (2016) は iCalendar に NAME・REFRESH-INTERVAL・SOURCE・COLOR・IMAGE・CONFERENCE などの新プロパティを追加した拡張です。Zoom や Microsoft Teams の会議 URL は CONFERENCE プロパティ (RFC 7986) または X-MS-OLK-CONFTYPE のようなベンダー固有 X- プロパティで埋め込まれます。本ツールは X-プロパティも表示するため、社外ツール固有の予約情報や追加メタデータが含まれていないかを確認できます。METHOD プロパティ (PUBLISH / REQUEST / REPLY / CANCEL / COUNTER) はカレンダーの用途 (招待 / 返信 / キャンセル) を示し、転送時に保持すべきかどうかの判断材料になります。

よくある質問

入力データはサーバーに送信されますか?
いいえ。**自前の iCalendar パーサー** (RFC 5545 ベース) で line folding / コンポーネント階層 / DATE-TIME 整形 / エスケープ処理まですべてブラウザ内 JavaScript で処理します。外部 API もありません。
対応している iCalendar バージョンは?
**iCalendar 2.0 (RFC 5545)** + **RFC 7986 拡張プロパティ** (NAME / DESCRIPTION / X-WR-CALNAME / X-WR-CALDESC) を解析。Google Calendar / iCloud Calendar / Outlook / Notion カレンダー / Zoom ミーティング招待 / TimeTree などがエクスポートする `.ics` をそのまま読めます。
`line folding` (継続行) って何ですか?
iCalendar 仕様では **1 行が 75 オクテットを超えると、次の行頭に空白 (SP / HT) を付けて継続** します (RFC 5545 §3.1)。本ツールは継続行を **自動で結合** してからパースするので、wrap された長い DESCRIPTION や RRULE もそのまま扱えます。
**繰り返しルール (RRULE)** はどう表示されますか?
`RRULE:FREQ=WEEKLY;BYDAY=MO;COUNT=12` のような RRULE を **FREQ / INTERVAL / COUNT / UNTIL / BYDAY / BYMONTH / BYMONTHDAY** に分解して**人間が読める形でチップ表示**します。**EXDATE** (除外日) と **RDATE** (追加日) も別に表示。本ツールは展開した発生日リストは出さず (将来日付の計算は別ツール = cron-next や countdown を想定)、ルール仕様だけを可読に表示します。
**DTSTART / DTEND** はどの形式で表示されますか?
iCalendar の basic 形式 `20260608T100000Z` を **拡張形式 `2026-06-08T10:00:00Z`** に整形して表示します。`Z` 終端は **UTC** チップ、**`VALUE=DATE`** (全日予定) は **All day** チップ、**`TZID=Asia/Tokyo`** は **TZ: Asia/Tokyo** チップで横に出します。
**全日予定** (VALUE=DATE) はどう判別されますか?
iCalendar の `DTSTART;VALUE=DATE:20260811` のような **日付のみの値** は `VALUE=DATE` パラメータ または **8 桁の数値だけ** で自動判定し、**All day** チップで表示。日本の祝日や誕生日カレンダーの全件が該当します。
**ORGANIZER / ATTENDEE** の `CN` / `ROLE` / `PARTSTAT` はどう表示されますか?
出席者の **`CN=山田 太郎`** が表示名、**`mailto:`** から **メールアドレス**、**`ROLE`** (REQ-PARTICIPANT / OPT-PARTICIPANT / CHAIR)、**`PARTSTAT`** (ACCEPTED / TENTATIVE / DECLINED / NEEDS-ACTION)、**`RSVP`** (TRUE / FALSE)、**`CUTYPE`** (INDIVIDUAL / GROUP / RESOURCE / ROOM) はチップで表示。複数人の出席者は全件並びます。
**VTIMEZONE** はどう扱われますか?
**TZID** だけを抽出して **Timezones** セクションに列挙、STANDARD / DAYLIGHT の **件数** をバッジ表示。具体的な開始時刻 / オフセット規則の解析は外部の IANA TZ DB に任せる方針 (本ツールは「何の TZ が定義されているか」だけを見せる)。
**VALARM** (通知) はどう表示されますか?
各 VEVENT / VTODO に紐づく **VALARM** は **Alarms** セクションに展開、**`ACTION`** (DISPLAY / EMAIL / AUDIO)、**`TRIGGER`** (`-PT15M` = 15 分前, など)、**`DESCRIPTION`** / **`SUMMARY`** / **`REPEAT`** / **`DURATION`** を表示。
**`X-` で始まる拡張フィールド**は?
X-WR-CALNAME / X-WR-CALDESC / X-WR-TIMEZONE / X-APPLE-* / X-MICROSOFT-* など、ベンダー拡張は **その他のフィールド** セクションに raw 表示します。CALSCALE / METHOD / PRODID / VERSION のカレンダー全体の属性は別途上部に表示。
**チェーン (複数 VCALENDAR)** は解析できますか?
はい。**`.ics` エクスポートに複数の `BEGIN:VCALENDAR` ブロック** が含まれていれば、それぞれ別カードとして表示します。複数アカウントからまとめてエクスポートした場合も一気に確認可能。
vcard-info / pem-parse / epub-info との関係は?
**読み取り専用 metadata viewer シリーズ**: vcard-info (.vcf 連絡先) / pem-parse (X.509 cert) / epub-info (EPUB) / archive-info (ZIP) / midi-info (MIDI) / pdf-pages-info (PDF) と同じ「ファイル / テキストを貼って中身を見るだけ、編集なし」パターンです。

「送らない」を確かめるには

このツールは入力データを外部に送信しません。仕組み・監査手順・運営方針は以下で詳しく説明しています。

類似のツール

vCard (.vcf) パーサー — 連絡先ファイルを解析・写真・住所表示

vCard (.vcf) パーサー — 連絡先ファイルを解析・写真・住所表示

**`.vcf` 連絡先ファイル** (vCard) を貼り付けるか選択すると、**名前 (N / FN)**、**電話番号** (CELL / WORK / HOME / FAX を TYPE 別に分類)、**メールアドレス**、**住所** (郵便番号 / 都道府県 / 市区町村 / 番地 / 国 を構造化)、**組織** (ORG)、**役職** (TITLE / ROLE)、**ニックネーム**、**誕生日 (BDAY)**、**記念日 (ANNIVERSARY)**、**写真 (PHOTO Base64)**、**URL**、**カテゴリ**、**Note**、**X-** 拡張フィールドを解析。**vCard 2.1 / 3.0 / 4.0** に対応、**複数連絡先** の連結貼付もチェーン表示。**Line folding** (75 文字超の継続行)、**QUOTED-PRINTABLE** (v2.1 国際文字)、**Base64 写真** の **inline data URL 復元** に対応。**完全にブラウザ内** で解析、連絡先データはサーバーに送信されません。Google Contacts / iCloud / Apple Contacts / Outlook の `.vcf` 出力をすべて受付け、引っ越し時のデータ確認・名刺データの確認・古い .vcf の中身チェックに。

開発
EPUB メタデータビューア

EPUB メタデータビューア

EPUB ファイル (.epub) をドロップして、表紙画像と書誌情報を表示します。dc:title / dc:creator (役割付き)・dc:language / dc:publisher / dc:identifier (ISBN 等)・dc:date / dc:modified / dc:description / dc:subject (タグ)・dc:rights を OPF パッケージから抽出し、spine の読み順、manifest のファイル一覧 (id・href・media-type・properties)、EPUB バージョン (2.0 / 3.0 / 3.1)、container.xml の rootfile 情報を表示。EPUB は ZIP コンテナなので fflate でブラウザ内のみ展開し、サーバーには一切送信されません。

開発抽出
X.509 PEM 証明書パーサー — SSL/TLS 証明書を解析・有効期限チェック

X.509 PEM 証明書パーサー — SSL/TLS 証明書を解析・有効期限チェック

**`-----BEGIN CERTIFICATE-----`** で囲まれた **X.509 PEM 証明書** を貼り付けると、**Subject** (CN / O / OU / C / ST / L / EMAIL)、**Issuer** (発行者)、**有効期限** (Not Before / Not After / 残り日数 + 失効バッジ)、**シリアル番号**、**署名アルゴリズム** (RSA-SHA256 / ECDSA-SHA384 等)、**公開鍵タイプ** (RSA 2048 / EC P-256 等)、**SHA-1 / SHA-256 フィンガープリント**、**SAN** (DNS / IP / Email / URI)、**Key Usage** / **Extended Key Usage**、**Basic Constraints** (CA フラグ / Path Length)、**SKI / AKI** を解析します。**チェーン (複数 cert)** も連結貼付で一覧表示。SSL/TLS 証明書のトラブルシューティング、有効期限監視、SAN の DNS 一致確認、Let's Encrypt 自動化のデバッグに。**完全にブラウザ内** で処理 (@peculiar/x509 + Web Crypto API)、証明書はサーバーに送信されません。

開発セキュリティ
ZIP アーカイブ内容ビューア

ZIP アーカイブ内容ビューア

ZIP ファイルをドロップして、解凍せずに中身を一覧表示します。総ファイル数・全体サイズ・圧縮率・アーカイブコメントに加え、各エントリのパス・圧縮前後のサイズ・圧縮方式 (Stored/Deflate/Deflate64/BZIP2/LZMA/Zstandard)・最終更新日時・CRC32・暗号化フラグ・ディレクトリ判定を表示。Central Directory だけを読む自前パーサで動作するため、ファイルの中身データは展開せず、サーバーにも送信されません。

開発抽出