3つのプラットフォーム用の1つのアプリ





Awordアプリケーションの内部構造に非常に満足しています。保守、開発、テストが簡単で、すべてのプラットフォームで新しいバージョンの展開が同時に行われます。 しかし、常にそうではありませんでした。 今日は、どのようにして普遍化の道をたどり、熊手を踏み、経験を積んだかについてお話します。



最初は言葉でした



当初、私たちのモバイルアプリケーションは、学校の学生のためのシンプルな補助ツールとして考案されました。 ほとんどのレッスンには暗記するための特定の語彙が含まれており、生徒と教師の両方がレッスン中に直接単語を追加することができ、理論上のすべてのことは次のクラスで学ぶ必要があります。 電話またはタブレットでこれを行うことが便利であることは明らかです。 そこで、学生が利用できるiOSアプリケーションの最初のバージョンが登場しました。これには、4つの単純な暗記メカニズム(辞書カード、「覚えている-覚えていない」、4つのオプションから正しい答えを選択する2つのチェック)が含まれています。 「スマート」アルゴリズムはなく、単純な詰め込みがあり、プログラムは、生徒が特定の回数連続して正しく翻訳を選択したときに単語が学習されたと判断しました。 後で、同じアプリケーションがAndroid向けにゼロから作成されました。



私たちはアプリケーションを見て、学生からのフィードバックを見て、それが良いことがわかりました。 このビジネスを学校の外に持ち出し、サードパーティのユーザーに提供するために必要なもの。 しかし、暗記のための原始的なツールの形だけでなく、 スマートで効果的で適応可能なアプリケーションの形でもあります 。 これは最初から書き直すだけでなく、アルゴリズムのレベルで慎重にテストする必要があります。



テスト用に、PHPで新しいWebアプリケーションを作成しました。これはよりシンプルで、テスターが美しいインターフェイスを必要としないためです。 アルゴリズムを磨き、メカニズムのセットを最適化しました。 そして、彼らもそれが良いことを見ました。



しかし、さらに2つのバージョンのアプリケーション(iOSおよびAndroid用)をゼロから作成し、3つすべてを並行してサポートおよび開発するというアイデアは、まったく好きではありませんでした。 そのため、アプリケーションのすべてのバージョンで統一されているC ++ライブラリの形式でカーネルを配置し、引き続き作業することが決定されました。



したがって、実際には、すべてをゼロから書き直しました。 しかし、できれば最後の時間です。



1つのライブラリ



正確にC ++なのはなぜですか? C ++はクロスプラットフォーム言語であるため、iOSに完全にコンパイルされ、Androidで十分にサポートされています。PHP拡張でC ++コードをコンパイルすることにより、Web上のPHPで使用できます。 他の言語はそのようなサポートを誇っていません。 たとえば、Javaを選択する場合、Androidアプリケーションを作成する方が簡単ですが、iOSに移植するには、人気のないツール(RoboVMのようなjvm)を使用する必要があり、さらに悪い結果になります。 さらに、C ++の場合よりも複雑な、JavaとPHPの統合。



その結果、次の図が得られました:ネイティブ言語(Objective-C、Java、およびPHPのバックエンド)でプラットフォームごとに個別に記述されたインターフェイス(クライアントプログラム)、すべてのバージョンに共通のアプリケーションコア(C ++ライブラリ) 。 アプリケーションには、サーバーへの接続(許可、共有リソースのストレージ、静的セットのカタログ、辞書、サードパーティアプリケーションとの潜在的な通信)およびローカルデータストレージ( Realm )もあります。



したがって、iOSへの移植は、Objective-CとC ++の優れた互換性のため、最も簡単で最も些細な作業でした。 すべてが問題なく組み込まれ、非常に迅速に動作し、新しい機能をデバッグするための便利なプラットフォームです。



Androidの場合、仮想Javaマシンと対話する必要があるため、状況はわずかに悪化します。これは、作業の速度に影響します。ライブラリとアプリケーション間のデータ転送速度は遅いです。 しかし、私たちのニーズにとってこれは重要ではありません。



Webバージョンでは、 PHP-CPPフレームワークが使用されます。 選択は、利便性、CでなくC ++の多かれ少なかれ完全なドキュメントおよびサポートの存在によるものでした。デバッグの問題にとってマイナスです。ログを表示することは最も便利な方法ではなく、公式サイトは他を提供しません。



アプリケーションの作業機能がすべてのバージョンで単一のライブラリに派生しているため、開発の3つの別個のブランチを作成、テスト、および保守する必要がなくなり、これに関連する避けられない問題もなくなりました。 プラットフォームに関係なく、すべてのエンジンの更新は1か所で行われ、テストされ、すべてのユーザーが同時に利用できます。



そして、私たちはそれが良いことがわかります!



iOSまたはAndroid 向けの Awordモバイルアプリをダウンロードすると、その動作を確認できます。 Webバージョンは後で利用可能になります。



才能のあるスペシャリストのために、私たちにはまだたくさんの良い面白い仕事があることを思い出させてください。



All Articles