「Awake」の機能  

アクセスレポートが更新されるのは午前8時前後ですが、この境目の時間帯の表示は、「前日の結果」か「更新された結果」なのかが判り難いものです。 「Awake」は更新後のデータを淡いブルーの背景色で区別して示す、簡単なツールです。

 

また、「管理トップ」から「アクセス解析」のページを開くと、デフォルトは7日間の集計表示になります。 私の場合は今日の結果を見たいので、「今日」のアクセス解析ページが開く様にしています。 これが「Awake」の2つ目の機能です。

 

 

 

 

 記事別アクセス数を独自に集計する

上図の 「もっと見る」を押すと、記事別アクセス数の詳細が表示されます。 下は「Ameblo Management」のアレンジで全体を見易くしていますが、この詳細表示はアクセスのあった記事(上限100件)がリスト表示されます。

 

 

私はこのリストを時々見て、アクセスの多い記事については、間違いの修正や陳腐化を防ぐ更新をします。 どういう記事が良く読まれるかは、気になりますね。

 

で、先日これを見ていて、このリスト上のアクセス数の集計が、前ページ(アクセス解析トップ)と一致しているのか気になりました。 リスト右端の記事ごとのアクセス数を合計するのは、プログラムを組めば簡単です。 上はそのプログラムの動作結果で、記事毎のアクセス数の全合計と集計した記事数が、ページ上部に表示されます。

 

 

微妙な誤差 

アクセスカウントは、ロボットプログラムのアクセスなどで誤差を生じる様ですが、「 記事別アクセス数」の「昨日」以前の結果は、既にそういった誤差を修正しているはずです。 しかし修正が完全でないのか、「 記事別アクセス数」と「アクセス解析トップ」の値に、常に微妙な差がある事が判りました。

 

だからどうと言う事はないのですが、何んでも知っていて損はありません。 これはカウントプログラムの深淵ですね。 以下に少しサンプルを。

 

日付 集計記事数 アクセス解析トップの表示 記事別アクセス数の合計
3/21 79 244 224
3/22 96 307 299
3/23 88 379 374
3/24 90 358 354

 

集計記事数が100件を越える日は集計もれが生じるので、最近で100件越えがない4日間をサンプルにしました。 アバウトでバラつきが有る様ですが、300件に対して10件程度の誤差が生じています。 興味のある方は試して見てください。

 

 

 

ツールの使い方 

今回は「Awake」に、上記の「記事別アクセス数」の集計機能を追加しました。

 

最初の図の 「もっと見る」を押すことで「記事別アクセス数」の画面が表示されますが、このボタンはページのリロードを伴わない「表示差し替え」を行うため、集計のスクリプトが起動しません。

 

● 集計機能を開始するには 「記事別アクセス数」の画面をリロードします。

この操作によって、1~2秒後にページ上部に集計値が表示されます。

 

● 一旦、集計値が表示されると、日付や集計期間の設定を変更するごとに、設定変更に少し遅れて集計値が更新されます。

 

◎ 集計表示が少し遅れるのは、ページ下方の全てのリストを自動的に開いてから集計するからです。

 

◎「記事別アクセス数」のリストは、記事数の上限が100件なので、それ以上に対象記事が分散するデータの場合は、集計もれが生じます。 7日間や30日間のリストは 100件を超える場合が多く、その場合は集計もれの誤差が追加されます。

 

 

 

 

アクセス解析トップの初期表示について 

ツールのコードを下表のパス名に書き換えて、好みの初期表示に変更できます。 書き換える場所は以下の部分です。「Awake」のデフォルトは「今日」になっています。

 

〔Awake〕ver. 0.3  16~18行 太字部分

    let ana_link=document.querySelector('.l-ucs-sidemenu-area a[href*="analysis.do"]');
    if(ana_link){
        ana_link.setAttribute('href', 'https://blog.ameba.jp/ucs/analysis/analysis.do?unit=today'); }

 

太字の文字列のパス名を書換えると、動作が変わります。

 

ボタン選択 指定されるURLのパス名 ( ?以降がクエリ文字列)
(初期値) /ucs/analysis/analysis.do
今日 /ucs/analysis/analysis.do?unit=today
昨日 /ucs/analysis/analysis.do?unit=yesterday
7日間 /ucs/analysis/analysis.do?unit=seven_days
30日間 /ucs/analysis/analysis.do?unit=thirty_days
今月 /ucs/analysis/analysis.do?unit=this_month
先月 /ucs/analysis/analysis.do?unit=one_month_ago

 

 

 

「Awake」ver. 0.3 を使用するには  

このツールは Chrome / Edge / Firefox の拡張機能「Tampermonkey」上で動作します。 以下に、このツールの導入手順を簡単に説明します。

 

❶「Tampermonkey」を導入します

使用しているブラウザに拡張機能「Tampermonkey」を導入する事が必要です。 以下のページに簡単な導入の説明があるので参照ください。

 

 

❷「Tampermonkey」にスクリプトを登録します

●「Tampermonkey」の「」マークの「新規スクリプト」タブを開きます。

 

 

 

●「新規スクリプト」には、最初からテンプレートが記入されています。 これは全て削除して、完全に空白の編集枠に 下のコードをコピー&ペーストします。

 

〔コピー方法〕 軽量シンプルなツール「PreBox Button   」を使うと

  コード枠内を「Ctrl+左Click」➔「Copy code 」を「左Click」

  の操作で、掲載コードのコピーが可能になります。

 

● 最後に「ファイル」メニューの「保存」を押すと、ツールが使用可能になります。

 

 

〔 Awake 〕 ver. 0.3

 

// ==UserScript==
// @name         Awake
// @namespace    http://tampermonkey.net/
// @version      0.3
// @description  アクセスレポートの更新を背景色で知らせる・解析ページを「今日」で開く
// @author       Ameba Blog User
// @match        https://blog.ameba.jp/ucs/analysis*
// @match        https://blog.ameba.jp/ucs/top*
// @grant        none
// ==/UserScript==


let path=document.location.pathname;
if(path=='/ucs/top.do'){ // 管理トップの場合だけ解析ページのリンクを変更

    let ana_link=document.querySelector('.l-ucs-sidemenu-area a[href*="analysis.do"]');
    if(ana_link){
        ana_link.setAttribute('href', 'https://blog.ameba.jp/ucs/analysis/analysis.do?unit=today'); }


    setTimeout(()=>{
        let access_title=document.querySelector('.p-analysisSummary__access__title');
        if(access_title){
            let accsess_text=access_title.textContent.match(/\(.*\)/).toString();
            let day=accsess_text.match(/\/.*/).toString().replace(/[^0-9]/g, '');

            let date=new Date();
            date.setDate(date.getDate() -1); // 昨日の日付を取得
            let yesterday=date.getDate();

            if(day==yesterday){
                let access_panel=document.querySelector('.p-analysisSummary');
                access_panel.style.boxShadow='inset 265px 0px 0 0px #d7f2ff'; }}
    }, 500); // ページを開いてからのタイミング

} // 管理トップページの場合


if(path.indexOf('analysis_page.do')!==-1){ // 記事別アクセス数ページ

    let target=document.querySelector('#root section');
    let monitor=new MutationObserver(count_do);
    monitor.observe(target, { childList: true });

    count_do();

    function count_do(){
        clear_disp();

        let retry=0;
        let interval=setInterval(more_open, 1000);
        function more_open(){
            retry++;
            if(retry>20){ // リトライ制限 20回 4sec
                clearInterval(interval);
                alert("全てのリスト情報を開かずに合計しました"); }

            let more=document.querySelector('.p-accessGraph__moreLinkBtn--center');

            if(more){
                more.click(); }
            if(!more){
                clearInterval(interval);
                main(); }}


        function main(){
            let line_count=0;
            let num_count=0;
            let p_count=document.querySelectorAll('.p-accessGraphItem__count');
            for(let k=0; k<p_count.length; k++){
                line_count+=1;
                let line_item_disp=p_count[k].textContent.replace(/[^0-9]/g, '');
                num_count+=parseInt(line_item_disp, 10); }

            let disp=document.createElement('div');
            disp.setAttribute("id", 'add_access');
            disp.innerHTML='参照された記事数:'+ line_count +' アクセス数合計:'+ num_count;

            let style=document.createElement('style');
            style.innerHTML=
                '#add_access { position: fixed; top: 56px; right: 20%;  z-index: 10; '+
                'padding: 6px 15px 4px; font: normal 16px Meiryo; border: 1px solid #009688; '+
                'box-shadow: 2px 3px 6px rgb(170, 170, 170,  0.6); background: #fff; }';

            disp.appendChild(style);

            clear_disp();
            document.querySelector('body').appendChild(disp);

        } // main()


        let return_button=document.querySelector('.c-returnButton');
        if(return_button){
            return_button.onclick=function(){
                clear_disp(); }}


        function clear_disp(){
            if(document.querySelector('#add_access')){
                document.querySelector('#add_access').remove(); }}

    } // count_do()

} // 記事別アクセス数ページ

 

 

 

「Awake」最新版について 

旧いバージョンの「Awake」は、アメーバのページ構成の変更で動作しない場合があり、導入する場合は最新バージョンをお勧めします。 最新バージョンへのリンクは、以下のページのリンクリストから探せます。