オタクと文化を科学する

バイオ系博士の備忘録

新薬の情報を元に、製薬業界を分析する

製薬企業の特徴を新薬から探る

就活を始める方で、どのように業界研究すればよいかわからない人って結構いると思います。
私もその1人で、まずは製薬に絞って就活しようと思い立ったのですが、それでも膨大な数の企業があって時間と労力をかけなければ俯瞰的な視点を持つことは難しそうでした。
製薬企業のセグメントは、資本(内資・外資)と事業領域(新薬・ジェネリック)の軸の上に、疾患領域をどのようにターゲティングするかでさらに細分化されるようです*1
大まかな分類は調べれば出てきますが、最新のデータを元にした細かな業界研究は見当たらなかったので、自分で分析することにしました。
その際、R&Dの職に就きたいという希望があったので、新薬の情報を元に、製薬企業の分類をすることにしました。

データ集計、処理

概要

KEGG DRUGに2000年以降に上市された新薬が記載されています。
承認日, 薬効, 分類ID, 有効成分, 商品名, 会社名などの列に対して、630個の新薬が列挙されています*2 *3
有効成分やら商品名だけでは何の薬かぱっと見わからないものも多いので、薬効分類を併記したいです。
そのために、分類IDの対応表を作成しました。
分類IDは4桁数字からなるレコードで、大・中・小・細小と薬品を分類しています*4
このデータはjsonファイルでダウンロードすることができたので、Pythonで分類IDごとに分類名称を対応させることにしました。
元の表と薬品分類対応表をスプレッドシート上で合体させ、Tableauで可視化することにしました*5

jsonファイルのパース

jupyter notebookを用いて、次のようなコードでpandas DataFrameに変換しました。

import json
file = open('jp08301.json')
data = json.load(file)

from pandas.io.json import json_normalize
df = json_normalize(data=data,record_path=['children','children','children','children'],meta=[['children','children','children','name'],['children','children','name'],['children','name']])
df = df[['children.name','children.children.name','children.children.children.name','name']]

df.rename(columns = {'children.name':'first','children.children.name':'second','children.children.children.name':'third','name':'fourth'}, inplace=True)

df['first'] = df['first'].str.replace('^[1-9]+', '').str.strip()
df['second'] = df['second'].str.replace('^[1-9]+', '').str.strip()
df['third'] = df['third'].str.replace('^[1-9]+', '').str.strip()
df[['code','fourth']] = df['fourth'].str.split('  ', expand=True)

json_normalizeでパースしました。
ネストされまくっているので、record_pathとmetaで欲しいデータを指定しています。
また、rename後、余計な文字を削除しました。
結果は次のような表になります。

f:id:arukuhito_000:20190911152947p:plain
薬品分類

可視化

Google Driveとtableauと繋げれば、わざわざcsvファイルをアップロードしなくてもデータを整形できちゃいます。
企業名に表記揺らぎや今はもう統合された企業があったので、前処理としてグループ化だけしました。
細かい操作もできて、色々痒いところに手が届く仕様にしているようで、こういう趣味のデータを可視化する分には十分な機能を持っている印象です。
最近流行りのtableauの分厚い教本がありますが、買わなくても直感的に操作できるのがいいところだと思います。

Tableauデータ分析~入門から実践まで~

Tableauデータ分析~入門から実践まで~



可視化するまでもなかったのですが、近年の上市新薬腫瘍用薬, 中秋神経系用薬が多かったです。
薬品分類ごとの企業割合から、一部省略していますが、がん領域だとMSD, 中外, ファイザー, ノバルティス, アストラゼネカが強いことがわかりました。
また、代謝性医薬品(皮下注射用の医療用医薬品など)は、サノフィ, 協和キリン, ジョンソンエンドジョンソンなども強そうです。

company
企業割合



また、企業ごとの新薬承認数も可視化しました。
MSD, ファイザー, グラクソ, ノバルティスなど、外資が強いようです*6

new drug
新薬承認数



有効成分がモノクローナル抗体の薬品は、分子標的薬です。
名前が〜〜マブとなっている薬を列挙しました。
腫瘍用薬で分子標的薬は圧倒的にMSD, 中外が強いみたいです。聞いたことある名前がちらほら入ってますね。

Molecular targeting drugs
分子標的薬



一例として、中外製薬が出している新薬を列挙しました。
少し前は領域横断的に新薬を出していましたが、近年でがん領域に特化し始めたことがわかります。
一番新しい新薬のロズリートレクはつい最近販売が開始されたので、ニュースになりましたね。
www.chugai-pharm.co.jp

chugai
中外製薬


最後に

ざっと可視化しただけでだいぶ特徴が掴めたと思います。
やってよかった。

今回は時間をかけずに調べたかったのでやりませんでしたが、もっと力を入れて分析できるなと思った点もありました。
例えば、企業ごとの特色は四季報に書いてあるので、そこのデータを結合すればもっと細かい分析ができると思います。
また、ATC分類で対応表を作れば、もっとわかりやすい分類になったかもしれません。
scikit-learnを用いてクラスタリングすれば、もっとわかりやすい分類もできると思います。

分析に用いたスプレッドシートは需要があれば公開します*7

ここまで読んでくださり、ありがとうございました。

*1:国内製薬業界のいま〜医療業界コンサルタントが解説!|SCIENCE SHIFT

*2:2019/9/3現在

*3:別の表に再生医療新薬も記載されていましたが、今回は除きました。

*4:KEGG BRITE: 医療用医薬品の薬効分類

*5:Pythonで可視化してもよかったのですが、時間短縮とBIツールの練習のためにこの方法を選択。学生は無料!

*6:武田は内資ですが、経営陣トップは外国人ばかりっぽいので、どちらかといえば外資志向なイメージはあります。

*7:KEGG DRUGも公開データベースなので、特に問題ないと思います。

pipenvのパッケージがバージョン指定で入らず苦労してる話。

macでpipenvを使いたい

仮想環境とかよくわかんないけど、pipenvは楽そう。
今までの仮想環境は削除する(Qiitaの記事を参考にした)。
いい感じに仮想環境構築して、「Python 機械学習プログラミング 達人データサイエンティストによる理論と実践 」を読み進めたい。

[問題点] pipenvでバージョン指定できない

パッケージの依存関係の問題なのか、最新版のパッケージを入れることはできても、ダウングレードして入れることができていない。
早急に解決したいが、取り急ぎの備忘録として公開する。

[追記]下記オプションで(一部)解決した。

$ pipenv install --sequential
インストール

基本的に、公式ドキュメントのこことかこことかを参考にする。

$ cd myproject
$ brew install pipenv
python3を使う
$ pipenv --python 3
Warning: Python 3 was not found on your system…
You can specify specific versions of Python with:
  $ pipenv --python path/to/python
$ brew ls python3
...
/usr/local/Cellar/python/3.7.3/bin/python3.7
...
$ pipenv --python /usr/local/Cellar/python/3.7.3/bin/python3.7
Removing existing virtualenv…
Creating a virtualenv for this project…
...
✔ Successfully created virtual environment! 
Virtualenv location: /Users/myname/.local/share/virtualenvs/python-machine-learning-book-2nd-edition-eAx8UWz8
仮想環境構築とパッケージのインストール

パッケージのバージョンを指定するとPipfile.lockでエラーがでたので、取り急ぎ最新バージョンで(190402)。

$ pipenv install NumPy SciPy scikit-learn matplotlib pandas
Creating a virtualenv for this project…
Pipfile: /Users/myname/python-machine-learning-book-2nd-edition/Pipfile
Using /usr/local/Cellar/pipenv/2018.11.26_2/libexec/bin/python3.7 (3.7.3) to create virtualenv…
⠸ Creating virtual environment...Already using interpreter /usr/local/Cellar/pipenv/2018.11.26_2/libexec/bin/python3.7
Using real prefix '/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7'
New python executable in /Users/myname/.local/share/virtualenvs/python-machine-learning-book-2nd-edition-eAx8UWz8/bin/python3.7
Not overwriting existing python script /Users/myname/.local/share/virtualenvs/python-machine-learning-book-2nd-edition-eAx8UWz8/bin/python (you must use /Users/myname/.local/share/virtualenvs/python-machine-learning-book-2nd-edition-eAx8UWz8/bin/python3.7)
Installing setuptools, pip, wheel...
done.

✔ Successfully created virtual environment! 
Virtualenv location: /Users/myname/.local/share/virtualenvs/python-machine-learning-book-2nd-edition-eAx8UWz8
Creating a Pipfile for this project…
Installing NumPy…
Adding NumPy to Pipfile's [packages]…
✔ Installation Succeeded 
Installing SciPy…
Adding SciPy to Pipfile's [packages]…
✔ Installation Succeeded 
Installing scikit-learn…
Adding scikit-learn to Pipfile's [packages]…
✔ Installation Succeeded 
Installing matplotlib…
Adding matplotlib to Pipfile's [packages]…
✔ Installation Succeeded 
Installing pandas…
Adding pandas to Pipfile's [packages]…
✔ Installation Succeeded 
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
✔ Success! 
Updated Pipfile.lock (46c561)!
Installing dependencies from Pipfile.lock (46c561)…
  🐍   ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 11/11 — 00:00:02
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run.
仮想環境に入る
$ pipenv shell
Launching subshell in virtual environment…
bash-3.2$  . /Users/myname/.local/share/virtualenvs/python-machine-learning-book-2nd-edition-eAx8UWz8/bin/activate
(python-machine-learning-book-2nd-edition) bash-3.2$
(python-machine-learning-book-2nd-edition) bash-3.2$ python --version
Python 3.7.3
Pythonのシェルに入る
>>> import numpy as np
>>> print(np.arange(10))
[0 1 2 3 4 5 6 7 8 9]
パッケージのバージョンを指定する
$ pipenv run pip freeze
cycler==0.10.0
kiwisolver==1.0.1
matplotlib==3.0.3
numpy==1.16.2
pandas==0.24.2
pyparsing==2.3.1
python-dateutil==2.8.0
pytz==2018.9
scikit-learn==0.20.3
scipy==1.2.1
six==1.12.0

実際に欲しいのは下記だが、エラーがでる(解決済み)。
NumPy==1.12.1
SciPy==0.19.0
scikit-learn==0.18.1
matplotlib==2.0.2
pandas==0.20.1

ためしにpandasだけ入れようとしても、

$ pipenv install pandas==0.20.1
Installing pandas==0.20.1…
Adding pandas to Pipfile's [packages]…
✔ Installation Succeeded 
Pipfile.lock (a71011) out of date, updating to (46c561)…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
✔ Success! 
Updated Pipfile.lock (a71011)!
Installing dependencies from Pipfile.lock (a71011)…
An error occurred while installing
...
Installing initially failed dependencies…
...
ERROR: ERROR: Package installation failed...
  ☤  ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 0/1 — 00:00:05

入らない。

pipenv.exceptions.InstallError

これをどうにかしないといけないようなので、引き続き調べる。


[190403追記] pipenv install --sequentialする

依存関係のエラーらしい。
一部は--sequential optionで一つずつ入れられた。

$ pipenv --rm
Removing virtualenv (/Users/myname/.local/share/virtualenvs/python-machine-learning-book-2nd-edition-eAx8UWz8)…
python-machine-learning-book-2nd-edition $ rm Pipfile Pipfile.lock 
$ pipenv install --sequential SciPy==0.19.0
Installing SciPy==0.19.0…
Adding SciPy to Pipfile's [packages]…
✔ Installation Succeeded 
Pipfile.lock (0c5e59) out of date, updating to (91cb02)…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
✔ Success! 
Updated Pipfile.lock (0c5e59)!
Installing dependencies from Pipfile.lock (0c5e59)…
  🐍   ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 3/3 — 00:00:11
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run.

ただし、入れられないものもあり、それらはエラーがでる。

$ pipenv install --sequential matplotlib==2.0.2
Installing matplotlib==2.0.2…
Adding matplotlib to Pipfile's [packages]…
✔ Installation Succeeded 
Pipfile.lock (a671fc) out of date, updating to (ed87c2)…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
✘ Locking Failed! 
...

ただし、pipenv run pip freezeでは入っておらず、実際にimportもできない。

[190508追記] numpy errorだった

numpy1.12はpython3.7に未対応らしく、pyenvでpythonのバージョンも管理すれば解決できそう。
この記事を参考にpyenvでpython3.5.7を入れておく。

$ pipenv --python 3.5.7

続いてjupyterにkernelを追加する。
仮想環境に入り

(test) $ pipenv shell
(test) bash-3.2$ ipython3 kernel install --user --name=test --display-name=test
(test) bash-3.2$  jupyter kernelspec list
  test       /Users/myname/Library/Jupyter/kernels/test
  python3    /usr/local/share/jupyter/kernels/python3


以後はこの仮想環境がjupyter kernelに追加されるので、外からjupyter notebookを開いてもOK。

TwitterでBTCを投げ銭できる“Tippin”をやってみた

“Tippin”とは?

tippin.me

「tippin.me」はLightning Network(LN)普及のための個人プロジェクトです。
Tippin (@tippin_me) | Twitter

Lightning Networkとはビットコインをやり取りするための新しいシステムです。
これを用いることで、素早く・簡便・低コストなビットコイン送受金が可能となります。
Tippin.meは謂わばLightning Networkを用いた「チップジャー」というコンセプトみたいですね。

Tippin.meは実際にはTwitter拡張機能となっていて、Twitterユーザーならだれでも利用することができます。
(ただし、送受金利用にはTippin.meアカウントを作っている必要があります。)

「RT」「いいね」に加えて「Tip」が誕生したということですね。
マイクロペイメントの活用法としては申し分ないんじゃないでしょうか。

登録してみた

f:id:arukuhito_000:20190228132318p:plain:w300
ボタンを押すだけ。


f:id:arukuhito_000:20190228132548p:plain:w300
https://tippin.me/@arukuhito_000

これで受金はできるようになっているはず。

実際に使ってみた(送金のやり方)

Wallet準備

まずはLightning Networkを使えるWalletを用意します。
公式ではEclair Walletbluewalletが推奨されていたのですが、どうやらbluewalletが使いやすいらしいので、これをスマホにインストール。
BTC walletとLightning wallet両方作ってしまいます。

bluewalletにBTC送金、Lightning walletにRefillする

仮想通貨口座からBTCをbluewalletのwalletに送金します。
普通にいままでと同じ方法です。
10分くらいかけて0.001BTC着金しました。
f:id:arukuhito_000:20190228143146p:plain:w300


Lightning walletのmanage fundsから…
f:id:arukuhito_000:20190228143800p:plain:w300


Refillを選び…
f:id:arukuhito_000:20190228143946p:plain:w300


手数料込みなので若干少なめに設定して、Create → Sendします。
f:id:arukuhito_000:20190228144028p:plain:w300


ここまではBTCの送金と変わらないので、やはり遅いですが、10分くらいで無事口座振替完了。
f:id:arukuhito_000:20190228144302p:plain

tippinで送金する

Chrome 拡張機能、または、Firefox アドインを入れます。
すると、twitterのアクティビティ欄に⚡️マークが出てきました。
f:id:arukuhito_000:20190228144656p:plain:w500


せっかくなのでサーバー代と思って公式に送金してみます。
現在、100satoshiは$0.00384735(0.43円)くらい。
f:id:arukuhito_000:20190228145414p:plain:w300


送れた。少なくてスマンやでw
f:id:arukuhito_000:20190228145604p:plain:w300


受金にかかる時間はわかんないけれど、割と簡単に送金できました(きもちいい)。
f:id:arukuhito_000:20190228145618p:plain:w300

まとめと感想

Tippinとbluewalletの組み合わせでマイクロペイメントが手軽にできました。
あくまでもTippinはtwitter拡張機能という感じで、実際にはLightning Networkがかなり便利。
Lightning NetworkでやりとりするためにBTCをそれ専用のWalletに移さなければならないので、bluewalletを使いました(bluewalletはUIもモダンでいい感じですね)。
bluewalletのmarket placeというボタンを押すと、Lightning Networkを利用できるいろんなサービス(Lappというらしい)も見られます。
f:id:arukuhito_000:20190228150406p:plain:w300


欲を言えば、tippinに既定の設定をつけて、⚡️押すだけで100sats送金できるとかしてほしいですね。
あと、tippinって検索するとtippin.bizとかいう怪しいサイトがトップに出てきてなんか怖かったです。

最後に

ここまで読んでくれてありがとうございました。
受金されるとどうなるかも知りたいので、よければtipお願いします(すっとぼけ)

都内に個人でウェット実験ができるシェア研究室がオープン(Beyond BioLAB TOKYO)

2/5付のニュース記事で紹介されたBeyond BioLAB TOKYO

biolab.beyondnextventures.com

 
シェアウェットラボが2月都内にオープンするらしい。
入居予定者数は15ほどで、基本的にはスタートアップやベンチャー向けのようだが、1日限定の個人利用可能も可能とのこと。

ベンチ単位で借りれるらしいが、共通機器やP2設備もあって良さげだね。
PCRはできそうw(ThermoのProFlexかな?)

こういうラボで自分の実験ができるのも良いけど、コミュニティを広げることができるのも魅力的ですね。
特許関係で出入りが難しいベンチャーとかもあるかもだけど。

今までは都内でバイオ実験ができる施設は渋谷のFabLabくらいしかなかったけど、こういう選択肢が今後増えていくに期待。

2/8追記

バイオハッカージャパンで記事になってます。
実際に行ってきた感想記事なので、パワーがあるw
biohacker.jp

Jupyter notebookでMySQL(とMongoDB)の演習をする

東大松尾研のデータサイエンティスト育成講座を以前に紹介しました。
少しずつ進めていると、8章からデータベースのお話に。
ただし、現行のjupyter notebookではプログラムが動かないらしく、初心者が実行環境を設定するのは大変そう。
こちらの記事でも触れられていましたが、解決方法までは載っていなかったので、備忘録として記事にしておきます。

環境

$ sw_vers
>ProductName:	Mac OS X
>ProductVersion:	10.14.1
>BuildVersion:	18B75
$ python3 --version
>Python 3.7.0

$ jupyter notebook --version
>5.6.0


特にAnacondaとかは入れてないです。
jupyter notebookもpipして入れています。

1. MySQL, PyMySQLのインストール

ターミナルで、次のように打ち込む。

$ brew install mysql
$ pip3 install PyMySQL


以前にMySQLを中途半端に実行していていて色々なエラーが出たので(恨むぞプロ門...)、クリーンインストールしてしまうのが結局早かった。。。

2. MySQLサーバーの立ち上げ

ターミナルで、次のように打ち込む。

$ sudo mysql.server start


MySQLインストール後の初期設定はこちらの記事を参考にしました。
データベースの安全管理上、権限がないです、とエラーが出る場合が多いので、基本sudo付きで実行します。
色々聞かれるy/n質問は、全てyesで良いと思います。

ここまでやったら、jupyter notebookに戻って進めます。

3. jupyter notebookとMySQLを接続する

ターミナルで実行します。

$ jupyter notebook


自動でjupyter notebookが立ち上がるので、松尾研資料(data science)8章と、こちらの記事を参考にしながら接続。


これで、jupyter notebookを用いてMySQLコードを実行することができます。


以上です。
お読みいただきありがとうございました。

続きを読む

自宅でストレプトマイシン(抗生物質)を作る方法

DIYバイオで何かできないか考えて色々検索していた時に、こんな記事を見ました。

自宅でペニシリン(抗生物質)を作る方法 /バイオハッカー・ジャパン


ペニシリンが作れるなら、他の抗生物質も自作できるんじゃないか?」
そんな安直な考えで、ペニシリンに並んで有名なストレプトマイシンが自作できるかどうか、検討してみました。

 
ストレプトマイシンS.griseusが生産するアミノグリコシド抗生物質で、Waksmanら(1944)によって初めて報告されました*1
S.griseusの属するストレプトマイセス属は、放線菌分離株の90%を占めるグラム陽性細菌で、様々な形状で落ち葉や土壌中に生息しているらしい。
多種多様な放線菌の中でもストレプトマイセス属は頑強で生育しやすく、抗生物質の大部分を生産するとのこと*2
今では培地組成や培養条件を調整することで比較的安定してストレプトマイシンを生産することができるらしく、少し調べてみるとそこまで難しい培養プロセスは必要なさそう*3
だたし、人工的環境に植え継いだ菌種は(抗生物質などの)二次代謝産物の生産能が著しく低下することがあり、これが生産効率のボトルネックっぽい……。


色々調べて、S.griseusの取得、培養、検出、ストレプトマイシン生産までのプロトコルを自力でできるように改変させたものが以下になります。
※ただし、実際には試していないので、条件検討の必要あり。

ストレプトマイシン生産に関する備忘録
  1. 土壌を集める(要場所記載)。3–45cmの深さに掘り、2mmフィルター後、湿度を保ったまま家に持ち帰る。
  2. 100mg/10mLで滅菌生食水に懸濁し、そのうち1mLを滅菌処理し冷却されたSCA培地入りペトリ皿に播種する。
  3. 37˚Cで24–48時間培養し、灰色がかった白っぽいコロニーが出現することを確認する。
  4. グラム染色し、陽性の放線菌(菌糸径0.5–1.0 μm)がいることを確認する(菌糸径2–10 μmは糸状菌であるので、フィルタにかけると良い)*4
  5. 250mL half-strength YEME培地などの液体培地3日から4日培養する。(ここでストレプトマイシンが生産される)。
  6. 1mLとり、6000rpmで10分遠心し(あるいはフィルトレーションにより)、菌体を除去する。
  7. 寒天培地に大腸菌などを播いた後で取得した上清を播き、48–72時間培養後、阻止円を確認する。
  8. 上清を塩基性条件下で活性炭に通し、ストレプトマイシンを吸着させる*5
  9. 酸性条件アルコールでストレプトマイシンを溶出(0.2N 50%メタノールなど)
SCA培地組成 カゼイン, 1g(アミノ酸、ペプチド、ビタミン、微量元素) デンプン, 10g(炭素) 海水, 37g(錯体イオン) 寒天, 15g(固化させるために用いる) 水, 1L (pH = 7.2 +/- 2) YMEM培地組成 酵母抽出物, 3g 麦芽抽出物, 3g 獣肉ペプトン(Bacto peptone), 10g グルコース, 10g スクロース, 170g 水, 1L half-strength YEME培地組成 酵母抽出物, 0.2g 麦芽抽出物, 0.5g グルコース, 0.2g 水, 1L ・培地類やディッシュなどは、いずれもオートクレーブで滅菌状態を保っておく。 ・ストレプトマイシンは10%グリセロールストック中で-20˚C保存可能。


SCA培地は海水を混ぜると代用できるらしい*6(ホンマかいな)
YEME培地が自力だと調達が難しそうですが、Waksmanも初めは肉汁とコーンスティープリカーで培養しているので、工夫は出来そう。
あとは収率との戦い……。

だれか作って(他力本願)


以上、お読みいただきありがとうございました。

*1:Albert Schatz, Elizabeth Bugle, and Selman A. Waksman, Streptomycin, a Substance Exhibiting Antibiotic Activity Against Gram-Positive and Gram-Negative Bacteria, Experimental Biology and Medicine, 55, p.66-69, 1944

*2:木下浩, 「放線菌・糸状菌に生理活性物質を作らせるには」, 生物工学基礎講座-バイオよもやま話- 89巻 p.408–410, 2011
宮道慎二, 「不思議な微生物, 放線菌」, 生物工学基礎講座-バイオよもやま話- 90巻 p.32–36, 2012

*3:US PATENT OFFICE 2515461, 1946
Lekh Ram, Optimization of Medium for the Production of Streptomycin By Streptomyces Griseus, International Journal of Pharmaceutical Science Invention, 3, p.1–8, 2014
武市千代子, 「放線菌の分離と同定」, 跡見学園短期大学紀要, 12, A1 - F16, 1976

*4:その他、メチルレッド陽性、アミラーゼ生産、アルコール発酵陽性などでも確かめられる。

*5:有機物が活性炭に吸着する性質を利用している。脱臭効果もコレ。

*6:Starch Casein Agar (SCA)- Composition, Principle, Preparation and Results (https://microbenotes.com/starch-casein-agar-sca-composition-principle-preparation-and-results/)

FlaskでWebアプリ導入

~/hello-flask.py

from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
    return "Hello Flask!"

if __name__ == '__main__':
    app.run()

実行結果
f:id:arukuhito_000:20180902233935p:plain
f:id:arukuhito_000:20180902231255p:plain


Raspberry Piをはじめよう 第3版を参考。
その後、Pythonで学ぶwebアプリケーションの作り方by Flaskを写経。
記事自体が古くてimport文が動かないことがあったり、コード脱字のために動かないことがあったりしたけど、基本的には非常に勉強になった。
自分でコードを書きながら、ユーザーログイン機能付きの簡易tweetアプリみたいな物が作成できる。

Flask自体はwebアプリがどう動くか勉強するには非常に良いけれど、実用的な運用は難しそうなので、今後は、Node.jsとReact(create-react-appというめちゃんこ便利な呪文がある)を使う予定。

一通りフロントができたら、Raspberry piでローカルサーバーを立てて個人的に運用するのもいいかもしれない。