Note of Pediatric Surgery

腸内細菌、R、ときどき小児外科

Apple IDを入力した際に出る "不明なエラーが起きました" の対処法

システム環境設定からiCloudにサインインすると、"不明なエラーが起きました" もしくは “An unknown error occurred” と出てログインできなくなるという問題が生じました。環境は

MacOS 10.15 MacBook (12inch) 2017 late

です。ちなみにブラウザからiCloudのサイトからは普通にログインができる状態です。エラーをググってみると、いろいろと困っている人がいて、いくつか解決らしきものがヒットします。

discussionsjapan.apple.com

  1. 一度サインアウトしてサイドログインする
  2. Macを再起動してみる
  3. ~/Library/Application Support/iCloud/Accounts/ディレクトリにあるファイルを消す (要下記記事参照)

osxdaily.com

私の場合はそれでも解決できなかったので、Apple supportに電話して対応してもらいました。解決策は

  1. システム環境設定ユーザとグループ で新しくユーザーを作る
  2. 今、ログインしているユーザーをログアウトさせ、1.で作ったユーザーでログインする
  3. セットアップの段階でApple IDの入力を求められるがスキップする
  4. システム環境設定iCloudApple IDでログインを試す
  5. ログインできたら1.で作ったユーザーをログアウトし、元のユーザーでログインする
  6. システム環境設定iCloudApple IDでログインを試す

そうすると、普段より時間がかかって、Mac自体のパスワードの入力など、いくつか要求されるタスクをこなしていくと、無事にiCloudにログインすることができました。なぜそうなったのかはよくわからないとのことですが、とにかくApple supportの担当してくださった方、ありがとうございました。

SeleniumでNCD検索システムから全経験手術症例を1つのCSVファイルに抽出する

はじめに

とある事情により、自分の経験症例数を算出する必要がありました。一般外科医であれば、自分の登録症例はすべてNCDに登録されていると思います。自分の経験症例を検索するにはNCD検索システムにアクセスする必要があります。

NCD検索システム

手術症例数の件数表示は、施設別、術式別、術者別に一覧表示できるのですが、ここで大きな問題が。

  1. 施設・術者・術式の複数を組み合わせたフィルタリングができない
  2. 手術は20件ずつ表示されて、それ以上の設定はできない

というクソ仕様になっていました。NCDには術者助手に関わらず、自分が入った手術がカウントされていると思いますが、自分が術者として執刀したそれぞれの手術のカウントをするには、20件ずつクリックしてカウント、もしくはExcelにコピペしていなきゃいけないということになります。1500件近くあったので、この作業を75回も繰り返すのは嫌だ!

たまらずNCDの事務局にCSVなどで自分の経験症例を一括ダウンロードできないものかと問い合わせましたが、秒でだめですと返信が返ってきました。というわけで、せっかく勉強したのでPythonスクレイピングしてやりましょう。

www.pediatricsurgery.site

CSVでリストが手に入れば後は、Rでいかようにも料理できますので。

続きを読む

SeleniumとPythonでスクレイピングをやるために必要な準備

はじめに

Twitterで少し前に「業務ハックしてクビにならないために」というエントリが話題になったと思います。

note.com

昔からスクレイピングというものをやってみたいとずっと思っていたのですが、このエントリでSeleniumというもの存在を知り、劇的に業務効率を改善させられる (自分がクビになるくらいのインパクトだったとのこと) と知ったので興味を持ちました。Seleniumというのは一言で言ってしまえば、自動でブラウザを操作する為のライブラリということです。Pythonからも動かせるみたいなので、Pythonの復習がてら、またこの技術を使ってやりたいことがあったので導入してみました。

Macのデフォルトをpython2系からpython3系に変更する

まずこれを一番最初にやらなきゃいけないですね。Seleniumはpipでインストールすることになるのですが、デフォルトをpython3系にしておかないと、python2系にSeleniumがインストールされてしまいます。こちらの記事を参考にしました。

qiita.com

まず自分のpythonのデフォルトがどうなっているのかを確認するにはターミナルで

python --version

を実行すれば、僕の場合はPython 2.7.10と返ってくるのでデフォルトがpython2.7になっていることがわかります。

既に上記のどれかの方法でpython3が入っている場合は、環境変数のパス、~/.bash_profile

alias python="python3"

と書き込んであげれば、pythonと打てば、python3が走ります。

とあるのですが、僕の場合、ちょっと前にクリーンインストールをした関係で~/.bash_profileがまだ作られていませんでした。

vi ~/.bash_profile

を実行するとターミナル上でVimが開くので、

alias python="python3"

と書き込んであげます。僕はVimユーザーではないのでいつも困惑してしまうのだけど、Vimで保存して終了する場合は:wqとタイプすればいいらしい。write and quitの略でwqなのだろうと思う。一応、ちゃんと書き込めているか確認する。

open ~/.bash_profile

すると別ウィンドウでopen ~/.bash_profileが開くはず、きちんと書き込めていた。Terminal上でpythonと打つと

Python 3.7.4 (default, Jul  9 2019, 18:13:23) 
[Clang 10.0.1 (clang-1001.0.46.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

と返ってくるので、これでpython3がデフォルトになったようです。

SeleniumとChromeDriverをインストールする

Seleniumをインストールするには、

pip install selenium

でいいのだけど、実際に走らせると

Requirement already satisfied: selenium in /Library/Python/2.7/site-packages (3.141.0)

とpython2.7にインストールしました!と返ってきてしまう。この記事を参考にすると

qiita.com

macには、デフォルトでpython2がインストールされています。pip installのコマンドを実行すると、勝手にpython2の方のinstallと判断されてしまって、3の方には新しいライブラリが入りません。正しくは、バージョンを指定してインストール必要があります。

とのこと。なんてめんどくさい。デフォルトでpython3にしてくれればいいのに。pip installの前にpython3 -mをつけてあげると、python3にインストールされる様子。なので

python3 -m pip install selenium
python3 -m  pip install chromedriver-binary

こうしてあげると上手くインストールされるのではないかと思います。

Sample testを実行してみる

公式ページにsample testが載っています。

import time
from selenium import webdriver

driver = webdriver.Chrome('/path/to/chromedriver')  # Optional argument, if not specified will search path.
driver.get('http://www.google.com/');
time.sleep(5) # Let the user actually see something!
search_box = driver.find_element_by_name('q')
search_box.send_keys('ChromeDriver')
search_box.submit()
time.sleep(5) # Let the user actually see something!
driver.quit()

こんなコードになっていますが、これをこのまま実行すると、PATHが通っていないと怒られると思います。こちらの記事を参考にして

watlab-blog.com

import chromedriver_binary

の一文を加えてあげると上手く走ります。pipでChromeDriverをインストールしていない場合は、自分でPATHを通す必要があるみたいなので、検索してみてください。

import time
from selenium import webdriver
import chromedriver_binary # PATHを通す

driver = webdriver.Chrome()
driver.get('https://www.google.com/') # ページを立ち上げる
time.sleep(5) # 読み込み時間を考慮して5秒待つ
search_box = driver.find_element_by_name("q") # “q”という名前で検索ボックスがどれか認識する
search_box.send_keys('ChromeDriver') # 検索ボックスに'ChromeDriver’と打ち込む
search_box.submit() # 検索する
time.sleep(5) # 読み込み時間を考慮して5秒待つ
driver.quit() # 

これを実行するとChromeが起動され、Googleが開き、検索ボックスにChromeDriverと打ち込まれ、検索結果が表示された後にChromeが閉じます。ちょっと感動しました。

鈍的肝腎脾損傷における早期離床の安全性

はじめに

f:id:Razumall:20190923084044p:plain

October 20, 2008
Safety of Early Mobilization of Patients With Blunt Solid Organ Injuries
Jason A. London, MD, MPH; Lisa Parry, BS; Joseph Galante, MD; et al
Arch Surg. 2008;143(10):972-976. doi:10.1001/archsurg.143.10.972

だいぶ昔の抄読会で作った資料を読み返す機会があったので、せっかくなので記事を作ってみました。

前任地では、血行動態が安定した腹部鈍的外傷に関しては、bed rest protocolで加療していました。基本的には2週間の床上安静の後、腹部造影CTで評価してから離床を始めるというマネジメントだったのですが、3週間前後の入院期間となり、患児や家族にとって大きな負担となっており、入院期間をもう少し短くすることができないか、調べてみました。

割と興味があって昔いろいろとまとめたのも思い出しました。

www.pediatricsurgery.site

続きを読む

ロイガヴェーグルトレッキングに実際に行ってわかったこと

f:id:Razumall:20190722172803j:plain

7月の第1週、ちょっと早めに夏休みをとってアイスランドに行ってきました。Laugavegur (ロイガヴェーグル) というルートでトレッキングをするというのが一番の目的でした。実は海外トレッキングをする際にいつも参考にさせてもらっているブログがあるのですが、そこでベスト1のトレッキングルートだと紹介されていたので、いても立ってもいられず行ってきました。こういうのに本当に弱い。

trailtravelers.net

Laugavegur自体の素晴らしさや詳しい情報は、Trail Travelersさんをはじめ、いろいろなところにまとめられているのでそちらを参照してください (記事の最後にまとめています)。

さて。このブログでお伝えしたいことは実際に行ってわかったことや、行く前にわからなくて困ったこと、ちょっとしたアドバイスをお伝えします。

続きを読む

学会発表で悩めるMacユーザーに贈る、Windows PCで確実にプレゼンする方法

はじめに

Macユーザーの皆さんは学会でのプレゼンテーションはどうしていますでしょうか?

1つの解決策としてはWindowsとの共用フォントを使えばいいのだと思いますが、Windowsで最適とされるフォントの組み合わせがMacでうまいこと使えなかったり、そもそも宗教上の理由でヒラギノしか使えないという僕みたいな人も一定数いるのではないかと思います。

あとはPDFしちゃえばいいじゃんという声も聞こえてきそうですが、少なくとも医学系の学会ではPDFでのプレゼンテーションはみとめられていないことが多いと思います。

フォントの埋め込み

尚、Macにしか入っていないフォントをpptファイルに埋め込んで、Windows PCで開けるようにする という方法もあります。ここらへんは 伝わるデザイン に詳しく記載されているのですが 、残念ながら

実はWindows版のPowerPointにはファイルに「フォントを埋め込む」という機能があります。この機能を使えば、どのパソコンでも自分の好きなフォントでプレゼンすることができます。 この方法は、Windows版のPowerPointでのみ使える方法ですのでご注意ください。

ということで、MacPowerPointでは使えないようです。

続きを読む

【PythonとOpenCVで簡易OMR(マークシートリーダ)を作る】を初心者が理解するために③

0. はじめに

qiita.com

この記事は@sbtseijiさんがQiitaに投稿した記事をPython初心者が、その仕組みを理解して実行できるようになるために一歩一歩進んでいくための記事の第3回目です。上級者はおそらく元記事を見れば理解できると思いますが、素人にはなかなか難しいのでGoogle先生に教えてもらいながら少しずつ歩みを進めていきます。

www.pediatricsurgery.site

www.pediatricsurgery.site

www.pediatricsurgery.site

続きを読む

【PythonとOpenCVで簡易OMR(マークシートリーダ)を作る】を初心者が理解するために②

0. はじめに

qiita.com

この記事は@sbtseijiさんがQiitaに投稿した記事をPython初心者が、その仕組みを理解して実行できるようになるために一歩一歩進んでいくための記事の第2回目です。上級者はおそらく元記事を見れば理解できると思いますが、素人にはなかなか難しいのでGoogle先生に教えてもらいながら少しずつ歩みを進めていきます。

www.pediatricsurgery.site

www.pediatricsurgery.site

続きを読む

【PythonとOpenCVで簡易OMR(マークシートリーダ)を作る】を初心者が理解するために①

0. はじめに

qiita.com

この記事は@sbtseijiさんがQiitaに投稿した記事をPython初心者が、その仕組みを理解して実行できるようになるために一歩一歩進んでいくための記事です。上級者はおそらく元記事を見れば理解できると思いますが、素人にはなかなか難しいのでGoogle先生に教えてもらいながら少しずつ歩みを進めていきます。前回の記事で、PythonOpenCVとNumpyをインストールするまでの悪戦苦闘を記事にしました。

www.pediatricsurgery.site

続きを読む

Python初心者がnumpyとOpenCVをインストールするためにしたこと

はじめに

臨床データを呼吸するように集めていく、というのは僕の一つの目標なのですが、自作のマークシートがあればいろいろと面白いことができないかな?と思っていました。

www.scanet.jp

業者に頼むのが一番手っ取り早かったの、スキャネットさんの担当者さんに来てもらったりして話を聞かせてもらったのですが、1つのマークシートを作成して、読み込めるようにするように20-30万かかってしまうということでした。Readymadeのもので間に合えばもっともっと安く済むのですが、残念ながら難しく、複数のマークシートも必要だったので、自分で作る必要があるかな?と思っておりました。

qiita.com

そんな中、こんなQiitaの記事を見つけてやってみようかな?という気になりました。PythonはQiimeで少しかじったくらいなのでちょっと心配でしたが…Pythonがほとんど入っていない環境に導入するのはなかなか大変でした。とりあえずやったことは

  1. Python3のインストール
  2. numpyのインストール
  3. OpenCVのインストール

になります。

続きを読む