多次元分析の概要とデータ分析のポイント

仕事でSQLServerを使った多次元データ分析の案件を担当することになったので勉強中。

@ITの記事がわかりやすくまとまってたので、自分なりに要約してみた。

★第2回 多次元分析の概要とデータ分析のポイント

■定型、非定型検索およびレポート参照における主なデータ分析機能
http://www.atmarkit.co.jp/fdb/rensai/sqls_analysis02/sqls_analysis02_01.html

・検索機能

条件指定 定型検索であれば固定の項目に値を設定し、非定型検索であれば任意の項目に値を設定してデータを抽出する機能
集計 検索したデータを特定の項目でグルーピングして集計を行う機能
ソート 検索したデータを特定の項目で並べ替える機能
計算式 検索したデータに構成比や予実対比などの計算した値を付加できる機能

・出力機能

グラフ 検索したデータをグラフとして表示する機能
各種形式出力 検索したデータをPDF、Excel、XMLなどの形式で出力する機能

・管理機能

利用状況     レポート単位に利用者からのアクセス状況(回数、頻度)を把握する機能
アクセス制限 レポート単位にアクセス制限を設定する機能

→第4回 Reporting Servicesを使ったレポート作成の技
http://www.atmarkit.co.jp/fdb/rensai/sqls_analysis04/sqls_analysis04_01.html

SSRS(SQLServer Reporting Services)

・定型検索
・ブラウザから参照

■多次元データ分析の概要
http://www.atmarkit.co.jp/fdb/rensai/sqls_analysis02/sqls_analysis02_02.html

多次元データ分析は複数の次元(ディメンション)を切り替えて、さまざまな角度で分析できるのが特徴
「キューブ」という独自のデータベースを構築する必要がある

キューブの構成

・分析の視点となるディメンション
・金額や数量などの分析の対象となるメジャー(集計した値)

で構成されている。(図はリンク先参照)

キューブのデータモデル

MOLAP

多次元データベースは独自形式(MDB)
一般的にはリレーショナル・データベースを使用したROLAPよりレスポンスは良い
SQLのような標準のAPIはなく、ディメンションの数が増加するとデータ容量も増加する

ROLAP

多次元データベースにリレーショナル・データベースを使用する
ディメンションを柔軟に変更できるのが特徴
MOLAPに比べパフォーマンスが低い

HOLAP

多次元データベースにMDB(集計データ)とRDB(明細データ)を使用
MOLAPとROLAPの両方の特徴を備えている

ディメンションの階層構造とメンバ

ディメンションには階層構造を定義する
各階層に属するデータは「メンバ」と呼ぶ
多次元分析はディメンションと階層の定義で分析できる範囲が決定するため、階層の定義は重要
階層はどのレベルでデータを分析したいかで決定する

例)都道府県-地区-店舗 のような階層

多次元分析方法(リンク先の図がわかりやすい)

ドリルダウン

ディメンションの現在の階層よりも下位の階層のデータを分析する
例:関東地区から下位の都道府県を検索する

ドリルアップ

ディメンションの現在の階層よりも上位の階層のデータを分析する
例:都道府県から上位の関東地区を検索する

スライス

ディメンションの特定の値を選択して、データを絞り込んで分析する
例:特定の商品を指定して、その商品の月別、店舗別売り上げを見る

ダイス

ディメンションを入れ替えて、異なる角度で分析する
例:店別/期間別 ⇒ 商品別/店別 ⇒ 商品別/期間別

ドリルスルー

集計データの基になる明細データを分析する
例:11月にA店で売れたX商品の内訳(明細データ)検索

■多次元分析のポイント
http://www.atmarkit.co.jp/fdb/rensai/sqls_analysis02/sqls_analysis02_03.html

・複数の分析視点を組み合わせた集計値の分析(クロス集計)に向いている

キューブは集計値を効率良く検索することに特化したデータベースなので、明細データを検索するのは不得意
集計する数値項目がないデータはキューブを構築できないため分析できない

・分析視点に階層を設定できる分析に向いている

階層構造を設定しなければ、ドリルダウン/ドリルアップという多次元分析特有の分析機能が使えないため、キューブを構築する利点がない

・複雑なデータの絞り込みを行わず、一覧的にデータを見る分析に向いている

例:商品ディメンションと店舗ディメンションでの絞り込み
(商品=A or  商品=X) and (店舗=B or  店舗=Z) ⇒ 検索可
(商品=A and 店舗=B) or  (商品=X and 店舗=Z) ⇒ 検索不可

■キューブ設計におけるポイント

1. ディメンションとディメンション階層の決定

多次元分析ではディメンションの構成(種類と階層構造)で分析できる範囲が決定するため重要
ディメンションの構成は以下の両方の視点で決定する
・アウトプットから洗い出すボトムアップアプローチの視点
・データの構造から検討するトップダウンアプローチの視点
・ディメンションの構成が決定すれば、キューブ設計の半分は終了したといっても過言ではないくらい重要

2. ディメンションの数

一般的に1つのキューブに設定するディメンションの数が多くなると、キューブのデータ更新処理時間とサイズが増加する
増加傾向はディメンションのメンバ数やファクトデータの件数により異なる
キューブに設定するディメンションの数はキューブのデータ更新処理時間を目安に決定する

3. データの整備

1つのファクトデータを複数のディメンションで分析するため、データの整合性を確保することが重要(商品ディメンションを例にすると、新製品のファクトデータが発生したときには、商品ディメンションには新製品のレコードが存在していなければならない。存在していないと新製品のファクトデータはキューブに取り込まれないため、数値の信頼性がなくなる。)

4. 有効な集計値の保持

ファクトデータが大量になると分析のレスポンスを保証するのが難しくなる
レスポンスは、多くの集計を作成することで保証できるがキューブを更新する処理時間も増加する
レスポンスと運用(キューブの処理時間)を両立させるためには、無駄な集計値は作成せず、有効な集計値に限定して作成する必要がある

→第3回 Analysis Servicesを使って多次元分析に挑戦しよう
http://www.atmarkit.co.jp/fdb/rensai/sqls_analysis03/sqls_analysis03_01.html

手順はリンク先参照

SSAS(SQLServer Analysis Services)

・多次元分析
・エクセルのピボットテーブルで参照

BI(ビジネスインテリジェンス)とは何か

仕事でSQLServerを使った多次元分析の案件を担当することになったので勉強中。

@ITの記事がわかりやすくまとまってたので、自分なりに要約してみた。

★第1回 ビジネスインテリジェンスとは何か

「企業内外にある膨大なデータから有用な情報を引き出して企業の意思決定に活用する」
という考え方は、メインフレーム時代からの永遠のテーマとなっている。

■データ分析の変遷
http://www.atmarkit.co.jp/fdb/rensai/sqls_analysis01/sqls_analysis01_01.html

1970年代

MIS(Management Information System)

1980年代

DSS(Decision Support System)
→経営者の意思決定を支援することを目的にしていたが、実際は専任アナリストが利用するシステムだった。

・1990年代

DWH(Data Warehouse)膨大な企業データを蓄積するデータの格納庫
OLAP(Online Analytical Processing)蓄積されたデータを活用するための技術
DM(Data Mining) 統計学のアルゴリズムを用いて大量のデータを解析して、潜在的なパターンや相関関係を見つけ出す分析手法

→OLAPやデータマイニングも専門性が求められるため、データを活用する場合には、情報システム部門にデータの抽出や加工を依頼しなければならない状況だった。

・2000年代

BI(ビジネスインテリジェンス)
企画・経営層や一般ユーザーが、情報の専門家に頼ることなく、自らが売り上げや顧客などのデータ分析を行い、迅速に意思決定を行う

■データ分析の手法と利用者層
http://www.atmarkit.co.jp/fdb/rensai/sqls_analysis01/sqls_analysis01_02.html

↑利用者[少]&分析難易度[高]

★データマイニング(利用者:企画スタッフ)

統計学のアルゴリズムを用いてツールが情報の中に隠れている潜在的なパターンや相関関係を発見したり、将来起こり得る事象を予測する仮説発見型の分析

★多次元分析(利用者:企画スタッフ、管理スタッフ)

分析者があらかじめ仮説を立てて、それを検証する分析
複数の分析視点(次元)を組み合わせて分析できる
多次元分析では分析するために集計したデータを格納する「キューブ」という独自のデータベースを構築する

★非定型検索(利用者:管理スタッフ、パワーユーザー)

出力項目、出力形式、条件項目などを任意に設定してレポートを作成

★定型検索(利用者:パワーユーザー、一般ユーザー)

出力項目、出力形式、条件項目は固定で、条件の値を変えてレポートを作成

★レポート参照(利用者:一般ユーザー、マネジメント)

ほかのユーザーが作成したレポート(多次元分析やマイニングなど作成したレポート)を閲覧

↓利用者[多]&分析難易度[低]

このように1つの会社の中でも役割により、データの分析手法は異なる。
利用者層に合わせた分析手法と分析ツールを選択することが重要

■データ分析を行うための環境
http://www.atmarkit.co.jp/fdb/rensai/sqls_analysis01/sqls_analysis01_03.html

データウェアハウス(DWH)

・業務のデータベースは独立して構築されていることが多く、そのままでは統合して分析することができない
・業務データベースのデータは最新の状態を保持していることから、過去何年間の傾向を見るような時系列の分析ができない
・そのために、分析専用のデータベースであるDWHを構築する必要がある
・業務データベースの更新データは、日次または週次でDWHに取り込み蓄積する。
・その際には名寄せやフォーマット変更など、データを統合して分析できるための加工をETL(Extract, Transform and Loading)と呼ばれるツールで行う

データマート(DM)

・DWHは全社的なデータを時系列に一元的に蓄積するため、テラバイト級のサイズになることも珍しくない
・このサイズのDWHをユーザーに開放するとパフォーマンスを保証することが難しいので、実際には部門別や目的別にデータを切り出したDMを作成する
・DMを作成する理由は3つ
・1.DWHへのアクセス負荷を分散させる
・2.データを絞り込むことによりユーザーの検索効率を向上させる
・3.分析ツールに最適なデータを用意するため

データ分析の流れ

業務データベース群 → ETL(抽出・変換・ロード) → DWH → DMまたはキューブ(これをデータ分析)

Javaのメモリ管理について

ITProの記事がわかりやすかったので。自分で要約してみた。

第1回 ヒープがどのくらい使われているかを理解する
http://itpro.nikkeibp.co.jp/article/COLUMN/20060605/239936/?ST=ittrend

★Javaではメモリーを複数の領域に分割して管理している

・クラス定義やメソッドなどのデータが格納されるPermanent領域
・インスタンスが割り当てられるヒープ領域

★ ヒープの使用量を知る

・J2SE 1.4以前の場合
java.lang.Runtimeクラスを使用

・Java SE 5.0
java.lang.management.MemoryMXBeanクラスを使用(より詳細な情報を取得できる)

init:Java VMが起動時にOSに要求するメモリー量。設定されていない場合、0になる
used:現在使用しているメモリー量
committed:Java VMが現在使用することを保証しているメモリー量。メモリーの使用状況により増減するが、必ずused以上、max以下になる
max:Java VMが使用できる最大メモリー量

ヒープの場合、initはjavaの起動オプションの-Xmsに相当し、maxは-Xmxに相当

JDKに付属しているjconsoleでヒープ使用量などを見ることができる。

第2回 GCの仕組みを理解する
http://itpro.nikkeibp.co.jp/article/COLUMN/20060612/240657/?ST=ittrend

★GCの発生頻度を調べる

javaの起動オプションに-verboseを使用する
(-verboseだけだとクラスローディングやネイティブライブラリの使用に関する情報も表示されてしまうので、GCだけに特化したいときには-verbose:gcとする)

> java -verbose:gc -jar Java2Demo.jar

★ヒープメモリの構成

・Young領域(Eden領域と2つのSurvivor領域からなる)
・Old領域(Tenured領域)

★HotSpot VMでのヒープ管理

HotSpot VMではインスタンスの寿命(GCから生き残った回数)を元にヒープを管理している
Young領域とOld領域でそれぞれ異なるGC手法を用いて管理している

★GCの種類

・GC(Scavenge GC)

ヒープのYoung領域に対するGC
Scavenge GCはオブジェクトを移動させるだけなのでCopy GCとも呼ばれ、高速にGCを行うことができる

・Full GC(Mark & Sweep GC)

ヒープ全体を対象にしたGCなので、通常のGCに比べて時間がかかる

★GCのしくみ

リンク先の図がわかりやすいので割愛

第3回 ヒープのチューニング
http://itpro.nikkeibp.co.jp/article/COLUMN/20060619/241190/?ST=ittrend

★チューニングポイント

・GCの頻度をなるべく抑えられるようにする。(特にFull GCは時間がかかるので、必要最低限になるようにする)

・寿命の短いインスタンスを大量に生成している場合は、Young領域が逼迫しTenured領域まで寿命の短いインスタンスが占めることになってしまい、Full GCの頻度が高くなってしまう。このような場合は、Young領域のサイズを大きくすることで、Full GCの発生を抑えることができる。

★HotSpot VMのオプション

-Xms     起動時のヒープサイズ
-Xmx     最大のヒープサイズ
-Xmn     Young領域のサイズ
-XX:NewRatio     Young領域とOld領域の比率
-XX:SurvivorRatio     Eden領域とSurvivor領域の比率

★エルゴノミクスの機能拡張

Java SEのバージョンが5.0以上であれば自動調整してくれる

MySQLランダムにレコードを取得

MySQL上のテーブルのデータをランダムに取得するにはこんな感じでいけるみたいです。

select name, age from sample order by rand() limit 0,5;

Twitter Botなどを作成していて、返信することがない時に、適当にデータベースのデータを取得してtwitさせるのに便利でした。

ジョギングダイエットまとめ

装備編

コース選び

ジョギングダイエットを継続するためのポイント

2009年1月~3月までの成果と体の変化

ジョギングを継続させるための7つぐらいのポイント

1.最初の最初

運動が超久し振りの場合は全然走れないと思うので、最初は歩くだけでOKです。
急に走ったりすると足腰を痛めてしまい、結局またピザデブメタボに逆戻りです。
あと準備運動は軽くでもいいのでやったほうがいいです。寒い時は特に。

僕の場合、最初の頃は15分コースを歩いた所で、残りの15分は来たコースを戻るようにしました。
とにかく30分はジョギングに費やすという習慣づけをしました。
トイレや風呂と同じで生活の一部にしてしまうつもりで。

2.無理をしないことを徹底する

毎日続けることで、徐々に筋肉がついてきて走れる距離も増えてくると思います。
無理をせずに疲れたら歩くということを「徹底」します。「徹底する」というのがポイントです。
「しんどさに負けて歩いたのではなく俺は徹底してるんだぜ」という意識が重要です。「明日から本気出す」の精神です。

「しんどい」という感覚が強すぎるとだんだんジョギングに行くのが嫌になってしまいます。ジョギングに限らず何でもそうですが。会社とか会社とか会社とか。

経験上、あまり「距離」や「走る」ということに神経を集中せずに、他のことを考えながら走る方がリラックスできて、いつのまにか距離が伸びているということが多かったです。

3.時間帯

時間帯ですが、会社から帰ってきてすぐに出かけるようにしています。
そのほうが着替える回数も少なくてすみますし、駅から家まで歩いている間にある程度体が温まっているのですぐに走り出しても足や膝に負担は少ないと思います。
一旦落ち着いてしまうと腰が重たくなり本当に「明日から本気出す」になりかねないです。
朝が得意な人は朝走るのも良いと思いますが、そうでない人はこのパターンが良いと思います。

4.おなかが空いている場合はバナナ

おなかが空きすぎている場合は、バナナを1本食べてから出撃するようにしています。晩ご飯はジョギングから帰ってきてからの楽しみに取っておきます。

5.疲れている場合は

脳だけが疲れていて、体は疲れていないという場合は迷わず外にでます。
仕事で行き詰っていても、以外といいアイデアが湧いてくることがあります。
トイレやお風呂でもよく似た経験はあると思いますが、リラックスしている状態が良いのかもしれません。
本当に体が疲れている場合は休みます。今は2日走って1日休む、ぐらいのペースに落ち着いています。

6.雨の日は

小雨ぐらいなら出るようにしています。汗をかくとあまり関係ないですし、雨の中を走るというのも結構新鮮です。大人になってからはあまりないですし。

7.持ち物

水分補給は重要なので小銭を持っていくか、ドリンクホルダー付きのヒップバッグがある場合はドリンクを入れていきます。
もちろんiPodも。

HyperEstraierでWeb上のドキュメントをクローリング

今回はWikiのコンテンツをクロールしてみます。

クローラガイドを参考にしました。
http://hyperestraier.sourceforge.net/cguide-ja.html

[1]Webクローラー用のクローラールートディレクトリを作成(設定ファイルなどが生成される)

estwaver init “C:\hyperestraier\index\wiki”

[2]クローラールートディレクトリ以下の_confファイルを編集

★クロールの基点となるページを指定

seed: 1.0|http://www.samplesite.com/wiki/Viewpage.do

★ベーシック認証が掛かっている場合は、以下の設定も必要です。

user:pass の部分に実際のユーザー、パスワードを設定してください。
(注意:ベーシック認証に対応するにはパッチを適用する必要があります)

basicauth: ^http://www.samplesite.com/{{!}}http://user:pass@www.samplesite.com/


★クロールを許可するURLを指定

allowrx: ^http://www.samplesite.com/wiki/
指定したURL以下のコンテンツのみをクロールします。

★クロールを許可しないページのパターンを指定します。

注意点として、Wikiの場合ページを凍結したり削除したりするリンクがあるため、
そのリンクをWebクローラーが踏まないようにする設定が必要です。
パッチを適用した場合何種類かのWikiに対応した設定が入っています。
eeWikiの設定は入ってないようなので、以下のような設定を追加します。

# eewiki
denyrx: (Edit.do|Create.do|Frozen.do|Diff.do|Upload.do|Query.do|jsessionid)

★言語の選択

# preferred language (0:English, 1:Japanese, 2:Chinese, 3:Korean, 4:misc)
language: 1

[3]いよいよクローラーを起動します

estwaver crawl “C:\hyperestraier\index\wiki”

[4]インデックスファイルの確認

クローラールートディレクトリ\_index 以下にインデックスファイルが生成されていれば成功です。

この例の場合、C:\hyperestraier\index\wiki\_index となります。

[5]Web画面から確認

estseek.confに、インデックス格納先のディレクトリを指定し、
indexname: C:\hyperestraier\index\wiki\_index

ブラウザからestseek.cgiにアクセスします。
適当なキーワードで検索し、検索結果が返ってくれば成功です!

HyperEstraierでファイルシステム上のドキュメントをクローリング

[1]estxfilt.bat を修正

(テキスト化できないPDFを強制的にテキストに変換するオプションを追加)

xdoc2txt -s r=0 -o=0 %1 > %2

xdoc2txt -s -n r=0 -o=0 %1 > %2


[2]ファイルシステム上のドキュメントをクロール

★テキストファイルのクロール
estcmd gather -il ja -pc CP932 -lt -1 -lf -1 -sd [catalog] [directory]

★MS系ドキュメント、PDFなどのクロール
estcmd gather -fx .pdf,.rtf,.doc,.xls,.ppt T@estxfilt -fz -ic CP932 -pc CP932 -sd -cl -cm [catalog] [directory]


[3]estseek.confを編集し、estseek.cgiにアクセス

estseek.confで生成されたインデックスを参照するように設定

indexname: C:\hyperestraier\index\all

こんな感じでバッチファイルにしとくと便利かも

@echo off

rem ###############################################

rem インデックス生成先
set ALL_INDEX=”C:\hyperestraier\index\all”

rem ターゲットディレクトリ
set MYDOC_DIR=”E:\技術資料”

rem テキストファイルのインデックス生成
call estcmd gather -il ja -pc CP932 -lt -1 -lf -1 -sd %ALL_INDEX% %MYDOC_DIR%

rem その他ファイルのインデックス生成
call estcmd gather -fx .pdf,.rtf,.doc,.xls,.ppt T@estxfilt -fz -ic CP932 -pc CP932 -sd -cl -cm %ALL_INDEX% %MYDOC_DIR%

rem ###############################################

HyperEstraierにパッチを適用しWindows版再ビルドメモ

HyperEstraierにパッチを適用しWindows版再ビルドメモ

ここと
http://d.hatena.ne.jp/aenomoto/20080210/1202644766

ここのエントリーを参考にさせてもらいながらWindows版パッケージを作成
http://jamz.jp/tech/2008/08/patch-to-hyper-estraier-before-install.html

用意するもの

* hyperestraier-1.4.13.tar.gz
* qdbm-1.8.77.tar.gz
* MinGW-5.1.3.exe
* MSYS-1.0.10.exe
* libiconv-1.11-1-bin.tar.bz2
* libiconv-1.11-1-dll.tar.bz2
* mingw-libgnurx-2.5.1-bin.tar.gz
* mingw-libgnurx-2.5.1-dev.tar.gz
* pthreads-w32-2-8-0-release.exe
* zlib123-dll.zip
* UnxUtils.zip
* d2txt132.zip

patch20080403.tgz (hyperestraier-1.4.13、qdbm-1.8.77用のパッチ)
http://sourceforge.net/mailarchive/attachment.php?list_name=hyperestraier-users-ja&message_id=20080403.190234.98160137.Yasuharu.Yamada@access-company.com&counter=1

【セットアップ手順】


[1]MinGWとMSYSのインストール。

(g++ compilerを選択)


[2]各ライブラリを解凍して配置。

libiconv-1.11-1-bin.tar.bz2
→ msys/1.0/local/以下

libiconv-1.11-1-dll.tar.bz2
→ msys/1.0/local/bin/以下

mingw-libgnurx-2.5.1-dev.tar.gz
→ msys/1.0/local/以下

mingw-libgnurx-2.5.1-bin.tar.gz
→ msys/1.0/local/bin/以下

pthreads-w32-2-8-0-release.exeを実行して生成される
→ Pre-built.2/include/→msys/1.0/local/include/以下
→ Pre-built.2/lib/→msys/1.0/local/lib/以下

zlib123-dll.zip
→ msys/1.0/local/bin/zlib1.dll
→ msys/1.0/local/include/以下
→ msys/1.0/local/lib/以下

UnxUtils.zip(usr/local/wbin/zip.exe)
→ msys/1.0/local/bin/zip.exe

d2txt132.zip(xdoc2txt.exe, zlib.dll)
→ msys/1.0/local/xdoc2txt/以下

[3]MSYSのコンソールを起動し以下のコマンドを実行

cd /usr/local
dlltool.exe -D bin/zlib1.dll -d lib/zlib.def -l lib/libzdll.a


[4]qdbmインストールの前準備

msys/1.0/home/[username]/以下にqdbm-1.8.77.tar.gzを解凍

patch20080403.tgzを解凍し、qdbm-1.8.77以下の *.diffファイルを
msys/1.0/home/[username]/qdbm-1.8.77 にコピー

同じく下記パッチファイルを

http://www.hi-ho.ne.jp/a-enomoto/hatena/qdbm-1.8.77-build-on-mingw.patch

msys/1.0/home/[username]/qdbm-1.8.77 にコピー


[5]パッチの適用

以下の2つのパッチを適用

cd /home/[username]/qdbm-1.8.77

patch < qdbm1.8.77_00all.diff

patch -p1 < qdbm-1.8.77-build-on-mingw.patch


[6]qdbmのインストール

./configure –enable-zlib –enable-iconv
make mingw
make install-win


[7]HyperEstraierビルドの前準備

msys/1.0/home/[username]/以下にhyperestraier-1.4.13.tar.gzを解凍

patch20080403.tgzを解凍し、he1.4.13以下の *.diffファイルを
msys/1.0/home/[username]/hyperestraier-1.4.13 にコピー

同じく下記パッチファイルを

http://www.hi-ho.ne.jp/a-enomoto/hatena/hyperestraier-1.4.13-build-on-mingw.patch

msys/1.0/home/[username]/hyperestraier-1.4.13 にコピー

[8]パッチの適用

cd /home/[username]/hyperestraier-1.4.13

patch < he1.4.13_00all.diff
(パッチを適用するファイル名を聞かれるので、随時指定)

patch -p1 < hyperestraier-1.4.13-build-on-mingw.patch

[9]HyperEstraierのビルド

./configure

make winpkg

で、

msys/1.0/home/[username]/以下に hyperestraier-1.4.13-win32.zip が生成されていれば成功です。

ジョギングコースの選定についてのメモ

★路面がボコボコすぎる、狭すぎる、排気ガスが多い、ノコノコが多いなどはなるべく避ける。

足を痛めたり、転倒したりするとせっかくのジョギングが楽しくなくなるので。

★ジョガーが多いところを選ぶ

ジョガーが多いということは、走りやすい地形になってることが多いです。
あと、一人で走っていても他のジョガーがいることで、孤独感が減り、
モチベーションの維持になると思います。

★何か楽しみが多いコースにする

緑が多いとか季節感を感じれるコース、途中に好きなパン屋さんがあるとかでもいいと思います。
休日なんかはパンを買いに行くついででも全然OKかと。
でもピザデブが汗だくでパン屋に入っていくのはどうかと思いますが。

★最終的には 5.0-6.0kmを目安に

ジョギングコースの全長決めました。
「みんなのジョグマップ」http://www.jognote.com/jogmap/ でコースを参考にするのもいいですし、自分でコースを作ってもいいと思います。僕の場合は距離測定しながらだいたい5~6kmぐらいになるように設定しました。
(ゆっくりめのペースで走るとだいたい40分前後になると思います。)