by shigemk2

当面は技術的なことしか書かない

JavaScriptエンジンによるアプリの動的実行環境を作った話 #llmatsuri

青海さん (ソニックウェーブフロントエンドエンジニア)

何を作っているか
JavaScriptでネイティブアプリのクロスプラットフォーム開発が出来る環境

Webサービス (開発環境)
WebIDE
アプリの管理
ビルド
デバッグ環境

実行環境
アプリ実行エンジン
JSの実行
環境差異の吸収
描画等の実動作

実行環境側の仕組み
iOS
Objective-C
C++

描画
OpenGLES2.0
JSエンジン

Android
Java
C++

1. JS(実行コード)
2. エンジンが解釈する
3. C++ or Objective-C

使用想定
デバッグ時 Webサーバーからの動的実行
リリース時 アプリケーションにパッキング(大人の事情でこの方法)

なぜ作ったのか

環境差異
リソース ノウハウの流用性
パフォーマンスと開発コスト

Android 言語の学習コストが低く、かつ自由度が高い
iOS 言語の学習コストが高めだが、完成度が高い ライブラリも一通りある

クロスプラットフォームの開発環境
既存のものだとなんか色々と一長一短

自分達で作ればそこそこの最適解が得られたから
プログラムだけではなく総合的に取り回しの良い環境を

なぜ作ったのか

Web開発者が使いやすい環境が欲しい
開発ノウハウとコストの集約
既存の開発リソース/ノウハウの流用
パフォーマンスと開発コストのバランス

あとはノリ

メリット

開発コスト軽減
言語学習コスト軽減
既存リソースの流用性向上
描画最適化の手間が削減

webアプリを作るようなワークフローでネイティブアプリが作れる

デメリット

既存ネイティブ開発のリソースの流用性が低下
環境としての成熟度が低い
ハイレベルAPIの少なさ
ブラックボックスの肥大化による問題把握の複雑化

matome

開発環境は一長一短
状況や組織に合わせて都合がよいものを選ぶのがベター

Herlock