
パスワードマネージャー「1Password」の最新バージョンがベータ版として公開されました。開発者の決定に対し、ユーザーから強い反発の声が上がっています。Agilebitsは難しい決断を迫られました。開発者は、古いMacでも動作するように2つのmacOSバージョンを作成するか、古いMacハードウェアを廃止するかのどちらかを選ぶことになります。3つ目の選択肢として、AgilebitsはアプリをElectronというプラットフォームに移行するという選択肢もあります。1PasswordのElectronへの移行は一見悪いアイデアのように思えますが、実は最善の判断かもしれません。
電子とは何か?そしてなぜ問題となるのか?
Electronを使用すると、開発者はそれぞれのプラットフォーム向けにネイティブコードを書く手間やコストをかけずに、クロスプラットフォームアプリを構築できます。JavaScript、HTML、CSSを使用することで、開発者はウェブページのようにアプリを構築できます。Electronで作成されたアプリは、ユーザーがmacOS、Windows、Linuxのいずれを使用していても、同じコードベースを使用します。
Slack、WhatsApp Desktop、Microsoft Teams、Discordといったよく使われるアプリはすべてElectronを利用しています。このフレームワークの問題点は、Electronを使用するアプリはネイティブアプリよりもはるかに多くのシステムリソース、特にメモリを消費する傾向があることです。とはいえ、1PasswordのElectronへの移行は決定的であることは明らかです。
多くの人がElectronへの移行を迷っているのは、まさにこのためです。古いMacを使っているなら、メモリ容量が十分ではないでしょう。アプリを使用する際にChromiumブラウザの起動を必要とするのは、問題が山積みです。
これは、騒ぎ立てる騒ぎの中で埋もれてしまう議論です。確かに、このソフトウェアのルーツはMacにあります。開発者がネイティブ開発を放棄してmacOSオペレーティングシステムのより多くのバージョンに対応しようとしているのは、確かに気がかりです。しかし、これは開発者がMacを放棄しているという意味ではありません。彼らは、より多くのメモリを必要とするものの、同じコードベースを古いバージョンのmacOSでも実行できるフレームワークを使用するという決定を下しただけです。
1つのソフトウェア、多くのアプリ
AgilebitsのMichael Fey氏はブログ記事で、この決定に至った経緯を説明しています。ソフトウェアの歴史を理解することで、Agilebitsがなぜこの選択をしたのかが理解しやすくなります。
1Passwordの最初のバージョンは、わずか4人からなる小規模なチームによってMacアプリとして開発されました。AppleがiPhone SDKを発表すると、同じチームがiPhoneアプリの開発へと進みました。
それ以来、同社はWindows版とAndroid版の提供を拡大し、各プラットフォームごとに別々の開発者を雇用してきました。開発者にはファイル形式の仕様が与えられ、MacとiPhoneでのアプリの動作が説明された後、それぞれのプラットフォーム向けのネイティブアプリを自由に開発することができました。
最終的に、異なるプラットフォーム向けのアプリ群が開発されましたが、インターフェースは共通ではありませんでした。ソフトウェアのルック&フィールは統一されておらず、Windowsで1Passwordを実行するとMacとは異なる動作をします。AndroidとiOSでも同様です。
1Password 8をElectronに移行する理由
1Password を Electron に移行するというアイデアは、Agilebits がメンテナンスする必要のあるアプリの数を減らすために生まれました。できるだけ多くのバージョンの macOS との互換性を確保するため、開発者は 1 つの OS に対して 2 つのアプリを開発していました。最新バージョンの macOS 向けには、SwiftUI ツールキットを使用して 1Password 8 を開発し、古いバージョン向けには Web ベースのアプリを開発する予定でした。
ElectronはWebベースなので、macOS版の1Password 8は古いMacでも動作します。SwiftUIはmacOS 10.15以降しかサポートしていません。信じられないかもしれませんが、SwiftUIアプリをサポートしていない古いMacを使っているユーザーも少なくありません。古いバージョンのmacOSを前提に開発されていた場合、ソフトウェアの動作は期待したほど良くないかもしれませんが、開発プロセスは効率化されます。Electronアプリに必要なメモリ量を必要としないで実現できれば良いのですが。