Xamarin.FormsをエンタープライズおよびB2Eアプリケーション開発に適合させる

著者について少し:

Adam Pedley (Microsoft MVP、Xamarin MVP、Xamarin認定開発者)

企業または従業員(B2E)のモバイルアプリケーションは、B2Cの対応するアプリケーションとは大きく異なる場合があります。 原則として、B2Cアプリケーションは基本的な使用のために少数の画面に集中しており、補助機能を実行する必要がある追加画面はあまり使用されません。







B2Eアプリケーションは通常、日常業務のデータを記録またはアクセスする機能に焦点を当てています。 それらの多くは、手書きのメモをデジタルのメモに置き換えます。デジタルのメモは、自動的にメインデータベースと同期されます。 これらのユーザーは大企業の従業員であり、作業に必要なアプリケーションを使用しているという事実は、コードだけでなく、それを取り巻くプロセスにも対処しなければならない多くの違いにつながります。







アプリケーションアーキテクチャ



私はあなたのほとんどがすでにMVVMと依存性注入について聞いたことがあると思います。 これは、企業だけでなく、Xamarin.Formsでの開発にもお勧めします。 MVVMとDependency Injectionを使用すると、Xamarin.Formsで高品質のアプリケーションを作成できます。 非常に大きなコードベースを使用するアプリケーションのアーキテクチャを設計する方法は別の話ですが、この記事では考慮しません。







しかし、私たちが企業の発展に取り組んでいるとき、あなたが満たす必要がある追加の考慮事項があります。







API



1つのAPIを使用する場合、それを制御すると、運が良くなります。 残念ながら、これはエンタープライズアプリケーションで常に発生するわけではありません。 制御していない少数のAPIがあり、特に実装が不十分なAPIを扱っている場合は、アプリケーションのライフサイクル全体で変更される可能性があります。







これに対抗するために、私は常にリポジトリ用のサービスを一般的なレベルで作成します。 リポジトリクラスは、APIに接続し、それらの間でデータを転送/取得する単なるコードです。







データアクセス層のデバイス図







これにより、アプリケーションがAPIの変更から保護され、単体テスト中に依存関係として削除されます。







難しいナビゲーション



多数のページ、マルチステップフォーム、および場合によってはロールベースのアクセスにより、ナビゲーションが複雑になる可能性があります。 あなたが遭遇するかもしれないナビゲーションオプション:







  1. 「戻る」ボタンでユーザーをログインページに戻さないでください。
  2. 複数のページにまたがるオプションの入力を開始し、同じ状態で更新を待ってから戻ります。
  3. ユーザーが必要なアクションを完了していない場合、ナビゲーションを警告または停止します。
  4. ページを表示しますが、ユーザーが移動するときにナビゲーションスタックに保存しません。
  5. ナビゲーションスタック内のページの重複を避け、存在する場合は既存のページをロードします。


これらのナビゲーションオプションは非常に複雑であり、 Exrinを除き、一般的なMVVMフレームワークの標準配信の一部ではありません。 これは、Exrinが作成された主な理由の1つです。







安全性



実際、エンタープライズクラスのセキュリティシステムは、標準のセキュリティシステムほど安全ではなく、通常はより複雑であるため、実装が正しくないというリスクが高まります。 Citrix、Microsoft Online、またはAzure Active Directoryに連絡できます。 運がよければ、優れたOAuth APIを使用できます。







患者記録などの機密データが保存される場合、セキュリティはより重要になります。 機密情報を扱う際に使用するルール:







  1. 認証に古いトークンを使用します。 単一のユーザー名またはパスワードを保存しないでください。
  2. コードに復号化キーや機密情報を入れないでください。 リバースエンジニアリングの助けを借りて、公開されます。
  3. 必要な場合を除き、機密情報を保管しないでください。
  4. 機密情報を保存する必要がある場合は、暗号化されていることを確認してください。


暗号化キーは、実行時にモバイルアプリケーションによって生成され、その後、たとえばKeyChainまたはKeyStoreに安全に保存される必要があります。







また、 OWASP Mobile Security Testing Guideなどの業界標準にも必ず従ってください。







オフラインでの使用



B2Cアプリケーションには、基本的に、アプリケーションを使用するときに「インターネットに接続する必要があります」と言う贅沢があります。 B2Eアプリケーションは、たとえば、大きな建物のWi-Fiゾーンの鉱山やスペースなど、この機能を常に備えているとは限りません。 これは、何らかの種類のオフラインストレージが必要であることを意味します。 この場合、複雑さを避けるために、同期サービスを使用してデータベースからアプリケーションを常に実行し、APIへの接続を確保することをお勧めします。







オフラインで使用するためのデータアクセス層の実装スキーム







Devops



DevOpsは、開発とITの専門家の間の相互作用のための一連のプロセスを確立します。 これは、アジャイルおよび継続的デリバリーに似ていますが、通常はワークサイクルから除外される管理およびITプロフェッショナルに追加のカバレッジを追加します。 DevOpsは小さな会社で見つけるものではありませんが、エンタープライズレベルで見つけることができます。







DevOpsはXamarin.Forms開発とどのように関連していますか? 実際には何もありませんが、あなたの人生を楽にするものがあります。







  1. ハードコードされていないJSONベースの構成ファイルの作成。 これは、テストやUATなどのさまざまな環境に展開するときに役立ちます。
  2. VSTS(またはその他)を構成し、HockeyAppまたはMobile Centerに接続します。
  3. アプリケーションで分析を設定して、予想される結果と比較して関連するメトリックを記録します。


分析



分析を議論する前に、その重要性に注意を向けたいと思います。 予想される結果が特定のメトリックに関連付けられることを確認してください。







たとえば、目標が単純な場合、スタッフの時間を節約します。 まず、現在のビジネスを定義するベースラインを確立する必要があります。 紙のフォームに記入するのに約2分かかり、何かをシステムにコピーするのにさらに2分かかり、エラーを修正するのにさらに2分かかる場合、平均6分かかります。 モバイルアプリケーションでフォームに入力するのにかかる時間と、その頻度を必ず測定してください。 その後、従業員の時間の正確なメトリックが保存されます。 さらに、企業はこれを従業員の時間にかかる費用の内部評価に関連付けることができます。







モバイルデバイス管理



大企業の場合、従業員のすべてのモバイルデバイスを管理するためのMDMキットをすでに持っている必要があります。 残念ながら、これらのシステムには、自動ビルドプロセスに接続できるAPIがない場合があります。 HockeyAppまたはMobile Centerを使用してテストおよびUAT機能を提供し、本番環境に移行する準備ができたらMDMに手動で展開することをお勧めします。







おわりに



考慮する必要があるエンタープライズアプリケーションのいくつかの重要な違い:







  1. 抽象API呼び出し
  2. 開発を開始する前にナビゲーションを計画してください。
  3. セキュリティ要件は高くなる可能性があります。
  4. オフラインでの使用を期待します。
  5. シンプルなDevOps用にプロジェクトをカスタマイズします。
  6. 分析がビジネスの期待に沿って調整されていることを確認してください。
  7. 継続的デリバリープロセスにおけるMDMのアカウント。



All Articles