九保すこひ@フリーランスエンジニア|累計300万PVのブログ運営中
現在Electronでデスクトップ・アプリを開発しています。
Electronとは、GitHubが提供するマルチプラットフォーム対応なデスクトップ・アプリ開発環境で、HTML + JavaScript で開発が可能です。
このElectron、少し前に話題になった時に触ってみたかったんですけど、なかなか機会がなく今回が初めての体験。
そこで、まだまだ理解できていない部分も多いですけど、現時点でElectronを触った雑感をメリット/デメリットとしてまとめてみたいと思います。
メリット
(1) Windows、Mac、Linuxで稼働(マルチプラットフォーム)
ElectronはChromiumブラウザを使っていて、様々な環境に対応しています。
これはとてつもなく大きなメリットです。
それこそ、「書くのは一度だけ、実行はどこでも」を実践しているといえます。
個人的に、メイン・パソコンはUbuntu(Linux)なんですけど、そうなるとWindowsにはあるけど、こっちにはないっていうアプリケーションが出てきたりするんです。
なので、今後もしElectronアプリが増えたら嬉しいですね。(最近はwineもチカラつけてはきてますけど)
(2) HTML + JavaScriptで開発できる
これも開発期間の短縮に大きなメリットです。
なぜなら動作確認の際に、いちいちビルドする必要はない(Ctrl + R押すだけでOK)からです。
しかも、bootstrap だって使えますし、最近マストで採用している vue.js のバインディング機能を使えば一瞬で画面が切り替わる、みたいなエフェクトも楽々開発することができてしまいます。
見た目にCSSを使えるのも大きですね。
過去にPythonのkivyやtkinterを試したことがありますけど、「・・・」でした。
(3) 他の言語との連携も可能
Electronはnode.jsの技術を使ってるので、もし「シェルスクリプトを実行したいな」とか「ここだけPythonを走らせたいんだよな」ということもnode.jsを通して実現が可能です。
つまり、「これまではコマンドラインで叩いてたけど、作業効率を上げるためにGUIつくろ!」ってなった場合でもElectronで実現可能ということです。(※もちろん環境によって元のスクリプトを変更する必要はあるかもしれません)
(4) 開発環境を整えるのが簡単
これも大きなメリットです。
npmとnode.jsが入っていれば、electronをインストールしてgitでサンプルコードをコピーすれば、もう開発を始めることができます。
ブラウザさえあれば、JavaScriptの環境はすでに出来上がってるという強みですね。
(5) すでに大手が採用している安心感
提供元がGitHubであるのに加えて、同社がリリースしているAtom IDEももちろんElectron開発のアプリケーションですし、さらにslackやwordpressのデスクトップアプリにも採用されているようです。
やはりクロスプラットフォーム&開発期間の短縮でのメリットが大きいのでしょう。
(6) 新しいJavaScriptの書き方ができる
先ほども書きましたけど、Electronは、内部でchromiumを使っているので、ES6(ES2015)の新しい書き方がほぼフルに使えると考えていいです。例えば、以下のようなアロー関数とかfor of とかですね。
(e) => { console.log(e.type) };
for(let item of items) { console.log(item); }
ホント、便利。IE&edgeが関わってないと、開発がラクラク進みますね(笑)
デメリット
(1) アプリサイズが大きい
これにつきます。
Electronは内部にchromiumブラウザが入っているので、どうしてもその分容量が大きくなってしまいます。普通に100MBを越えてくるんで、配布することを前提とした開発だとネイティブ・アプリの方に軍配が上がると言わざるを得ません。
(2) メモリを喰う
ここはちょっと感じるかな、ぐらいなんですけどメモリが少ないPCだともしかすると厳しいのかもしれません。ただ、現在売られてるパソコンだとそこまで問題ないじゃないかなという気もしています。(メモリも4G程度あれば十分じゃないでしょうか)
ただ、海外のRedditなどではメモリを喰いすぎるからElectronは好きじゃない!とかやっぱりアプリはネイティブだろ、っていう人もいて賛否が分かれてるようです。
(3) 動作が(ほんのちょっとだけ)もっさり
これは、ウェブブラウザの宿命でしょうか。
やはり動作でネイティブには叶わないと思います。毎回コードを解析する時間が必要なので仕方ないといえば仕方ないですけど。
ただ、これもそこまでひどいという印象でもなく、最近はcloud 9のようなオンラインIDEなんてのが登場するぐらいブラウザのパフォーマンスも向上してるんで、多くの人の許容範囲ではあると考えてます。
おわりに
ということで、今回はElectronのメリット/デメリットをまとめてみました。
マルチプラットフォーム+開発が楽というメリットが大きいんで、今後、個人的にデスクトップアプリを開発するにはElectron一択かなと思っています。
ただ、クライアントさんに提供することがある場合には、メリット/デメリットを事前に説明する必要がありますね。(ただ、開発費用は確実に落とすことができると思うんで、クライアントさんはこっちを選びたがるのかなって気はしています。)
とにかくElectron開発は楽しかったんでみなさんもぜひ一度触ってみてくださいね。
ではでは〜!