技術資料

以前のバージョンはこちら
Blocly技術資料(2023/10以前)バックアップ

目次 

1. 目標 

ビジュアルプログラミングによるデータ処理を行う。Blocklyというオープンソースのビジュアルプログラミングを用いる。使用するプログラミング言語は主にJavascriptである。

2. 環境構築及び実行 

必要なもの 

Windows SubSystem for Linux2(WSL2)(Linux、UNIXでも可) 

とりあえず、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 コマンドを入力)。

ver_build.png

上図が出るので、適切なバージョンを満たしているか確認する

WSL 2 をインストールする前に、" 仮想マシン プラットフォーム " オプション機能を有効にする必要がある。
管理者として PowerShell を開き、以下を実行する。

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

PCを再起動して WSL のインストールを完了し、WSL 2 に更新する。

次にWSL2Linuxカーネル更新プログラムパッケージをダウンロードする。システムがx64の場合はx64、ARM64の場合はARM64をクリックする。

x64

ARM64

ダウンロード後、ダウンロードしたファイルを実行する。

次に、次のコマンドで、新しい Linux ディストリビューションをインストールする際の既定のバージョンとして WSL 2 を設定する。

wsl --set-default-version 2

次に、Ubuntu 20.04 LTSをMicrosoft Storeからインストールする。 下のリンクに行って入手を選択する。

Ubuntu 20.04 LTS

複数のデバイスで使うか聞かれたら必要ないと答える。

その後、起動し、ユーザー名とパスワードを設定する。もちろん、どちらも覚えるか記録しておく。

WSL2のBlocklyのための環境構築 

ここから、Ubuntuで作業する。Ubuntuで次のコマンドを実行する。

sudo apt update
sudo apt -yV upgrade

WSL2を再起動する(Ubuntuを閉じて再度開く)。再起動後、次のコマンドを実行する。

sudo apt install apache2
apache2 -v

WSL2へのpyenv(python)のインストール 

以下のコマンドは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

下記のライブラリは必要に応じてインストールする(専門ゼミでは飛ばす)

エラー対応集 

(11)「E: Unable to locate package swig」の表示で,swigのインストールができない

WSL2内でのBlockly環境構築 

ダウンロードすべきファイルを以下のzipファイルにまとめたので、これをダウンロードし任意のフォルダに置く。

エクスプローラーのパスのところで、\\wsl$と入力しEnter。アクセス許可がないと言われたら許可する。

「/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」の編集画面を開く

「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

Blocklyの実行 

次のコマンドをWSL2上で実行するとサーバーが立ち上がる。

sudo service apache2 start

自分のWSL2のIPアドレスを調べるためにWSL2上で次のコマンドを実行する。

ifconfig
ifco.PNG

WSL2のIPアドレスはeth0のinetのところに書かれているIPアドレスである。次に自分のWindowsでそのIPアドレスをGoogle Chromeに入力し移動すると、Blocklyを開くことができる。

blockly_index.png


ビジュアルプログラミングの例題(回帰分析) 

以下のデータを用いる。

kaiki_data.png
Block1.png

まず、「FILE_INPUT」から入力「CSV読み込み」ブロック、「ANALYZE→DIV1」から分析「回帰分析」ブロック(上図オレンジ)、「OUTPUT」から出力「CSV出力」ブロックを取り出す。

Block2.png

赤ブロックの「CSVファイルを選択してください」をクリックして、先ほどのcsvを入れる


Block3.png

中央の歯車をクリックし、ラベルリストに左のブロックのいずれかを入れる

単回帰or重回帰、回帰予測or回帰係数を選択したら、右上の「実行」をクリックする

3. 【課題】新たな分析ブロックの作成 

Analyze1.png

分析ブロックの作成方法 

以下2つの手順を行う

3.1 CGI(Common Gateway Interface)プログラム(データ処理)の作成 

CGIファイル(分析ブロックのプログラム)の作り方 

cgiプログラムの例(回帰分析cgi)

cgiteigi1.PNG
cgiteigi2.PNG
cgiteigi3.PNG

(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)入力ブロックからのデータ受け取り部分の実装

make1.png

26行目で受け取ったデータをデータフレームにしている

(5)生成したデータフレームを出力ブロックに送信

make2.png

3.2 jsファイルの編集 

(1)average.jsの編集

average.png

(2)average_block.jsの編集

average_block.png

(3)toolbox.xmlの編集

toolbox.png

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS