見出し画像

TWSNMPを開発するプログラム言語

開発言語の選択

ソフトウェア開発における言語の選択は、プログラマー間の、もう一つの宗教論争です。好きな言語ならば、開発効率が圧倒的に違うというのは、錯覚だと思います。私は、開発するソフトウェアに適した言語で開発するのがよいと思っています。なので、気がつけば、この10年ぐらい沢山の言語を使って開発してきたので、スキルシートの対応言語には、ほとんどチェックできます。いろいろな言語で開発してみて、TWSNMPの開発には、GO言語が適していると思いました。

GO言語利点は、多くの人が書いていますが、私がTWSNMPの開発に適していると思った理由は、

・私にとって馴染み深いシンプルな言語仕様(クラスは嫌いなので)
・TWSNMPの開発に必要なパッケージが揃っている
・並列処理
・マルチOS対応(Mac OSにも対応したかった)
・コンパイラーなので高速

が実現できるからです。ソフトウェア開発で難しい言語で、複雑なクラスを駆使して、多くのライブラリまで自作するのが好きな人がいますが、長い時間苦労して開発しているように思います。私は、今の時代は、優れた人の作った良質なライブラリ(パッケージ)をうまく利用した方が、効率的な開発ができると思っています。

GUIアプリーケーションの実現方法

GO言語で開発する場合、コマンドラインのツールやWebアプリケーションは、簡単に作る方法があります。GUIをもったアプリケーションの開発した仕組みは、かなり前から調べていましたが、なかなかよいものがありませんでした。GO言語でGUIを実現するのは、多くの場合、 Webサーバーを起動してブラウザーからアクセスする方法です。しかし、この方法は、一般向けではないのと、利用するブラウザーによって画面表示が変わるという問題があります。ネーティブなアプリケーションを実現するパッケージをいくつか調べましたが、表示される画面が貧弱だったり、動作するための別のソフトのインストールが必要だったっりで、どれも満足できないものでした。

そんな中、発見したのが、

です。これは、ATOMエディタやVSCodeの開発に利用されているElectron

のバックエンド(裏側で動作する処理)をJavaScriptではなくGO言語に対応したものです。世界中探せば、私の望んでいるものを作っている人がいるもので、感謝の印に、スターを進呈しました。

go-astilectronを利用する利点は、

・GUIは、HTML/CSS/JavaScript(Webアプリの技術)で開発できる
・バックエンドの処理は、GO言語で開発できる
・配布用のパッケージ作成もコマンド一つでできる

最近、go-astilectronを使った開発を楽しんでいて、4つぐらい実用的なアプリケーションを作ってみました。

つづく

開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。