今週のプロジェクト: Voltra
今週は、Electron で動作する音楽プレイヤーである Voltra について、Aprile Elcich と Paolo Fragomeni と会談しました。
Voltra とは何ですか?
Voltra は、自分の音楽を所有したい人のための音楽プレイヤーです。また、自分がすでに所有している音楽に基づいて新しい音楽を発見して購入できるストアでもあります。広告なしで、デスクトップとモバイル向けのクロスプラットフォームです。また、あなたをスパイすることはありません。
Voltra は誰のためのものですか?
音楽を聴くすべての人。
Voltra を作成する動機は何でしたか?
ラジオは常に多くのリスナーを獲得してきました。電波からインターネットに移行しています。現在、音楽をオンデマンドでレンタルできます — これはラジオの復活です! このため、多くの新しい製品とサービスが登場しましたが、ストリーミングラジオでは、音楽と音楽体験のコントロールが他人にあるままです。
私たちは、自分が所有する音楽に完全に焦点を当てた製品を求めていました。アーティストやレーベルから直接新しい音楽を簡単に見つけて購入できるようにするものです。
無料版はありますか?
デスクトッププレイヤーは完全に無料です。音楽の販売も無料です! 広告はサポートしていません。
アプリは無料なので、後でオープンソース化する可能性があります。現在は、それを管理する帯域幅がありません。また、機能に関する非常に具体的なアイデアと、物事を進めたい方向性があります。私たちは活発なベータコミュニティを持っており、フィードバックを真摯に受け止めています。
どのように収益を上げていますか?
プレミアム機能があります!
私たちの Voltra Audio Archive は、音楽専用に設計されたクラウドバックアップサービスです。データの圧縮や共有ブロックは行いません。あなたの音楽コレクションは物理的にバックアップされます。
アーティストやレーベル向けには、Pro Membership は、アナリティクスやプロフェッショナルなアーティストのウェブページなど、より関連性の高いオーディエンスにリーチするためのツールを提供します。
Voltra の違いは何ですか?
デザインとユーザビリティは私たちにとって非常に重要です。リスナーに気を散らさないリスニング体験を提供したいのです! いくつかの興味深い音楽プレイヤーとストアがありますが、それらの多くは、作成者が認識している以上に高度で使いにくいものです。Voltra をできるだけ多くの人に利用できるようにしたいと考えています。
また、アーティストやレーベルから手数料を徴収しません。これは私たちにとって重要な差別化要因です。アーティストが音楽を市場に投入する障壁を下げるため、これは非常に重要です。
どのようなデザインと技術上の決定を下しましたか?
Voltra を設計する際、ネイティブアプリとウェブの UI コンベンションを検討し、削除できるものについても多く考えました。過去数か月間、重要なフィードバックを提供してくれた、活発なプライベートベータグループがあります。
アルバムアートと写真が人々にとって非常に重要であることがわかりました。多くのプレイヤーは単なるファイルのリストです。物理的なアルバムを所有することのクールな点の1つはアルバムアートであり、Voltra デスクトップアプリでこれを強調したいと考えました。
また、人々のファイルを乱さないようにしました。ファイル監視を使用して、ファイルを好きな場所に配置でき、ファイルの名前を変更したり、移動したりしません。埋め込みデータベースを使用して、監視対象ディレクトリの状態を追跡し、プロセスが実行されていない場合でも、新しいものを追跡できるようにします。
Voltra の構築中に直面した課題は何ですか?
私たちはパフォーマンスに多くの時間を費やしています。フレームワークから始めましたが、バニラ Javascript に移行しました。私たちの経験では、それらが提供する一般化された抽象化は、導入するパフォーマンスペナルティと儀式よりも重要です。
現時点では、非常に大きなコレクションをかなりうまく処理しています。大規模なコレクションとは、おそらく数万枚の画像を意味します! Node.js のファイルシステムモジュールがレンダリングプロセスから直接利用できるため、DOM イベントに基づいて、大量の画像を非常にすばやく遅延ロードおよびアンロードすることが非常に簡単になりました。
一般に、setImmediate と requestIdleCallback は、UI の応答性を維持しながら、大量の処理を実行するための非常に重要なツールです。より具体的には、CPU バウンドのタスクを個別のプロセスに分散することで、ユーザーインターフェースの応答性を維持するのに非常に役立ちます。たとえば、ビジーな UI からの潜在的な中断を回避するために、実際のオーディオコンテキストを個別のプロセスに移動し、IPC を介して通信しました。
なぜ Electron で Voltra を構築することを選んだのですか?
ブラウザのサンドボックスは、私たちのアプリには制限が厳しすぎます。しかし、私たちはウェブプレイヤーも開発しています。したがって、2つの実装間でほぼ100%のコードを共有できることは大きなメリットです。
実際には、私たちはまずSwiftを使ってネイティブアプリを開発しました。そこで見つかった主な問題は、多くのことを再発明していたことです。ウェブには世界最大のオープンソースのエコシステムがあります。そのため、私たちはすぐにElectronに切り替えました。
また、最も重要なこととして、Electronを使用すると、一度開発するだけで、主要なすべてのプラットフォームで「Just Work™」(うまくいく)はずです。保証されているわけではありませんが、各プラットフォームでネイティブにコーディングするコストは、Electronがもたらす他のコストよりも間違いなく大きいです。
Electronの好きなところは何ですか?
GTD!:Node.jsのネットワーキングスタックとChromiumのプレゼンテーションレイヤーがパッケージされているため、物事を成し遂げるためのレシピとなります。
コンピテンシー:これは単なるウェブスタックなので、文字通りチーム全員が製品の構築に関与できます。
コミュニティ:非常に組織化されたコミュニティがあり、コミュニケーションを非常にうまく行う方法を知っています!そのようなサポートを得ながら開発できることを非常に嬉しく思っています。
Electronを改善できる点はどこですか?
私たちは、Electronが単一のパッカーを推奨することを望んでいます。パッカーは、パッケージマネージャーがNodeにとって重要であるのと同じくらい、Electronにとって重要です。ユーザーランドには複数のパッカーがあり、それぞれに興味深い機能がありますが、それぞれにバグがあります。コミュニティによるコンセンサスは、貢献者によって費やされているエネルギーを導くのに役立ちます。
次は何が来るのですか?
現在、モバイルアプリを開発しており、アーティストやレーベルと協力して、彼らの音楽をVoltraショップに追加しています。もしアーティストやレーベルの方がいらっしゃいましたら、今すぐサインアップしてください!1000万曲の目標を達成したら、ショップをオープンする予定です。