LoginSignup
0
1

More than 3 years have passed since last update.

JavaScript上で他言語プログラムを実行する

Posted at

動機

卒研でとある解析プログラムを開発した.(CとPython)
後任のためにGUIで解析できるElectronデスクトップアプリを開発しようと決意.

ElectronどころかNodeアプリは初だった.Viewはまぁ良いとして解析のロジックをどう繋げようか悩んだ.
不得意なphpやjsに書き換えるのもアレなので,どうにかjs上でC,Pythonプログラムが実行できないかと思案したのが動機.

救える人

  • Nodeアプリ開発でjs上で他言語のプログラムを実行したい人

本編のネタバレすると,js上にサブプロセスを走らせる.ということをする.
要はコマンドプロンプトやらターミナルだ.なので,ターミナルで出来る作業はなんだって出来る.

これを言うと僕みたいな未熟者以外の方の耳もピクリと動くのではなかろうか.

本編

chile_processというNodeモジュールを使うと幸せになれる.
このモジュールはjs上でサブプロセスを生成できるという代物.

僕が作ったelectronアプリが例を抜粋するとこんな感じ.

index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>subroutine</title>
    <script>
        function subroutine() {
            let remote = require("electron").remote; // 以下3行はelectronアプリのpathを入手する例
            let app = remote.app;
            let path = app.getAppPath();

            const exec = require("child_process").exec;

            exec(path + "/violin_plot.bat"); // exec()の中にサブプロセスで実行したいコマンドをいれる.

        }
    </script>
</head>
<body>
    <button onclick="subroutine();">サブルーチン</button>
</body>
</html>

実際にはターミナルは表示されないので,標準出力とかは確認できないが,解析からのファイル操作とかCやpythonが得意なことで使うと効力を発揮するだろう.

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1