RSSが衰退し、SNSが繁栄する時代に改めて考えたい、ニュースリリースのマークアップ

7月下旬のことですが、またひとつフィードリーダーが終了してしまいました。

終了の理由はこの数年で利用者も大幅に減少しており、サービスとしての役割を終えたとのことですが、ユーザーが別サービスに移行したというより、RSS/Atomフィードで新着をチェックする需要そのものが減っているのでしょうね。代わりに今はSNSで更新告知をしたり、プッシュ通知ができるサービスも増えたりしています。

RSS/Atomフィードでの更新チェックは、10分に1回、30分に1回などの間隔で巡回をするため、

  • リアルタイム性に劣る
  • 更新頻度が少ないサイトほど無駄な通信の割合が高い

など時代遅れの面もありますが、サイトの新着情報を確実に把握するという意味で総合的に考えると、その特性は未だ捨てがたいものです。

そんな時代に、ウェブ制作者がユーザーの利便性を損なわないためにできることは何でしょうか。先に挙げたようにSNSでの情報発信やプッシュ通知の導入などもひとつの手ではあります。しかし、それより先に考えるべきことはHTMLのマークアップだと思います。なぜなら優れたマークアップであれば、たとえRSS/Atomフィードが絶滅しても、SNSやプッシュ通知すら衰退した未来であっても、時代の情勢に合わせてサイト運営側が追従する必要もなく「ユーザーのパワーを使って何とかなる」可能性が高まるからです。

この記事では、「より良い機能を提供する」のではなく、「最低限の機能を提供」しながらその最低限である土台の部分に全力を注ぐ方針でのサイトの作り方を考え、その中で分かりやすくニュースリリースのマークアップを例に挙げてみます。

ニュースリリースに必要なマークアップの考え方は他とは違う

§

というわけでニュースリリースのあるべきマークアップを考えてみます。企業のコーポレートサイトをイメージしてこの記事では「ニュースリリース」と呼びますが、「新着情報」や「更新履歴」でも同じことです。

ところで良いマークアップとは何か。HTML5の新しい要素を積極的に使うこと、WAI-ARIAを導入すること、メンテナンスしやすいクラス名の命名規則を考えること、などいろいろあるでしょうが、ニュースリリースの場合はもっと重要なことがあります。

ニュースリリースはだいたいトップページに置かれることが多いですが、そのサイトに関心があるユーザーは1日1回トップページにアクセスして新着がないかチェック……って、そんな原始的な方法は効率悪くてやってられません。ではトップページのニュースリリースは誰のためにあるのでしょうか。

  • はじめて訪れたユーザー
  • 「そういえば最近あのサイトどうなっているんだろう」程度の関心度でときどき見に来るユーザー
  • サイトを運営している企業、団体、個人に興味があり、すべての更新情報を把握したいユーザー

上2つは手動アクセスでも良いでしょうが、最後のケースは自動化したいところです。これまではその自動化をフィードが担っていましたが、それが衰退したときどうするか。普遍的な存在であるHTMLにフィード的な役割を担わせてしまえばいいのです。過去にはフィードを配信していないサイトの代わりに、勝手にフィードを提供するサービスがいくつかありました(「Page2RSS」など)。それが著作権的にどうかという問題は記事の趣旨と外れるので触れないでおきますが、実際のところウェブの世界では大元のサイトが不便だとしても、その情報に価値があればどこかの誰かが便利にしてくれるという面があります。その代わり、根幹となるHTMLだけはきちんとしておく必要があります。

  • もっと分かりやすい例を出すと、ほとんどのサイトはサイト内検索を自前で作らずとも Google のサービスを活用すれば事足りるでしょう。しかし、そのためには <title> をきちんと設定する等、マークアップを疎かにしてはなりません。

そのために考えるべきことはこんなところでしょう。

  • ニュースエリアの大枠(<div><section>)にIDを付与する。
  • ひとつの日付で複数のニュースがあるとき、入れ子を多用するなど無闇に複雑にしない。
  • 一文で済む短い告知の時でも、必ず詳細ページを作る。
  • その他、 bot や diff の気持ちになってマークアップする。

IDは何のため

§

HTMLにおける id 属性は何のために付与するのでしょうか。良くあるケースとしてはこんなところでしょうか。

  • 長いページの特定の部分へリンクするため(いわゆるページ内リンクとか)
  • 要素同士の紐付けのため(ラジオボタンの <input><label> とか)
  • CSSによるスタイル付けのため

これらはいずれも制作側の視点で付けるものですが、ユーザー側の視点でも考える必要があります。ニュースのチェックを自動化したいと考えるユーザーは何をするか。「トップページを定期的に巡回し、レスポンスデータ(HTML)を解析して、diffを取って差分のみを抽出すればいい」と考えるのは自然なことでしょう。フィードがやっているのはまさにそういうことですから。

その、HTMLの解析を行うにあたり、最初に必要になるのが「肝心のニュース情報はトップページのどこにあるのか」という検索です。ただでさえ、トップページはさまざまな情報が混じり合っているものですから、まずはページの中からニュースリリースの場所を特定する必要があります。そこで <div id="news"> のようにIDが設定されていたらどんなにありがたいことか。

欲を言えば、一つ一つのエントリーにもIDがあるとなお良しです。私が理想的と考えるマークアップはこれ。

<div class="news_area" id="news">
  <h2 class="news_heading">ニュースリリース</h2>
  <ul class="news_entries">
    <li class="news_entry" id="news_20170816"><a href="news/20170816">8月16日のニュース</a></li>
    <li class="news_entry" id="news_20170815"><a href="news/20170815">8月15日のニュース</a></li>
  </ul>
</div>

このようにすれば、 XPath で //*[@id="news"]/*[@class="news_entries"]/*[@class="news_entry"] とした上で、それぞれのエントリーのIDを取得して、DBに格納する際のテーブルの主キーに設定することが可能です。

もしブラウザで閲覧されることだけを考えていると、たぶんこういうマークアップをしてしまうと思います。

<div class="news_area">
  <h2 class="news_heading">ニュースリリース</h2>
  <ul class="news_entries">
    <li class="news_entry"><a href="news/20170816">8月16日のニュース</a></li>
    <li class="news_entry"><a href="news/20170815">8月15日のニュース</a></li>
  </ul>
</div>

これはアクセシビリティの観点から改善の余地があるマークアップです。アクセシビリティというと、視覚障害者がスクリーンリーダーで聞けるようにとか、肢体不自由者が(マウスでなく)キーボードで操作できるように、という面が多く語られますが、「ユーザーがHTMLを活用しにくい」という視点で見ると、「IDくらい付けたら?」と思ってしまいます。

IDが付いているかいないかというだけで、両者の使い勝手は雲泥の差なのです。もっとも、ニュース部分を自動生成しているならともかく、手運用でHTML更新する場合、各エントリーにミスなくユニークなIDを付与するのは大変ですから、IDの設定はニュースエリアの大枠(上記マークアップ例では id="news")のみにした方がいいでしょう。手運用を想定した現実的なマークアップはこれ。

<div class="news_area" id="news">
  <h2 class="news_heading">ニュースリリース</h2>
  <ul class="news_entries">
    <li class="news_entry"><a href="news/20170816">8月16日のニュース</a></li>
    <li class="news_entry"><a href="news/20170815">8月15日のニュース</a></li>
  </ul>
</div>

ちなみに、株式会社ピクセルグリッド(www.pxgrid.com) のトップページを見ると、ニュース&トピックスのところだけ id="news" が付与されているのが分かります。CSSで #news が使用されている様子はありませんし、もしかしたらユーザーの自由な活用を考慮して付けたものなのかなあと想像しています(ぜんぜん違う理由だったらすみません)。

ピクセルグリッド社のトップページのマークアップ

ふぅ、IDを付与すべきという話だけでだいぶ長くなってしまいました。次へ進みましょう。

必ず詳細ページを作る

§

大抵、ニュースリリースというのはトップページにはタイトルのみを表示し、詳細ページへのリンクが貼られます。しかし「サイトをリニューアルしました。」等の一文で済む短い告知の時、詳細ページがないケースもあります。情報の分量だけを考えれば詳細ページが不要という考えも一理あるのですが、ユーザーの行動を考えれば分量に関わらず作るべきです。

例えば、オンラインゲームのサイトで「8月16日 20:00〜21:00の間はメンテナンスを行います。」という情報を伝えたいとします。たった一文ですが、もし詳細ページがなくトップページのみに情報が掲載されていたら。SNSでの会話を想定してみます。

  • ユーザーA「今日の20:00からメンテだってさ。」
  • ユーザーB「@userA まじで。それどこ情報?」
  • ユーザーA「@userB 公式サイトに載ってるよ。 https://example.com/」

これが非現実的と言うことがお分かりでしょうか。会話の最後にユーザーAはトップページのURLを載せています。情報がトップページにしか書かれていないのですから、そうするしかないわけです。しかし、ユーザーBは情報量が満載のトップページから当該のお知らせを探さなくてはならないのです。仮に「ページの下の方」という位置が分かっていたとしても、外出先の地下道で電波状態が悪かったら、大量の画像ロードでページがなかなか表示されずイライラしてしまうかもしれません。

そういう不便の対策として、最近ですとURLを載せずに画面キャプチャーを撮る風潮があります。キャプチャーなら、ページがどんなに長くても当該部分だけをピックアップするのは簡単ですからね。でも、画像(のみ)で情報を伝えるというのは良くない方法です。EメールやDMのように1対1の関係ならまだいいのですが、不特定多数が閲覧する状況下ではすべての人が画像を見られるとは限らないからです。

  • ユーザーA「今日の20:00からメンテだってさ。」
  • ユーザーB「@userA まじで。それどこ情報?」
  • ユーザーA「@userB 公式サイトに載ってるよ。 pic.twitter.com/HOGEHOGE」
  • ユーザーC(全盲)「@userA @userB 見えない……orz」

一方、詳細ページがあれば、そのどちらも解消できます。

  • ユーザーA「今日の20:00からメンテだってさ。」
  • ユーザーB「@userA まじで。それどこ情報?」
  • ユーザーA「@userB 公式サイトに載ってるよ。 https://example.com/maintenance/20170816」

専用のページを作る必要があるかというのは、情報量から決めるのではなく「固有のURLを割り当てるメリットがあるか」という面から判断するのが良いのではないでしょうか。

  • 厳密に言うと、必ずしも専用のページを作らなくともIDさえ振ればフラグメント識別子で固有のURLを設定することはできますが、ニュースや新着情報の場合は専用ページにした方が良いと思います。

このように、サイトのページ設計やマークアップを行うにあたっては、自分たちがこれから作ろうとしているサイトがユーザーによってどのように活用されうるのかということを考えると、より良いものになります。

本文中でもチラッと触れましたが、SNSで画面キャプチャーで情報を伝え合う文化が当たり前になっているという事実は、「Twitterに140文字の制限がある」というのも原因のひとつでしょうが、そもそも多くのサイトではページの特定の部分だけを情報共有しやすいように設計されていないという面もあると思います。

今やブラウザには共有機能が当然のように組み込まれている時代、そういう方面からウェブ制作を考えてみるのも必要なことではないかと、RSS衰退のニュースを見ながら思ったのでした。