以前のバージョンはこちら
Blocly技術資料(2023/10以前)バックアップ
ビジュアルプログラミングによるデータ処理を行う。Blocklyというオープンソースのビジュアルプログラミングを用いる。使用するプログラミング言語は主にJavascriptである。
とりあえず、WSL2のインストールから始める。以下のサイト見ながらでできる。 https://docs.microsoft.com/ja-jp/windows/wsl/install-win10
一応ここにその内容を記す。まず、管理者権限でPowerShellを開き、次のコマンドを入力する。
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
次に、同じくpowershellでwindowsのどのシステムを使用しているか次のコマンドで確認する。
systeminfo | Select-String "システムの種類" → x64 や ARM64 などが表示される
コマンドプロンプトの場合はこれ
systeminfo | find "システムの種類"
次にwindowsのバージョンとビルド番号を確認する。
Windows ロゴ キー + R キー を押して、「 winver 」と入力し、 [OK] を選択する。 (または、Windows コマンド プロンプトで ver コマンドを入力)。
上図が出るので、適切なバージョンを満たしているか確認する
WSL 2 をインストールする前に、" 仮想マシン プラットフォーム " オプション機能を有効にする必要がある。
管理者として PowerShell を開き、以下を実行する。
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
PCを再起動して WSL のインストールを完了し、WSL 2 に更新する。
次にWSL2Linuxカーネル更新プログラムパッケージをダウンロードする。システムがx64の場合はx64、ARM64の場合はARM64をクリックする。
ダウンロード後、ダウンロードしたファイルを実行する。
次に、次のコマンドで、新しい Linux ディストリビューションをインストールする際の既定のバージョンとして WSL 2 を設定する。
wsl --set-default-version 2
次に、Ubuntu 20.04 LTSをMicrosoft Storeからインストールする。 下のリンクに行って入手を選択する。
複数のデバイスで使うか聞かれたら必要ないと答える。
その後、起動し、ユーザー名とパスワードを設定する。もちろん、どちらも覚えるか記録しておく。
ここから、Ubuntuで作業する。Ubuntuで次のコマンドを実行する。
sudo apt update sudo apt -yV upgrade
WSL2を再起動する(Ubuntuを閉じて再度開く)。再起動後、次のコマンドを実行する。
sudo apt install apache2 apache2 -v
以下のコマンドはpythonを使用するために必要な機能をインストールしている。
sudo apt install -y build-essential libffi-dev zlib1g-dev liblzma-dev libbz2-dev libreadline-dev libsqlite3-dev git net-tools libssl-dev
ここでWSL2(Ubuntu)を再起動。 次に以下のコマンドでpyenv本体のダウンロードとインストールをする。
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
次に、以下のコマンドで.bashrcの更新をする。
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc echo 'eval "$(pyenv init -)"' >> ~/.bashrc source ~/.bashrc
WSL2(Ubuntu)を再起動。再起動後に次へ
以下のコマンドでpyenvがインストールできたかを確認(pyenvはLinuxにおいて、Pythonの実行環境を管理するツール。つまりいろんなバージョンのpythonを管理する有能)
pyenv -v
以下のコマンドでpythonのインストール
pyenv install 3.8.5 # 例えば,version 3.8.5 pyenv versions # インストール済みのpyenvのバージョンを確認できる pyenv global 3.8.5
以下必要なライブラリのインストール
python -m pip install pyocr matplotlib pydotplus pulp pandas scikit-learn graphviz opencv-python docopt sudo apt install tesseract-ocr libtesseract-dev tesseract-ocr-jpn sudo apt-get dist-upgrade sudo apt-get install build-essential sudo apt-get update sudo apt-get install graphviz mecab libmecab-dev mecab-ipadic-utf8
cd ~ sudo apt install swig →エラー(11) sudo apt install python3-pip sudo pip3 install mecab-python3 sudo apt install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
https://www.engineer-log.com/entry/2019/10/31/tesseract5-install
下記のライブラリは必要に応じてインストールする(専門ゼミでは飛ばす)
git clone https://github.com/neologd/mecab-ipadic-neologd.git cd mecab-ipadic-neologd sudo bin/install-mecab-ipadic-neologd → 所要時間約13分 cd /etc sudo vim mecabrc # ここで:set pasteをし,aを押し,以下にコピペで変更する dicdir = /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd :wq で保存
cd git clone https://github.com/opencv/opencv.git git clone https://github.com/opencv/opencv_contrib.git cd ~/opencv mkdir build cd build cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D WITH_OPENGL=ON -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules -D OPENCV_GENERATE_PKGCONFIG=ON .. make -j7 → 所要時間約7分 sudo make install
(11)「E: Unable to locate package swig」の表示で,swigのインストールができない
git clone https://github.com/swig/swig.git参考「https://askubuntu.com/questions/893932/sudo-apt-get-install-swig-on-ubuntu-14-04」
ダウンロードすべきファイルを以下のzipファイルにまとめたので、これをダウンロードし任意のフォルダに置く。
エクスプローラーのパスのところで、\\wsl$と入力しEnter。アクセス許可がないと言われたら許可する。
Ubuntu-20.04 > var > www > html Ubuntu-20.04 > usr > lib > cgi-bin簡単アクセスのため、両方を右クリックで「クイックアクセスにピン止めする」
「/var/www/html」内に先ほどダウンロードしたhtmlの中身を、「/usr/lib/cgi-bin」内にcgi-binの中身を入れる。
htmlにはサイトを構成するファイル、cgi-binにはpythonで動かすデータ処理に関するファイルが入っている
次に以下のchmodコマンドでファイルのアクセス権限を変更する
sudo chmod 755 /usr/lib/cgi-bin
sudo chmod 755 /usr/lib/cgi-bin/kaiki*.cgi
sudo chmod 755 /var/www/html
例題では「回帰分析ブロック」を動かすので、以下のコマンドで「kaiki~.cgi」の編集画面を開く
sudo nano /usr/lib/cgi-bin/kaiki_Analyze.cgi sudo nano /usr/lib/cgi-bin/kaiki_keisu.cgi sudo nano /usr/lib/cgi-bin/kaiki_yosoku.cgi上のコマンドで開いた後、以下の二つの部分のrthetaというところを先ほど設定した自分のユーザー名に変更する
#!/home/rtheta/.pyenv/shims/python
「Ctrl+X」→「y」→「Enter」で保存する。
次のコマンドでcgiモジュールを有効にできる。これはcgi-binに入っているファイルを実行するためのmodを有効にしている。
sudo a2enmod cgid
次に、CSVファイル入れるところ作る。
cd
mkdir kaiki
sudo chmod 777 kaiki
入れるとき拒否られたら次のコマンドをubuntuで。chmodで読み込みや書き込みを他の人からでもできるようにしている。
sudo chmod 777 /var/www/html
sudo chmod 777 /usr/lib/cgi-bin
cgi-binなかったら次のコマンド。cgi-binディレクトリを作成している
mkdir /usr/lib/cgi-bin
その後以下を実行。ファイルの権限を変えてる。755にするのは、この後のウェブ上のサイトから他のパソコンからでも使えるようにするため。(しかし書き込みはできない。これについて知りたかったらchmodについて調べて)
sudo chmod 755 /usr/lib/cgi-bin
sudo chmod 755 /usr/lib/cgi-bin/kaiki.cgi
python -m pip install pandas
python -m pip install scikit-learn
以下のコマンドでエディタ開ける。
sudo nano /usr/lib/cgi-bin/kaiki.cgi
上のコマンドで開いた後、以下の二つの部分のzetaというところを自分のUbuntuのユーザー名に変える
#!/home/zeta/.pyenv/shims/python
wine.to_csv('/home/zeta/kaiki/123456.csv', header=False, index=False)
「Ctrl+X」→「y」→「Enter」で保存する。
次のコマンドでCGIモジュールを有効にできる。これはcgi-binに入っているファイルを実行するためのmodを有効にしている。
sudo a2enmod cgid
次のコマンドをWSL2上で実行するとサーバーが立ち上がる。
sudo service apache2 start
自分のWSL2のIPアドレスを調べるためにWSL2上で次のコマンドを実行する。
ifconfig
WSL2のIPアドレスはeth0のinetのところに書かれているIPアドレスである。次に自分のWindowsでそのIPアドレスをGoogle Chromeに入力し移動すると、Blocklyを開くことができる。
以下のデータを用いる。
まず、「FILE_INPUT」から入力「CSV読み込み」ブロック、「ANALYZE→DIV1」から分析「回帰分析」ブロック(上図オレンジ)、「OUTPUT」から出力「CSV出力」ブロックを取り出す。
赤ブロックの「CSVファイルを選択してください」をクリックして、先ほどのcsvを入れる
中央の歯車をクリックし、ラベルリストに左のブロックのいずれかを入れる
単回帰or重回帰、回帰予測or回帰係数を選択したら、右上の「実行」をクリックする
以下2つの手順を行う
cgi-binの権限を変更する
sudo chmod 777 /usr/lib/cgi-bin/
エクスプローラのパスの部分で、「\\wsl.localhost\Ubuntu-20.04\usr\lib\cgi-bin」として新たな.cgiファイルを作る
cgiプログラムの例(回帰分析cgi)
(1) 1行目をrthetaの部分を自分の名前に変える。
#!/home/rtheta/.pyenv/shims/python # -*- coding: utf-8 -*-
(2) 15,16行目のようなおまじないをつける
print("Content-type: application/json")
print("\n\n")
(3) 74,75行目のようなクライアントに返すためのおまじないをつける。
基本的に、上と下のおまじないの間(17~72行目)に実装したいPythonプログラムを書けば新しい分析ブロックを動かせる。
(4)入力ブロックからのデータ受け取り部分の実装
26行目で受け取ったデータをデータフレームにしている
df = pd.read_csv('data',encoding="shift-jis(or utf-8)",header=None)
(5)生成したデータフレームを出力ブロックに送信
(1)average.jsの編集
(2)average_block.jsの編集
(3)toolbox.xmlの編集
<block type="bunseki12"> </block>