macOSで動く社内向けツールをかんたんに作りたい
ごぶさたしております、こまたつです。
社内の課題を解決するための小さなツールをつくることを趣味としている私ですが、macOSで動くツールの開発って結構めんどくさいんですよね。
AndroidエンジニアとしてはKotlin Multiplatformを使いたいところではありますが、気軽さはいまひとつ。ということで毎回いろいろな手法を試しております。
そんな中で今回試したNeutralinojsがなかなか良かったので紹介したいと思います。
Neutralinojsは簡単に言ってしまえば軽量版Electronのようなもので、Webの技術を使ってマルチプラットフォーム向けにビルドできるフレームワークです。
軽量版ElectronというとTauriのほうが人気がある気がしますが、こちらはバックエンドロジックもJavaScriptで書かれているのでRustをインストールしなくてよいメリットがあります。
ちょっとしたものをサッサと作りたい今回のようなユースケースにぴったりですね。
さて詳細な実装方法は公式のドキュメントが充実していますのでそちらを見ていただくとして、実際にツールを作るうえでのポイントをかいつまんで紹介できればと思います。
このNeutralinojsですが、なんとまだwebやapiのendpointを叩くための機能が公式から提供されていません。
そこで今回作ったツールでは次のようにcurlを使ってAPIから値を得るようにしました。
const command = `curl -s -L "${endpoint}"`;
const result = await Neutralino.os.execCommand(command);
if (result.exitCode !== 0) {
throw new Error(`リクエストに失敗しました: ${result.stderr}`);
}
const data = JSON.parse(result.stdOut);
えっ、怖い!と思ったあなたは正常で、こういった実装はコマンドインジェクションされるリスクがあったり、curlが入っていない環境では実行できなくなってしまうので本来避けるべきです。
今回はmacOS上で動く社内ツールでエンジニアしか使用しない想定ですのでこのようにしましたが、多くの人に触ってもらうアプリをつくる際にはjavascriptのFetch APIを使った方がよいでしょう。
また開発ロードマップでは2025年にはweb endpointを叩くための処理が追加される予定になっているのでこの機会にコントリビュートしてみてはいかがでしょうか。
さてこうして出来上がったツールがこちらになります。
弊社ではブログアワードを実施しており、いいねが多かったZenn記事を表彰しております。
今回作成したツールで簡単に受賞対象記事がわかるようになりました。
Neutralinojsはまだまだ発展途上のフレームワークですが、気軽に使える柔軟性がそこにはあると思います。
ぜひお試しいただいて、みなさんも良きツール開発ライフをお送りください。
アワード受賞のためにいいねをおねがいします!
こまたつでした。
Discussion