ハイブリッドアプリ誕生の背景
――本書『HTML5とApache Cordovaで始めるハイブリッドアプリ開発』はCodeZineでの連載が元になっていますが、小林さんがハイブリッドアプリ開発を始めたきっかけは何だったのでしょうか。
小林:私は今フリーランスで開発に携わっていますが、これまではベンチャー企業でサービスの開発やR&Dのような業務を行っていました。かなり以前にはIEエンジンを使ったアプリなどを作っていたこともあります。
とある案件で、スマホ内で動くWebサーバなどをJavaやC++で作っていたんですが、思うように時間が取れず、そのWebサーバとHTMLを組み込んで即席のアプリにしてしまおうと思ったんです。そのときに初めて知ったのがApache Cordovaでした。
しかし、当時はネイティブとしての機能はそのWebサーバ側で開発してしまったのでCordovaのプラグインを一つも使わず、単にアプリ化のために利用しました。その後はだんだんとHTML5を使うようになり、Apache CordovaのAPIなども使って作るようになりました。
――ハイブリッドアプリはどのような背景で誕生したんでしょうか。
小林:ハイブリッドアプリとはまずどのようなアプリであるかといえば、明確な定義はないとは思いますが、一般的には「Web技術とネイティブ技術を組み合わせたアプリ」と言えます。また、狭義の意味では「JavaScriptとCSS/HTMLだけで作るネイティブアプリ」です。
どうしてJavaScriptとCSS/HTMLだけでアプリが作れるのかというと、アプリ側にブラウザエンジンが組み込まれていて、そこで動くものを作っているからです。つまり、アプリ専用のブラウザとセットにしてアプリを公開しているわけです。
このような手法が普及した背景にはいろいろあると思いますが、HTML5の登場に伴うブラウザ機能の向上が挙げられます。クラウド上のサービスや、既にPCブラウザで問題なく提供できているサービスの場合、そのままスマホのブラウザで提供しても技術的にはおおよそ問題なくなりました。
しかし、そこに課金システムを入れたい、プッシュ通知を行いたい、カメラを使いたいといった場合など、部分的にネイティブ機能を使いたいケースが多々あります。それらの機能を組み込むためだけにアプリをネイティブで作り直すコストは大きく、できれば手間をかけたくないはずです。ハイブリッドアプリ開発であれば、プラグインの利用で対応できるんです。
また、ハイブリッドアプリ開発には単純にアプリを作るコスト削減や人材調達の容易化という側面もあると思います。Webアプリの場合にはデザイナー、フロントエンドエンジニア、バックエンド(サーバサイド)エンジニアたちが開発します。その体制を維持したままアプリ開発できれば非常に楽です。
Apache Cordovaは、このような状況でアプリを作るためのフレームワークであり、プラットフォームでもあります。ただし、私はApache Cordovaをコミュニティと捉えています。
というのも、自分でブラウザを組み込み、そのブラウザと連携するような仕組みを作ることはネイティブアプリが作れる人にとってはさほど難しくありません。ですが、それらと連携するプラグインを作るには共通ルールが必要です。そのルールを作り、プラグインを広める環境を作ることができたのがApache Cordovaだと私は考えています。
献身的な開発者が各OSで同じことが実現できるよう、JavaScriptでAPIを用意してくれています。それらを使うことで、ネイティブ部分の開発をしなくてもアプリが作れるようになっているんです。
マルチデバイスに展開しているWebサービスに適している
――実際にハイブリッドアプリを開発するときはどんなことに気をつければいいですか?
小林:ハイブリッドアプリの場合、本当にすぐに開発できるので、ネイティブ部分の開発をまったく必要としなくてもいい場合があります。そのため、ネイティブアプリ開発を行うときに必要な知識がなくても作れてしまうんです。
つまり、アプリ開発の文化をまったく知らずに開発できるわけです。極端なことを言えば、実機に触らずにアプリを作れるんです。
もしアプリ開発の経験がないのなら、簡単なサンプルでもよいので、ネイティブアプリを作ってみることをお勧めします。その経験があれば、プラグインの動作などでわからないことがあった場合に役に立ちますし、無理に既存のプラグインを使う必要もなくなります。
やはり「ハイブリッド」なわけですから、必要と状況に応じてWeb技術側とネイティブ側のどちらで実装するかを選択できるようにしておけば、最も効率のよい開発ができるのではないかと思います。
――では、ハイブリッドアプリが適しているサービスを教えてください。
小林:最も適しているのは、スマホだけではなくPC向けなどマルチデバイスに展開しているWebサービスだと思います。Webだけでも必要最低限の要件は満たしていますが、そのリソースを再利用してアプリとしての付加機能を提供することができます。また、情報の提供・管理やコミュニケーションツールとは特に相性がいいですね。
それ以外に、最終的には完全なネイティブアプリを作る予定であっても、そのためのモックや、ユーザビリティ検証で使ってもいいと思います。時間、コスト、人材を潤沢に用意できるプロジェクトはなかなか少ないでしょう。それらの状況が整うまでの、段階的なソリューションと捉えるのも有用です。
ハイブリッドアプリの将来性
――統合的なアプリ開発環境としてXamarinが注目されていますが、ハイブリッドアプリ開発との違いは何でしょうか。
小林:XamarinはC#という共通言語で、あくまでネイティブアプリを開発する環境です。つまり、各アプリの文化や機能の独自性はできるだけ維持し、そのうえで言語だけは共通化しようというスタンスだと思います。開発フェーズのコスト削減にフォーカスしているとも言えるでしょう。
ただ、実際にXamarinで開発してみるとわかりますが、まったく同じコードでiOSとAndroidの共通アプリを作るのは少々難しいところがあります。しかし、JavaもSwiftも覚えてアプリを開発している開発者にとって、C#を覚えれば言語を切り替えずにXamarinで開発できるという点は非常に魅力的です。
一方、ハイブリッドアプリもXamarinと同じように、開発フェーズのコスト削減効果があります。そのため両者の違いを意識してしまいますが、ハイブリッドアプリのそもそもの背景や目的はWebアプリの機能補強にあります。
そのため、アプリでしかできない機能をメインサービスにして提供したい場合にはあまり向いていません。ここがハイブリッドアプリの一番のデメリットだと思います。けれど、手軽にアプリ開発が始められるメリットもあります。そして、理解すればするほど、できることも多くなっていきます。
このような特性のために、ハイブリッドアプリ開発はプログラミングの学習という目的でも使うことができます。そして先ほど言ったように、開発時の役割をかなり明確に分けられるので、チーム開発がしやすいのも特徴です。
――そもそも利用する目的が違うということですね。ハイブリッドアプリ開発は今後どう発展していくのでしょうか。
小林:ハイブリッドアプリはスマホだけではなく、PCアプリにも広がりつつあります。また、ブラウザでできることも増えているので、サービスをブラウザで代替できる範囲がどんどん広がってきています。それは同時に、ハイブリッドアプリが広まっていくことでもあります。
また、AndroidとiPhoneの違いも以前より少なくなってきました。そのような背景から、各OSやデバイスに特化したUIでなく、むしろ同じ操作性が求められることも増えるはずです。そうなれば、ますますハイブリッドアプリの適用範囲が広まっていきます。
ハイブリッドアプリ環境は学習教材でも使われているので、今後「ハイブリッドアプリが初めてのプログラミング」という世代も出てきます。新しい世代の人たちが、また違った使い方をしていくことにも期待しています。
多くの人がそれぞれの専門分野を活かせる環境
――それでは改めて、本書・連載の狙いについて教えてください。
小林:ハイブリッドアプリ開発で何かトラブルに遭遇しても、その現象はハイブリッドアプリ特有のものではなく、ネイティブアプリにも共通して言えることが多くあります。そのため、ハイブリッドアプリという観点から情報を探してもなかなか見つかりません。
実際にプラグインを使いながらトラブルについても解説している資料があれば、私自身、とても助かったと思います。そこで、私と同じようにハイブリッドアプリの開発をしている方に有用な情報を提供したいと思い、連載を執筆しました。
――本書はどんな人に読んでもらいたい本ですか?
小林:ハイブリッドアプリを作ってみたい方や、既に作っている方ですね。実際に作ってみると、Web技術の知識だけでは問題にぶつかったとき、なかなかその周辺の知識を得ることが難しいでしょう。特にプラグインのドキュメントだけでは実際にどのような結果になるのか、どのような制限があるのかがわからないこともあります。
そうなると、結局多少はネイティブ側のコードを読んで、ドキュメントなどの補足情報を得ないといけません。しかし、それではハイブリッドアプリのメリットが薄れてしまします。だからこそ、実際のプラグインの使い方や注意点などがサンプルつきで説明されている本書が役に立つはずです。
あと、ハイブリッドアプリに懐疑的な人や、JavaやSwiftなどを用いてネイティブで開発している方にも読んでもらいたいと思っています。そのような方には、プラグイン側の開発を行ってほしいんです。そのとき、フロントエンジニアがどんな知識を持っていて、どのような使い方をするのかがわかっていれば、連携がしやすくなるでしょう。
ハイブリッドアプリは多くの人がそれぞれの専門分野を活かせる環境でもあるので、皆さんの強みが活きる方法を模索してもらいたいです。
――本書を読むにあたり、読者にはどういった前提知識が必要ですか?
小林:Webアプリが作れる程度のJavaScriptとHTMLの知識が必要ですが、実務経験が必要なわけではありません。もしJavaScriptを知らなくても、何からのプログラミング言語の経験があれば、それほど問題はないはずです。
サンプルアプリに沿って作れる知識が身につき、アイデアに合ったプラグインが見つかれば、自分が欲しいアプリを作れるでしょう。ハイブリッドアプリは必ずしも一人で開発する必要がないので、苦手な部分は他の人に頼ってもいいですね。自分のレベルにはあまりこだわらずに、得意な分野を活かせばよいと思います。
開発中に生じる問題と同じ問題を解説
――本書の内容について教えてください。
小林:本書では、最初にハイブリッドアプリがどういうものなのかを紹介しています。そして、Apache Cordovaを使ったアプリ開発から、実際に使うプラグインを紹介していく形になっています。
掲載しているプラグインは、よく使われるものだけでなく、iOSとAndroidで多少の違いが生じるものを選びました。開発中に生じる問題と同じ問題を解説しています。教科書というよりは、もっと現場に即した内容になっていますね。
――紹介されているプラグインで、特に印象深いものや便利なものはどれでしょうか。
小林:ファイルのダウンロードとアップロードをするプラグインの「cordova-plugin-file-transfer」と、カメラとアルバムから写真データを取得するプラグインの「cordova-plugin-camera」が自分ではよく使います。
どちらも機能的にはブラウザで実現できるものの、ブラウザだけで作るとどうしても使いにくいものになってしまいます。プラグインはブラウザでは実現できない機能が可能だというところに目が向いてしまいがちですが、現実には紹介したようなプラグインを頻繁に使いますし、便利なんです。
また、「cordova-custom-config」は個人的に非常に好きなプラグインです。これはプロジェクトの設定やビルド指定をカスタマイズできるプラグインで、いつもXcodeを立ち上げて行っていた指定がコマンドでできるようになります。Xcodeはよく操作方法に戸惑って時間がかかったり一部の設定を忘れたりしてしまうので、たいへん助かっています。
最大のメリットは気軽に始められること
――最後に、読者に向けてアドバイスをお願いします。
小林:ハイブリッドアプリは前述したとおり、ハイブリッド技術というものがあるわけではなく、様々な技術や手法の集合であるため、全体が掴みにくいかもしれません。そのため、正解を求めるとなかなか答えが見つかりません。
しかし、あまり難しいように考えず、できるところからできる方法で実現するスタンスでいいと思います。ハイブリッドアプリの最大のメリットは、気軽に始められることですから。
ほとんどプラグインを使わずに作ることになったとしても、あるいは反対に、独自のプラグインをたくさん使うようなことになったとしても、問題ありません。ハイブリッドアプリはネイティブとWeb技術を組み合わせて開発する自由があるので、型にはまらずに開発してください。
ハイブリッドアプリ開発を取り入れることで、いろいろな技術やいろいろな人の意見を知るきっかけにもなるのではないかと思っています。
HTML5とApache Cordovaで始めるハイブリッドアプリ開発
著者:WINGSプロジェクト 小林昌弘
発売日:2017年8月9日(水)
価格:2,333円(税込)
本書について
CodeZineの連載「Apache Cordovaで本格スマホアプリに挑戦しよう」を加筆修正して書籍化したものです。
※プリントオンデマンド(POD)と電書で販売中。