上田です。
業務上、monacaの公式ブログを定期的に見ているのですが、ついにmonacaがWKWebViewを公式に採用してくれました。
今まではブラウザのエンジンとして採用されていたのは、古き良きUIWebViewのみだったのですがこれだとiOSの審査ではねられてしまうので、他の方法で対応するしかありませんでした。
App Storeの方針で、新規アプリは2020年4月以降はUIWebViewは審査リジェクト対象。既存アプリも2020年12月以降は削除対象ということになっていますが、2020年3月時点でUIWebViewが原因でリジェクトされているケースがあります。
今後は配布しているプロジェクトファイルなども全てWKWebViewに対応したものにしていくつもりですが、既存プロジェクトを変更する際にプロジェクトのインポートからやり直すのは手間がかかりますよね。
また、上田が新しいプロジェクトファイルを完成させるのにも時間がかかるので、既存プロジェクトをWKWebViewへ移行する方法をまとめておきます。
簡単作業で済むので、iOSアプリをリリース予定の方、App Studio、monacaで開発を行っている方は、すぐにWKWebViewを有効にしましょう。
コンテンツ
WKWebViewを有効にする手順
- monacaのIDEを開く
https://console.monaca.mobi/dashboard
- 設定 -> iOSアプリ設定を開く
- 以下の画像を参考に、WebViewエンジンをWKWebViewに変更して保存
これでiOSのWebViewをWKWebViewに変更できました。
UIWebViewとWKWebViewの違い
覚えておく必要はないですが、WKWebViewとは何なのかも説明しておきます。
長い上に覚えておく必要がないので、詳しく知りたくない人は、
・UIWebView … 標準のブラウザ(インターネットエクスプローラーとか)
・WKWebView … 便利なブラウザ(Google Chromeとか)
こんな感じで覚えておけばOKです。
以下は細かい話。
まず、プログラムを構成する要素は大きく3つに分けられます。
- 開発環境(ビルドするところ)
- プログラミング言語
- ライブラリ(≒フレームワーク)
開発環境がmonacaの場合、プログラミング言語としてはHTMLやjavascriptなどが挙げられます。
他にもxcodeが開発環境ならプログラミング言語はswift、Android Studioならjavaがプログラミング言語に当たります。
何かをプログラムする時に、全て0から作り込んだら大変なので、ある程度の機能をセットにしたパッケージを使います。そのパッケージがライブラリです。
さらにそのライブラリをたくさん集めたパッケージ集のことをフレームワークと言います。(正確な定義はこちら)
これまでmonacaではUIKitというフレームワークを標準で採用していました。UIKit内で採用されているブラウザエンジンがUIWebViewです。
UIWebViewはとても優秀でしたが、iOS2.0(2008年〜)からあるもので時代遅れなものになってしまいました。もちろんバージョンアップとかでごまかしながら10年以上使われていたものでしたが、そろそろ時代の流れについていけなくなってしまいました。
そこで登場したのが、WKWebViewです。
UIWebViewがiOS標準のsafariのプロセスを共有していたため、処理が遅く、クラッシュや脆弱性などたくさんの問題を抱えていたのに対し、WKWebViewはsafariからの脱却を含めて各種パフォーマンスの改善やUIWebViewでは実現できなかった機能が追加されています。
一言で言えば、UIWebViewの上位互換がWKWebViewです。プレイステーションとプレイステーション2みたいな感じです。
でもWKWebViewはmonacaで標準採用されているUIKitには含まれていません。WebKitという独立したフレームワーク内で採用されているものです。
だいぶ前からmonacaでのWebKit導入は求められてきましたが、ようやく公式に対応してくれたということですね。
フレームワークを使うメリット
フレームワークは、特定のライブラリを使う前提で構成されているので、あるフレームワークを採用すると、フレームワーク内で定められた以外の挙動を実現するのは難しくなったりします。
また、フレームワークの機能や処理構造などを把握する必要もあるため、学習コストも高くなります。基本的な知識さえあれば、あるプログラミング言語の習得は丸一日あれば大体わかるものです。数日あれば十分でしょう。
でもフレームワークを使いこなせるほどに習得するのはその10倍以上の時間がかかるはずです。というか、フレームワーク自体にどんどん機能が追加されるため、永久に学習し続ける必要があります。
もちろん、そのデメリットを無視できるほど開発がスムーズにできるというメリットがあるわけです。
例えば「ボタンを押したら音がでる」というシンプルな機能を0から実現するとしたら、
- ボタンの縦横サイズや色などの描画処理を行い
- クリックしたイベントの取得する処理を実装
- クリックイベントが発生したら、音声ファイルを読み込む
- それで、音声ファイルのコーデックなどを検出して、再生時間を算出して〜略
- 再生する出力先を認識して音を出す
さらに細かいことを言えばクリックイベントの定義などからしなければいけません。
こんなことは毎回できないので、フレームワークというものがあるわけです。
フレームワークがあると上記の処理が実質2行くらいでできるようになります。
// 音声ファイルの読み込み
var media = new Media('sound.mp3');
// クリックされたら音がでるボタンの描画
<input type="button" onclick="media.play();">
数十秒で適当に書いてみましたが、これを0から作る場合は、何時間もかかるかもしれません。
じゃあApp Studioって何?
開発環境がmonaca、開発言語がHTML/javascript、フレームワークはUIKit/WebKitということになりましたが、じゃあギルドの皆さんが使っているApp Studioはどこに相当するかというと、いわゆる通常定義の中では、多分この中には当てはまりません。
プログラムを組むためのプログラムなので、「ちょっと特殊な開発ツール」というのが近い表現になると思います。
お金を稼ぐために必要な知識とプログラムを組めるようになる知識は別物
今、世の中では様々な開発環境が用意されていて、昔よりは開発がしやすくなりましたし、多機能で特殊な環境がなくてもプログラムを組めるようになりました。
ですが、それでもアプリを形にするまでの学習コストは膨大です。
ギルドのメンバーで0からアプリを作れるという人は殆どいないでしょう。上田の他に数人いるかいないかだと思っています。
それでも今、毎月何十万円も何百万円も稼いでいる人が大勢います。正確な人数がわからないので曖昧な表現になってしまいましたが、100人単位でいます。1000人はいないと思いますが。
結局お金を稼ぐために必要な知識とプログラムを組めるようになる知識は別物ということだと証明されたと思っています。
効率的な稼ぎ方
稼ぐための知識とプログラムの知識が別物なら、プログラム学習という本来は不要な工程をすっ飛ばしてお金を稼ぐところから始めた方が効率的なはずです。興味がある人は掘り下げて勉強すればいいわけですから。
今回のように新しい仕組みを導入する必要があればまた学習しなければいけません。普通の神経をしていたらやってられないはずです。
ただ、今は上田が新しい仕組みを導入したら何百人もの人がその仕組みを使ってプログラミングができる状態なので、流石に上田も日々学習します。新しい機能を実装すれば、フィードバックという名の改善要望も来るのでついでにそれも実装します。
全体としてみると最低限の学習コスト(上田1人分)で何百人も新しい機能が使えるわけなので効率的な状態がいつの間にか完成していました。
色んなビジネススクールがありますが、ここ以上に完成された場所はそんなにないはずです。
コロナが蔓延してテレワーク中の人は、こっそりアプリで副収入を増やすチャンスなので会社には内緒で頑張ってください!
多くの副業難民を救ったアプリビジネスのノウハウの集大成を完全無料で公開!
運営実績5年以上、指導実績1200名を超えて月収100万円以上の実績者を多数輩。
最高月収867万円達成者も語る「時間」や「場所」に縛られない理想的な副業ライフを手に入れるための特別レッスンを今すぐ受け取ってください!