分析金曜日、約 150 人の開発者が Slack 本社に集まり、ヒップスター向けの IRC クライアントが構築されているオープンソースのクロスプラットフォーム デスクトップ アプリ フレームワークである Electron.js について学びました。
Slack のシニアスタッフエンジニアであり、Electron のメンテナーでもあり、Covalence カンファレンスの主催者でもある Felix Rieseberg 氏は、サンフランシスコでのイベントの冒頭で、2019 年は Electron が成長した年であったと述べました。
同氏は、OpenJS Foundation が 12 月に Electron をインキュベーション プログラムに受け入れたこと、そして昨年 7 月に Electron 6.0 と Chromium 76 が同時にリリースされたことを、6 年の歴史を持つこのプロジェクトの成熟の兆候だと指摘した。
昨年 5 月に Electron がリリース周期を 12 週間に変更したことは、プロジェクトを監督する人々がリリース プロセスとガバナンスを統制し、大企業がソフトウェアが行き当たりばったりのものではないと確信できるレベルに達したことの証でもある。
Slack が昨年秋に有料エンタープライズ顧客数 10 万社、アクティブユーザー数 1,200 万人という節目を迎えたことを考えると、Rieseberg 氏が講演では「アプリの構築方法だけでなく、優れたアプリの構築方法」に焦点が当てられると述べたのは適切だ。
「電子はガンだ」と主張され、有害だと考えられていることもあります。電子自体はそれほど悪いものではありませんが、課題はあります。
まず、Electronアプリは、Google Chrome、Microsoft Edge、その他のブラウザの基盤となるオープンソースプロジェクトであるChromiumのインスタンスを組み込んでいます。これによりアプリのサイズが大きくなり(Chromiumブラウザや他のElectronアプリを併用している場合は冗長になる可能性があります)、メモリを大量に消費し、CPU使用率も上昇します。さらに、Electronアプリは起動が遅くなる傾向があります。
第二に、クロスプラットフォーム開発ではネイティブプラットフォーム開発に比べて洗練度が低く、機能も劣るソフトウェアが生み出されるという認識が一般的です。クロスプラットフォーム開発は、サポート対象プラットフォーム間の最低共通項となるからです。10年前、Appleの元CEOスティーブ・ジョブズがAdobeのクロスプラットフォームFlashフレームワークに反対した主張は、今でもほぼ真実です。
注意すべき点は、テクノロジーは進化し続けており、Electron アプリがネイティブ モジュールを使用できるようにする n-api などのオプションのおかげで、クロスプラットフォーム アプリとネイティブ アプリの境界があいまいになり続けていることです。
3 番目に、Electron の使いやすさは、粗雑なコードを作成しがちな経験の浅い開発者にとって魅力的です。
開発者に悪い知らせ:Apple Mac App StoreがクロスプラットフォームのElectronアプリを廃止するよう指示
続きを読む
また、Electronアプリの開発に最もよく使われる言語であるJavaScriptは静的型付けされていないため、エラーが発生しやすくなります。また、Webテクノロジー全般はセキュリティ確保が難しいという評判があります。
しかし、Slack、Discord、Visual Studio Codeなど、少なくとも許容できる、あるいは愛されているElectronアプリも存在します。これらは完璧ではありません。Rieseberg氏もSlackには改善の余地があると率直に認めています。また、別のテクノロジーを選択すれば、パフォーマンスやリソース効率が向上した可能性があるという主張も成り立ちます。
Electron の欠点にもかかわらず、JavaScript でアプリを記述し、macOS、Linux、Windows に展開できる機能は、特に開発者が気まぐれなアプリ ストアの承認プロセスを回避できる場合には、真の魅力があります。
「Electronを使えば優れたアプリを開発できると我々は知っています」と、Rieseberg氏はThe Register紙のインタビューで述べた。しかし、彼は質の悪いアプリも存在するだろうと認めている。
「アプリケーション開発の民主化が進めば進むほど、質の悪いアプリがロングテールのように蔓延していくのが目に見えて明らかになる、そうでしょう?」と彼は言った。「私はそれで構いません。なぜなら、誰かが半日ほどで質の悪いアプリを作るのが極めて容易であれば、Visual Studio Code開発者のような人々が機能豊富で高性能なアプリケーションを作るのも非常に容易になるからです。同じプールから生まれるのですから。」
リースバーグ氏は、クロスプラットフォームフレームワークがいかに人々を魅了できるかを示す例として、ゲーム開発ツールのUnityを挙げた。「多くの人がUnityをおもちゃだと思っていたのを覚えています」と彼は述べた。「2020年の今、もうそんなことを言う人はいません」
ようやく安定してきた
カンファレンスの昼食休憩中、コロラド州に拠点を置き、JavaScript 開発プラットフォーム「Tibet」を開発している Technical Pursuit 社の副社長兼製品エバンジェリストである William Edney 氏は、Electron がようやく十分に安定し、広く使用されるようになったため、自社のソフトウェアを Electron に移行することを検討できると判断し、カンファレンスに参加したと説明した。
彼の会社の顧客は、IT予算が比較的少ない大企業、保険会社、政府機関、そして消費者向け製品メーカーだと彼は説明した。彼らは高額な開発人材を雇う余裕がなく、プラットフォームのロックインを回避する方法を求めているため、Webテクノロジーの手頃な価格とオープン性は彼らにとって魅力的だ。彼によると、そのような顧客のある企業は依然としてWindows 7に依存しており、今年のIT予算のすべてをWindows 10への移行に費やす可能性が高いという。
メルセデス・ベンツ・リサーチ・アンド・デベロップメント・ノースアメリカのシニアソフトウェア開発者、ロバート・ブルッフハート氏は、同社はまだエレクトロンを使用していないが、自動車メーカーの音声アシスタントソフトウェアに関連する社内開発ツールの構築にエレクトロンを検討していると述べた。
流行のElectronを使って、手間のかからないRSSバルチャーアプリを作った方法をご紹介します。
続きを読む
Electron が C++ のような高速なものよりもなぜ魅力的なのかと尋ねられると、彼は、この特定のプロジェクトに取り組んでいる小さなチームにとっては、使いやすさとクロスプラットフォーム機能の方が重要だと述べました。
パフォーマンスとローカルストレージのより効果的な活用に関するプレゼンテーションで、Adobeのシニアコンピュータサイエンス担当であるAtishay Jain氏は、C++の問題点の一つに触れました。彼によると、すべてのC++アプリケーションは、ほぼ独自のネットワークスタックとUIフレームワークを実装しているとのことです。
ジェイン氏は、共通の技術レイヤーには利点があると主張しました。また、アプリのパフォーマンスは重要な要素の一つに過ぎないと強調し、開発の容易さ、イテレーションの速度、開発コストも考慮する必要があると主張しました。
ガベージコレクション、品質管理、セキュリティに関するその他の講演では、Electron開発者はパフォーマンス、メモリ、セキュリティの課題に対処するためのツールを備えていることが強調されました。開発者は、それらを活用するよう努力する必要があるだけです。
「世の中には、ことわざにあるように、ドライバーで釘を打ち込むようなアプリが確かに存在します」と、GitHub のソフトウェア エンジニアである Shelley Vohr 氏は、ガベージ コレクションに関する講演の中で述べた。
それらのアプリはあなたのアプリである必要はありません。®