リリカルマジカルの参加サークル推移

次回でリリカルマジカルも20回目だそうです。

毎回リリカルマジカルのサークルチェッカーを作成しているのですが、過去のデータを利用して参加サークル推移をTableauに読み込ませてみました。

ある時点においてサークルが初参加かどうかは、サークル名を登録する連想配列を用意して、その中に既に存在しているかどうかで判断しています。

ですので、「水凪工房」「みずなぎ工房」「水凪☆工房」といった名称の場合は、それぞれ別のサークルとして認識されます。

データの抽出はcirclecheck用のjsonから以下の様なコードで生成しました。

# -*- coding: utf-8 -*-
import json
import hashlib


listHistory = []


def find_history(cn_code):

    nSeries = len(listHistory)

    for n in range(nSeries):
        if(cn_code in listHistory[(nSeries - 1) - n]):
            return((nSeries) - n)

    return(0)


def load_data(listBlock, dictCircle):

    dictResult = {}

    for dictB in listBlock:
        strID = dictB["id"]

        for dictC in dictCircle[strID]:
            cn_code = hashlib.sha1(
                dictC["circle_list"][0]["circle"].encode("utf-8")
            ).hexdigest()

            dictResult[cn_code] = None

    return(dictResult)


def main():

    for n in range(1, 20):
        strFilename = "lyricalmagical_%02d.json" % (n,)

        with open(strFilename, "rb") as hFile:
            dictCC = json.loads(hFile.read())

            dictCircle = {}
            dictCircle = load_data(dictCC["CIRCLE_LIST_TBL"], dictCC["CIRCLE_LIST_DAT"])

            listMark = [0] * 20
            for cn_code in dictCircle.keys():
                n = find_history(cn_code)
                listMark[n] += 1

            for n in listMark:
                print "%d\t" % n,
            print

            listHistory.append(dictCircle)


if(__name__ == "__main__"):
    main()

Tableauでチャート生成

https://public.tableau.com/profile/.4580#!/vizhome/_3108/1

lm_circles ひとまず新規とそれ以外でグループ化しています。

魔法少女リリカルなのはStrikerSの放送開始が2007年4月で、その頃に参加サークル数が増えたように見えます。

その後にも、劇場版やゲームソフトウェア、コミックの連載等がありましたが、あまり大きな変動はないようです。(あくまでリリカルマジカルのイベントにおいて、という意味ですが)

とは言っても、10年間も続いているというのは息が長いコンテンツだと感じますし、むしろ2009〜2010年度あたりが異常なのかも。

(ちなみに水凪工房の参加は2011年のリリカルマジカル12からでした。)

リリカルマジカル1〜11までの開催日情報は、まじっく・すくえあさんの「魔法少女リリカルなのは同人史概論から引用させて頂きました。