2018年9月2日

VS Code デバッグ環境を整備してPythonからElasticsearchへ接続する

前置き


先日の記事で紹介した通り、PowershellからElasticsearchを触るのは、Elasticsearch側に問題があるため不向きである。
そこで開き直って言語を変えることにした。最近流行りのPythonを試してみることにした。
そんな訳で、Windows環境で、PythonからElasticsearchへ接続するための環境をどのように用意したのかを紹介いたします。
お品書き
  • MeCab
  • Anaconda
    • elasticsearch
    • flask-jsonpify
    • mecab-python-windows
  • git for Windows
  • Visual Studio Code
    • vscode-icons
    • gitLens
    • Python
  • Build Tools for Visual Studio 2017
  • Visual C++ 2015 ランタイム

導入

MeCab
最初にMeCabです。これはElasticsearchから取得したデータを形態素解析するために入れました。厳密にはElasticsearchに接続するために必要なものではありません。
先日の記事にてWikipediaのデータをElasticsearchに投入したので、それを取得したのちに解析するために入れるという流れです。

以下のURLからWindows向けのバイナリをダウンロードしてセットアップします。
http://taku910.github.io/mecab/#download

注意事項としてはインストール時に「UTF-8」を選択してください。デフォルトのShift-JISだとPythonからでは利用できませんでした。理由は調べてません。

Anaconda
Pythonのディストリビューションで、WindowsかつPython初心者に最適なパッケージです。NumPy、Pandas等のライブラリーがセットで入っている全部入りパッケージです。
歴戦のPython使いなら不要でしょうけれども、歴戦のPython使いはこの記事に参考となる情報は一つもないでしょうから端から対象外です。

Anaconda 公式はAnaconda Cloudになっているようですが、最終的には以下のダウンロードリンクへ誘導されるはずなので、Python 3.6(またはそれ以降)をダウンロードしてください。
https://www.anaconda.com/download/

注意事項としては、Pythonで複数環境を作成する前提のためか、既定の設定では環境変数を通してくれません。初心者であるならば、インストール時はPATHを通すことを推奨します。慣れたら消せばいいし。
PATHを通すとかなんじゃらほいという方は以下を参照してください。なお、上に挙げたvscode-iconsは以下のページで知って早速導入した次第です。
https://beachside.hatenablog.com/entry/2017/12/25/000000
Anaconda:conda/pip
次にPythonで使用するパッケージを追加インストールします。

通常、Pythonはpipというパッケージ管理を利用します。Anacondaの場合はcondaというパッケージ管理が付随しており、こちらを使うように言われます。
両者を相互利用するのは問題があると言われておりますので、私は開き直ってpipで統一することにしました。
http://onoz000.hatenablog.com/entry/2018/02/11/142347
なんかあったら直せばいいし、その調査も経験値になるしなぁという目論見です。

前述のAnaconda導入時にPATHを通していることが前提になります。
Powershellコンソールを開き、-Vオプションで確認します。

python -V
pip -V

両方のバージョンが表示されたらOKです。
pipはバージョンが古かったので更新しました。

pip list
python.exe -m pip install --upgrade pip
pip -V
では入れていきましょう。
pip install elasticsearch
pip install flask-jsonpify
pip install mecab-python-windows
pip list | Select-string "elasticsearch"
pip list | Select-string "flask"
pip list | Select-string "mecab"

Proxy環境下の方は環境変数がないとエラーが出ると思いますので、その場合には環境変数を設定してください。
$ProxyServer = "http://proxyserver:8080" # 自身のProxyサーバー名を設定
$env:http_proxy = $ProxyServer
$env:https_proxy = $ProxyServer

うまく入らなかったら適当にググって対処してください。オンラインであること以外に要件はありません。

git for Windows
gitが入っていないとVS Codeで警告が出るので入れましょう。
https://gitforwindows.org/

入れ方は以下が参考になるとは思います。なお、私は改行コードは「Checkout as-is, commit as-is」にしてます。マルチプラットフォームのコードより環境依存のコードを書くことが多いので、環境違いで改行コードを変えられても困るほうが多いため。
https://qiita.com/toshi-click/items/dcf3dd48fdc74c91b409

gitはとても素晴らしいものですが、それを語るには紙幅が足りないので別の機会に委ねます。
別に紙じゃないしフェルマーの最終定理でもないですがぶん投げておきましょう。
といいつつも、その紙幅を至福に変えるために一応おすすめ記事を挙げておきますね。
https://backlog.com/ja/git-tutorial/

Visual Studio Code

以下からダウンロードしてインストールしてください。.Net バージョンを追加せよ等を言われたら、指示に沿って入れてください。
https://code.visualstudio.com/download

Visual Studio Code:拡張機能/ユーザー設定
以下の画面の赤枠をクリックすると、拡張機能をインストール/管理する画面になります。
また、表示画面自体はユーザー設定画面で黄枠クリックから「設定」を押すと呼び出せます。そして青枠を編集します。












では以下の拡張機能を導入してください。導入手順で不明な点があれば先ほど紹介した記事を見るといいと思います。
  • vscode-icons
  • gitLens
  • Python

ユーザー設定はしなくても構わないですが、Windows環境だとShift_JISとUTF-8の文字コードが混在していることが多いと思われますので、自動認識だけ入れておくといいでしょう。
正答率はそこそこですが、ないよりは全然ましです。
    "files.autoGuessEncoding": true,
Build Tools for Visual Studio 2017
MeCabの時にあれこれ調べたので、転ばぬ先の杖としてVCコンパイラーを入れます。
現状、なくても動作するので、面倒な人はこの作業はスキップして構いません。

Windows版Python3.6はVisual C++ 2015でコンパイルされており、同バージョンのコンパイラーを環境に入れておくというところです。Visual C++ 2015のコンパイラーがBuild Tools for Visual Studio 2017に入っているというのは中々ややこしい話ですが、公式ブログに書いてあったので受け入れざるをありません。
なお、Python公式でも、これとかこれに書いてあるので、間違いではありません。
今後新しいバージョンがリリースされても、公式情報をあたれば間違いないでしょう。
過去バージョンのブログを漁ると、時代の変化に追いついていないのでえらい目にあいます。(3年後くらいにはこの記事もそうなっているだろうからという予防線です)

現時点でのダウンロードリンクは以下になります。
https://visualstudio.microsoft.com/ja/downloads/?q=Build+Tools+for+Visual+Studio+2017

ただ、多分MSのことなので、ダウンロードへのたどり方は頻繁に変わると思われ、余り参考にならないと思います。なので、ググってもダウンロードリンクには余りHITしません。
リンクが切れていたら、ページのどこかにダウンロード検索窓がいるはずなので、「Build Tools for Visual Studio 2017」というキーワードを入力して目当てのものにたどり着いてください。
導入手順は公式を参考にしてください。
https://www.python.jp/install/windows/install_vstools2017.html

Visual C++ 2015 ランタイム
普通は何かしらで既に導入済みと思われますが、入っていなかったらいれてください。
https://www.microsoft.com/ja-jp/download/details.aspx?id=53587

補足


実際のElasticsearchへの検索は以下の記事を参照ください。
ElasticsearchでWikipediaの全文検索にチャレンジ (4)

最近はMeCabは更新が止まっているようなので、JUMAN++への移行も試したいところですが、今のところ時間がないので未着手です。
http://www.yujakudo.com/blogs/develop/ai/jumanpp-on-windows/

追記


Jupyter Notebookの拡張が使えることが判明。VS Code + Pythonが更に便利になるのでマジおススメ。
http://www.atmarkit.co.jp/ait/articles/1806/12/news041.html

Jupyter Notebookのように対話型に近い形でコーディングして、ある程度形が出来てきたら通しで動作を確認し、そのままUnitTestという流れが完璧すぎる。
Cellの区切りもただのコメントでしかないからデバッグ用にそのまま残しておいても大丈夫だし。

追記の追記


以下の記事にある通り、Python拡張の標準機能でJupyter 拡張と同等の機能が実装されたため、この拡張機能は入れなくても問題なくなりました。使い勝手は上述の通りですので、ご安心ください。
https://ntnl-it-wiz.blogspot.com/2018/11/jupyterpythoninteractive.html

1 件のコメント:

  1. Online Casino Site Review
    Online Casino is an Australian-owned online 카지노 casino provider in Australia. Read the casino site review here and find out what our experts think about this Bonus: 100% up to $/€100Number of Slots: 150+Deposit Methods: Interac + more

    返信削除

TIPS:VSCodeで日本語化がうまくいかないとき

前置き Visual Studio Codeで拡張機能「 Japanese Language Pack for Visual Studio Code 」を入れたら日本語になりますよね。 でも、「 Remote Development 」で色々な環境を日本語化してると、偶に...