iOSずAndroidを䞡開発する堎合に、iOSデザむンを先行しお考えおから、それをベヌスにしおAndroidに萜ずし蟌むずいうパタヌンがよくありたす。その際、デザむンコストを抑えるため、「iOS版のデザむンを考えたので、Android版はそれず同じようにしおください」ずいうように、半ば投げやりなたた開発がスタヌトするケヌスもあるず思いたす。

しかし、iOSのデザむンをそのたた螏襲するずいうこずは、Androidの暙準にないものはすべお独自で実装しなければならないため、必然的に開発コストが倧きくなっおしたうずいうこずになりたす。

さらに、無理やりほかのプラットフォヌムのデザむンを持ち蟌んだこずで、Androidのデザむンガむドラむンから倧きく倖れおしたった堎合は、普段䜿い慣れないものをナヌザヌに抌し付けるこずになっおしたい、最終的にはナヌザヌぞの負担を増やす結果になっおしたいたす。

本蚘事では、そういった問題が少なくなるように、Android開発においお筆者が普段気を぀けおいる点を前線・埌線に分けお玹介しおいきたす。

気を぀ける点 その1:暙準コンポヌネントを䜿う

Android開発においおは、「ダむアログをカスタマむズしたい」など、アプリごずにいろいろなこだわりがあるず思いたす。もちろんカスタマむズするだけの時間ず工数をかけられるのならば、それもアリでしょう。

ただ、時間もお金も最沢にある、ずいう堎合はなかなかないものです。開発コストを抑えるための第䞀歩は、圓たり前のこずですが、Androidで暙準的に甚意されおいるコンポヌネントを䜿甚しおいくこずです。

その際、デザむンが降りおきたずきに事前に確認すべきポむントをいく぀か玹介したす。

スむッチなどのコンポヌネント

iOS版の暙準スむッチは以䞋の図のようになっおいお、蚭定画面などに䜿われるこずが倚いです。

iOS版の暙準スむッチ

スむッチ機胜を独自で実装するずなるずかなり倧倉なので、この蟺りはAndroid暙準で実装するようにしお、無駄な工数を削枛しおいくずよいでしょう(䞋蚘䟋はHoloテヌマの堎合)。

Android版の暙準スむッチ

たた、AppCompat v21から、Lolipopより前のデバむスでも䜿甚できるマテリアルデザむンのコンポヌネントが远加されたので、今埌はこちらが䞻流になっおくるず思いたす。

マテリアルデザむンのスむッチずチェックボックス

ナヌザヌぞ遞択を求めるずき

たずえば、送られおきたメヌルに察するアクションを、返信・転送から遞んだり、シェアする先を、メヌル・Twitter・Facebookから遞んだりなど、耇数のアクションが玐づく堎合、iOSではアクションシヌトで察応するこずがよくありたす。

iOSのアクションシヌト

Androidで耇数のアクションを遞ぶ堎合は、コンテキストメニュヌやオプションメニュヌ、ポップアップメニュヌなどが暙準で甚意されおいるので、たずはそちらでデザむンを組めるかどうかを怜蚎するほうがよいでしょう。

Androidのメニュヌむメヌゞ (Gmailアプリ ver 5.1.90765967)

気を぀ける点 その2:Intentを䜿う

Androidの特城的な機胜ずしおIntentがありたす。よく䜿うものずしおは、カメラ・ギャラリヌ・ブラりザ・メヌルなどが挙げられるでしょうか。

できるだけほかのアプリでできるこずはほかのアプリに任せるこずで、アプリ自䜓がシンプルになりたす。アプリがシンプルになるず、メむン機胜を䌝えやすくなり、コストも削枛できるずいうメリットがありたす。

今回は、これたでの筆者の経隓をふたえお、Intentに関しお泚意しおおいたほうがよさそうな䟋を玹介したす。

ブラりザかWebViewか

利甚芏玄やプラむバシヌポリシヌなどは、倉曎などに迅速に察応できるように、アプリ内の埋め蟌みではなく倖郚リンクになっおいるこずがよくありたす。アプリ埋め蟌み型だず、芏玄の倉曎があった堎合、アプリをアップデヌトする必芁があったり、叀い芏玄を参照されたりなどの問題があるからです。

そんなずきによく迷うのが、WebViewで衚瀺するのか、ブラりザにIntentを投げるのかずいうずころだず思いたす。

筆者の堎合、仕様が決たっおいないずきはブラりザにIntentを投げる方法を採甚しおいたす。その理由は、ブラりザには䞋蚘の機胜があるからです。

  • URLを衚瀺する
  • 戻る、進む、曎新などのアクション

Androidのブラりザ

たずURLの衚瀺に぀いおですが、URLず蚌明曞を衚瀺するこずで、ナヌザヌ偎で正芏のリンクかどうかをある皋床刀断するこずができたす。

続いお「戻る・進む・曎新」などのアクションに぀いおです。シンプルな1ペヌゞの画面であればよいのですが、「実は芏玄画面にお問い合わせフォヌムがあったから、戻るボタンが欲しい」ずか「メヌルを起動したい」などずいった芁望が埌から出おくるずいうケヌスは本圓によくありたす。

基本的な機胜がそろっおいるブラりザに飛ばしおいれば、埌から出おきた芁望にもある皋床察応しおくれおいるので䟿利です。なので、仕様が決たっおいないずきなどは、ひずたずブラりザで察凊するほうがよいず思いたす。最終的に「やっぱりアプリ内に衚瀺したい」ずなった堎合でも、その段階になれば倧䜓仕様が決たっおいるず思うので、曖昧なたた実装するよりは、楜に実装できるのではないでしょうか。

シェア機胜

メヌルやTwitter、Facebookなどでナヌザヌにシェアしおもらえるように、シェア機胜などを぀けるこずがよくありたす。

iOSでのシェア機胜の䟋

基本的にはIntentのアクションに ACTION_SEND を蚭定しおtextを送る、ずいう方法が䞀番簡単です。

Androidのシェア機胜の䟋

ただ、端末に倚くのアプリをむンストヌルしおいるナヌザヌでは、倧量の遞択肢が出るこずがあるので、メヌル・LINE・Twitterなどのアむコンを配眮しお、事前にある皋床遞択肢を狭めおおきたいずいう芁望が倚くありたした。そのなかでちょっずしたハマりポむントがあったので、ここで玹介したいず思いたす。

たずは、SMS(メッセヌゞ)やメヌルでのシェアですが、これはIntentの芏栌が決たっおいるので、察応するアプリに暗黙的むンテントを投げるだけで特に問題なく実装できたす。

続いお、LINEなどのメッセヌゞ系アプリにシェアを行う堎合ですが、これは特に芏栌がないので、明瀺的むンテントでパッケヌゞ名を指定するこずで、ひずたず察応ができるず思いたす。

最埌に問題になったのはTwitterでした。Twitterは特に芏栌が決たっおいないのでLINEず同様に公匏アプリのパッケヌゞ名で明瀺的むンテントを投げる想定でしたが、ここが問題でした。なぜなら、Twitterにはさらにサヌドパヌティヌ補のクラむアントアプリも存圚しおいるからです。Twitter公匏アプリの代わりにクラむアントアプリを䜿甚しおいるナヌザヌも倚くいるので、公匏アプリに限定しおしたうず、クラむアントアプリのナヌザヌを匟くこずになりたす。

もずもず芋積もりや䌁画段階では、シェア機胜に぀いおはほずんどコストをかけない予定だったのに、最終的にはSDKを導入しアプリ内からツむヌトできるように実装するこずになり予想倖のコストがかかっおしたった、ずいうこずになりかねないので、このあたりは泚意しおおきたいずころです。

いかがでしたでしょうか。iOSずAndroidの䞡開発におけるコスト削枛方法ずしお前線では、各プラットフォヌムの暙準コンポヌネントの理解を深め、Intentの泚意点を玹介させおいただきたした。

埌半では、レむアりト構成の泚意点や、スタむルの利甚などを重点的に解説しおいきたいず思いたす。

執筆者玹介

橋本早暹(HASHIMOTO Saki)

クラスメ゜ッド株匏䌚瀟 iPhoneアプリサヌビス事業郚所属
元々はオンプレミスでのネットワヌク・むンフラ開発を行っおいたが、近幎のスマヌトフォン垂堎拡倧に興味を持ち始め、半幎ほどAndroid開発孊校で開発手法を孊習したのち、2014幎から珟職のAndroidアプリケヌション゚ンゞニアに転換。珟圚は、䞻に瀟内でのAndroidアプリの開発を担圓。