近年、移動しながらネットワークにアクセスし、情報を得ることができる携帯端末が普及している。携帯電話・PHSの加入契約数の推移によると、携帯端末の中で携帯電話だけをみると、平成19年12月末時点で普及率が78.7%となっている。また、第3世代携帯電話の契約者数の推移によると高速なデータ通信が可能な第3世代携帯電話が携帯電話のうちの82.9%を占めていて、ほぼすべての携帯電話でWebコンテンツの閲覧が可能であるといえる。
携帯端末を用いて屋外で通信をする際、携帯端末は、基地局との通信のためにケーブルではなく電波を利用している。
電波を利用して通信している以上、携帯端末の通信品質は常に最良のものであるとは限らない。携帯端末でWebコンテンツの閲覧をする際、トンネルやビルの中などの携帯端末が圏外の場所でコンテンツの閲覧をしようとすると通信ができず、閲覧したいタイミングでコンテンツが表示されない。また、通信環境が悪い場合など速度が遅い場合もWebコンテンツの閲覧にストレスを感じることがある。そのような場合でも、コンテンツがキャッシュされていれば、コンテンツの閲覧が可能になり、コンテンツをスムースに表示させることができる。
一度閲覧したコンテンツについてキャッシュを保存することにより、次回同じコンテンツにアクセスする際にキャッシュを利用することができる。
また、コンテンツのキャッシュが一度閲覧したコンテンツに限られた場合、ユーザーがキャッシュの恩恵を受けられる範囲がとても狭まってしまう。まだ閲覧していないコンテンツであってもユーザーがそのコンテンツを閲覧する可能性がある場合、事前にキャッシュを保存することにより、キャッシュを利用してコンテンツを表示させることができる。 本研究では、コンテンツ上に記述されたキャッシュコントロールのためのタグを元にスコアを計算し、コンテンツをキャッシュするシステムを提案する。
meta要素とはWebページの性質や管理情報など、Webページ自身の情報であるメタデータを指定するための要素である。HTMLのHEAD部に記述することにより、ブラウザやWebサーバに情報を渡すことができる。著作者などの情報を記したり、検索エンジン向けの情報を指定したりするために使われているが、HTML4.01[3]ではmeta要素は将来の拡張のためのものとされており、標準的なメタデータの要素名と値の組み合わせは定義されていないので利用者が要素名と値を独自に定義することができる。meta要素は次のように記述する。
<meta name=”要素名” content=”値”>
URIクエリはユーザーが入力したパラメータの送信したりWebページ間でパラメータの受け渡しを行う時などに用いられる。URIの後ろを「?」記号で区切り、要素名や値を含めたクエリ文字列として受け渡ししたい文字列を記述することで、サーバに情報を送信することができる。 クエリ文字列は名前と要素名と値を独自に定義することができる。 URIクエリは次のように記述する。
http://URI?名前=要素名:値
コンテンツの制作者が、HTMLドキュメントにキャッシュコントロールのための要素を記述する。その記述を元に、コンテンツのキャッシュを行う。
キャッシュコントロールのための要素を記述することにより、コンテンツ自身の性質とリンク先のコンテンツの性質を示すことができる。
前者のコンテンツ自身の性質はHTMLにmeta要素として記述し、後者のリンク先のコンテンツの性質はURIクエリに記述する。コンテンツの性質は キーワード(Keyword)・重要度(priority)・変化度(variability)という3つの要素について記述することにより判断される。
本章では、上記の3つの要素はどのようなものか、また、実際にHTMLドキュメントにキャッシュコントロールのためのタグを記述する方法について述べる。
コンテンツの内容を示すキーワードを記述する。キーワードは利用者がコンテンツの内容を判断しやすいようなものが望ましい。
ここで記述するキーワードは無意味な単語を大量に並べるのではなく、コンテンツの内容を的確に示したものを記述するべきである。キーワードには関連度に応じた値をつけることができる。値は0~1までの数値で示す。関連度が高ければ1に近く、関連度が低ければ0に近い値をつける。
キーワードに対する値が指定されていない場合は値=0.1として計算される。
キーワードはコンテンツ自身に対しては
<meta name="keyword" content="東京=0.6,秋葉原=0.9">
のように記述する。
また、リンク先のコンテンツに対しては
<img src="./images/test.jpg?tdu-cache-control=keyword:電機,情報=0.7">
のように記述する。
上記の例では、コンテンツ自身に対してはキーワードが「東京」で値0.6、キーワードが「秋葉原」で値0.9であることを示す。またリンク先のコンテンツ(./images/test.jpg)に対してはキーワードが「電機」で値0.1、キーワードが「情報」で値0.7であることを示す。
重要度が高いものには、利用者にとって重要な情報と、コンテンツの関連性で重要な情報がある。利用者にとって重要な情報とは次のようなものである。
一方、コンテンツの関連性について重要な情報とは次のようなものである。
また、あまり重要でない情報は次のようなものが考えられる。
重要度は、無条件に高重要度に設定するのではなく、天気予報サイトのお天気マークのように、そのコンテンツの核となる閲覧者が参照する確率の高いもの、または、コンテンツ制作者が閲覧者に対して見てほしい広告などが高重要度に設定されるべきである。
重要度は1~5までの値で指定する。priorityが指定されていない場合はpriority=1として計算される。
重要度はコンテンツ自身に対しては
<meta name="priority" content="3">
のように記述する。
また、リンク先のコンテンツに対しては
<img src="./images/test.jpg?tdu-cache-control=priority:5">
のように記述する。
上記の例ではコンテンツ自身の重要度が「3」であることを示す。また、リンク先のコンテンツ(./images/test.jpg)の重要度は「4」であることを示す。
コンテンツには、長期間変化しないスタイルシートのようなコンテンツや刻々と変化する株価情報のようなコンテンツなど変化の度合いが様々ある。
コンテンツの変化度を1~5までの値もしくは変化度を示す文字列で記述する(表1)。variabilityが指定されていない場合はvariability=3 variable として計算される。
値 | 文字列 | どのようなコンテンツに指定するか | |
---|---|---|---|
1 | constant | ほぼ変化のないもの | 例)スタイルシート |
2 | stable | 変化の少ないもの | 例)企業紹介のWebページ |
3 | variable | 日々変化するもの | 例)ニュースサイト |
4 | kaleidoscopic | ひんぱんに変化するもの | 例)天気予報サイト |
5 | throwaway | 瞬間的に変化するもの | 例)株価サイト |
変化度はコンテンツ自身に対しては
<meta name="variability" content="stable">
のように記述する。
また、リンク先のコンテンツに対しては
<img src="./images/test.jpg?tdu-cache-control=variability:4">
のように記述する。
上記の例では、コンテンツ自身の変化度が 2 stable (変化の少ないもの)であることを示す。また、リンク先のコンテンツ(./images/test.jpg)の変化度は 4 kaleidoscopic (ひんぱんに変化するもの)であることを示す。
前述の keyword,priority,variability の要素は、1つまたは複数を組み合わせて指定することができる。
ここでもし、keywordの要素が複数回指定された場合は、前出のものと合算される。また、priority および variabilityの要素が複数回指定されている場合は、後出のものが採用され、前出のものは無効となる。
コンテンツ自身に対しては、上述の各要素をコンテンツ自身に記述する方法にならい、meta要素を記述することで指定する。meta要素を組み合わせ
<meta name="keyword" content="東京=0.6,秋葉原=0.9">
<meta name="priority" content="3">
<meta name="variability" content="stable">
のように記述する。
また、リンク先のコンテンツに対してはURIクエリを用いて
./images/test.jpg?tdu-cache-control=要素1:値;要素2:値A,値B;要素3:値
のように要素名と値の間にコロン(:)、値が複数あれば値と値の間にカンマ(,)要素指定の終わりにセミコロン(;)で区切り、記述する。実際には
<img src="./images/test.jpg?tdu-cache-control=keyword: 東京=0.6,秋葉原=0.9;priority:3;variability:stable">
のように記述する。
上記の例では、コンテンツ自身およびリンク先のコンテンツ(./images/test.jpg)に対して
第3章ではキャッシュのコントロールのために keyword,variability,priority という3つの要素をHTMLドキュメント上に記述すると述べた。本章では記述された要素によってどのようにキャッシュのコントロールを行うかについて述べる。
キャッシュの動作に関しては次のようなコントロールが考えられる。
このようなキャッシュの動作は、記述された要素を元に計算され決定されるが、以下、4.2節より各要素の指定がどのようにキャッシュ動作に影響するかについて述べる。
図1にkeywordとpriorityの値とキャッシュの動作について示す。この2つの値からキャッシュすべきか否かを判断する。
keywordやpriorityの値の大きいものは、ユーザーが閲覧する可能性の高いものであると考えられる。
keywordの値および、priorityの値の大きいもののキャッシュを保存する。どちらも低いものについては、キャッシュの保存を行わないこととする。
図2にkeywordとvariabilityの値とキャッシュの動作について示す。この2つの値からキャッシュすべきか否か、先読みすべきか否かを判断する。
keywordの値が大きくvariabilityの値が小さいもののみキャッシュを保存する。変化度の大きいコンテンツのキャッシュを保存すると、次回閲覧したときにそのキャッシュが表示されてしまうと古いコンテンツを表示することになり不都合が生じる。よって、variabilityの値が大きいものはキャッシュしない。
また、keywordの値の大きいコンテンツは、先読みをすることで、画像の多いコンテンツなど特にスムースにコンテンツを閲覧することができる。
図3にkeywordとvariabilityの値とキャッシュの動作について示す。この2つの値からコンテンツのキャッシュがない場合ダミーを返すかエラーを返すかについて判断する。
コンテンツのうち、priorityの値の低いものは重要度が低い。重要度が低いものは、エラーを返さずとも、ひまわりの画像をチューリップの画像に変更されても影響がないと考える。利用者側に立つとエラーとなってコンテンツが閲覧できないよりも何らかのコンテンツが表示された方が都合がいい。
priorityの値が大きいコンテンツは、重要度が高い。重要度が高いコンテンツのダミーを返してしまうと、重要なものが正しく表示されないことがあり不都合である。そこでpriorityの値が大きいものは、コンテンツが取得できないときはダミーを返す。
以上のことを勘案し、キャッシュの動作は下記の通りになる。
本章では、本稿で述べたキャッシュコントロールシステムを実際に運用する応用例について述べる。
i Menu(NTTドコモ) au one(KDDI) Yahoo!ケータイ(ソフトバンクモバイル) など、携帯端末では、各キャリアが運営するポータルサイトと呼ばれるサイトに簡単にアクセスできるようになっている。また、infoseek携帯やgoogleモバイルなど、検索系の会社もポータルサイトを運営している。
このようなポータルサイトは、検索のための窓や、ニュース速報、広告、カテゴリ分けされたリンクなどを提供しているが、ここに本研究のキャッシュコントロールシステムを応用させることが考えられる。
図4に携帯端末向けのポータルサイトの例を示す。
ニュース速報内の見出しがリンクになっているが、ここに要素を設定する。例えば「地上げ屋脱税容疑で東京地検特捜・・・」という見出しがある。この見出しのHTMLタグを
<a href="./news/20xx/xxyy/news001.html?tdu-cache-control =keyword: 逮捕=0.6,地上げ=0.9;priority:5">地上げ屋脱税容疑で東京地検特捜部強制捜査</a>
などとすると、このニュースが先読みされることになる。
また、「AD広告社」なる広告がサイト内にある。その画像ファイルのHTMLタグを
<a href="http://広告社URI"><img src="./adimg01.jpg?tdu-cache-control= priority:5"></a>
などとすると、この画像が先読みされることになる。
このように、ポータルサイトに本稿で述べた携帯端末向けキャッシュコントロールシステムを応用することで先読みをさせ、コンテンツの閲覧をスムースにさせることができる。このことは、ユーザーへのサービス向上ばかりでなく広告の表示が速くなることで、広告主へのアピールポイントとなると考えられる。
携帯電話向けの楽曲配信を行う場合、その曲をユーザーに試聴させる場面が考えられる。新曲など、前述の例にならい、多くのユーザーがアクセスするであろう楽曲に先読み条件に合うように要素を指定しておく。
携帯端末は、通信速度が遅い場合が多いが、先読みを行っておくことで楽曲の再生をスムースに行うことができる。動画配信でも、同じように先読みのための要素指定を行うことで、スムースな動画の再生が期待できる。
さきの5.1節5.2節で述べた応用例は、どちらもコンテンツ制作者が記述するタグを元にしてキャッシュや先読みを行う例である。ここで、ユーザー自らがキャッシュコントロールの設定をすることができるリンクサイトの例を考える。
図5にユーザーの好みに合ったリンクサイトの例を示す。
この例では、ユーザー自身が、好みに合わせてリンクサイトを作る。「MYニュース」内には、ユーザーの指定したキーワードを元にニュースが表示される。このリンクには先読み条件に合うように要素が指定してある。また、「MY天気」内の概況のリンク先や、「MY株価」内の会社名のリンク先、「MYリンク」内の各リンク先にも先読み条件に合うように要素が指定してある。このことにより、各リンク先のコンテンツをスムースに閲覧できる。
キャッシュコントロールためのタグを記述することにより、キャッシュをコントロールできることを述べた。HTTP1.1でもキャッシュコントロールのためのオプションが用意されている[5]がHTTP1.1において制御できるのはキャッシュするか否か、キャッシュが最新のものであるか否か、キャッシュされているデータとサーバのデータが同じものか否か、キャッシュの期限はいつまでかという情報に限られ、キャッシュのコントロールの範囲が狭い。そこで、本研究のキャッシュコントロールが有用となる。
コンテンツ制作者がタグを記述する場合、コンテンツ制作者がつけるタグは本当にコンテンツの性質を示すものであるという保証はない。キャッシュのコントロールがどのように行われているかということが知られてしまうと、ユーザーの利益に関係なくキャッシュされてしまうなど、コンテンツ提供者の思惑通りにキャッシュシステムが利用されてしまう懸念がある。
5.3節で述べたような、ユーザーが好みに合わせてリンクサイト作り、キャッシュコントロールのためのタグを自らの判断で記述することで、ユーザーの利益につながるキャッシュコントロールシステムとして有用に働くと考えられる。
ここでWebという莫大なコンテンツの集合を考えた場合、ユーザーが自らキャッシュコントロールのタグをつけるのには限界がある。HTMLドキュメントに記述されたタグ情報だけで判断を行うのではなく、閲覧の履歴等の統計情報を元にキャッシュを行う学習型のキャッシュシステムを用いる必要がある。
たとえば、本稿で述べたキャッシュコントロールシステムではキーワードの値が0.6より大きい場合に無条件でキャッシュを保存するとした。実際の運用ではキーワードの値をコンテンツの制作者が決められるために
<meta name="keyword" content="あ=1">
などとされてしまえば、無条件でキャッシュを保存してしまう。こうなってしまうと、キャッシュを保存する上でデータを取捨択一しているとはいえない。
そこでキーワードの重み付けをコンテンツ制作者がするのではなく、ユーザー側で重みを計算する必要がある。ユーザーがよく閲覧するコンテンツに付加されているキーワードを学習しスコアがより高くなるようにしなければならない。
また、検索エンジンの上位に来るようにキーワードを設定する行為が行われている。コンテンツに無意味なものであっても、一般のユーザーが検索する回数が多いキーワードをコンテンツに付与するなどの行為である。
そのような場合を考え、キーワード数が多くなるほどに、スコアを低下させる仕組みを考えなければいけない。