JDBな人生  専門的なことから日常的なことまで~ まぁ自由きままに書いていきます。
2017年06月 / 05月<< 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 >>07月

アクセスランキング

[ジャンルランキング]
コンピュータ
368位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
52位
アクセスランキングを見る>>

スマホアプリ開発とWEB技術

近頃、スマートフォン向けのツールを作ることが増えてきました。主にはAndroidがターゲットですが、ものによってはiOSや他の環境をターゲットとすることもあります。
そこで考えたことをいくつか。(まあよく話題になることですが)

一般的に、Android向けの開発には、Java/Android SDKによるネイティブ開発と、HTML/CSS/JSをはじめとしたWEB開発があります。後者はさらにブラウザ上で動作させる場合と、ネイティブアプリ内部でWebViewを用いて表示させる場合(PhoneGapをはじめとしたフレームワークの利用も含む)に分けられます。

AndroidネイティブではなくあえてWEB系の技術を使うメリットとしては、iOSやWindows Phoneなど他の環境への移植がしやすいということ、一般的なWEB制作に関する資源を流用できるということなどがあります。

自分はLAMPをベースにRIA開発を行うことが多いので、WEB系の技術・資産を流用できるというのは大きなメリットですが、その中でいくつかの問題に直面しました。特にブラウザ上での動作を想定したアプリケーションについての問題と、その解決策についての内容です。

  1. WEBブラウザによる違いによる問題
    これは動作の方法にもよりますが、ここでは標準ブラウザだけではなくFirefoxやOperaなど他のブラウザも含めて考えます。
    ブラウザ間の仕様の違いにより、解釈が微妙に変わります。自分の用意できない環境でどう動くかはわからないため、その違いを吸収するだけではなく、その問題を見つけるためにも手間がかかります。

    実際に対応を行ったものとして、Android標準ブラウザのバージョンごとの仕様の違い(SelectBoxのバグ)、HTML5から加わったAudio要素の対応形式の違い(MP3を再生できるブラウザとできないブラウザが存在)、input:button要素の表示の違い(角丸のありなし)、WebStrage対応の違いなどがあります。

    PhoneGapを利用したときにも、標準ブラウザのバージョンによって動作が変わり、対応に追われました。

    ⇒解決策
    できるだけ多くの環境で動作確認を行う

  2. クロスドメイン通信に関する問題
    これもまたよく知られているものですが、リソースを他のドメインから取得しようとする場合、場合によってはそれらのリソースにアクセスすることができません。具体的には、AjaxやAudioのクロスドメイン通信の制限があります。
    PhoneGapなどのフレームワークを用いたものであればそれらの制限にかからずに済みますが、一般的なブラウザ上で動作させる場合には、それらの制限にかからないように開発を行う必要があります。

    ⇒解決策
    リソースを可能な限り同じドメインに配置する
    JSONPなどの回避策を利用する

  3. デバイスの機能の利用に関する問題
    GPSやモーションセンサー、カメラなどについては、一部のブラウザからはアクセスすることができますが、まだ対応は一部のみでしかありありません。これらを利用したいときには、ネイティブで作った方が手間がかからなさそうです。

    ⇒解決策
    ブラウザからアクセスできない機能を使わないで済む設計にする
    必要な機能にアクセスできるブラウザのみを対象に開発を行う
    必要な部分のみネイティブで開発しWebViewを埋め込む/PhoneGapなどのフレームワークを通じて使う

  4. OSの機能の利用に関する問題
    プッシュ通知や戻るボタン・メニューボタンなどOSの機能を利用するものも、ネイティブからでないと利用できないものがあります。また日付時刻の選択やダイアログなどのOSの用意しているUI要素を利用することもできません。ただしこれについては、独自に実装することで環境によるUIの違いを吸収できるという考えかたもできます。
    またスリープ状態への遷移に関する設定・バックグラウンド通信等についても利用することはできません。
    プッシュ通知については、プッシュ通知に関する情報の送受信・表示・対象画面へのアクセスのみを行うサービスを開発・利用することにしました。

    ⇒解決策
    独自UIで統一する
    プッシュ通知は独立させる


主にはこんなところです。
他にも多くの問題がありますが、OSやバージョンの垣根を越えて“大抵は”“大体”同じように動作するWEB技術による開発は、大きな可能性を秘めていると思います。

何かアドバイスや情報などあればぜひコメントをお願いします!
 


 
   プログラミング/開発全般    TB(0)    CM(0)    EDIT    ページ↑

コメント投稿


 管理者だけに表示

コメント

トラックバック

この記事へのトラックバック:

プロフィール

JDB Luigi

Author:JDB Luigi
どこにでもいるようなありふれた人間・・・という訳でもなく、かと言って怪しい宗教を信仰する変人という訳でも無い。

基本的に掲載しているコード等は煮ていただいても焼いていただいても結構ですが、利用は自己責任にてお願いいします。
また、バグ・アドバイス等もしあればよろしくお願いします。