はじめに

コマンドライン上で動作するwikipediaのログ解析システムの開発を行った。目的としては主に以下の2つ。

  1. 環境構築を自分行えるようにする dockerの使い方の基礎を学だので、一度で調べて環境構築を行い開発力を身に着けることを1つ目の目標とした。今後アプリ開発を行っていく上で、dockerを用いて環境構築を行っていく予定なのでその基礎スキル習得を目的とした。
  2. SQLについての理解を深める 書籍などでSQLの基礎的な操作については一通り学んだので、実際に成果物を作ってみて知識やスキルの更なる向上やPHPとの連携方法について理解を深めることを目的に行った。

なお、ここではログ解析システム開発を行う上で学んだことなどを足跡として記載する。 作成したログ解析システムはこちら → https://github.com/yoshidasyoki/project1

また開発用環境のgithubからクローンしてきた後の手順についてはこちらのページで説明 (自分用のメモとして残しているので一般の方は見なくてOK)

開発用環境のセットアップ

使用したデータ

wikipediaでは1時間ごとに世界中のアクセスログを記録しておりweb上でログファイルが公開されている。詳細は以下のページで説明している。

使用したログファイルについて

また、ログファイルについての公式ページはこちら https://wikitech.wikimedia.org/wiki/Data_Platform/Data_Lake/Traffic/Pageviews

作成したシステム

コマンドライン上で対話形式でログを解析してくれるシステムを作成した。 今回のシステムでは主に2つの機能を作成した。1つ目は指定したドメインコードの人気記事を検索できる機能、2つ目は指定したドメインコードの総閲覧数を検索する機能である。

出力されるコマンドを載せながら機能の詳細を説明していく。

データベース登録

コマンドを実行すると、まずログファイルのデータをデータベースに登録する動作が自動で行われる(色付き文字が実行コマンド)。なおこの処理は初回のみ実行され、ログファイルが約600万行と膨大なので少し時間がかかる。

**php src/analysis.php**
接続成功
データの保管場所を作成しています...
作成完了
ログデータをデータベースに登録中です...(処理に数分かかります)

登録が正常に完了すると以下のような画面が表示される。番号(半角数字)を入力すると検索することができる。

作成完了
ログデータをデータベースに登録中です...(処理に数分かかります)
登録完了

以下の機能を実行できます
1. 指定したドメインコードの人気記事を検索する
2. 指定したドメインコードの合計ページ閲覧数を表示する
9. 終了する

番号を入力してください:

人気記事の検索