2025/10/04 13:58 Microformats – building blocks for data-rich web pages

やあ、ロボ子!今日はmicroformats 2について話すのじゃ。

microformats 2ですか。個人のサイトでプロファイルや投稿をマークアップするのに使うものですよね。

そうそう!開発者はこのデータを使って色々なアプリケーションを作れるぞ。でも、まずはデータを解析して処理する方法を知る必要があるのじゃ。

なるほど。解析にはパーサーが必要になるんですね。Go、JavaScript、PHP、Python、Ruby、Rustで利用できるものがあるんですね。

その通り!パーサーは、microformats 2でマークアップされたWebページをMF2 JSONデータ構造に変換してくれるぞ。

記事に「異なる URL にリダイレクトされる可能性のある URL から実際の microformats データがフェッチされる場合がある」とありますが、リダイレクトも考慮する必要があるんですね。

そうじゃ!リダイレクトチェーンの最終URLを「有効なURL」と呼ぶのじゃ。相対URLを解決するために、ベースURLも必要になるぞ。

HTTPリクエストが200以外の値を返した場合でも、解析するものが何もないとは限らないんですね。410 Goneレスポンスには、以前の内容の削除を説明するh-entryが含まれている場合がある、と。

よく見てるの!microformats 2のデータを消費する時は、生のHTMLをフェッチしてJSONに解析し、扱いやすい形式に処理するのが一般的じゃ。

元のHTMLのコピーをアーカイブしておくと、後で再解析する時に便利ですね。有効なURLも一緒に保存しておくと、相対URLを正しく解決できるんですね。

その通り!PHPのXRayみたいなライブラリは、クリーニングとサニタイズもしてくれるぞ。

解析されたページには、たくさんのmicroformatデータ構造が含まれている場合があるんですね。itemsリストがあって、それぞれがpropertiesやchildrenキーの下にネストされている、と。

そうじゃ!typeは構造体が何を表しているかを識別するのに使うぞ。properties情報は、トップレベルとchildrenキーの下の構造体を扱う時に役立つんじゃ。

探している構造体がitemsリストのトップレベルにあるとは限らないんですね。mfツリーをトラバースして、フィルタリングコールバックに一致する構造体を返す関数を作ると便利そうですね。

その発想は天才!properties辞書内の各キーは、プロパティの値のリストにマップされるのじゃ。値は、プレーンな文字列、埋め込みHTML構造体、img/alt構造体、ネストされたmicroformatデータ構造のいずれかの混合の可能性があるぞ。

プロパティ値がプレーンテキスト文字列だと決めつけてはいけないんですね。ネストされた構造体のvalueキーを使って、同等のプレーンテキスト値を取得できるんですね。

その通り!画像URLを予期する場合は、img/alt構造体を確認して、プレーンテキスト値にフォールバックするのじゃ。

著者シップアルゴリズムなど、データを標準化された方法で解釈するためのアルゴリズムもあるんですね。

そうじゃ!他にも、代表的なh-card、h-feedやh-entryの消費方法、コメントの表示方法などがあるぞ。

microformats 2データを消費するには、信頼されていないデータを処理する必要があるんですね。XSSなどの攻撃を防ぐために、HTMLサニタイザーに通したり、URLを検証したり、リソースをプロキシしたりする必要があるんですね。

よく分かってるの!Webは多様な場所であり、microformatsは柔軟な方法じゃ。アプリケーションは可能な限り多くのデータを受け入れるように努める必要があるぞ。そして、実際のデータでテストすることが重要じゃ!

勉強になりました!

最後に一つ。microformats 2をマスターすると、モテモテになれる…かもしれないぞ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。