「よし、ついに完成だ!」
ローカル環境で何度も動作確認を重ね、完璧に動いていた私のデスクトップアプリ。
あとはTestFlightで配信して、フィードバックをもらうだけだと思っていました。
ところが、TestFlightにアップロードしたアプリは起動すらしませんでした。
エラーメッセージも出ず、ただクラッシュするだけです。
この問題に、私は1ヶ月半も悩み続けることになります。
この記事では、初めてのデスクトップアプリ開発で私が経験した挫折と、そこから得た教訓をお話しします。
ElectronとTauri、どちらを選ぶべきか迷っている方の参考になれば幸いです。
なぜElectronを選んだのか

私はWeb制作者として、一般的なWeb制作には慣れていました。でも、デスクトップアプリを作るのは初めてです。
「デスクトップアプリ 作り方」で検索すると、真っ先に出てくるのがElectronでした。Visual Studio Code、Slack、Discord。名だたる有名アプリが採用している実績があります。
豊富な日本語記事もあり、選ばない理由が見当たりませんでした。
開発は順調でした。慣れ親しんだJavaScriptとHTMLでUIを構築できる快適さ。npmで豊富なライブラリが使える便利さ。
「これは良い選択をした」と確信していました。
TestFlightで立ちはだかった壁

問題が起きたのは、Apple Developer Programに登録してTestFlightで配布しようとしたときです。
ローカルでは完璧に動いていたアプリが、TestFlightからインストールすると起動しません。
クラッシュログを見ても、具体的な原因がわからない。
エラーメッセージは暗号のようでした。
調べていくと、Electronには「コード署名」や「ノータリゼーション」といったApple特有のセキュリティ要件があることがわかってきました。
設定項目が多く、どれが原因なのか特定できません。
Stack Overflowを漁り、GitHubのIssueを読み漁り、Qita、Zenn・・・試しては失敗を繰り返す日々が続きました。
「有名アプリが使っているんだから、できるはずだ」と信じて1ヶ月半、粘りました。
でも、解決の糸口は見えませんでした。
AIを使っているにも関わらずです。
Tauriという選択肢との出会い

行き詰まった私は、改めて「デスクトップアプリ開発」について調べ直しました。そこで出会ったのがTauriです。
Tauriは比較的新しいフレームワークで、Electronと同じくWeb技術でデスクトップアプリを作れます。
大きな違いは、バックエンドがRustで書かれていること。
Rustの安全性と軽量さを活かしながら、フロントエンドは従来のWeb技術で開発できる設計です。
「Rustって???…」とそもそも言葉自体も聞いたことありませんでした。
でも、調べてみるとフロントエンド開発者はJavaScript/TypeScriptだけで開発できることがわかりました。
Rustを書くのは、ネイティブ機能を使う特別な場合だけです。
そして決定的だったのが、「Tauriはコード署名周りがシンプル」という情報でした。
Apple環境との相性が良いという記事も複数見つかりました。
もう一度ゼロから?と迷いましたが、このまま延長戦に入るより、新しい可能性に賭けることにしました。
Tauriへの移行体験

移行作業は、思ったよりスムーズでした。
フロントエンドのコードはほとんどそのまま使えます。
ElectronのIPCで書いていた部分をTauriのコマンドに書き換える必要がありましたが、公式ドキュメントが充実していて、尚且つそれなりにすんなりAIも置き換えてくれて、ほぼ迷いませんでした。
印象的だったのは、ビルドサイズです。
Electronで数百MB超えだったアプリが、Tauriでは数十MB程度になりました。起動速度も体感で速くなりました。
そして何より、TestFlight配布からの起動がすんなりできて拍子抜け。
コード署名の設定は必要でしたが、Electronで悩んでいた複雑な設定は不要です。
公式ドキュメント通りに進めるだけで、TestFlightからインストールしたアプリが正常に起動しました。
あの1ヶ月半の苦労は何だったのかと思いつつ、安堵の気持ちの方が大きかったです。
技術選定で大切だったこと

この経験を通じて、いくつかの教訓を得ました。
有名だから正解とは限らない
Electronは確かに実績のあるフレームワークです。でも、私のような小規模開発、特にApple環境での配布を重視する場合、別の選択肢の方が適していることもあります。
開発体験だけで判断しない
ローカル開発が快適でも、配布フェーズで問題が起きることがあります。
TestFlightやApp Store、Windows Storeなど、ターゲットとする配布方法について事前に調べておくべきでした。
挫折したら視野を広げる
1つの方法に固執せず、別の選択肢を探すことが大切です。
私の場合、Tauriという選択肢を知ったことで状況が一変しました。
ElectronとTauri、どちらを選ぶべきか

では、初めてデスクトップアプリを作る人は、どちらを選ぶべきでしょうか。
**Electronが向いているケース:**
- 大規模チームでの開発
- Node.jsの豊富なエコシステムが必要
- Electronの実績やコミュニティを重視する
- Windows/Linuxが主なターゲット
なにより、Storeを通さず自ら配布するならばいいかもしれません。
自分は初めてのアプリだったというのもあり、やはりAPP STOREに自分のアプリが並んでいることにこだわっていました。
さらに、特に情報発信もしておらず、公開したところで他のユーザーはどうやってこのアプリを知るのか?もちろんAPP STOREにリリースできたとしても同じようなことになるのは想定していましたが、それでもやはりAPP STOREに並んでいるのが夢でした。
**Tauriが向いているケース:**
- 個人開発や小規模チーム
- アプリサイズや起動速度を重視する
- Apple環境(macOS/iOS)での配布を重視する
- モダンな開発体験を求めている
私のようにmacOSアプリをTestFlightで配布したい場合、Tauriの方がスムーズだと感じました。
ただし、Electronにも多くの成功事例があります。大切なのは、自分のプロジェクトに何が必要かを見極めることです。
書いていてしっくりきたのも事実で、Storeを介さず自分でリリースしてもそこそこ見込めるようになったら改めてElectronを選択する日もあるかもしれません。
Apple審査の実際

Tauriへ移行後、それでもそれなりのリジェクトを経験しながらApp Store審査にも無事通過しました。
審査で注意したポイントは以下の通りです。
- アプリのプライバシーポリシーを明記する
- 使用する権限(カメラ、マイクなど)の理由を説明する
- スクリーンショットと説明文を丁寧に作り込む
Electronで悩んでいたときは「審査にたどり着けるのか」と不安でしたが、Tauriに移行してからは技術的な問題で引っかかることはほぼなく、実装漏れやバグなんかを指摘通りに直してほぼ完了といった感じでした。
移行を決断できた理由
「もう1ヶ月半も費やしたのに、また最初から・・・?」と迷う気持ちは確かにありました。いや、もうやめよう!と何度も思いました。
でも、次の3つの理由で移行を決断しました。
**1. このまま続けても解決の見込みが立たない**
Stack Overflowでも同じ問題で悩んでいる人が多く、決定的な解決策が見つからなかった。
**2. フロントエンドのコードは活かせる**
完全にゼロからやり直すわけではなく、UIやロジックの大部分は再利用できる。
**3. 学びになる**
新しい技術に触れることで、デスクトップアプリ開発の理解が深まる。
結果的に、移行作業は1週間程度で完了しました。1ヶ月半悩んでいたことを考えると、早めに決断して正解でした。
まとめ

初めてのデスクトップアプリ開発で、私はElectronを選び、TestFlightで挫折し、Tauriで解決しました。
この経験から学んだのは、「選択肢を知っておくことの大切さ」です。Electronが悪いわけではありません。でも、私のケースではTauriの方が適していました。
もしあなたが今、デスクトップアプリ開発で悩んでいるなら、視野を広げてみてください。別の選択肢が、状況を変える鍵になるかもしれません。挫折は誰にでも起こります。でも、諦めずに別の道を探せば、必ず解決策は見つかります。
この記事が、これからデスクトップアプリ開発に挑戦する方の参考になれば幸いです。

