R言語による電子カルテデータの二次利用

~R言語初心者がデータ処理を楽しめるように基本的内容中心のサイトです~

PostgreSQLとRstudio環境構築

正直PostgreSQLは、ほぼ触ったことがありません。

ただ医師会のレセコン(ORCA)や、オープンソース電子カルテのOpenDolphinはPostgreSQLを利用しており、これからレセコン・電子カルテデータをいじるのに避けては通れません。
はじめて操作した電子カルテMySQLだったのですが、使い始めはSQLの文法より何より、データベースサーバー・クライアントのインストール等の環境構築で手間取った記憶があります。もちろん細かいこともあとから勉強必要ですが、データベースにアクセスして操作する楽しみを少しでも早く感じれるように、環境構築の時間を可能な限り短くしたいものです。

今回PostgreSQLSQLの練習前に、簡単に早く環境構築(PostgreSQL+Rstudio)することを目標に書いてみました。

準備するもの

時代はUbuntuです。Dockerのオーバーヘッドを減らすためメインPCのWindowsUbuntuに上書きするか(無茶?)、仮想マシンVMware等)にUbuntuOSをインストールしておいてください。僕はUbuntu64bit16.04LTSをインストールした仮想マシンを用意しました。
f:id:r_beginner:20161129205319p:plain

インストールからの流れ

  • Dockerいれる
  • Rstudioコンテナ走らせる
  • ホストPCからつないでみる

では始めます。Ctrl+Alt+Tと押して、端末を立ち上げてください。
シェルスクリプトを書き込むrpostgres.shファイルを作ります。

$ gedit rpostgres.sh

入力するとエディターが立ち上がります。下記のスクリプトをコピペして、記録してエディターを終了してください。

#!bin/sh
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
sudo apt-get install docker.io 
# まずPostgres環境  
sudo docker run -d --name=postgres -p 5432:5432 -e POSTGRES_PASSWORD=mypwd postgres
# rstudioの環境
sudo docker run -d --name=rstudio -p 8787:8787  rocker/hadleyverse 

それではシェルスクリプトを実行します。

$ sh rpostgres.sh

10分とかからずインストールは終了したかと思います。念のためコンテナが動いているか確認します。

$ sudo docker ps -a

f:id:r_beginner:20161210180552j:plain
2つのコンテナともstatusはupで大丈夫のようです。

ホストマシン(僕はWindows)のブラウザにDockerをインストールした[IPアドレス]とポート[8787]と入力します。
例)192.168.0.5:8787
f:id:r_beginner:20161210180000p:plain

UsernameとPasswordは共にrstudioです。接続できたら新規ファイルを作成。

f:id:r_beginner:20161210175824p:plain

新規ファイルに下記のスクリプトをコピペしてください。

install.packages("RPostgreSQL")
library("RPostgreSQL")
con <- dbConnect(PostgreSQL(), 
                 host="192.168.0.5",  # 自分の環境のIPアドレスを入力
                 user= "postgres", 
                 password="mypwd")
dbSendQuery(con, "CREATE DATABASE r_test;")

一番上の行からrstudioのRunボタンで実行してみてください。

  • まずRPostgreSQLパッケージをインストール
  • パッケージを読み込み
  • Connectionオブジェクトを作成
  • オブジェクトにクエリを投げて実行します。(r_testというデータベースを作成)

これでつながりました。
確認も兼ねて、GUIのクライアントツールもインストールしてみましょう。

pgAdmin4 : https://www.pgadmin.org/download/windows.php

f:id:r_beginner:20161210173610p:plain

r_testというデータベースが確認できました。
つながらないときは、プロパティを確認してみましょう。

f:id:r_beginner:20161210173752p:plain

一応、別の方法でも。
仮想マシンの端末からpostgresコンテナ内に入り、コマンドで確認します。

$ sudo docker exec -it postgres bash
# psql -U postgres r_test
r_test=# \det+

f:id:r_beginner:20161210175304j:plain

空っぽのデータベースが見えました。大丈夫そうです。
あとはPostgreSQLの勉強をして、大好きなrstudioからガンガンSQLを流し込みましょう。

参考: