Rで承認欲求(仮)を満たす

自作パッケージを作る→たくさんの人にダウンロードされる→承認欲求が満たされる!!!
というのはシリアルパッケージクリエーターならば誰しも夢見るところです。
しかしなかなかうまくいかないのが現実。
ということで、グローバルシリアルパッケージクリエータとして名高いHadley Wickham氏のパッケージがダウンロードされる様を目と耳で感じることで代わりに承認欲求を満たしましょう。

どうやって感じるのか

breathofgod関数を実行すると、彼のパッケージがどこかで誰かにダウンロードされるたびに音が鳴り、どのパッケージがダウンロードされたかがコンソールに表示されます。

devtools::install_github("dichika/yoshio")
library("yoshio")
breathofgod()

どのような仕組みになっているのか

Rstudioのログをに利用しています。1週間前のログを流しているらしいです。
なお、Hadleyのパッケージは55もあるらしく面倒なので適当に有名そうなものだけ抜き出しています。

なお、このコードのアイデアは下記URLのコードを大部分流用しています。
https://github.com/jcheng5/crandash/blob/master/global.R

breathofgod <- function(){
  sock <- socketConnection("rstudio.com", 6789, blocking = FALSE, open = "r")
  hadleys <- c("ggplot2", "dplyr", "plyr", "tidyr", "devtools", "reshape2", "stringr",
               "bigrquery", "assertthat", "testthat", "httr", "lazyeval",
               "memoise", "magrittr", "nycflights13", "profr", "pryr",
               "RMySQL", "roxygen2","rvest")
  while(TRUE){
    newLines <- readLines(sock)
    prototype <- data.frame(date = character(), time = character(),
                            size = numeric(), r_version = character(), r_arch = character(),
                            r_os = character(), package = character(), version = character(),
                            country = character(), ip_id = character())
    newData <- read.csv(textConnection(newLines), header=FALSE, stringsAsFactors=FALSE,
                        col.names = names(prototype)
    )
    if(any(newData$package %in% hadleys)){
      print(newData$package[newData$package %in% hadleys])
      beepr::beep()
    }
    Sys.sleep(1)
  }  
}

enjoy!!!