電電のブログ

電電生だったひとのぼやき

Pisortの中身

どうも電電です.

COVID-19の影響で学校がない生活が長くなってきましたね.学校がなくなった影響で,みんな人同士の交流が全然なく大変な状況かと思いますが,一緒に頑張りましょう.
その交流に関してなんですが,2年前くらいに行った電電縦コンの話からつながって,京都大学の電気電子工学科の新入生同士の交流会をシバニャンと一緒にzoomを使って開いたりしています.
(これに関しては,関係各所に書いていい内容の確認ができたらzoomのホストのノウハウなどを踏まえてこのブログで書こうと思います.)

今回のブログでは以前公開した,Pythonのライブラリを整理するアプリPisortを公開した. - 電電のブログの中身に関して紹介していこうかなと思っております.そんな複雑なものではないので,こんな感じなんだな〜みたいな感じでのんびり読んでください.


さて,以前のブログで紹介したように,Pisortはすでに存在している「isort」というOSSプログラムを使っています.でこれにweb アプリとしてのガワをつけたという感じです.

全体の構成はこんな感じになっています.

f:id:denden_seven:20200424121820p:plain:w800
Pisort構成図

フロントはVuetifyで書いています.でそれをホスティングサービスのnetlifyで公開しています.
ユーザーからアクセスがあった場合,json形式でconohaのサーバーにpost requestしているというのがおおまかな流れです.

f:id:denden_seven:20200424122248j:plain:h350
フロントエンド

サーバーの方は,全てdocker-composeで管理していてコマンド一つで立ち上げることができるようになっています.
また,ややこしいhttpsの通信の証明書発行は,https-portalというOSSを使っています.(https-portalはいいぞ)
https-portalを通して,サーバーとdockerのポートを使って,別のdockerで管理しているPython サーバーにアクセスしてる感じですね.
Python のサーバーは単純にPOST requestを捌くだけなので,falconライブラリを使っています.

f:id:denden_seven:20200424122350j:plain:w400
バックエンド

Pythonサーバー内部で,ユーザーが書いたpythonのコードをjson形式で格納しているものに,isortを走らせて返してます.
ただ,初期設定のままisortを走らせるだけだと有名なライブラリでも自作のライブラリと混ざって並び替えられてしまうので,時々有名なライブラリをPypiから集めています.
(Top PyPI Packages: A monthly dump of the 4,000 most-downloaded packages from PyPIという有名なpythonのライブラリ一覧のファイルが存在するのでそれを使っています.)

これをisortの設定フォルダに入れて実行することで,大体の有名どころのライブラリに対応しています.
ただ,これ一つだけ困ったことがあって,cv2などは,pypiのダウンロード時の名称がopencv-pythonなのに対して,ライブラリを呼び出すときは,import cv2なんですよね.
なので,こういうpypiの名称とimportする時の名称が異なるライブラリに関しては手動で追加してます.
もし有名ライブラリなのにうまくソートされないものを見つけた方はコメントや,twitterで知らせてくれるとありがたいです.追加します.


こんな感じですね.今回は軽めに書きました.
次回は何書こうかな,

ほなまた.