❶ はじめに
1. 要約
実務経験2年半のWebエンジニアが、はじめてネイティブブアプリを実装するにあたって、どの言語を使用するかの考察をおこないます。
2. 前提
今までに経験したプログラミング言語は、Ruby・Python・JavaScript、フレームワークは、Rails・Djnago等です。元々、非理系からエンジニアに転職したので、基礎は結構あまあまです。気合いでいくつもの現場を乗り越えて来ました。今回は知識をしっかりと深めるためにも記事を投稿することにしました。
❷ Webアプリとネィティブアプリの違い
1. Webアプリ
- Webブラウザー(Chrome・Safari・Firefoxなど)上で動作するアプリケーション。
- OSに依存せずに動作する。そのため、プラットフォームごとの開発が不要。
- オンライン環境で動作する。
- ダウンロードなどの手間がからない。
- 検索・SNS・ダイレクト(URL直打ち)の流入が見込め、チャネルが広い。
※ PWA(プログレッシブ・ウェブ・アプリケーション)を実装すれば、オフライン動作・ローカル通知・プッシュ通知が一部対応可能
2. ネイティブアプリ
- スメートフォンやタブレットなど各端末(ネイティブ環境)上で動作するアプリケーション。
- OSに依存する。各プラットフォームごとに開発や調整が必要。
- 動作が高速。
- プッシュ通知・ローカル通知が可能。
- 課金システムを使うと、手数料が30%とられる。
- オフライン環境でも動作する。(通信が必要なところ以外)
- 端末にダウンロードする必要がある。
- チャネルがアプリマーケット(App Store・Google Play)のみ。
- リリースやアップデートに審査があり、時間がかかる。(24-48h)
❸ 実装する候補 (--- 執筆中 ---)
Webアプリの場合
1. JavaScript(React/Next) + Ruby(Rails)
- フロントエンドはJavaScript(React/Next)、バックエンドはRuby(Rails)。
- ネイティブアプリへの展開も考えると、JavaScriptのライブラリは、VueでなくReactが吉(?)
- RubyはWebアプリケーションに特化させる場合、ライブラリ(gem)や情報が多く吉。
2. JavaScript(React/Next) + Python(Django)
- フロントエンドはJavaScript(React/Next)、バックエンドはPython(Django)。
- ネイティブアプリへの展開も考えると、JavaScriptのライブラリは、VueでなくReactが吉(?)
- Pythonは数値計算などの必要性が見込まれる場合に特に吉。
ネイティブアプリの場合
3. iOSはSwift、AndroidはJava(Kotlin)
- OSに適した開発が可能。
- 開発や管理が各OSごとに必要なので大変。
4. JavaScript(React Native) + Python(Django)
- ネイティブ側とJavaScript側でブリッジが必要な場所は面倒くさい。
- OSに依存せず(大方は)作れるので、開発や管理が楽になる。
- Hot Relodによって、スタイルの修正が早い。
- Hot Code Pushによって、軽微な修正が申請なしで行える。
- バックエンドは、PythonでAPIを作っておくことで、Webの展開も楽になりそう。
Webアプリ + ネイティブアプリの場合
5. Flutter
- Webアプリからネイティブアプリまで対応したクロスプラットフォームフレームワーク。
- Webアプリ・ネイティブアプリの垣根が無いため、開発や管理はシンプルに素早く行えることができそう。
- Hot Relodによって、スタイルの修正が早い。