マグカップの裏

プログラムとか、思ったこととか、料理とか

クロスプラットフォームなモバイルアプリ開発の言語選択について

アプリを作りたい

最近ずっとRailsを触っていて、Webアプリを作っています。ようやく形になってきてそろそろ細かい修正を済ませて公開したいのですが、デザインセンスがなさすぎて進んでません。とはいえ、友人に下記のデザインの本をもらったのでこれを軽く読んだら作りこむつもりです。 じゃあさっさと読めよ、という話ですがモバイルアプリの市場も需要は高まり続けていると思うし、思えばちゃんとスマホアプリを作ったことって無いんで一回ぐらいやっておきたいと思ったのです。

私がメインで使っているスマホAndroidを搭載しているのでJavaかなーと思ったんですが、市場規模的に(収益のあるアプリをそもそも作るのかという話でもあるが)iPhone向けのアプリも作りたいです。 せっかくMacminiも買ったしね。

クロスプラットフォームな開発をしよう

クロスプラットフォームというのはそのまんまの意味で、早い話iOSでもAndroidでも動くアプリを組もうという試み。 ただこれにもいろいろな種類があります。

ネイティブアプリ

これはAndroidでいえばJavaiPhoneで言えばSwiftObjective-Cで書かれたアプリです。 言うなら普通なアプリ。

ネイティブアプリの利点

早いです。はい。あとはOS依存の機能が使えます。

ネイティブアプリの欠点

当然、開発するために学習コストがかかります。

ハイブリッドアプリ

これはWebViewを内蔵したアプリを吐き出してくれて、HTMLとCSSJavascriptで書かれたアプリが実行される感じ。

ハイブリッドアプリの利点

学習コストが低い、と言われます。これはまあ、一つの開発のために勉強するものが限られているという意味では間違いではないんですが、これ結局HTMLとCSSJavascriptをよく知らない人は3つの言語(言語というかなんというかだけど)を勉強するわけで、そんなに利点なのかな。という感じがする。

ハイブリッドアプリの欠点

重い。らしい。まあそりゃそうかもしれないね、という感じはするけど

さあどの言語を使おうか…

正直いうと結論は出ていない。 ネイティブアプリを書けるRubyのライブラリとかもあって、RubyMotionっていうんだけど、それを使うのもありだよねという感じがする。 JavaとかSwiftとかで書いたときと同じパフォーマンスがでるらしい。 ハイブリッドアプリとかならPhoneGapとか、Titaniumとか選択肢はあるけど。何がいいんだろうなあ。