Ruby on Railsで作ったWebアプリをスマホで使ってもらうなら、Webブラウザの代わりにネイティブアプリに開発してはいかがでしょうか。この方法ならWebサーバー側で処理するRuby on Railsのメリットと、スマホのネイティブアプリのメリットの両方を活かせます。
さらにスマホのネイティブアプリをRubyで作れるなら、新しいプログラム言語を習得しなくても済みます。今回はRuby on Railsを活かしたスマホ用のネイティブアプリの仕組みと作り方を紹介します。
Webアプリとネイティブアプリの違い
多くの人がスマホを日常的に使っている今の時代、スマホ向けのアプリで自社の製品紹介やサービスの提供を実施している企業が増えています。目的に応じて幾つものアプリを使いこなしている方が多いでしょう。
ではスマホの用のアプリにWebアプリとネイティブアプリがあるのをご存じでしょうか。WebアプリはRuby on Railsなどで開発されたWebブラウザでアクセスして利用するアプリです。一方、ネイティブアプリとは、App StoreやGoogle Playなどからダウンロードするアプリを指します。
ネイティブアプリのメリットとデメリット
スマホのネイティブアプリ開発に使われるプログラム言語はJavaやC++などのコンパイル型で、プログラムコードからターゲットとなるスマホのCPUで動作する実行モジュールを生成します。そしてその実行モジュールはサイズが小さく、実行時のリソースも少なくて済み、さらに実行速度が速いといったメリットがあります。
そしてスマホのネイティブアプリを開発するには、iPhoneならSwift、AndroidならJavaやKotlinを使うのが一般的です。なおそれぞれのプログラムそのものはオブジェクト指向言語に詳しい方であれば難しくありません。
しかし、スマホのネイティブアプリを構築するにはスマホ用のライブラリが必要です。スマホのハードウェアとそのライブラリの習得に時間がかかることから、開発期間が長くなるのがデメリットです。
Webアプリのメリットとデメリット
WebアプリはWebブラウザで動作するプログラムで、Webブラウザがユーザーインターフェースとなり、Webサーバーと通信してあたかもアプリのように動作するWebシステムです。そしてクラウド上のWebサーバーに簡単に設置でき、Ruby on Railsを使えば短期間で開発できるのがメリットです。
しかしWebブラウザで動作する分、処理速度が遅く、多くのリソースを使ううえ、制限が多い点がデメリットです。そのため、簡単な入力と結果の表示のみWebブラウザで行い、Webサーバー側で処理するようなアプリケーションに向いています。
ハイブリッド型もある
先ほど紹介したようにWebアプリとネイティブアプリには、それぞれにメリットとデメリットがあります。そこで注目されているのが、それぞれの良さを活用したハイブリッド型です。
ハイブリッド型とは、スマホ側の入力や表示をネイティブアプリで行い、処理をWebサーバー側で行う方法です。これならネイティブアプリは最小限で済み、Webアプリとして用意したRuby on Railsで構築したWebサーバーがそのまま利用できます。
さらに既存のWebサービスをそのまま使い、ネイティブアプリによるレスポンスの良さや高い表現力を実現することが可能です。
Ruby on Railsをネイティブアプリ化するには
先ほど紹介したようにスマホ用のアプリにはWebアプリとネイティブアプリがあり、ハイブリッド型なら両方のメリットを活かしたスマホ用のアプリを開発できます。
既にRuby on Railsで構築したWebアプリをハイブリッド型のスマホ用ネイティブアプリに切り替えてはいかがでしょうか。次からそのための対策を紹介します。
Webブラウザ側でHTMLを作るという考え方
従来のWebシステムの仕組みは、Webブラウザからのリクエストに応じてWebサーバー側で表示に使うHTMLを生成し、それをWebブラウザに送って表示します。しかしWebブラウザで動作するJavaScriptを活用することで、Webブラウザ側で表示するHTMLを生成することが可能です。そして最近、この仕組みを利用したWebシステムが増えています。
WebブラウザでHTMLを生成する場合、Webサーバーは表示する内容をJSONなどの簡単なフォーマットでデータをWebブラウザに送信します。Webブラウザは、そのデータを使いJavaScriptのフレームワークを活用してHTMLを合成します。
この仕組みを利用すれば、Webサーバーはデータ処理に専念し、HTMLの生成をWebブラウザが分担する仕組みを構築することが可能です。
Webブラウザをネイティブアプリに置き換える
先ほど紹介したWebブラウザでHTMLを生成する仕組みはスマホのWebブラウザでも利用できます。しかし、スマホの小さい画面では不便だったり、Webブラウザの機能不足やメモリー消費量が大きいなど、制限が目立つ仕組みです。
そこでWebブラウザをネイティブアプリに置き換えたケースを考えてみてください。これによりWebブラウザで表示した際の制限を解消できます。さらに、Webサーバーからデータを受け取り、それに応じて画面を書き換えるだけなので、スマホのネイティブアプリ開発にかかる期間の短縮が可能です。
Rubyでネイティブアプリを作る方法
先ほどRuby on Railsで作られたWebサーバーとWebブラウザの組み合わせの仕組みを、Webサーバーとネイティブアプリの組み合わせに変えるメリットを紹介しました。
しかし、RubyとJavaScriptの両方を扱うだけでも面倒なのに、さらにスマホのネイティブアプリ開発に使う新しいプログラム言語を習得するのは大変だと思われる方もいるでしょう。そのような方にRubyでネイティブアプリを作る方法を紹介します。
スマホのネイティブアプリ構築言語は
スマホのネイティブアプリを構築するには、iPhoneなどのiOS向けなら開発ツールXcodeでSwiftまたはObjective-Cを用います。また、Android向けの場合はAndroid SDKが使えるJavaやKotlinを使用するケースが多いようです。
ただし、iPhoneならSwiftまたはObjective-Cでしか開発できない、ということではありません。Android向けのネイティブアプリもJavaやKotlinを以外のプログラム言語でも可能です。
なおRubyのようなスマホ向けの標準でないプログラム言語で開発する場合は、特別な仕組みが必要です。今回紹介する方法ではそのようなRubyが使える特別な仕組みを使います。
iOS用の静的RubyコンパイラRubyMotion
iOS用の静的Rubyコンパイラとして有名な開発環境がRubyMotionです。なおiOS用のアプリはApple社によって管理されており、勝手にアプリを作って公開したりできません。その点RubyMotionはAppleのApp Storeガイドラインに完全準拠しているので、開発したアプリをApple Storeで公開できます。
さらにネイティブなサードパーティ製の Objective-C ライブラリにアクセスでき、コンパイラが生成したアプリのため良好なパフォーマンスを期待できます。
AndroidでRubyを使うなら
Androidのネイティブアプリ開発に使われるJavaは、直接CPUで実行するプログラムを作るのではなく、JavaVMという仮想CPU向けのアプリを作成、JavaVMを介して実行します。そして、以前からRubyで書かれたプログラムをJavaVMで実行可能なアプリを作る仕組みがあります。
今回紹介するRubotoフレームワークは、Rubyで書かれたプログラムをJavaVMで実行する仕組みを利用したフレームワークです。そしてRubotoフレームワークを利用することで、Rubyのプログラムからスマホで実行できるネイティブアプリが作れます。
まとめ
Ruby on Railsは短期間でWebアプリを構築できる便利なフレームワークです。しかし、WebアプリはWebブラウザで表示することから、Webブラウザの影響を受けやすいアプリだと言えます。そのため、Webサーバー側はよくできているものの、Web画面が使い難いことで評価を落とす可能性がある点に注意を払ってください。
特にスマホはその影響を受けやすいので、利用者の評価を気にするなら今回紹介したネイティブアプリに置き換えて、使い勝手を改善してはいかがでしょうか。さらにRubyを用いてスマホ用のネイティブアプリを開発する仕組みもあります。ぜひ、そのような仕組みをうまく活用してください。