Spotify デスクトップ アプリケーションの開発に使用された言語またはテクノロジを知っている人はいますか? 安定感があり、見栄えがよく、軽量です。
9 に答える
ここから: http://www.quora.com/What-is-the-technology-behind-the-Spotify-desktop-app
日付: 2014-09-09
アンドレアス・ブリクスト、5年間のSpotify従業員:
すべてのクライアントのコアは C++ ですが、Rasmus の投稿以降、そのコアは機能がモジュールに分割されて凝縮されています。Spotify がより多くのプラットフォームで利用できるようになり、機能セットが充実するにつれて、「コア」が「すべての一部」にならないようにする必要があります。これは、再生コントロールなどの特定の機能を独自の個別のモジュールに分割することを意味します。これらのモジュールはまだ C++ ですが、論理的には他の言語で実装できるほど自己完結型です。これらのモジュールへのインターフェース層を「Cosmos」と呼び、HTTP とさほど変わらない方法で動作します。Cosmos では、クライアントの任意の部分が任意のパスとペイロードを使用してモジュールと通信できるため、より柔軟なアーキテクチャが可能になります。明白な利点のいくつかは、バージョン管理されたインターフェイス (例: GET sp://player/v1/main がプレーヤーの状態を返す) と、データを渡すための JSON です。これは、デスクトップ クライアントの別の変更にとって重要です。
最近のデスクトップ UI の多くは、実際には Chromium Embedded Framework (CEF) を使用しています。これは基本的に、ビューが JavaScript、HTML、および CSS によって強化されていることを意味します。すべての機能チームが他の人のビューを壊すことを恐れずに機能に取り組むことができるように、各ビューは独自の「ブラウザー」にサンドボックス化されています (ビューは Chrome のタブと考えることができますが、より多くのビューを表示する場合を除きます)。一度に 1 つずつ)。ただし、これには 1 つの制限があります。ビュー間でデータを共有するのが難しくなります。これが Cosmos の出番であり、コア (C++) と JavaScript ランドの間の通信を本当に単純化します。JS クライアントは任意のリクエストを行うことができ、バインディングがあれば、そのリクエストが処理されて応答されます。その一例が「メッセージ」任意のビューが JSON データをリッスンしている他のビューにプッシュできるようにするエンドポイント (HTML5 の window.postMessage のようなものですが、これは C++ モジュールともインターフェースできることを除いて)。これは、クライアントのすべての再生ボタンが、トラックが再生されているかどうか、オフラインで利用できるかどうか (別の Cosmos モジュール)、または曲を音楽に保存したかどうかを知る方法でもあります。
テクノロジー スタックのもう 1 つの重要な変更点は、いくつかのロジックをさらに「後方」に移動し、ビュー アグリゲーション サービスに移動したことです。そのため、以前はほとんどすべてのロジックをクライアントで実行し、バックエンドをデータ ストアとしてのみ使用していましたが、現在はデータ ストアとクライアントの間のロジック レイヤーでより多くの作業を行い、Cosmos に非常によく似たエンドポイントを公開しています (実際には、 Cosmos モジュールを呼び出すのとまったく同じ方法でバックエンドを呼び出すことができるため、レイヤー間の移動は面倒ではありません)。これには 2 つの理由があります。1 つは、実装するクライアント ロジックが少なくなるため、より多くのプラットフォームに迅速に拡張できることです。もう 1 つは、クライアントの動作をより一貫して最新の状態に保つのに本当に役立ちます。もっと「バカ」。
これは、彼らが使用するサードパーティ コンポーネントのリストです (もちろん C++ の上に):
- ブースト
- 駐在員
- FastDelegate
- giflib
- libjpeg
- リボッグ
- libvorbis
- メルセンヌ・ツイスター
- zlib
- NSIS (Windows のみ)
- Windows テンプレート ライブラリ (Windows のみ)
- うなり声 (Max OS X のみ)
- MATrackingArea (Mac OS X のみ)
Spotifyのデザイナーによると:
http://twitter.com/#!/tobiasahlin/status/96483609799692288
「一部は C++ で書かれており、一部は Spider と呼ばれる HTML 風のマークアップ言語で書かれています」「Spotify 内で使用するためだけに構築されています」
Spotify は現在、Chromium Embedded Framework (CEF) を使用して、デスクトップ アプリケーション内に HTML/CSS/JavaScript で構成される Web インターフェイスを表示しています。
彼らのウェブサイトから:
Spotify は主に Python と C++ で構築されています
明らかに .NET ではなく Windows で実行されていることを考えると (プロセス エクスプローラーはそれを教えてくれます)、AIR インストール プロセスに従わなかったので、クロス プラットフォーム ライブラリを使用する C++ と言えます。
すべてが 1 つの実行可能ファイルにコンパイルされます。これは、すべての依存関係のソースにアクセスできることを示しています。
テクノといえば・・・ハードハウス・エレクトロニカだったと思います。
フロントエンドは FLEX で書かれています。Mac または Windows マシンでソースをチェックアウトしてください。flex ファイル形式の xml ファイルが多数表示されます。
もちろん、サーバーとプラットフォームの統合への接続は、おそらく c++ でネイティブに記述されています。しかし、UI部分はFLEXだけです...