ふろしき Blog

コンテンツサービスを科学する株式会社ブートストラップ代表のブログ

1300の優良サイトが選んだ「pjax」ライブラリ集と問題点

1300の優良サイトを調査してみたシリーズ、第8回は「pjax」です。

Webアプリケーションには、「http://〜/sample.cgi」のようなクエリストリングでなく、「http://〜/#!/sample」のようにハッシュとして持たせ、Ajaxによってデータを動的に取得する仕組みのものがあります。

その際、「#」や「#!」の後ろに続くパラメータを「ハッシュフラグメント」といいます。「Ajax URL」という呼び方もされます。

インターネット上でこれを実現する場合、Googleが公開しているドキュメントを参考に、URLのデザインを決定することになります。

また、ハッシュフラグメントを利用したハイパーリンクはページ内移動という扱いになるため、「戻る」ボタンが有効に機能しなくなります。これには、pushStateを利用することで改善を図ることができます。

ここで紹介するライブラリは、1300の優良サイトが行っているpjaxの課題対策です。ふろしき.jsの調査では、32件(2.66%)のサイトで対策が確認されました。

navi.js (20件 - 1.53%)

f:id:furoshiki0223:20131022231147p:plain
ハッシュフラグメントを使ったWebページの作成を実現するためのフレームワークです。ハッシュフラグメントの課題を意識することなく、アプリの開発を行えます。

  • 公式サイト:http://navi.grantcr.com/
  • ライセンス:MIT / Creative Commons Attribution-ShareAlike 3.0 Unported License.
  • 開発:Tyler Grant

jQuery Ba Hashchange (12件 - 0.92%)

f:id:furoshiki0223:20131022231220p:plain
「戻る」ボタン、「進む」ボタンがクリックされた際の動作を作りこむライブラリです。

pjaxの弱点

pjaxは一時期盛り上がった手段ではありますが、現在多くのWebサイトが元に戻す傾向にあります。Twitterも一時は採用していましたが、現在は「http://twitter.com/kawada_hiroshi」のようなURL表記にリダイレクトされるようになりました。

pjaxで作ったページは、Googleの検索エンジンのクローラから読み取れるようにするためには、JavaScriptを利用しなくても読み取れるページを「http://〜/?_escaped_fragment_=/sample」のフォーマットに従って作成する必要があります。JavaScriptが無効の環境、つまりクロスブラウザ対応が完全にはならないのです。

ローカルネットワークのアプリケーションでは課題にならないでしょう。業務系アプリの場合だと、どちらが良いか選択の余地は十分にあるかと思います。

このブログの筆者について

川田 寛

コンテンツサービスの開発や運営代行を専門とする集団「株式会社ブートストラップ」の社長です。ネットではふろしきと呼ばれています。

2009年にNTTグループへ新卒入社し、ITエンジニアとしてクラウド技術・Web技術の研究開発と技術コンサルティングに従事。2015年よりピクシブに入社し、エンジニアリングマネージャー・事業責任者・執行役員CCOなど、様々な立場からコンテンツサービスの事業づくりに関わりました。2021年にメディアドゥへVPoEとしてジョインし出版関係の事業に関わったのち、2023年に独立しています。

関わってきたインターネット事業としては、ECサービスのBOOTH、UGCプラットフォームのpixiv(主に海外展開)、制作ツールのpixiv Sketch、VR・VTuber関連ではVRoid、Wikiサービスのピクシブ百科事典など、10を超える多様なCtoCコンテンツサービス。また、NTTドコモのすご得コンテンツ、メディアドゥのWeb3サービスであるFanTopなど、いくつかのBtoCコンテンツサービスにも関わってきました。

幸運なことに、私はコンテンツに関係する幅広いインターネットサービスのテクノロジー&ビジネスの知識を得ることができました。これを日本のコンテンツ発展に役立てたいと思い、株式会社ブートストラップを創業しました。

このブログでは現在、出版社やIPホルダー、ライセンサーといったコンテンツに関わる人々に向けて、インターネット事業に関するTipsや業界内のトレンドなどの情報を発信しています。私と話をしてみたいという方は、以下のフォームより気軽にご連絡ください。

お問い合わせフォーム