Lecture: MoodleのログのIPアドレスの都市情報を集計, r, rgeolocate

I.何をする

 

Moodleのコース登録者のIPアドレスはログに記録されます。

IPアドレスの都市情報をRで集計します。

先に、RとPythonを使う方法を紹介しましたが、Rだけで集計できましたので、ここに解説します。

 

II.Rによる集計

 

1.使用するライブラリとデータ

 

IPアドレスの集計には、rgeolocateを使用します。

IPアドレスのデータベースとして、フリーで提供されているMax Mind databesesのcityレベルのデータを使用します。ダウンロードした.mmdbのファイルをrgeolocateのsystemフォルダに保存します。

 

2.スクリプト

 

# read libraries
library(tidyverse)
library(rgeolocate)
# load the data
df0 <- read_csv("logs_computer_English I_20200615-0057.csv")
# select ip address and make them distinct
df0_selected <- df0 %>% 
  select("IPアドレス") %>% 
  distinct()  # 重複を除く
# count rows
nrow(distinct(df0_selected))
# rename the col name
df_ip <- rename(df0_selected, "ip" = "IPアドレス")
# transform a tibble to a data frame
df1 <- as.data.frame(df_ip)
# You need to download and load the .mmdb files from Max Mind databases.
# load the system files
file <- system.file("extdata", "GeoLite2-City.mmdb", package = "rgeolocate")
# get addresses
results <- maxmind(df1$ip, file, "city_name")
# transform from a data frame to a tibble
results_tibble <- as_tibble(results)
# get a frequency table
ipAddress <- results_tibble %>% count(city_name, sort = TRUE)
view(ipAddress)

 

3.集計結果

 

city_name
n
1 NA 100
2 Nagoya 22
3 Kathmandu 14
4 Tokyo 13
5 Yokohama 11
6 Osaka 7
7 Setagaya-ku 6
8 Sakata 5
9 Adachi 4
10 Suginami-ku 4
11 Suzuka 4
12 Tsu 4
13 Funabashi 3
14 Miemachi 3
15 Shinjuku 3
16 Yokkaichi 3
17 Ashburn 2
18 Bunkyo-ku 2
19 Gifu City 2
20 Honcho 2
21 Inabe 2
22 Kitaibaraki 2
23 Nishi-Tokyo-shi 2
24 Saitama 2
25 Seto 2
26 Suita 2
27 Tsushima 2
28 Aisai 1
29 Amagasaki 1
30 Anjo 1
31 Atsugi 1
32 Chiyoda-ku 1
33 Chofu 1
34 Fujinomiya 1
35 Gotenba 1
36 Higashihiroshima 1
37 Inazawa 1
38 Itabashi-ku 1
39 Kakegawa 1
40 Kanagawa 1
41 Kasugai 1
42 Kawasaki 1
43 Kitakyushu 1
44 Komaki 1
45 Konan 1
46 Kumamoto 1
47 Kurashiki 1
48 Musashino 1
49 Nagakute 1
50 Nikkō 1
51 Nisshin 1
52 Ogaki 1
53 Okazaki-shi 1
54 Shibuya 1
55 Tahara 1
56 Taito 1
57 Takamatsu 1
58 Toyohashi 1
59 Toyokawa 1
60 Yaizu 1
61 Yamagata 1
62 Yatomi 1
 

 

III.結論

 

集計結果を見た限り、実際のアクセス住所とかなり異なっているように思います。

特にスマートフォンの場合は、もともと、IPアドレスでは都市を特定するのは難しいです。コンピュータの場合は、所在地に近い都市になるはずですが、ばらつくのは、フリーのデータを使っているせいかもしれません。

NAが100もありますが、IPアドレスを隠しているということなのか、データベースの問題なのか、、、は不明です。

使用デバイスやOS情報もとれると思いますが、別のデータベースが必要です。

ネパールのカトマンズが14件ありますが、実際にカトマンズにいるのか、スマートフォンを買った場所なのか、いまのところ私にはわかりません。

ちなみに、14件といっても、スマートフォンの場合、Wifiを使っていると頻繁にIPアドレスが変わると思いますので、14人ではなく1人の可能性のあります。IPアドレスと氏名は紐づいているので、それを集計するば何人かわかりますが、そこまではしていません。

 

About shibatau

I was born and grown up in Kyoto. I studied western philosophy at the University and specialized in analytic philosophy, especially Ludwig Wittgenstein at the postgraduate school. I'm interested in new technology, especially machine learning and have been learning R language for two years and began to learn Python last summer. Listening toParamore, Sia, Amazarashi and MIyuki Nakajima. Favorite movies I've recently seen: "FREEHELD". Favorite actors and actresses: Anthony Hopkins, Denzel Washington, Ellen Page, Meryl Streep, Mia Wasikowska and Robert DeNiro. Favorite books: Fyodor Mikhailovich Dostoyevsky, "The Karamazov Brothers", Shinran, "Lamentations of Divergences". Favorite phrase: Salvation by Faith. Twitter: @shibatau

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.