VKontakteのSymbianクライアントを書いたように

今日は、Nokiaスマートフォン用のVK(Vkontakte)アプリケーション開発の経験についてお話したいと思います。 その瞬間、作業を開始することを決めたとき、Symbianプラットフォームでの作業経験が豊富であり、このプラットフォーム用のさまざまなアプリケーションを作成し続けることは興味深いものでした。



ノキアとは長い間仕事をしています。 同社は、Symbianのアプリケーション開発プロセスにおけるパートナーサポートを提供し、さまざまなプログラムへの相談と参加を提供し、他社の開発者と話すことができるイベントを開催し、興味深い有望なプロジェクトを提供しています。 これらのプロジェクトの1つはVKアプリケーションです。



vkontakte.ruのクライアントを作成するというアイデアは空中にありました。 ノキアは、スマートフォン市場で最大のプレーヤーであり、サポートされるデバイスの数という点では、ロシアのシンビアンプラットフォームがリーダーです。 ただし、以前はこれらの巨大なサービス間に公式のリンクはありませんでした。 このプロジェクトの実施を支援してくれたのは私たちでした。



今日存在するさまざまなプラットフォーム用のすべてのVKアプリケーションの中で、Symbian用に作成したものがサイト自体の構造に最も近いことを誇りに思っています。 これを達成するために、Vkontakteの開発者と数か月間緊密に協力しました。 アプリケーションを開発するために、サイトvkontakte.ruで公開されている開発済みAPIを使用しました 。 アプリケーション開発の時点で、VK APIは積極的に開発中であり、私たちの参加も含めて最終化されていたことに注意してください。 そのため、コラボレーションの過程で、写真を作成するときに写真にキャプションを追加し、アルバムを削除することが可能になりました。 ニュース作成者の現在のオンラインステータスがニュースリストに追加されました。 ユーザーページの統計情報(写真、メモ、友達の数など)、最も人気のある友達のリストを取得できるようになりました。 モバイル版には、添付ファイル付きのメッセージを送信する機能があります。 また、VK開発者がすばやく修正したAPIのいくつかのエラーを発見するのに役立ちました。 たとえば、特定のユーザーからのニュースを隠す方法は最初は機能しませんでした。壁にアップロードされた写真を見ることができなかった、ビデオファイルへの不正なパスが来たなど



アプリケーションの設計で作業するのは面白かったです。 アプリケーションの開発を開始する前に、iPhoneバージョン用に開発されたインターフェイスコンセプトを紹介しました。 このような概念をSymbianに直接使用することは誤りであり、Symbianコントロールを介してアプリケーションを実装することは、元のサイトとスタイルが似たアプリケーションを作成したかったため、あまり良くありません。 デザイナーが提案した最初のバージョンでは、すべての要素が非常に大きかった。 しかし、大画面を備えた最新のNokiaスマートフォンでは、このサイズの要素は扱いにくいように見え始めました。 その結果、私たちのデザイナーは、サイトのデザインとモバイルアプリケーションの使いやすさの要件に従って、アプリケーションの外観を数回変更しました。 最終バージョンは、アイコンとカラーソリューションのスタイルで共通のコースを維持するために、VKデザイナーの積極的なサポートによって取得されました。







私たちの開発における主な問題は、ビデオの再生でした。 VKサーバーは、FLVとMP4の2つのバージョンでビデオを提供しました。 ただし、Nokiaデバイスは、VKサーバーで使用されるMPEG-4コーデック設定をサポートしていませんでした。 サーバー側の開発者はコンテンツを別の形式にトランスコードすることを提案しましたが、他のプラットフォームのサポートを破ることができ、アプリケーション開発時にビデオがトランスコードされなかったため、これは危険です。 ビデオを受信するためのAPIでの議論の後、プラットフォーム固有のビデオファイルを受信するためのフィールドが追加されましたが、多くのデバイスでのリリース時に、アプリケーションはビデオの大部分を再生できませんでした。 テスターは、新しいスマートフォンファームウェアでVKontakteのビデオを再生しても問題はないと言います。



アプリケーションは、SPB Softwareが開発した最小限のクロスプラットフォームグラフィックエンジンで実行されました。メイン言語はC ++です。 モデル/ビューの概念が使用され、アプリケーションロジックとグラフィックスコンポーネントは非常に強く分離されました。 一般的なアプローチは、QMLを使用したアプリケーションの開発を連想させます。ほとんどすべてのグラフィックロジックはXMLで記述され、C ++ソースコードでは論理部分のみが処理されます。 小さなメディエーションモジュールを使用すると、特別な場合にのみコードを使用して、サーバーから受け取った構造をグラフィック構造に変換できます。 プログラムでAPI構造を表すために、Pythonコードジェネレーターが使用され、APIページから取得された構造の正式な最小定義をC ++アプリケーションに便利な形式に変換します(型付き構造、インターフェイスのサポート、必要なすべての宣言および関数)。 必要に応じて、構造体のフィールドを使用したマイナーな操作を、わずかな機能の定義レベルで直接記述することができます。 これは、通常のフィールドであるかのように、異なる形式の時間、1行の名前と姓の組み合わせなどで時間を取得するために必要でした。



彼らは、生産性、安定性、ユーザーの利便性を高めるために、SymbianバージョンのアプリケーションにQtライブラリのグラフィックコンポーネントを使用しないことに決めました(デバイスの大部分では、アプリケーションを起動するために追加の手順が必要でした)。



典型的なソフトウェアソリューション:依存関係を最小限に抑え、コードを簡素化するために、機能オブジェクト(ファンクター)が積極的に使用されました。 それらを積極的に使用すると、抽象クラスの数が減ります。これはコードサポートに適しています。 たとえば、ファイルをダウンロードする関数は次のようになります。



template<class T> Functor<void, void> FireRequest( Connection& connection, const String8& url, Functor<void, T> on_succ, Functor<void, ErrorReason> on_fail );
      
      





ダイアログまたはビューパネルを呼び出すための典型的な機能:



 Functor<void, void> RunWaitDialog( const String& text, Functor<void, void> on_cancel );
      
      





明確な分離が使用されました。エンジン(スキン、URLなどを操作するため)で8ビット文字列が使用され、ユーザーに表示されるのはプラットフォーム依存のUnicodeです。



メモリー管理は、オブジェクトにboost :: intrusive_ptrおよびboost :: weak_ptrの類似物を使用し、配列などにSTLコンテナーを使用して実行されました。STLはそのまま使用され、boostには依存しませんでした。 手動のメモリ管理(削除を使用)の使用は最小限に抑えられました。



VKontakteアプリケーションを使用するもう1つの機能は、ソーシャルネットワークの開発、新しい機能、機能、および設計の改善の出現を常に追跡する必要があったことです。 Vkontakteは動的に発展しているソーシャルネットワークであり、公式のVkontakteアプリケーションはそれに遅れをとってはなりません。 サイトの最適化プロセスを監視し、それに応じてアプリケーションを変更しました。 開発中にサイトを変更するには、設計とダイアログの再設計が必要でした。 ニュースリストの動的な読み込みなど、いくつかのことには時間がありませんでした。



プログラムのリリースの1か月前に、アクティブなベータテストが開始され、数百人が参加しました。 ベータテストでは、バグの発見に加えて、開発者にとって最も重要なことは、ユーザーがプログラムをどのように評価するか、どの程度気に入ったか/気に入らなかったか、将来使用する準備ができているかどうかです。 そして、Vkontakteベータテスターから肯定的なフィードバックをいただき、非常にうれしく思いました。 私たちは正しい方向に進み、ユーザーが必要とするものを作成していることに気付きました。 その結果、10月中旬までに、60万人以上のユーザーがNokiaストアからアプリケーションをダウンロードしました。



アプリケーションの作業は非常に興味深いものでした。 ノキアは技術的な問題についてアドバイスし、マーケティングサポートを提供しました。Vkontakteから提供されたAPIとアイデアのおかげで、開発に特別な困難はありませんでした。



All Articles