伊藤直也氏が語る、モバイルアプリケーション開発のいまとこれから(後編)~Salesforce Developer Conference Tokyo 2013

2013年9月9日

9月6日開催されたSalesforce Developer Conference Tokyo 2013のセッション「B2Cからみたモバイルアプリケーション開発のいまとこれから」では、コンシューマ向けサービス開発の現場に身を置いてきた伊藤直也氏が、モバイルアプリケーション開発を成功させるための方法をこれまでの経験や現在の開発現場のノウハウを基に語っています。

試行錯誤の回数を増やす、iOSとAndroidは同じように作ってはいけないなど、モバイルアプリケーション開発に関わるエンジニアやデザイナーにとって非常に参考になる内容が込められたセッションの内容を、ダイジェストで紹介しましょう。

(本記事は「伊藤直也氏が語る、モバイルアプリケーション開発のいまとこれから(前編)~Salesforce Developer Conference Tokyo 2013」の続きです)

モバイル開発の落とし穴

iOS/Android開発でよくある罠がこれで、iOSとAndroidは同じデザインでよろしく、というオーダーをついしてしまいますが、これはやってはいけないことなんですね。

fig

なぜかというと、iOSの画面遷移は基本的にアプリの中で完結するという考え方です。つまり、アプリを使っていて突然別のアプリの画面が割り込んできて、そこから元のアプリに戻る、ということはあまりないはずなんです。

fig

一方でAndroidは、アプリ内のある画面から別の画面に飛ぶのと、あるアプリから別のアプリの画面に飛ぶのは概念上あまり区別がないんです。Webブラウザで、同じWebサイトでも別のWebサイトでもURLという全く同じ概念で画面が遷移したり戻ったりというのに似ています。

fig

これはUIの基本思想が大きく異なっていることなんです。でも見た目は似ているので、ふだんiPhoneしか使ったことのない人がAndroidも同じだろうと思って発注するとチグハグになって失敗するんです。なので両方を開発するときは、別の開発ラインにするか、iPhone版の開発が終わってからAndroid版の開発をするというのがいいと思います。

それから、これはこういうところで初めて言うことですが、ワンソースでクロスプラットフォームに対応する開発方法はお勧めしません。どっちつかずのアプリになってしまいます。ユーザーに受け入れられやすいアプリを作るなら、(プラットフォームごとに)分けて作った方がいいです。

fig

HTML5とJavaScriptでネイティブアプリっぽいのを作るのは、いろいろ早く作れそうに思いますが、JavaScriptのクセやOSのクセなどの落とし穴にはまって時間ばかりかかってしまうと思います。

モバイルアプリの開発手法

落とし穴が分かったとして、どうやってアプリを素早く、試行錯誤を繰り返しながら作っていくのかというと、キーワードはオープンソースソフトウェアの活用です。ここ1~2年、すごい勢いで環境が整っています。

CocoaPodsだと1500以上のライブラリがあって、ライブラリをダウンロードしてセットアップしてくれ、依存関係なども管理してくれます。

fig

UIのコンポーネントもCocoa Controlsにたくさん提供されています。

ただ、Cocoa Controlsだけで作っていくとちょっと足りないとかちぐはぐだったりして、最後は自分で作ることになると思いますが、プロトタイプとかにはいいと思います。

fig

いま、モバイルのバックエンドにクラウドを使うのは当たり前になってきています。バックエンドは、基本的にはAPIで構成されます。最近ではHTTP/JSONを用いることが多いですね。BtoCの新規開発でオンプレミスのサーバを選ぶことはたぶんほとんどないです。

fig

なぜクラウドを使いたいか、その理由として、インフラの納期を縮めたいとか、トラフィックのピークが予測できないからといったことがありますが、ことBtoCではやっぱりDevOpsしたい、というのがあります。バックエンドを自動化してしまって、ボタン1つでGithubのコードをデプロイできる、といったことをするときにクラウドだとやりやすい。

fig

これから盛り上がるのはMBaaS(Mobile Backend as a Service)です。IaaSやPaaSは自分たちでバックエンドのコードを書いてそれをホスティングします。例えばユーザー登録の機能を作ろうとすると、メールアドレスを登録してもらったらハッシュ値をメールして、といったコードを書かなくてはいけません。しかしMBaaSはそういうコードを書かなくてもSDKとAPIだけで作れるとか、TwitterやFacebookのIDでログインできるアプリも簡単にできるといった機能を提供してくれます。

fig

いま見てきたMBaaSはモバイルアプリの裏側を全部まかなうわけではなく、かなり上のレイヤーの機能なので、IaaS/PaaSと組み合わせてバックエンドを構成し、そこにiPhone/Androidからリクエストを投げる、ということになると思います。

fig

HeliosはBaaSのようなものを自分で作れるフレームワークですね。BaaSが作れるオープンソースのフレームワークはちょこちょこ出てきているので、これから盛り上がってくると思います。

デベロッパー向けサービスの活用

最近は用途特化型のデベロッパー向けサービスがたくさんあって、自分はすごくよく使っています。

fig

TestFlightはチームのメンバーに新しいバージョンのアプリを配布したいときに使えます。これがないと、いちいちメンバーの端末にケーブルをつなげて1台ずつ配布しなければいけないのですが、TestFlightはオンラインで配布できるのでものすごく重宝します。

BugSenseはアプリがクラッシュしたときのレポートをオンラインで集めてくれて、デベロッパーに送ってくれます。コードのスタックトレースが載っているので、どこを実行中にクラッシュしたかなどが分かります。

NewRelicはRuby on Railsを使うときの定番のモニタリングで、HTTPリクエストがどれくらい飛んで、どれくらい失敗したかといったネットワークのモニタリングができるようになっています。

Travis CIはテストを自動化するためのホスティングサービスです。

ちなみにこれ、全部無料で使えます。こうしたものを自分で作るとしたらかなり手間がかかりますが、サービスを利用することで開発スピードを高めることができます。

fig

やはりWebの開発といっしょで、楽できるところは楽して、自分でやるべきところに集中するべきです。ただ、先ほども言ったようにiOSとAndroidは一緒に作らないとか、UIが80%とか、そういうところを間違わずにやっていく。そして開発プロセスを自動化し、試行錯誤の回数を増やしていく、というのが最近のBtoC開発のトレンドです。

公開されているスライドへのリンク

あわせて読みたい

プログラミング言語 BaaS Salesforce モバイル




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本