どうも、凡人です。
友人から、共同開発に誘っていただきました。
開発するにあたって、クロスプラットフォーム開発しようとなりました。AndroidとiOSの両方に対応したアプリを作成したいからです。
クロスプラットフォーム開発の利点を活かそう
クロスプラットフォームで開発すると、アプリの完成度が下がるという欠点があるみたいです。しかしそれぞれの環境を用意して開発しようとすると、AndroidとiOSの開発資産が別々になってしまいます。そして私がAndroidの実機を持っていない、友人がiOSの実機を持っていない。そのような理由から、クロスプラットフォームでやったほうがいいんじゃないかと。どうせ一緒にやるならば、同じ資産をいじりまわしたいものです。いつもの仕事仲間じゃない人とコードの共有とかちょっと夢でしたし。
「おいおいマイフレンド、ここはこう書いたほうがいいんじゃないか?」「hahaha!さすがマイフレンド!CoolなCodeになったぜThanks!」とかやりとりしてみたいじゃないですか違いますかそうですか。
ネイティブアプリとハイブリットアプリってなんだろう
iOSだったらObvective-C、AndroidだったらJavaで動くのがネイティブアプリ。HTML5などがWeb View等を通してアプリとして動作するのがハイブリットアプリ。たぶん。ネイティブ万歳。ハイブリットアプリ遅い。そんな印象。
このへんの言葉の認識は、人によって違うのかな?と、調べてて思いました。とりあえず、ここでは上記の意味合いで使っていきます。
開発環境の候補
どうゆう開発環境があるのか。調べてみました。
PhoneGap(開発環境ではなくフレームワーク)
有名なフレームワーク。友人がまず提案してくれたのがPhoneGapです。アプリ内にWebViewを内蔵。HTMLやCSS、JavaScriptで開発するためのフレームワークです。WebViewを使ってことは、ブラウザを使ったWebサイトアプリってことなんでしょうか。速度が遅いというのが問題らしいです。ハイブリットアプリ開発。
フレームワークなので、Android SDKとXcodeが必要になります。Xcodeだとプラグインみたいなのが入れるみたいです。Androidは開発環境を持っていないからまだ調べていない。それぞれの開発環境を用意するのが手間っていうのも欠点ですね。
もともとはNitobi社が開発していたのを、Adobe社が買収。今もAdobe社により提供されています。
PhoneGap Build
Adobe社が提供する開発環境。Web上でPhoneGapのビルド環境を提供してくれています。PhoneGapの開発環境構築の悩みを解決してくれます。無料版あり。 プロジェクトファイルをアップロードして、オンライン上でビルドする。なにこれ凄い。 言語はHTML5+CSS+JavaScript。
Monaca
PhoneGapのビルド環境を持つ、オンラインIDE。Webブラウザ上でコードを書き、ビルドすることができる。PhoneGap Buildはビルド環境だけなのに対し、こちらはIDEもあります。Webブラウザさえあれば開発できるというのは非常に魅力的。アカウント作成の必要があります。無料のプランもあり。
Visual StudioもオンラインIDEが発表されたし、これからこういう流れになっていくのでしょうか。言語はHTML5+CSS+JavaScript。
Titanium Mobile
Titanium StudioというIDEを提供してくれています。IDEはWindows,Mac,Linuxでインストール可能。もちろん無料。PhoneGapと双璧をなす感じで有名どころ。ドットインストールにレッスンがあったりします。言語はHTML5+CSS+JavaScript。
ビルド環境として、Android SDKとXcodeが必要。しかしIDEがOSを問わないというのはいいですね。
Delphi EX
有料なので、今回は採用しません。ですが、実はうちの会社でこれ使っていくことが決定しました。私はまだそのプロジェクトに入ってないのですが、確実に使うことになります。プロジェクト担当の先輩に聞いたところ、資料が少なくて苦労しているそうです。
言語はDelphi。Delphiで書いたコードをコンバートするので、ネイティブアプリ開発が可能だそうです。 ビルド環境として、Android SDKとXcodeが必要。
結論
MonacaかTitanium Mobileかなぁという感じです。
どちらも学習コストが低そうという利点がありました。Monacaには、公式サイトにサンプルアプリが公開されています。Titanium Mobileはドットインストールのレッスンがあります。どちらも本がそれなりに出ているようです。枯れた技術大好き万歳!
友人がお気に入りのHTML5やJavaScript用のIDEとかすでに持っているとなったら、PhoneGap Buildですかね。Phonegap Buildを使う場合も個人的にMonacaはIDEとして利用しようかなぁと。
あとがき
ハイブリットアプリの弱点が気になりました。「各OS依存機能が一部使えない」「遅い」ということです。複雑かつ各OSに最適なアプリを開発するには、結局のところネイティブコードで作るのが一番なのですね。
ただ、「各OS依存機能を利用しない」「処理が重くない」アプリを開発するのはハイブリットアプリでいい。今回の開発では、「勉強のためにサービスを立ち上げてみよう」という意味が大きいので、ハイブリットアプリという選択肢が最適かなと。必要になったらネイティブに移行すればいいですし。Xcodeの勉強はまぁぼちぼち続けて行くことになりそうです。