こんにちは。 Dr.レオです。
私は現在3次救急病院で勤務している現役の外傷整形外科医です。
私自身、プログラミング言語Pythonを10年以上前に勉強し始め、今でも現場で臨床に活用しています。
今回は医師・医療関係者が学ぶべきプログラミングについて記事を書きました。
1.どんな人がプログラミングを学ぶべきなのか?
近頃プログラミングブームで、小学校でも授業でプログラミング学習が取り扱われています。
「プログラミングってどういうもの?」
「面白そうだし、研修医の空いた時間にちょっとやってみようかな?」
「医学生の間にプログラミングやっとけばいつか使えるかな?」
って思う医療関連の人も増えてきています。
私自身は
プログラミングは医学生には必修の知識である
と考えています。
が、残念ながら教える人がいないので必修化には至っていない状況です。
次のような人は是非始めるべきだと思います。
- 臨床医としてだけではなく、研究手法を増やして業績を伸ばしていきたい
- 手術を日々こなしているが、プラスアルファの技術でパワーアップしたい
- 研究を行っているが、エクセルで解析や統計処理をすることに限界を感じている
- 医学生・研修医で時間があって、将来役立ちそうな技術を学びたい
逆に、
- パソコンが嫌い
- 新しい技術を身につける時間がないと思う
という人に無理にすすめるものでもないと思っています。
2.どのプログラミング言語を学ぶべきか
あくまで個人的な意見ですが、医療への応用を目的として勉強するのであれば
「Python一択」
です。
これには反対意見もあると思いますが、迷う人も多いのでここではあえて結論づけておきます。
私個人の意見として、
「世間でブームのプログラミングと医師が必要とするプログラミング技術は異なる。」
ということを強調しておきます。
世間では、フリーランスや副業の人向けに
「Webプログラミング」、「Webマーケティング」、「Webアプリ開発」
を目的としたプログラミング学習が広く進められています。
これらは、その技術に頼って稼いで生計を立てていくことを目的にしています。
その目的に主眼をおくと、
HTML, CSS, Javascript
といった、サービス提供向けのプログラミング言語が選択肢となります。
しかし、臨床現場の医療と相性のよいプログラミング言語は、
「医療ツールとしてのプログラミング言語」
です。
目的が異なるので学ぶべき言語は異なってきます。
この「ツールとしてのプログラミング言語」
として最適なのがPythonなのです。
3.Pythonでできること
Pythonを学ぶと次のようなことができます。
- 画像解析(AI)
- 手術シミュレーション
- 統計・グラフ
- ソフト間のデータのやり取り
- その他日常での作業効率化
ここでは1つずつ簡単に説明していきます。
①.画像解析
AIを用いた画像解析です。
「腫瘍が悪性かどうか人工知能で病理画像を判断する」
「頭部CTから脳出血を判断する」
「レントゲンから骨折の有無を判断する」
といったことを人工知能で行います。
Pythonには機械学習、Deep learning用に開発されたKeras, TensorflowやPytorchというツールが存在します。
これらのツールを使うことはPythonという言語を学習し、画像データを解析することで可能になります。
②.手術シミュレーション
この技術は臨床現場でよく用いています。
私自身は整形外科なので、手術前に複雑な骨折を形状解析し、術前シミュレーションを行っています。
データを3Dプリントで出力することで非常に精度の高い手術を行うことが出来ます。
③.統計・グラフ
Pythonにはmatplotlib, pandasという統計処理に優れたツールがあります。
統計処理、表計算では「R」という優れているプログラミング言語があります。
「R」では機械学習もできるため、いまでも「R」は多くの医療関係者に使用されています。
これに対応する機能がpandasです。このツールのおかげで、Rにある多くの統計処理をPythonでも扱えるようになりました。
もう一つ、臨床的にはSPSSという有料ソフトがあります。
しかし、ほとんどの統計処理はpandasでできます。
統計データの形式処理やファイル出力も考えるとPythonとpandasが使えればよっぽどフレクシブルにデータ活用、視覚化ができます。
上司たちで使っている人もいますが、時間があって勉強できるのであればPythonのほうが応用性が高いといえます。
④. ソフト間のデータのやりとり
医療関係の分析ソフトはたくさんあります。画像解析ソフト、運動解析ソフト、手術の電子カルテ、外来の電カルテ・・・
無料ソフトから有料ソフトに至るまで、様々なソフトがあります。
これらのソフトの大部分はその中のデータを出力することができます。
しかし、各ソフトの出力形式や入力形式はまちまちで互換性がありません。
Pythonは
テキストファイルの読み書きが容易
という利点があります。
データを格納し、違うファイルにして書き出してやれば、こういったソフト間の橋渡しをすることも可能になります。
⑤. その他日常のいろいろ
Pythonではいろいろな日常作業を簡略化できます。
例えるとキリがありませんが、私の場合は、
- 専門医試験申し込みのデータ整理をPythonで行う ー 基本文法のみ
- Evernoteの写真を手術写真と家族写真に分ける ー Deep learning
- テーマパークの入場チケットとれるまでサイトに自動アクセスする(やりすぎるとダメ?)ー スクレイピング
- 株価や仮想通貨などデータをページからとってきて分析 ー API、pandas, matplotlib
などなど
いろんなことに使えます。
