cucumber flesh

Rを中心としたデータ分析・統計解析らへんの話題をしていくだけ

2017年のRとの付き合い方: 分析環境編

ギョームでRを使い始めてから一年経っていないのだけど、それなりにスタイルが確立してきた気がするし、新年なので、現状で理想的だと思われる分析環境を整理しておく。ちなみに私のギョームは主にデータの前処理や地理空間データのマッピング、簡易アプリケーションの作成で、巷のデータサイエンティスト的なものとは違う。いわゆるにわかデータサエンティストである。とはいえ、ここであげる分析環境の整備や実行はデータサイエンティストや研究者のギョームにも有効だと思っている。

分析環境編とコーディングスタイル編について分けて書く。最初はまだ不確定なところもあり、今年から本格的に取り組もうというものもあるが分析環境についてまとめておく。これらの具体的な利用方法については、まだ未確定なものもあるが、このブログで後々書いていければと思う。

続きを読む

Rの話をしよう(深く、緩く、熱く)

先日開催されたTokyo.R#58でこんな話をした。

Rについて話すラジオ、正しくはPodcastをやりたい。

それについて経緯と詳細を書いてみる。

背景

プログラミングやデータ分析なんかは、基本的に孤独な作業なのかもしれない。しかし時々自分のやったことの評価とか、最近の話題について話せる関係があると嬉しい。職場や身近な所にそういう人物がいると良いが、Rの場合少ない、あるいは全くいないという話をしばしば耳にする。実際自分も職場ではRについて話せる人はいない。TwitterやSlackのチームであるr-wakalangは、そういうRの話をするのに適した場所であるが、サービスの性質上どうしても深い話ができなかったり、流動的なところがある(r-wakalangは雑すぎたという印象)。

各地のRコミュニティに目を向けても、日本でもっとも参加者が多いであろうTokyo.Rでも参加者のメンツは回が変わればガラリと変わるし、参加できるかどうかはスケジュールと申し込み枠の大きさと時間に依存してしまう。加えて、関東在住でなければ毎回参加することは厳しい(Tokyo.Rには遠方からの参加者が毎回何人かいる印象。それだけの価値を見出しているのだろう)。

自分自身がそうだったのだけど、Rユーザーは、Rについての話をきちんとしたいと考えている人が割といるのではないだろうか。また、Rを知らない人間にとっては、身近にRユーザがいない為にRがどんな言語なのか、どういう人たちがやっているのかというのをなかなか掴みにくいのではないかと思っている。「R、統計解析に強い言語だよね」その程度。Tokyo.Rが人気なコミュニティである理由も、そんな背景が絡んでいるのではないか。Tokyo.Rに行けば実際にRユーザと直接会って話をすることができる。

私は、Rユーザーがどうやって実務でRをどう利用しているのかとか、どんなパッケージを使っているのかとか、聞きたいことがたくさんある。それに、自分の得たRの話題を一緒に話したいという願望ももっている。情報発信はこのブログやQiita、Twitterで勝手にやっておけば良いのだけど、やはり人間相手に話をしたい時がある。そこで公な理由でRの話ができる環境として「ラジオ」という発想に至った。

rebuild.fmをはじめとして、テック系のpodcastを聞いていたせいか、ラジオやりたいなという気持ちは以前からあった。そして去年の10月に始まった「yatteiki.fm」の登場もあり、気持ちを高めていた(一人で)。

ラジオなら、場所も時間も選ばない。Skypeで通話すれば東京と広島だって距離を感じないし、札幌のRユーザとも話すことができる。いわばフリースタイルラップのような(?)自宅.Rと言える。勝手な決めつけであるが、地方のRユーザはおそらく東京のRユーザよりも孤独だ(物理的な距離で)。身近にいるホクソエムや遠方のRユーザと深く、緩く、熱く、Rについて語れる場があると良いなと思った次第である。

内容(仮)

  1. 最新のR界隈情報共有(雑談)
  2. Rとの付き合い方
  3. 分析手法、簡単なレクチャー(現場での利用)
  4. パッケージ開発ノウハウ、自作パッケージの宣伝
  5. R関連書籍の著者へのインタビュー

1 最新のR界隈情報共有

私はTwitterあるいはGitHub経由でRについての情報を得ているが、そこでは毎日のように 魅力的なパッケージ、個性的なビジュアライズ、明快な分析手法などが発信されている。到底一人の人間が全てを把握することはできない。Rについての最新の話題をまとめるR WeeklyやRStudioのブログなどがあるが、これらは海外のものなので、これらを元に情報交換をするのは互いに有益だろう。

また、Rについて記事を書いている人なら、その話題を取り上げて背景とか関数についての知見を聞くことができる。

2 Rとの付き合い方

人に歴史あり。私は人の経歴を聞くのが好きだ。その人がどうしてRと出会ったのか、どうしてRを使うのか、どうやってRを使っているのかという話を深掘りしたい。

3 分析手法、簡単なレクチャー

Tokyo.Rの応用枠のようなもの。発表というほど敷居の高いものではなくて、簡単に。

4 パッケージ開発ノウハウ、自作パッケージの宣伝

これは特に表に出ることは少ない話題であるが、パッケージ開発者にとっては需要のある内容だと思う。また、数は少ないが日本人でもパッケージを開発している人はいるのでそのパッケージの宣伝なんかにも使ってもらっても良い。

5 R関連書籍の著者へのインタビュー

気がつくとその辺にいるRユーザかつR関連の著者を捕まえて話を聞きたい。

やり方

ごくごく普通のpodcastとしてSoundCloudiTunesで配信することを検討している。

近場にいれば直接対面して話ができるが、距離の離れた人や家庭をもつ人なんかはSkypeで通話・録音するので良いと思う。出演者にはSlack・Twitter上でやりとりをする。Slackにスレッドを立てれば、リアルタイムで出演者に対する質問が集められるかもしれない。

今後の課題

  • 出演声かけ... 誰か〜
  • 機材購入... 何かと入り用
  • 段取りの把握・整備
  • テスト

大事なこと

Rユーザが場所を問わず議論できる環境さえあれば良いので、実際は私がやる必要はない。色々な人がそれぞれでやってくれるというのが理想かもしれない。また、ラジオを聞いた人が今度はRの話題をネットやコミュニティで発表するようになるというのが私の希望である。

当方Vo.希望、バンドメンバー求む。くらいな感じの勢い。

Rmdファイルで日報を書くためのタイムスタンプアドインを書いた

作ったというほど大したものではないが、RStudioアドインの普及のために書いておく。

へーしゃのエンジニアチームでは毎日やったことやぎょーむ進捗を「日報」としてSlackにあげることになっている。そこで自分は1日の終わりに今日1日の作業を思い出すのは辛いし時間の無駄でもあるので、メインで使用しているRStudioのタブの一つを日報ファイルとして使っている(ぎょーむ中の90%以上はRStudioを開いているんじゃないだろうか)。このタブの一つにRMarkdownファイルを開いといて(毎日新しいファイルを作るのも手間、乱雑になるので週ごとに分けてる)終業時にKnitして吐かれたmarkdownをSlackにあげてシュッと帰る。

insert_timestamp <- function() {
  rstudioapi::insertText(paste(paste0('`r remoji::emoji(paste0("clock",',  format(Sys.time(), "%I") %>% as.numeric(), '))`'), format(Sys.time(), "%H:%M")))
}

このファイルには作業内容はもちろん、雑な思いつきや試行錯誤の記録を残すようにしている(これらはSlackにはあげないんだけど...チラシの裏感がすごくて知見として共有する日報には相応しくなさそう、という理由から自粛してる)。その時に割と大事というか意識しているのが時間の記録で、この日の午前中にやったこととかどれくらい時間がかかったとか記録するようにしている。

Rではタイムスタンプを挿入する方法としてtimestamp()関数があるけど、コンソールに時間を出力するだけでファイルには記録できなくてダメだった(コピペすれば良いんだけどそれなら手打ちで時間を入力した方が良さげ)。

# 標準関数のタイムスタンプ
timestamp()

絵文字おじさんなので{remoji}パッケージと組み合わせて現在の時間を示す時計の絵文字が出力されるようになっている。使ってみるとこんな感じになる。ギョーム内容とは全く関係ない適当に作ったダミーテキスト。

f:id:u_ribo:20170122174812p:plain

アドインにもキーボードショートカットを割り振れるので、ささっとタイムスタンプが押せて良い。自分と同じようにRMarkdownで日報や日記を書いている人がいたらオススメしたい。

ついでに、完了したぜ!みたいなギョームには✔️チェックマークをつけておくとやっている感が自分・他人にも伝わりやすい。でも{remoji}エイリアス忘れがちなのでこれも関数化した。

さらについでに日報のフォーマットが決まっているなら、テンプレート化しておくとRMarkdownの新規作成から生成できて良さげ。{slackr}と組み合わせれば投稿まで関数化できると思うのだけど、そこまではやっていない(上記の通り、チラシの裏コメントの検閲が入るため)。

Enjoy!