﻿◆◆　nuRpa の使い方　◆◆https://kyodx.com/　🕓2020/12/31 ↻2022/05/15

nuRpa(ヌルパ)は、ぬりえ変換を自動化するＲＰＡシステム。

全校ぬりえの取組紹介には、「すべてフリーソフトでだれでもできる」と書いたが、数種類のソフトをいちいちマウスで操作していくのは、やはり骨が折れる。
そこで、アプリのショートカットと原画をフォルダに入れ、nuRpa.wsfをダブルクリックするだけで、全校ぬりえに必要なファイルが自動的にできあがる仕組みを作った。
Windows10,Windows11のPCで動作確認済み。
※ Windows11では、右クリック-その他のオプションを表示 で、従来のWindows10の右クリックメニューが出るように変更されたので注意！

1)nurpa.zipをダウンロードする
すべて展開し、nurpaフォルダをドキュメントフォルダなどに移動。

2)スムーズ化などの調整をし、PNG形式で保存した原画ファイルをnurpaフォルダに入れる
サンプルとして yell0.png を入れてある。

3)Javaバージョンを確認する
https://java.com/ja/download/uninstalltool.jsp
もしJavaが入っていなければ、インストールする。
https://java.com/ja/download/
Cドライブで javaw.exe を検索。
見つかったものをコピーし、nurpaフォルダでショートカットの貼り付け。
※ Windows11では、右クリック-その他のオプションを表示-ショートカットの貼り付け をする。
例：javaw.exe - ショートカット リンク先→"C:\Program Files\Java\jre1.8.0_271\bin\javaw.exe"

4)P2VJをダウンロードする
http://sesamecake.sakura.ne.jp/p2vj/
すべて展開し、p2vj_1.3フォルダをドキュメントなどにコピー。
P2VJ.jarをコピーし、nurpaフォルダでショートカットの貼り付け。
例：P2VJ.jar - ショートカット　リンク先→"C:\Users\BOKUser\Documents\p2vj_1.3\p2vj_1.3\P2VJ.jar"

5)Inkscapeをダウンロードする
https://inkscape.org/ja/release/1.0.1/windows/
できるだけ最新版をインストールする。
Ver1.0以降は、出力命令が変更されているので要注意。
https://lookbackmargin.blog/2020/07/31/inkscape-o-instead-of-e/
インストールしたくない場合は、32-bitのPortable版をダウンロードし、インストール先（実際は展開のみ）をドキュメントなどにして使用する。
デスクトップのInkscapeのショートカットをコピーし、nurpaフォルダで貼り付け。
例：Inkscape　リンク先→"C:\Program Files\Inkscape\bin\inkscape.exe"
または、InkscapePortable.exeをコピーし、nurpaフォルダでショートカットの貼り付け。
例：InkscapePortable.exe - ショートカット　リンク先→C:\Users\BOKUser\Documents\InkscapePortable\InkscapePortable.exe

6)PosteRazorをダウンロードする
https://www.jimakudaio.com/post-9637
最新版をダウンロード・インストールする。
デスクトップのPosteRazorのショートカットをコピーし、nurpaフォルダで貼り付け。
例：PosteRazor.exe - ショートカット　リンク先→"C:\Program Files (x86)\PosteRazor\PosteRazor.exe"

7)nuRpaを実行する
nurpaフォルダの nuRpa.wsf をダブルクリックして実行。
処理内容を変更したいときは、 nuriemaker.js をテキストエディタ（Mery https://forest.watch.impress.co.jp/library/software/mery/ など）で編集する。nuriemaker.js を直接ダブルクリックしないこと。
nuRpaでは、次の4段階で処理が進んでゆく。①原画をSVGに変換、②完成画とぬりえのSVGを作成、③SVGをPNGに変換、④分割印刷用PDFを作成。
②のぬりえ化については、「塗色を透明に」→「塗色を白色に」とアルゴリズムを改良した。これにより、不要な線が透けることなく、塗りやすくなった。

8)個人手本とぬりえを分割印刷する
nuRpaで作成された分割印刷用PDF（～tr.pdfと～trp.pdf）に pdf_as でページ番号を付加。
https://forest.watch.impress.co.jp/library/software/pdf_as/
Acrobat Reader DC で、印刷。

9)nuRpa の今後の展望
次項の参考URLにもある通り、教員の働き方改革のためにもRPAなどで自動化することが求められている。
マウスやタッチでの直感的な操作（GUI）は、初心者にはやさしいが、熟練者やコンピュータには扱いづらい。キーボードでコマンドをテキスト入力する操作（CUI）の方が、動作が軽く、記録・共有しやすいので処理を自動化しやすい。デザイナーとプログラマーの間の溝もこれが原因。
『コマンドラインで実行→キーボードで操作→マウスで操作』の順に自動化が難しくなる。操作対象を特定するためには、オブジェクト認識、画像認識、さらにはAI活用も必要になってくる。現在のruRpaでは、①～③は、コマンドラインで実行し、④は、キーボード操作を自動化している。プログラムの行数を比較すると、①～③の平均16行に対し、④は158行で10倍ものコード量となっている。
モダンな開発環境（VS Code、Node.js、Python、…）は、セキュリティの関係でPCにインストールできない学校が多いのが現状。しばらくはWSHなどレガシーな技術で何とかするしかない。
WSHでもWSF形式にすることで、Node.jsのrequire()のようなライブラリ利用が可能。
https://language-and-engineering.hatenablog.jp/entry/20090125/1232940498
WSHを利用したJScriptのライブラリ「SenkoWSH」（なたで氏作）などにより、ぬりえ変換以外にも広く業務の自動化に取り組んでいきたい。
https://blog.natade.net/2020/01/19/wsh-jscript-javascript-windows-bat/
特に、「Robotクラス」には、20年前の自作ライブラリ「TieUp（タイアップ）」と共通する方向性を感じる。
https://www.vector.co.jp/soft/win95/util/se099345.html
★さらに、、、
「DXに本気で取り組まないと2025年の崖を乗り越えられない」は、大企業だけの問題ではない。自動車にしてもOAにしても機械を導入すれば自動化されて楽になるというのは幻想。機械の操作に追われて終わり。「自動車→自動運転車」に相当するのが「OA→RPA」。大企業では、「COBOL・自社運用→JAVA・クラウド」へと転換しようとしているが、これはせいぜい「MTガソリン車→運転支援付きATハイブリッド車」ぐらいの変化。完全な自動化のためには、「認知」「判断」「操作」、そして「学習」し改良し続けるAI技術が必要。AI人材育成に向けて教育も変わらなければならない。
GIGAスクールの一人１台iPad導入に向けて準備する中で、マウスやタッチでのGUIしか知らない人がUNIX文化で積み上げられたCUIの世界に踏み込むのはかなり困難と確信。今やデザイナーでさえ、作品をGitで管理する時代。Gitコマンドを使いこなせないと他のデザイナーやエンジニアと連携できないはず。どんな映画も、原作本や台本などのテキストをもとにみんなが協働して制作される。プログラミングは、台本やマニュアルや指導案のようなテキストを書く作業。未来を生きる子どもたちには、読解力・表現力・論理的思考力が必要。小学校にプログラミング教育が入ったが、ビジュアルプログラミング体験のみで、中学校のテキストプログラミングにつながっていない。AIリテラシーの前にICTリテラシーが必要。スマホやタブレットで各種アプリやサービスを便利に使いこなすことより、テキストベースのコマンドやファイルの取り扱い・タッチタイピングを基礎教養として重視すべき。nuRpaの開発でもぬりえ化アルゴリズムの改良は、「正規表現」を使うことで簡単に実現できると気づいた。こういう基礎的な部分をGUIでオブラートに包んでブラックボックス化してはいけないとも感じている。ガラパゴス化する日本の中で、世界の集合知を高めるためにどんな貢献ができるか、考えていきたい。

10)参考URL
疑問：プログラミング教育する前に教育現場でRPA・RDAできないでしょうか？
https://www.senseiwork.com/posts/4394959
学校のRPA活用は実用段階へ、教員が本来の強みを発揮できる教育現場をめざして
https://www.watch.impress.co.jp/kodomo_it/news/1209304.html
RPAの意味とは？仕組みやAIとの違いを解説
https://www.tepss.com/danalyzer/column/rpa_compare_with_ai.html
AIとRPAの連携
https://thinkit.co.jp/article/16866
AI搭載を見据えたRPAの実装方法とは？
https://www.esector.co.jp/special/rpa/rpa4.html
自称IT企業があまりにITを使わずに嫌になって野に下った俺が紹介するWindowsの自動化の方法
https://qiita.com/mima_ita/items/453bb6c313e459c44689
Officeの杜★RPA導入に於ける注意点
https://officeforest.org/wp/2019/03/22/rpa%E5%B0%8E%E5%85%A5%E3%81%AB%E6%96%BC%E3%81%91%E3%82%8B%E6%B3%A8%E6%84%8F%E7%82%B9/
簡単なウインドウアプリ(GUI)開発のまとめ(Windows偏)
https://qiita.com/yosgspec/items/810843f863075d33a093
PC作業を自動化するためのスクリプト言語導入と解説
https://tracpath.com/works/development/introduction-to-scripting-languages/
【初心者向け】CUIとGUIの違いとその特徴。なぜ使い分ける必要があるのか。
https://tcd-theme.com/2019/12/cui-gui.html
バッチ職人になろう　（WindowsとLinux上での開発業務を自動化するノウハウ集）
https://language-and-engineering.hatenablog.jp/entry/20110904/p1
汝、コマンドプロンプトを愛せよ
https://qiita.com/mima_ita/items/90f709cad32ca4e7413d
WSH JScript用ライブラリSenkoWSHとVSCodeでWindows用バッチファイルを作ろう
https://blog.natade.net/2020/01/19/wsh-jscript-javascript-windows-bat/
https://natade-jp.github.io/SenkoWSH/
Windows管理者のためのWindows Script Host入門：第1回　WSHの内部構造
https://www.atmarkit.co.jp/ait/articles/0312/18/news002.html
スペースのあるファイルパスの指定方法
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1112123261
WSH/Execメソッド/TextStreamオブジェクトが詰まる
https://srad.jp/~IR.0-4/journal/572274/
WSHのCreateObject関数の引数のCOM識別子「ProgID」「CLSID」（GUID）とは何なのか解説。
https://computer-technology.hateblo.jp/entry/2016/01/06/WSH%E3%81%AECreateObject%E9%96%A2%E6%95%B0%E3%81%AE%E5%BC%95%E6%95%B0%E3%81%AECOM%E8%AD%98%E5%88%A5%E5%AD%90%E3%80%8CProgID%E3%80%8D%E3%80%8CCLSID%E3%80%8D%EF%BC%88GUID%EF%BC%89%E3%81%A8
正規表現チェックツールまとめ
https://qiita.com/aqril_1132/items/c185c7ad84c129e5a2df
Inkscapeをコマンドライン実行
https://inkscape.paix.jp/manual/overview/cmdline/cmdline/
inkscape コマンドの -e オプションが使えない？
https://lookbackmargin.blog/2020/07/31/inkscape-o-instead-of-e/
GitをGUIで操作できる初心者向けのクライアント3選
https://www.sejuku.net/blog/72376
こんなGitの教え方をするエンジニアはデザイナーからモテるぞ！
https://qiita.com/gilly/items/aed8eab37d0f72d6106d
Windows上でnode.jsから外部アプリケーションを実行する
http://mztm.jp/2019/04/26/windows%E4%B8%8A%E3%81%AE%E3%81%A7node-js%E3%81%8B%E3%82%89%E5%A4%96%E9%83%A8%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B/
Node.jsとPuppeteerでChromeを自動操縦する
https://officeforest.org/wp/2020/02/14/node-js%E3%81%A8puppeteer%E3%81%A7chrome%E3%82%92%E8%87%AA%E5%8B%95%E6%93%8D%E7%B8%A6%E3%81%99%E3%82%8B/
Puppeteer 実践（キャプチャ、画像ダウンロード、CSV出力、PDF出力）
https://www.webtomoblg.net/web/puppeteer-practice/
Pythonによる外部プログラム、プロセス、アプリの起動実行方法
https://boukenki.info/python-gaibu-program-process-application-kidou-jikkou-houhou/

◆ nuRpa.wsf 実行例（画面出力をコピペ）

　nuRpa (ヌルパ) は、ぬりえ変換を自動化するＲＰＡシステムです。

　natadeさんのSenkoWSH.js（WSH JScript用の汎用ライブラリ）を読み込んで使用しています。

まず、 nurpa フォルダ内のショートカットを調べます。

javaw.exe - ショートカット.lnk
P2VJ.jar - ショートカット.lnk
inkscape.exe - ショートカット.lnk
PosteRazor.exe - ショートカット.lnk


もし、？がついていれば、そのショートカットを nurpa フォルダ内にコピーしてから再び実行してください。誤作動を防ぐため、不 要なウィンドウは、終了・最小化してください。

0 :ここで処理を終了
1 :原画を P2VJ でSVGファイルに変換（要 java、要 P2VJ）
2 :完成画svgとぬりえsvgを作成
3 :Inkscape でPNG画像にエクスポート（要 Inkscape）
4 :PosteRazor で分割印刷用PDF作成（要 PosteRazor）
どこまで処理するかを、半角数字とEnterキーで！
4
　4 番の処理まで実行します。処理が完全に終わるまで、手を触れないでください。
yell0.png　を
yell0.svg　に変換します。
処理が終わるまで数分かかります。辛抱強くお待ちください、、、
"C:\\Users\\k***8\\AppData\\Local\\JDownloader 2.0\\jre\\bin\\javaw.exe" -jar C:\\Users\\k***8\\OneDrive\\ドキュメント\\OLS\\p2vj_1.3\\p2vj_1.3\\P2VJ.jar -i yell0.png -o yell0.svg -posterize 256
1番「P2VJによるベクトル化」が終わりました。

2番「完成画（～tr.svg）とぬりえ（～trp.svg）のベクトル画像作成」が終わりました。

"C:\\Program Files\\Inkscape\\bin\\inkscape.exe" -z yell0tr.svg -o yell0tr.png -d 320
"C:\\Program Files\\Inkscape\\bin\\inkscape.exe" -z yell0trp.svg -o yell0trp.png -d 320
3番「完成画（～tr.png）とぬりえ（～trp.png）のビットマップ画像作成」が終わりました。

yell0tr.pdf を一旦開いて閉じてから削除します。
.
"C:\\Program Files (x86)\\PosteRazor\\PosteRazor.exe" D:\\dev\\nurpa\\yell0tr.png
..
"C:\\Program Files (x86)\\PosteRazor\\PosteRazor.exe" D:\\dev\\nurpa\\yell0trp.png
..
4番「個人手本（～tr.pdf）とぬりえ（～trp.pdf）の分割印刷用PDF作成」が終わりました。

自動的に終了します。
