\documentclass[a4paper,titlepage]{jsarticle}
\usepackage{verbatim}
\usepackage[dvips]{graphicx}
\pagestyle{empty}
\西暦
\setlength{\textheight}{240mm}
\setlength{\topmargin}{-10mm}
\setlength{\textwidth}{165mm}
\hyphenation{front-end}

\title{アクセスログを用いた自動Bookmark生成システムの開発}
\date{}%ここはブランク
\author{05H082 永田和也}
% 共著の場合は
%\author{xxHxxx 産大太郎 \and yyHyyy 四大与太郎}

\begin{document}
\maketitle\pagestyle{empty}

% 目次
\tableofcontents
\clearpage

\pagestyle{plain}
\setcounter{page}{1}

\section{はじめに}
 インターネットには膨大な量の情報がある。ユーザが知りたい情報や興味のあ
る分野のキーワードをGoogle~\cite{Google}\footnote{Googleとは、ソフトウェア会社Googleが提供する検索エンジンである。}や
Yahoo!JAPAN~\cite{Yahoo!JAPAN}\footnote{Yahoo!JAPANとは、株式会社Yahoo!
が運営するポータルサイトで、検索エンジンはその主力事業である}などの検索エンジン\footnote{検
索エンジンとは、インターネット上に公開されている情報をキーワードなどを使っ
て検索できるWebサイトのことである。}で検索すること
で、簡単に欲しい情報を手に入れることができる。しかし、検索エンジンでの検索
では、入力したキーワードに関する情報しか出てこない。ユーザが興味を
持っている対象は検索すべきキーワードを容易に特定できるため、情報を得るこ
とも容易である。しかし、自分が興味を持つかも知れない対象を探すことは困難
である。テレビや雑誌などの情報媒体の場合、ユーザが受動的でも様々な分野の
情報を提供してくれ、ユーザの興味の幅を広げることを支援してくれる。


 しかし、インターネットの検索エンジンではユーザが能動的に情報を得ようとしない限り情報を手に入れることはできない。そこで、ユーザの興味の対象となり得るWeb
ページを自動的に収集するシステムがあれば、ユーザが受動的でも興味の幅を広
げることを支援できるのではないかと考えた。受動的にでも情報を得られる方法とし
ては、キーワードでの検索など手動のものは向いていないと考え、自動でWebペー
ジを登録することができる自動Bookmark\footnote{Bookmarkとは、任意のWebペー
ジのURIを登録する機能のことである。}生成システムに注目した。また、ユーザに手
間を掛けさせる必要なくユーザの興味の対象を調べる方法として、Webページのア
クセスログの利用を考えた。

\clearpage
\section{卒業研究の目的}

 本研究では、ユーザにキーワード入力による検索や、Bookmarkの手動登録などの
手間を掛けさせずに、ユーザの興味の対象となり得るWebページをインターネッ
トから提案する方法を考案する。
また、実際にproxyサーバ\footnote{proxyサーバとは、ローカルネットワークと
インターネットの境界などで通信を中継するサーバのことである。}の
squid~\cite{squid}\footnote{squidとは、proxyサーバソフトの名称である。
proxyを介してアクセスしたユーザ名、URI、日時、プロトコルなどを記録する機
能がある。}のアクセスログを利用した、研究室内で動作する自動Bookmark生成
システムを開発し、その動作結果から考案した選別方法が有効かどうかを検証す
る。


 ユーザが受動的でいても情報の収集ができるようにし、ユーザが負担を感じる
 こと無く興味の幅を広げられるよう支援をすることが目的である。
また、ユーザにとって有用な情報を収集することで、ユーザの情報収集にかける
 時間を減らすことも目的とする。

\clearpage

\section{Bookmark生成システム}

以下に、既存のBookmark生成システムを示す。
\subsection{自動Bookmark生成システム}
ユーザが特に操作をしなくても自動的にBookmarkを生成するシステム。
\begin{itemize}
 \item{ABM(Auto Book Mark)}
      
      情報安全工学研究室の過去の卒研生が開発した自動Bookmarkシステム。
      proxyサーバのsquidのアクセスログを自動的に蓄積し、そのアクセスログ
      を利用してWeb上にBookmarkを作成する。URIの観閲時期による重みづけと
      観閲回数を利用し点数を計算し、点数の高いURIをBookmarkする。


 \item{EBM(Everybady's Book Mark)}

      前述のABMを改良し、さらにユーザ共有機能を追加させたシステム。アク
      セスログ解析時のURIの重みづけ方法が見直され、手動でBookmarkを登録
      する機能も追加されている。また、複数のユーザで一つのBookmarkを作る
      ことができる。

\end{itemize}

\subsection{ソーシャルブックマーク}
複数ユーザ間でBookmarkをWeb上で共有できるサービス。

\begin{itemize}
 \item{del.icio.us}~\cite{del.icio.us}


      2003年より提供されているソーシャルブックマーク\footnote{ソーシャルブック
      マークマークとは、インターネット上にBookmarkを公開し、他のユーザと
      共有できるサービスのことである。}の先駆けとなったサービス。自分の
      BookmarkをWeb上で管理できるほか、Bookmarkを他のユーザに公開・ 共有
      できる他、それぞれのBookmarkにタグを付けることで全体的な分類や管理がで
      きるなど、さまざまな先進的な機能を備えていた。


 \item{Pathtraq}~\cite{Pathtraq}

      サイボウズ・ラボ株式会社が提供しているWebサイトランキング化サービ
      ス。ユーザはブラウザに専用の拡張ソフトをインストールし、サーバにア
      クセスログを送信する。それぞれのユーザから送信されたアクセスログの
      統計をとり、ランキング形式で表示する。ソーシャルブックマークに似た
      システムで、ユーザ間の情報の共有を主な目的としている。

\end{itemize}
\clearpage

\section{開発したシステム}

\subsection{システムの概要}

本システムではアクセスログからユーザにとって重要度の高いWebページを選出
し、そのWebページと関連性の高いWebページをインターネット上から探し出し、
自動的にBookmarkを作成する。
このBookmarkはWeb上に作成し、どの端末からでも、どのブラウザからでも参
照できるようにする。
また、複数ユーザでの使用に対応させ、それぞれのユーザ間でのBookmarkの共有
も行う。


システムの概略図を{\bf 図~\ref{gairyakuzu}}に示す。

\begin{figure}[!ht]
 \centering
 \fbox{
 \includegraphics[width=11cm]{gairyakuzu.eps}
 }
\caption{システムの概略図}
\label{gairyakuzu}
\end{figure}


\subsubsection{開発環境}
以下にシステムの開発環境を示す。
\begin{itemize} 
  \item ハードウェア(AT互換機)
       \begin{itemize}
	\item CPU:Intel(R) Celeron(R) CPU 2.80GHz
	\item memory:512MB
       \end{itemize}
 \item OS:Vine Linux 3.2~\cite{Vine Linux}
 \item 開発言語:シェルスクリプト(bash~\cite{bash}
)
\end{itemize}
 
\clearpage

\subsubsection{アクセスログ}

 本システムで利用するアクセスログはproxyサーバのsquidのログを利用する。
研究室内から外部へのアクセスはこのproxyサーバを介して行われる。アクセス
ログにはアクセスした時間、読み出しが終了するまでに経過した時間、リクエス
トしてきたクライアントのIPアドレス、結果コード、クライアントへ渡された総
バイト数、リクエストメソッド、リクエストされたURI、ユーザ名、階層コード、
コンテンツのタイプの順にスペース区切りで記録される。
アクセスログのサンプルを{\bf 図~\ref{samplelog}}に示す。
このアクセスログから研究室内のユーザのアクセス記録を抽出する。

\begin{figure}[!ht]
\centering
\fbox{
\begin{minipage}{13cm}
\verbatiminput{accesslog.txt}
\end{minipage}
}
\caption{アクセスログのサンプル(実際は一行)}
\label{samplelog}
\end{figure}

\subsubsection{重要度の基準}

ユーザにとって重要度の高いWebページを選出する基準として、Webページの観閲
回数を利用する。観閲回数の多いWebページほどユーザにとって重要度が高いと判断する。

\subsubsection{関連性の基準}

 対象となるWebページと関連性の高いWebページを探し出す方法として、Webペー
 ジ中に含まれる語句を利用する。
 Webページ中に含まれる語句で、使用回数の多い語句ほどそのWebページとの関連
 性が高いと判断する。
 
\subsubsection{インターネットでの検索}

選出した語句をインターネットで検索する方法として、検索エンジンの
Yahoo!JAPANを利用する。
検索エンジンの選択肢には他にGoogleAPI\footnote{GoogleAPIとは、様々なアプ
リケーションからGoogleのデータベースを利用できるインターフェースである。
Googleが公開しており無料で利用できるが、1日に1000クエリーという制限があ
る。}の利用が挙げられたが、使用回数に制限があっ
たため今回は回数制限のないYahoo!JAPANを選択した。

\clearpage

\subsection{システムの動作}
開発したシステムの動作の流れを{\bf 図~\ref{nagarezu}}に示し、
その詳細の説明を行う。

\begin{figure}[!ht]
 \centering
 \fbox{
 \includegraphics[width=11cm]{nagarezu.eps}
 }
\caption{動作の流れ}
\label{nagarezu}
\end{figure}

\subsubsection{アクセスログの保存}

まず、proxyサーバのアクセスログをローカルに保存する。
アクセスログは1日に一度proxyサーバから取得し、ローカルに保存されたアクセス
ログに追加保存する。
そして、ユーザの興味の移り変わりに対応するために、1週間に一度ローカルに保存されたアクセスログの中身をリセットする。

\subsubsection{アクセスログの解析}
ローカルに保存したアクセスログからユーザ名毎にURIを抽出する。
抽出したURIのそれぞれの観閲回数を調べ、多く観閲しているものからURIを保存
する。
アクセスログの解析結果を{\bf 図~\ref{accesslog}}に示す。

\begin{figure}[!ht]
 \centering
 \fbox{
 \includegraphics[bb=0 0 566 319,width=12cm]{screen1.eps}
 }
 \caption{アクセスログの解析結果}
 \label{accesslog}
\end{figure}

\clearpage

\subsubsection{Webページの解析}
保存したURIのWebページをテキストブラウザのw3m~\cite{w3m}\footnote{w3mと
は、テキストベースのWebブラウザで、コマンドラインから利用できるほか、Web
ページの内容を標準出力へ出力することもできる。}にてインターネットから取得する。
Webページ中の文章をKAKASI~\cite{KAKASI}\footnote{KAKASIとは、kanji kana
simple inverterの略で、日本語の漢字仮名交じり文を平仮名やローマ字綴りの
文に変換するプログラムである。単語ごとにスペースで区切る、わかち書きができ
る機能がある。}を使用してわかち書きにし、それぞれの語句の使用
回数を調べ、使用回数の多い順にソートする。
抽出された語句の中から記号や付属語、接続語などの不必要な語句を取り除く。
そして、使用回数の多い語句をURIとセットにして保存する。
保存した語句を{\bf 図~\ref{word}}に示す。

\begin{figure}[!ht]
 \centering
 \fbox{
 \includegraphics[bb=0 0 481 105,width=10cm]{screen2.eps}
 }
 \caption{保存した語句}
 \label{word}
\end{figure}

\clearpage

\subsubsection{検索}
保存した語句を検索エンジンYahoo!JAPANで検索する。
検索にマッチし、表示されたURIを検索に用いた語句とセットにして保存する。
保存したURIを{\bf 図~\ref{URI}}に示す。
また、WebページのタイトルもURIとセットにして保存する。
保存したWebページのタイトルを{\bf 図~\ref{title}}に示す。

\begin{figure}[!ht]
 \centering
 \fbox{
 \includegraphics[bb=0 0 566 294,width=12cm]{screen3.eps}
 }
 \caption{保存した語句}
 \label{URI}
\end{figure}

\begin{figure}[!ht]
 \centering
 \fbox{
 \includegraphics[bb=0 0 563 270,width=12cm]{screen4.eps}
 }
 \caption{保存したWebページのタイトル}
 \label{title}
\end{figure}

\subsubsection{htmlファイルに出力}
アクセスログから抽出したURI、Webページから抽出した単語、そして検索エンジンにて
検索し、マッチしたURIとそのタイトルをまとめてhtmlファイルに出力する。
このhtmlファイルはそれぞれのユーザ毎に作成される。
また、htmlファイルには他のユーザのhtmlファイルへのリンクが設置され、ユー
ザ間でのbookmarkの相互利用が可能となる。

\clearpage

\subsection{スクリーンショット}
システムを実際に動作させ、Web上に作成されたBookmarkを{\bf 図~
\ref{screenshot}}に示す\\
画面左上に表示されている``koyama''、``fuziki''、``murakami''はそれぞれの
ユーザのBookmarkへのリンクである。
``http://kakaku.com/''、``http://kakaku.com/pc/''はアクセスログから抽出
したユーザ  のp関越頻度の高いWebページである。
``グルメ''、``テレビ''、``ランキング''は``http://kakaku.com/''から抽出し
た使用回数の多い語句である。 
``掲載''、``価格''、``パーツ''も同様に``http://kakaku.com/pc/''から抽出
した使用回数の多い語句である。
それぞれの抽出された語句以下に表示されているリンクが、その語句を検索エン
ジンにて検索し、マッチしたWebページである。


\begin{figure}[!ht]
 \centering
 \fbox{
 \includegraphics[width=16cm]{screen5.eps}
 }
 \caption{Web上に作成されたBookmark}
 \label{screenshot}
\end{figure}

\clearpage

\section{考察}
システムを実際に動作させ、その結果から利点と問題点を考察する。

\subsection{利点}
\begin{itemize}
  \item ユーザのアクセスログにあるURIからではなく、新しくインターネット
	から取得してきたWebページがBookmarkに登録されるので、思いがけな
	い発見の可能性がある。

  \item ユーザが情報を収集することを意識しなくてもアクセスログから自動的
	にBookmarkを収集するので、ユーザにかかる負担が少ない。

  \item 複数ユーザ間でBookmarkの相互利用が可能なので、それぞれのユーザの興味の
	対象を把握することができる。
\end{itemize}

\subsection{問題点}
\begin{itemize}
  \item 対象のWebページと関連性の高いWebページをインターネットから選別す
	る精度が低く、アクセスログから抽出したURIと関連性の低いWebページ
	までBookmarkに登録される。
  \item システムで利用しているテキストブラウザがUTF-8\footnote{UTF-8とは、
	UCS、Unicodeで使える符号化方式である。正式名称はUCS
	Transformation Format 8。\\
	UCSとは、符号化文字集合の国際規格のひとつである。Unicode
	をベースにして文字空間を31ビットに拡張したもの。\\
	Unicodeとは、コンピュータ上で多言語の文字を単一の文字コード。}に
	対応していないため、UTF-8で作成されたWebページを解析するときに文
	字化けが発生してしまうバグが存在する。


  \item 複数ユーザ間のBookmarkの相互利用は現在はリンクが相互に貼られているだけ
	で、Bookmark自体は独立しているため、それぞれのBookmark同士の関連
	性が低い。
\end{itemize}

\clearpage

\section{まとめ}
開発した自動Bookmarkシステムを実際に研究室内で動作させ、私個人がユーザ側の立場で
使用テストを行った。他の管理者がユーザ登録をすると、Bookmarkの生成やWebページの検
索などは全て自動で行われるため、一切負担を感じることはなかった。
また、システムによって作成されたBookmarkには、普段から見ているページと関
連性の高いWebページがいくつか登録されていた。よって、ユーザが負担感じる
ことなくインターネットからユーザにとって興味の対象となり得る情報を収集す
ることができたと考える。また、今回の研究で考案したユーザの興味の対象とな
り得るWebページをインターネットから選別する方法は有効であったと考える。


しかし、今回の動作テストでBookmarkに興味の対象となるWebページが登録され
ていたが、既に興味を持っていた分野のものばかりであり、新しい興味の対象と
なり得るページを見つけることはできなかった。
そのため、興味の対象を広げることを支援するシステムとしては、結果を出すこ
とができていないので未完成と言える。


\clearpage


\section{今後の課題}
現状のシステムでは、アクセスログから抽出したURIと関連性の低いWebページまで
Bookmarkに登録される。そのため、対象となるWebページと関連性
の高いWebページをインターネットから選別する精度を高めるために、語句抽出
などの選別基準の見直しが必要である。見直し案として、語句抽出の際に使用回
数のみで判断するのではなく、タイトルに使われている語句や見出しに使われて
いる語句の方が文中の語句よりもWebページと関連性が高いとし、それぞれに重
みづけをして判断することで、より関連性の高い語句が抽出できると考える。
Webページを選別する精度を高めることで、関連性の低いWebページがBookmarkに
登録されることを防ぎ、ユーザ興味の対象となり得るWebページをより多く登録
できるようになると考える。

また、複数ユーザ間のBookmarkの共有についても、Bookmarkに登録されている
Webページをカテゴリ分けし、カテゴリ毎に参照できるようにすることで、それ
ぞれのBookmarkの関連性を高めることができると考える。カテゴリ分けはユーザ
が手動でするのではなく、それぞれのWebページを解析し自動で行えるように
する。Bookmarkの関連性を高めることで、ソーシャルブックマークのような使い
方もできるようになり、情報共有によって興味の対象が似たユーザを探すことが
でき、そこから興味の対象を広げることもできると考える。

\clearpage

\section{謝辞}
 本研究を行うにあたり、御指導及び御協力頂いた大垣 斉講師、藤井 信夫教授、
 情報安全工学実験室のメンバー及び卒業生の方々、その他見守ってくださった
 方々に深く感謝の意を表します。

% 参考文献
\begin{thebibliography}{99}
 \bibitem{Google}Google, [http://www.google.co.jp/]
 \bibitem{Yahoo!JAPAN}Yahoo!JAPAN,[http://www.yahoo.co.jp/]
 \bibitem{squid}squid catch[http://www.squid-cache.org/]
 \bibitem{del.icio.us}del.icio.us[http://delicious.com/]
 \bibitem{Pathtraq}パストラック(Pathtraq)[http://pathtraq.com/]
 \bibitem{Vine Linux}Vine Linux Home Page[http://vinelinux.org/]
 \bibitem{bash}BASH - GNU Project - Free Software Foundation[http://www.gnu.org/software/bash/bash.html]
 \bibitem{w3m}w3m Homepage[http://w3m.sourceforge.net/]
 \bibitem{KAKASI}KAKASI - 漢字→かな(ローマ字)変換プログラム[http://kakasi.namazu.org/]	 
\end{thebibliography}
URIは2008年11月26日現在

\clearpage

\appendix
\section{ソースコード}
\subsection{cronの設定}
\verbatiminput{cron.txt}

\subsection{Bookmarkシステム}
\subsubsection{メイン処理}
\verbatiminput{autobookmark.sh}

\clearpage

\subsubsection{アクセスログ解析処理}
\verbatiminput{word.sh}

\clearpage

\subsubsection{インターネット検索処理}
\verbatiminput{search.sh}

\clearpage

\subsubsection{html出力処理}
\verbatiminput{htmlout.sh}

\subsection{アクセスログのリセット}
\verbatiminput{resetlog.sh}

\end{document}
