Apps開発のエッセンス」のブログ版記事です。CfP提出後に内容は二転三転しまして、当初は最新Web開発事情について技術的に突っ込んだ内容にしようと目論んでいたのですが、「iOSエンジニア」へ「伝えたいこと」という軸で作っているうちにこの内容に落ち着きました。当日聞きに来てくださった方、声をかけていただいた方。このような場を下さったiOSDCスタッフの方々にはたいへん感謝しています。Workersが実装され「iOSがPWAをサポートした」というニュースが業界内で話題になりました。Workersについては後ほど解説します)このニュースは憶測や曲解を呼び、時には「ネイティブアプリの時代が終わった」という強い主張になって話される場面もありましたので、みなさんもどこかで目にしたことがあるかもしれません状況を整理しましょう。Workersが使えるようになったは事実です。これは既にその時点での開発計画にありましたので規定路線でした。Manifestファイルに対応してアイコンなどを指定できるようになりましたしかし実際のアップデートはこれだけで、間違ってもAppleの誰かが「PWAに対応しました」などの声明を出したわけではありませんこのようにPWAを取り巻く情報の解釈は複雑です。私が思うに業界内で刺激的な話題が先行してしまったのは、Webとネイティブアプリ開発それぞれの側面で技術をただしく評価できていなかったからではないかと感じました。Safariのことを理解するのが必要だと考えています。このトークの前にiOSアプリ開発をしている知り合いのエンジニアたちへ「PWAという言葉を聞いてどう思うか」と質問してみました。そこではUIやUXのクオリティやアプリストアでのファイダビリティの懸念などの意見をいただきました。そこで気づいたのですが、PWAと名前が付けられたことによってネイティブアプリと比較して優劣を語る人の多さでした。ここの思い込みを先ず解かないといけなさそうですまた現状はAndroidのChrome上での体験とSafariでの体験は全く別物であると言えます。その為、同じPWAという言葉を使って話していても、iOSユーザーとAndroidユーザーで捉えている像がそもそも噛み合わないということが起りえました「PWAがネイティブアプリを置き換える」というストーリーは本質的ではありませんまず私が主張したいのがこれです。Chrome開発者らによって提唱されましたPWAに限らずGoogleは一枚岩の組織ではありませんから、Googleのどのチームの人達が言っているのかというのに注目するのがよいと思います次に各プラットフォーマーにとってPWAがどのような意味を持っているのかというのに触れたいと思います。Appsなどあらゆる方向からWebをよりよくする為の改善を続けています、その延長線上にPWAがあるのは不思議ではありません。StoreへのPWAの登録を可能にしました。タブレットやデスクトップ向けのアプリ開発市場を活性化させたい意図が見えます。OS)しかしAppleさん、完全にノーポジです。Workersは実装されましたが、Appleは基本的にPWA関連の戦略を発表していません。SDK誕生以前、アップルはサードパーティの開発者がWebアプリとして自分のアプリを公開するような構想を持っていましたこれはセキュリティ上の理由による決定だったらしいのですが、開発者らの猛反発にあい現在のネイティブSDKの提供となったわけですPWAとは元々、ネイティブアプリでは実現できるがWebアプリではできない体験の溝を埋めるために、ブラウザ側に実装された新機能を使うべしという側面があります。「Webページ」という層より更に低レイヤー・ネイティブに近い層として処理を記述できる仕組みが用意されています。Workersと組み合わせて使うという例がよく出てきます。それは「ブラウザのオフライン基盤」と捉えるのがより本質的だと思います。「プログラミング可能なネットワークプロキシ」という表現もされています。この「ローカル」というのを「アプリがインストールされる」と考えるとiOSエンジニアにも理解しやすいと思います。Workersの登録・アップデートの管理をブラウザが透過的に行ってくれる仕組みを含んでいます。これによってWebページによるアプリの表の面とシステム上で動く「裏の面」が表現されているのです。3G時代から存在しました。Manifest(JSON形式)をサポートしました。APIはiOSにくる未来はおそらくないのでしょう。支払い関連のAPIも最新のSafariで利用できます。Payは利用できますし、この機能はうまくWeb標準とAppleの仕様が噛み合った例としてうまく機能しています。PWAとは、ブラウザに実装された、新機能を使うと、従来のWebアプリに不足していたUXが実現できる。いうだけの話なんです。」ということと「柔軟な配布方法」できる。いうことがあげられるかと思いますWebアプリは外部アプリのWebViewの中からでも起動できますし、ブラウザさえあればどこでも動作します(そしてホーム画面からでも)Webアプリの柔軟な配布方法についてです。Workersによってイントールする単位をインクリメンタルに管理することも可能になりました。ここでいうオフラインファーストとは何でしょう。それは、データを取得しなくてもUIを構成できるということです。具体例としてはキャッシュされたアセットやレスポンスから読み込むことができます。ShellモデルというのもChromeチームが提唱したWebアプリのアーキテクチャの名前で、ネイティブアプリのメンタルメデルに近いのでiOSエンジニアには理解しやすいかと思います。iOS開発でオフラインファーストを意識する場面はどの程度あるでしょうか?ネットワークのリトライ処理やキャッシュのハンドリングなどを独自に実装されている方も多いと思います。WebアプリがWebであるがゆえに根本的に抱える問題というのもあります。OSが持つ機能との接続はAPIが存在するか次第でありますし、ネイティブに見た目を近付けるほどその違和感が出てくるジレンマなどもあります。UI遷移などはおもたる例で、ブラウザ上のレンダリングエンジンでOS権限でグラフィックAPI叩けてハードウェアに近い最適化のできるネイティブな実装に近付けるのは指南の技でしょう。Safariの課題としては、Windows版Safari廃止以降に進んだOS独自機能の取り込みというのがあげられます機能によってはWeb標準への準拠の動きはコンフリクトするため、うまく統廃合する必要があるでしょうまたiOSではChromeやFirefoxなどのサードパーティのブラウザはWebKitの利用を強制され、システムのデフォルトにできません。ホーム画面にショートカットを置けるのもSafariだけです。いうことですiOSエンジニアがWebアプリ技術に注目しておいた方がいい理由2014年に話題になった「ロードマップ指向とエコシステム指向」というブログ記事があります。それは技術の革新を牽引する存在がプラットフォーマーなどの大きな企業から、それぞれの意思を持つ小さなコミュニティに移り変わったことだと思います例えば、Googleのように。モバイルOSの開発をしつつブラウザ体験をよくする、しかしそれを置き換えるような新プラットフォームも開発している。いう企業はそれぞれの方向性は違うが時には統合して進化している。いう点が、非常にエコシステム的であるといえますここで注目したいのは現代でエコシステムを中心に急成長してきた技術としてのWeb開発環境ですブラウザベンダーは標準化された仕様の実装でそれぞれ競争し、サードパーティのライブラリは各分野で御互いのいいところを取り込んだり、もっと良いやり方を提案したり巨大なOSSプロジェクトを戦略的に企業が運用・参加していますWeb技術のコミュニティではエコシステムで進化を促進する仕組みが機能しているのです。いうのを本日は知っていただきたいのです。Web技術の進化が早くなるのか。それは、Webに関わる人口の多さが関係しているのだと思います。ウェブブラウザやデバイスの利用環境は多様化していますし、Webアプリのフロントエンド開発技術はJavaScriptに集約されています。思い起してみると今から10年前の2008年に「iOSエンジニア」という職業は存在しませんでした。この10年、CocoaからiOS開発の環境は目紛しく変化しました。毎年OSやIDEが一新され、アプリは壊れ、プログラミング言語すら切り替わってしまいました。AppStoreとわたしたちデベロッパーが作り出したアプリ開発のエコシステムが「iOSエンジニア」を作りだしたわけですそれと同じようなことはWeb開発の世界では今起っています。AppleのロードマップによるiOS開発環境の進化を待つだけでは、もはや劇的な進化は訪れません。私たちデベロッパーがエコシステムを乗りこなし、iOSの開発環境を進化させるべきだと思います。Swiftなどはまだまだ未成熟なので、非常にコミットする余地のある領域だと思います10年後の「iOSエンジニア」を思い浮かべてみてください。行ってきたので感想を書きます。»Profile@laisoをフォローはてなブログをはじめよう!laisoさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。