🍭hoxom task view (ホクソエム一周年記念)
タイトルの通り、匿名知的集団「ホクソエム」が結成されてから一年経つっぽい(ぽいというのは結成された日付が曖昧だから)。
よく一年もこのノリを続けてきたなと思うところもあるが、「ホクソエムの誓い」とか現実でホクソエムに遭遇した体験とか、謎の帰属意識とかあって好きだった。
それを祝う意味で以前記事を書いた(👇)がそれは前座。以前からやろうと思っていた「hoxom task view」を結成一周年記念で作った。
ホクソエム1周年が近づいてきました。抱負をひとこと。 — HOXO-M Task Viewsというのを作ろうかと思います https://t.co/JGgkHHM7te
— Uryu Shinya (@u_ribo) 2016年1月31日
納得できていない部分もあるけど、それはそれでまた改善していけば良いだろうということで公開する。そしてこの記事では、hoxom task viewに登録されているパッケージについて、少し説明をしていきたいと思う。
HOXOM Task View: HOXOM that Japanese Secret Society of Data Science
続きを読む📢アサートを使って堅牢なデータ設計をしよう
🍵 所感
(内容の前に書いておきます)
パイプ演算子によって、Rを使ったデータ分析の作業は流れるようにわかりやすく、実行しやすくなりました。その一方で、中間的処理の結果に対してはないがしろになっているという点があります。この処理で間違えていないだろうという「かもしれない運転」をした結果、大事故を起こしかねない状況と言えるかもしれません。データは簡単に変化するし、意図しない値を含んでしまう可能性があることを常に意識するべきで、都度振り返りが必要なのでしょう。
しかしいちいち処理の内容を確認するのは面倒だし、何よりも分析の流れを止めてしまうのは良くない気がします。アサートを設定するのは面倒ではありますが、一度作っておくと繰り返しの処理で有効になるので大変便利で役立ちます。{assertr}
パッケージでは、パイプ関数とアサートを組み合わせて利用することでデータ分析の流れを中断することなく、アサートを埋め込むことが可能となっています。とりあえず私は積極的に利用していくつもりです。
ちなみにRによるアサートの紹介記事を id:yutannihilation が1年前に書いており、アサートを導入する参考としてご覧になることを勧めます。しかしそこでは今回扱う{assertr}
パッケージについて深く触れられていません。
データに生じる人為的な「バグ」
データ分析の結果は実行してみないと結果がわからないものですが、そうしたものではなく、データ入力時に桁数を多くするとか演算記号の指定を間違えたり、計算の途中に作った不本意な変数の列を残したままにしていたりするおかげで、コンピューターによる計算結果が予想しないものになることがあります。それは日常的に潜む落とし穴のようなものであり、人間が指定したプログラムを釈然と実行するコンピューターと比較するとその「バグ」はなくなることがありません。
「バグ」は些細なものから分析結果を左右するくらい大きな影響力をもったものまで実にさまざまです。このような「バグ」を生じないよう、自分自身が気をつけていても誰かがもってきたデータにはすでに「バグ」が潜んでいるかもしれず、「バグ」を見逃さないために何度もデータを確認しなくてはいけません。
そうした分析の結果以外の人為的要因によって生じる、意図しないプログラムの実行を報告する仕組みとして「アサート assert」と呼ばれるものがあります。アサートは、プログラムコード内にプログラマー自信がそのコードの仕様や意図を記述しておくことで、実行時にその仕様に沿わない状態を検出した際に「バグ」として報告するというものです。
続きを読む
🔧RでREST APIを作る(plumber編)
様々なAPIを利用していると、次第に自分でもAPIを作りたくなりませんか? Rの関数を利用してHTTP経由でデータの受け渡しができると嬉しいですよね。加えて、Rの作図機能を使って、APIを叩くだけで作図してくれると超ハッピーですよね。
前置きも何もなく唐突ですが、{plumber}
パッケージを使ってお手軽にRでAPIサーバーを構築できるヨ、という話です。{plumber}
はまだCRANに登録されていないので、利用する際にはGitHubから開発版をインストールしてきてください。
🤔RでAPIサーバー?
「RでAPIサーバーを作る」という話自体は昨年末のJapan.Rでゴミ箱さんが話されていたのですが、運営側だったこともあってしっかりと聞けていませんでした(この記事を書こうとして、そういえばゴミ箱さんがRでAPIを作る、みたいな話していたよなというのを思い出した)。ゴミ箱さんの話の中でも{plumber}
について言及しています。
何ができるの?
ざっくりと説明するとRコードの処理をURL経由で取得・表示することが可能になります。どこかでAPIサーバーとしてRコードを実行しておけば、URLにアクセスするだけで結果を得たりすることができます。
Rの演算能力や統計処理の結果をウェブブラウザでみたり、プロットを表示したりできます。基礎になるのはRのコードなので、パラメータを定義しておくことで利用者の用途に応じた出力が可能になるなんて素敵だと思いませんか。
というわけでやってみましょう。
{plumber}
パッケージの利点は、既存のRコードに手をつけずAPI化できる点にあります。