投稿日:2017/10/02
Excelチェックアプリの概要説明。
※サムネイルをクリックしてください
何故アプリなのか
要件
- Excelを完全に コントロールできること
Node.jsやPythonのExcel操作用ライブラリもあるが、これらは基本的にオートシェイプを操作できない。
制作指示書のほとんどはオートシェイプで出来ているので要件を満たせない。
Excelの操作といえばVBAだが、Excelを手動で開くことなく操作したかったのでPowerShellでなんとか出来ないかと考えた。 - アップデート可能
全てのプロダクトに言えることだが、自動アップデートが出来ることは最重要事項。
これら二つの要件を考えたときに
- Excel操作→VBA→PowerShwell→コマンドライン→Node.jsの子プロセスからコマンド実行
- アップデート可能→Electron→Node.jsそのものを実行できサーバー化出来るExpress
ということで、最終的にNode.jsということで要件が合致した。
Node.js実行可能環境を配布する必要があるので、Electronで制作する。
スキルセット
Express
Node.jsでのWebフレームワーク。
PHPにおけるLaravelのようなもの。
JavaScriptフレームワークというと一般的にはフロントエンドのものを指すため紛らわしいが、これはサーバーサイドまでフォローしたフルスタックなものになる。
フロント側は特に縛りが無いため、今回はAngularJSを採用した。
テンプレートエンジンはデフォルトでPug(旧名:Jade)だが、慣れ親しんだejsにて設定。
AngularJS
お馴染み。開発速度重視で1.x系を選択 。
UIはもちろんAngular Material。
そろそろ卒業したい。
Electron
HTML5、CSS、JavaScriptでデスクトップアプリが作成できる、GitHub製プロダクト。
旧名atom-shell。
メインプロセスとレンダラープロセスに分かれており、メインプロセスはNode.jsの機能がほとんどフルで使える。
これを利用し、Node経由で子プロセスとして直接PowerShellを起動させている。
ちなみに、node-powershellなんてモジュールもあるがこれはExcelを操作するために必要な文字コード、Shift_JISに対応してない。というかNode.jsがそもそもShift_JISなんかに対応していない。
node-powershellは処理文字コードにShift_JISを選択することができないので、今回の要件外となり未採用となった。
ちなみに、今回は自動アップデートにも対応させた。
PowerShell
Excelをパーフェクトにコントロールするために、PowerShellの力を借りることにする。
ここからCOM object経由でVBAオブジェクトを利用する。
VBA
未だにExcelのコントロールはこいつの独占市場なので、頼らざるを得ない。
PowerShell経由で利用。VBAベタより遥かにラクというかマシ。