5分でできる、プログラムによるsitemap生成講座(Java、sitemapgen4j編)
Blogを使っていると、プラグイン等が利用できるため、あまりやったことはなかったのですが、自分でjsp等でサイトを構築した場合には、サイトマップも自分で生成する必要があります。
特に、記事を適切にGooleにインデックスしてもらうために、Googleウェブマスターツールに送信するためのサイトマップの生成は必須といってよいでしょう。
私はJavaでサイトの構築をしているので、Javaによるsitemap.xmlの生成を行ってみようと思います。
自分でxml文書を生成してももちろん良いのですが、「sitemapgen4j」という便利なライブラリがあるようなので、今回はそれを利用します。
「sitemapgen4j」は比較的簡単にサイトマップ生成を行えるフリーのライブラリです。
通常のWeb用のサイトマップ以外にも、GoogleMobile、GoogleGeo、GoogleCode、GoogleNews、GoogleVideoを生成するクラスがあり、それぞれに適切なサイトマップを生成することが可能なようです。
それでは早速、Web用のsitemapを生成してみることにしましょう。
ここのサイトから、最新のjarをダウンロードしてきます。
私がダウンロードしたときには、「sitemapgen4j-1.0.1.jar」でした。
任意のディレクトリに「sitemap.xml」を生成するには、以下のコードを記述すれば良いです。
import java.io.File; import java.util.Date; import com.redfin.sitemapgenerator.ChangeFreq; import com.redfin.sitemapgenerator.WebSitemapGenerator; import com.redfin.sitemapgenerator.WebSitemapUrl; public class TestBatch { public static void main(String[] arg) throws Exception { WebSitemapGenerator wsg = new WebSitemapGenerator("http://example.com" new File("C:sitemap")); /** WebSitemapGenerator wsg = WebSitemapGenerator .builder("http://example.com" new File("C:sitemap")).gzip(true).build(); */ WebSitemapUrl sitemapUrl = new WebSitemapUrl.Options( "http://example.com/blog/2012/11/tutorial") .lastMod(new Date()).priority(1.0) .changeFreq(ChangeFreq.HOURLY).build(); wsg.addUrl(sitemapUrl); wsg.addUrl(new WebSitemapUrl.Options("http://example.com/blog/2012/10/tutorial").lastMod(new Date()).priority(1.0).changeFreq(ChangeFreq.HOURLY).build()); wsg.addUrl(new WebSitemapUrl.Options("http://example.com/blog/2012/9/tutorial").lastMod(new Date()).priority(1.0).changeFreq(ChangeFreq.HOURLY).build()); wsg.addUrl(new WebSitemapUrl.Options("http://example.com/blog/2012/8/tutorial").lastMod(new Date()).priority(1.0).changeFreq(ChangeFreq.HOURLY).build()); wsg.write(); } }
WebSitemapUrlのOptionsに、URLとlastMod(最終更新日付)、priority(優先度)、changeFreq(更新頻度)をセットして、WebSitemapGeneratorに追加していくだけでOKです。
ちなみに、上記のように、
wsg.addUrl(new WebSitemapUrl.Options("url").lastMod(new Date()).priority(1.0).changeFreq(ChangeFreq.HOURLY).build());
のような書き方だと、少しだけすっきりします。
なお、「sitemap.xml」ではなく、「sitemap.xml.gz」で圧縮したサイトマップを生成するには、
WebSitemapGenerator wsg = WebSitemapGenerator .builder("http://example.com", new File("C:sitemap")).gzip(true).build();
を使いましょう。
タグ:java