Specializationsの分類の試験「Mobile Developer Specialist」についてまとめました。
バージョン10の頃にMobile用の試験を受けて合格していると2019年に自動でアップグレードされたようで、私は受験していないのにAlready Certifiedになっています。
Table of Contents
公式情報
OutSystemsのサイトのCertificationsのページで、Mobile Developer Specialist(OutSystems 11)の枠内に「Exam Details (.pdf)」というリンクがあります。
pdfと書いてありますが、このリンクをクリックするとzipファイルがダウンロードされます。
中身は
- 試験内容の解説ファイル(Detail Sheet)
- サンプル試験問題のファイル(Sample Exam)
です。最近は、どの試験情報も英語の他に日本語版が準備されています。ダウンロードされたzipには両方含まれていました。解凍したら、Japaneseフォルダ内のファイルを開いてください。
概要
受験するには前提として、Associate Reactive Developerに合格している必要があります。
他の試験と同じく選択式の問題で70%以上の得点で合格とのこと。
試験時間は60分。この試験は20問と他の試験に比べてかなり少なめの出題になっています。これで☆が2つのCertificationを取れるので狙い目かもしれません。
試験はオンラインで受験できます。また、別の試験ですが、つい先日申し込んだときには、国内のオンサイトの試験会場も選択できました(東京の御茶ノ水です。他の会場もあるかもしれません)。
受験申し込みをするには、Certificationsのページにログインした状態で移動して下さい。試験名のとなりに「Pre-Register」というボタンが表示されるのでここで申し込み。「Where would you like to take this exam?」という質問で「Online」を選ぶと文字通りオンラインで自宅から受験、「Certification Center」を選ぶと会場受験のようでした。
「Which language would you like to take this exam in?」は試験問題を英語で受けるか日本語訳にするかの選択のはず。
オンラインで受験するのもありですが、試験監督との会話が英語になってしまうので、オフラインのほうがいいかもしれません。
出題範囲
OutSystemsのモバイル開発は、Reactive Web App(いわゆるSPAをOutSystemsで開発する方法)と開発要素がかなりかぶっていて、その知識が流用できます。そもそもReactive Web Appの試験合格が受験要件ですが。
そのためか、Reactive Web Appと共通の部分は試験範囲から外れていて、モバイル特有の部分が問われるようです。
データの同期
モバイルアプリケーション開発では、サーバーのDatabaseに配置されるEntityの他に、端末内部に配置されるLocal Entityというものがあります。
基本的にはサーバー側のデータを正として処理するのですが、通信によるパフォーマンス劣化を防いだり、オフラインで動作させたい場合などは、Local Entityにデータを持ちます。
この同期をするための仕組みとして、モバイルアプリケーションにはデフォルトで、OfflineDataSync(及びその関連Action)が備わっています。このActionの使い方やサーバーからLocal Entityにデータを保持する設計、端末内で発生したデータをサーバーにコピーする設計などが試験範囲です。
オフライン
Local Entityの定義方法、画面からの取得方法(ServerのEntityと同じくAggregateが使えるが、SQLは使えない。また画面に直接Aggregateを所属させることができる)、オフラインシナリオが範囲。
オフラインシナリオというのは、(学習用リソースのタイトルから推測すると)おそらく、どういうケースでLocal Entityを使うか(=オフラインの要件があるか)という意味で
- スタンドアロンのアプリ(サーバーを必要とせず動作するアプリ)
- 通信コストを下げるためのキャッシュとして
- ローカルでデータを保存しておく
あたりのことだと思われます。
モバイルプラグイン
モバイルアプリケーションに、端末の機能(プッシュ通知やカメラなど)へのアクセスを提供するモジュールです。
OutSystemsのモバイルアプリケーションはCordovaという、オープンソースのクロスプラットフォームモバイルアプリケーションを開発するためのフレームワークの上に作られています。モバイルプラグインはこのCordovaが提供するプラグインをラップしてOutSystems側からアクセスできるようにするものです。
普通は、Forge上に提供されているものをそのまま利用しますが、それではカバーできない要件がある場合は、自分でプラグインを作ることもあります。
以前、公式のコースを元にこのあたりの手順を確認してブログに書いていました。
- カスタムプラグインを作成する(1)動作するところまで
- カスタムプラグインを作成する(2)ライセンス
- カスタムプラグインを作成する(3)プラグインの戻り値を処理する
- カスタムプラグインを作成する(4)不足している機能を追加
ロジック
イベントとイベントハンドラ、デバッグが試験範囲。
イベントについては、Traditional Webとは相当違う(Initialize/Ready/Render/Destroyのスクリーンイベント、BlockのParameterChanged、システムイベント)のですが、Reactive Web Appとは同じだと思うんですが……。学習用リソースに含まれるBest Practicesには、スムーズな画面表示のためにサーバーアクセスをOnRenderから開始するように、というのはあるのでそれも含まれるかもしれません。
あとは、試験範囲に含まれるかはわかりませんが、OutSystems UIにはNetworkStatusChangedを受け取るBlockがあります。
デバッグについては、クライアントサイドの動作があるために、Traditionalとは違います。また、端末にインストールされて動作するのでその点でも異なっています。
ネイティブアプリの生成
モバイルアプリケーションは、Webアプリケーションと違い、iOS/Androidの端末に直接インストールする形式にビルドします。
このビルドは、OutSystemsのサーバーからインターネット上にあるビルド用のサービス(MABSという)にリクエストして行います。
また、iOS/Androidそれぞれビルド時に配布形式の指定や証明書の設定などの要件があり、OutSystems(Service Studio/Service Center)上で設定を行うので、それも話題に入る。
最近は、モバイルアプリケーションの配布形態としてPWAも入ってきました。学習資料を見ると、これも試験範囲かもしれません。