Submit Search
Upload
iOS WebView App
•
29 likes
•
14,496 views
hagino 3000
Follow
社内iOS WebVeiwアプリ勉強会の資料に補足追加した物。 iOSのハイブリッドアプリ開発における、UIのパフォーマンスや設計について。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 48
Download now
Download to read offline
Recommended
AppiumのWebViewアプリテストの仕組みとハマりどころ
AppiumのWebViewアプリテストの仕組みとハマりどころ
Masayuki Wakizaka
졸업작품 최종 발표
졸업작품 최종 발표
DongGeun Lee
スマホアプリにおけるマルチプレイアクションゲーム開発の実例紹介
スマホアプリにおけるマルチプレイアクションゲーム開発の実例紹介
aktsk
Addressables で大量のリソース管理・困りどころと解消法
Addressables で大量のリソース管理・困りどころと解消法
Kenta Nagai
今さらWPF?いいえ、今こそWPF!
今さらWPF?いいえ、今こそWPF!
Yuya Yamaki
Introduction to Progressive Web App
Introduction to Progressive Web App
Binh Bui
今からでも大丈夫!Firebase入門
今からでも大丈夫!Firebase入門
Tomoki Koga
iOSアプリ UIテスト自動化入門
iOSアプリ UIテスト自動化入門
Shingo Tamaki
Recommended
AppiumのWebViewアプリテストの仕組みとハマりどころ
AppiumのWebViewアプリテストの仕組みとハマりどころ
Masayuki Wakizaka
졸업작품 최종 발표
졸업작품 최종 발표
DongGeun Lee
スマホアプリにおけるマルチプレイアクションゲーム開発の実例紹介
スマホアプリにおけるマルチプレイアクションゲーム開発の実例紹介
aktsk
Addressables で大量のリソース管理・困りどころと解消法
Addressables で大量のリソース管理・困りどころと解消法
Kenta Nagai
今さらWPF?いいえ、今こそWPF!
今さらWPF?いいえ、今こそWPF!
Yuya Yamaki
Introduction to Progressive Web App
Introduction to Progressive Web App
Binh Bui
今からでも大丈夫!Firebase入門
今からでも大丈夫!Firebase入門
Tomoki Koga
iOSアプリ UIテスト自動化入門
iOSアプリ UIテスト自動化入門
Shingo Tamaki
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
まべ☆てっく運営
Appiumを用いたwebブラウザ自動テスト
Appiumを用いたwebブラウザ自動テスト
yumi_chappy
Appium 2.0 ではじめるモバイルアプリテスト
Appium 2.0 ではじめるモバイルアプリテスト
Masayuki Wakizaka
【Unity道場】VectorGraphicsで作る エモい表現
【Unity道場】VectorGraphicsで作る エモい表現
Unity Technologies Japan K.K.
Unityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechcon
DeNA
WkWebViewのキャッシュについて調べた
WkWebViewのキャッシュについて調べた
firewood
多機能ボイチャを簡単に導入する方法
多機能ボイチャを簡単に導入する方法
Unity Technologies Japan K.K.
NDC 2015 삼시세끼 빌드만들기
NDC 2015 삼시세끼 빌드만들기
Hyunsuk Ahn
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011
Esun Kim
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
日本マイクロソフト株式会社
Progressive Web Apps
Progressive Web Apps
Software Infrastructure
新社会人が今すぐ使える、ExcelでC#を使う方法
新社会人が今すぐ使える、ExcelでC#を使う方法
Tetsuo Honda
【Unite Tokyo 2019】大量のオブジェクトを含む広いステージでも大丈夫、そうDOTSならね
【Unite Tokyo 2019】大量のオブジェクトを含む広いステージでも大丈夫、そうDOTSならね
UnityTechnologiesJapan002
Progressive Web Applications
Progressive Web Applications
Bartek Igielski
JIRA / Confluence の必須プラグインはこれだ
JIRA / Confluence の必須プラグインはこれだ
Narichika Kajihara
Humble Object Patternな話
Humble Object Patternな話
Hiroto Imoto
心地よいUIの温度 - 言葉と気遣いで高めるUI -
心地よいUIの温度 - 言葉と気遣いで高めるUI -
wariemon
졸업작품 중간발표(발표용)
졸업작품 중간발표(발표용)
주희 이
Usb接続するアプリを開発した時に試行錯誤した事
Usb接続するアプリを開発した時に試行錯誤した事
Masataka Kono
iOS の通信における認証の種類とその取り扱い
iOS の通信における認証の種類とその取り扱い
niwatako
UIWebView Tips
UIWebView Tips
Katsumi Kishikawa
More Related Content
What's hot
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
まべ☆てっく運営
Appiumを用いたwebブラウザ自動テスト
Appiumを用いたwebブラウザ自動テスト
yumi_chappy
Appium 2.0 ではじめるモバイルアプリテスト
Appium 2.0 ではじめるモバイルアプリテスト
Masayuki Wakizaka
【Unity道場】VectorGraphicsで作る エモい表現
【Unity道場】VectorGraphicsで作る エモい表現
Unity Technologies Japan K.K.
Unityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechcon
DeNA
WkWebViewのキャッシュについて調べた
WkWebViewのキャッシュについて調べた
firewood
多機能ボイチャを簡単に導入する方法
多機能ボイチャを簡単に導入する方法
Unity Technologies Japan K.K.
NDC 2015 삼시세끼 빌드만들기
NDC 2015 삼시세끼 빌드만들기
Hyunsuk Ahn
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011
Esun Kim
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
日本マイクロソフト株式会社
Progressive Web Apps
Progressive Web Apps
Software Infrastructure
新社会人が今すぐ使える、ExcelでC#を使う方法
新社会人が今すぐ使える、ExcelでC#を使う方法
Tetsuo Honda
【Unite Tokyo 2019】大量のオブジェクトを含む広いステージでも大丈夫、そうDOTSならね
【Unite Tokyo 2019】大量のオブジェクトを含む広いステージでも大丈夫、そうDOTSならね
UnityTechnologiesJapan002
Progressive Web Applications
Progressive Web Applications
Bartek Igielski
JIRA / Confluence の必須プラグインはこれだ
JIRA / Confluence の必須プラグインはこれだ
Narichika Kajihara
Humble Object Patternな話
Humble Object Patternな話
Hiroto Imoto
心地よいUIの温度 - 言葉と気遣いで高めるUI -
心地よいUIの温度 - 言葉と気遣いで高めるUI -
wariemon
졸업작품 중간발표(발표용)
졸업작품 중간발표(발표용)
주희 이
Usb接続するアプリを開発した時に試行錯誤した事
Usb接続するアプリを開発した時に試行錯誤した事
Masataka Kono
What's hot
(20)
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
Appiumを用いたwebブラウザ自動テスト
Appiumを用いたwebブラウザ自動テスト
Appium 2.0 ではじめるモバイルアプリテスト
Appium 2.0 ではじめるモバイルアプリテスト
【Unity道場】VectorGraphicsで作る エモい表現
【Unity道場】VectorGraphicsで作る エモい表現
Unityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechcon
WkWebViewのキャッシュについて調べた
WkWebViewのキャッシュについて調べた
多機能ボイチャを簡単に導入する方法
多機能ボイチャを簡単に導入する方法
NDC 2015 삼시세끼 빌드만들기
NDC 2015 삼시세끼 빌드만들기
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
Progressive Web Apps
Progressive Web Apps
新社会人が今すぐ使える、ExcelでC#を使う方法
新社会人が今すぐ使える、ExcelでC#を使う方法
【Unite Tokyo 2019】大量のオブジェクトを含む広いステージでも大丈夫、そうDOTSならね
【Unite Tokyo 2019】大量のオブジェクトを含む広いステージでも大丈夫、そうDOTSならね
Progressive Web Applications
Progressive Web Applications
JIRA / Confluence の必須プラグインはこれだ
JIRA / Confluence の必須プラグインはこれだ
Humble Object Patternな話
Humble Object Patternな話
心地よいUIの温度 - 言葉と気遣いで高めるUI -
心地よいUIの温度 - 言葉と気遣いで高めるUI -
졸업작품 중간발표(발표용)
졸업작품 중간발표(발표용)
Usb接続するアプリを開発した時に試行錯誤した事
Usb接続するアプリを開発した時に試行錯誤した事
Viewers also liked
iOS の通信における認証の種類とその取り扱い
iOS の通信における認証の種類とその取り扱い
niwatako
UIWebView Tips
UIWebView Tips
Katsumi Kishikawa
Google App Engine で初めるServerSide JavaScript
Google App Engine で初めるServerSide JavaScript
hagino 3000
JavaScriptとSalesforceとTwitterマーケティングな話をした時の資料
JavaScriptとSalesforceとTwitterマーケティングな話をした時の資料
hagino 3000
ハイパフォーマンスブラウザネットワーキング 12章「HTTP 2.0」と現在の仕様
ハイパフォーマンスブラウザネットワーキング 12章「HTTP 2.0」と現在の仕様
hagino 3000
Secure Code for Interactive Programming
Secure Code for Interactive Programming
hagino 3000
Introduction of Leap Motion
Introduction of Leap Motion
hagino 3000
逃亡の勧め
逃亡の勧め
hagino 3000
はじめてのChaos Proxy Viewer
はじめてのChaos Proxy Viewer
hagino 3000
PRML 6.1章 カーネル法と双対表現
PRML 6.1章 カーネル法と双対表現
hagino 3000
Swiftとメソッドのアレコレ
Swiftとメソッドのアレコレ
Nobuo Saito
ノンタッチUI時代とフロントエンドエンジニア (Using emotiv)
ノンタッチUI時代とフロントエンドエンジニア (Using emotiv)
hagino 3000
PRML ベイズロジスティック回帰
PRML ベイズロジスティック回帰
hagino 3000
Cloud DatalabとBigQueryを使ったアドホックデータ解析
Cloud DatalabとBigQueryを使ったアドホックデータ解析
hagino 3000
5分でわかるText Kit
5分でわかるText Kit
Ryota Hayashi
Can we live in a pure Swift world?
Can we live in a pure Swift world?
toyship
Breaking The Cross Domain Barrier
Breaking The Cross Domain Barrier
Alex Sexton
WKWebViewとUIWebView
WKWebViewとUIWebView
Yuki Hirai
脱swift初心者するための2つのきっかけ
脱swift初心者するための2つのきっかけ
Daiki Mogmet Ito
異常検知と変化検知 9章 部分空間法による変化点検知
異常検知と変化検知 9章 部分空間法による変化点検知
hagino 3000
Viewers also liked
(20)
iOS の通信における認証の種類とその取り扱い
iOS の通信における認証の種類とその取り扱い
UIWebView Tips
UIWebView Tips
Google App Engine で初めるServerSide JavaScript
Google App Engine で初めるServerSide JavaScript
JavaScriptとSalesforceとTwitterマーケティングな話をした時の資料
JavaScriptとSalesforceとTwitterマーケティングな話をした時の資料
ハイパフォーマンスブラウザネットワーキング 12章「HTTP 2.0」と現在の仕様
ハイパフォーマンスブラウザネットワーキング 12章「HTTP 2.0」と現在の仕様
Secure Code for Interactive Programming
Secure Code for Interactive Programming
Introduction of Leap Motion
Introduction of Leap Motion
逃亡の勧め
逃亡の勧め
はじめてのChaos Proxy Viewer
はじめてのChaos Proxy Viewer
PRML 6.1章 カーネル法と双対表現
PRML 6.1章 カーネル法と双対表現
Swiftとメソッドのアレコレ
Swiftとメソッドのアレコレ
ノンタッチUI時代とフロントエンドエンジニア (Using emotiv)
ノンタッチUI時代とフロントエンドエンジニア (Using emotiv)
PRML ベイズロジスティック回帰
PRML ベイズロジスティック回帰
Cloud DatalabとBigQueryを使ったアドホックデータ解析
Cloud DatalabとBigQueryを使ったアドホックデータ解析
5分でわかるText Kit
5分でわかるText Kit
Can we live in a pure Swift world?
Can we live in a pure Swift world?
Breaking The Cross Domain Barrier
Breaking The Cross Domain Barrier
WKWebViewとUIWebView
WKWebViewとUIWebView
脱swift初心者するための2つのきっかけ
脱swift初心者するための2つのきっかけ
異常検知と変化検知 9章 部分空間法による変化点検知
異常検知と変化検知 9章 部分空間法による変化点検知
Similar to iOS WebView App
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Akira Inoue
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
david9142
jQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & Tips
yoshikawa_t
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
Shotaro Suzuki
Webに今求められているレベル: HTML5 コントロールを利用した開発
Webに今求められているレベル: HTML5 コントロールを利用した開発
インフラジスティックス・ジャパン株式会社
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Shumpei Shiraishi
Tech talk salesforce mobile sdk
Tech talk salesforce mobile sdk
Kazuki Nakajima
ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用
Yatabe Terumasa
スマホにおけるWebGL入門
スマホにおけるWebGL入門
Yohta Kanke
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
Daizen Ikehara
Knockout.js を利用したインタラクティブ web アプリケーション開発
Knockout.js を利用したインタラクティブ web アプリケーション開発
Daizen Ikehara
ハイブリッドアプリへのLocalytics導入ガイド
ハイブリッドアプリへのLocalytics導入ガイド
LocalyticsJP
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
日本マイクロソフト株式会社
20111031 MobileWeb at TDC
20111031 MobileWeb at TDC
Nobuhiro Sue
HTML5でオフラインWebアプリケーションを作ろう
HTML5でオフラインWebアプリケーションを作ろう
yoshikawa_t
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
Yuki Takei
Getting started with Handoff
Getting started with Handoff
Yuichi Yoshida
Selenium webdriver使ってみようず
Selenium webdriver使ってみようず
Oda Shinsuke
AngularJSの高速化
AngularJSの高速化
Kon Yuichi
勉強会force#3 iOSアプリ開発
勉強会force#3 iOSアプリ開発
Kazuki Nakajima
Similar to iOS WebView App
(20)
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
jQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & Tips
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
Webに今求められているレベル: HTML5 コントロールを利用した開発
Webに今求められているレベル: HTML5 コントロールを利用した開発
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Tech talk salesforce mobile sdk
Tech talk salesforce mobile sdk
ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用
スマホにおけるWebGL入門
スマホにおけるWebGL入門
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
Knockout.js を利用したインタラクティブ web アプリケーション開発
Knockout.js を利用したインタラクティブ web アプリケーション開発
ハイブリッドアプリへのLocalytics導入ガイド
ハイブリッドアプリへのLocalytics導入ガイド
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
20111031 MobileWeb at TDC
20111031 MobileWeb at TDC
HTML5でオフラインWebアプリケーションを作ろう
HTML5でオフラインWebアプリケーションを作ろう
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
Getting started with Handoff
Getting started with Handoff
Selenium webdriver使ってみようず
Selenium webdriver使ってみようず
AngularJSの高速化
AngularJSの高速化
勉強会force#3 iOSアプリ開発
勉強会force#3 iOSアプリ開発
More from hagino 3000
スパース性に基づく機械学習 2章 データからの学習
スパース性に基づく機械学習 2章 データからの学習
hagino 3000
アドネットワークのデータ解析チームを支える技術
アドネットワークのデータ解析チームを支える技術
hagino 3000
Where does my money go チーム発表
Where does my money go チーム発表
hagino 3000
NUIとKinect
NUIとKinect
hagino 3000
今日からはじめるKinect Hack
今日からはじめるKinect Hack
hagino 3000
Introduction of Kinect Hacks
Introduction of Kinect Hacks
hagino 3000
HTML5を使ったウェブアプリケーションの高速化
HTML5を使ったウェブアプリケーションの高速化
hagino 3000
Extjs + Gears
Extjs + Gears
hagino 3000
More from hagino 3000
(8)
スパース性に基づく機械学習 2章 データからの学習
スパース性に基づく機械学習 2章 データからの学習
アドネットワークのデータ解析チームを支える技術
アドネットワークのデータ解析チームを支える技術
Where does my money go チーム発表
Where does my money go チーム発表
NUIとKinect
NUIとKinect
今日からはじめるKinect Hack
今日からはじめるKinect Hack
Introduction of Kinect Hacks
Introduction of Kinect Hacks
HTML5を使ったウェブアプリケーションの高速化
HTML5を使ったウェブアプリケーションの高速化
Extjs + Gears
Extjs + Gears
Recently uploaded
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
Recently uploaded
(9)
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
iOS WebView App
1.
iOS WebView App @hagino3000 2013-12-12 社内的な勉強会
atVOYAGE GROUP
2.
注 Androidの話は無いです
3.
なぜWebView上にアプリを 構築するのか • 任意のタイミングでアプリケーション をアップデートしたい • WebでUI作った方が楽そうだから •
そんな事は無い → あとで死ぬ
4.
実装戦略
5.
実装戦略 • HTML, CSS,
JSのリソースをアプリにバン ドルする or NOT • Single Page Web App or NOT • ネイティブUIパーツを使う or NOT
6.
HTML, CSS, JSファイルを アプリにバンドルするか •
完全にオフラインで動作させる事が可能 • それ以外メリット無し
7.
Single Page Web
Appにするか • Single Page • JSの実装量は増える • なんらかのJSフレームワークを使う Sencha Touch, AngularJS etc... • Multi Page • 作りはシンプルになる
8.
(番外編) Multi UIWebView •
ページ毎にUIWebViewを作る • ネイティブのトランジションが使える • 試してない
9.
iOSのUIパーツを使うか
10.
iOSのUIパーツを使うか • NavigationBar, UIAlertView,
UIActionSheet etc.. • 使った方が楽 (モーダル制御等) • ネイティブUIを呼び出すブリッジを作る • ブラウザでデバッグできるようにPolyfillを 用意しておく
11.
UIWebView
12.
UIWebView iOSVersion Browser Component iOS
6 iOS Safari 6.x iOS 7 iOS Safari 7.0 機能比較 http://caniuse.com/#compare=ios_saf+6.0-6.1,ios_saf+7.0
13.
コンテンツの配置
14.
UIWebView UIScrollView HTML Content (表示領域) Navigation BarContentsArea(iOS6) ContentsArea(iOS7) document.scrollTop
不可視 不可視
15.
ViewPort <!-- よくある設定 --> <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0" />
16.
スクロールの制御 • Single Page
Web App Height 100%のブロック要素を並べて、 その中でスクロールさせる場合はデフ ォルトのスクロールが邪魔になる。 (二重スクロール) • そうでない場合はscrollViewのスクロー ルを使う
17.
スクロールの制御 // UIScrollViewのスクロールを無効にする webView.scrollView.scrollEnabled =
NO; /* CSSでブロック要素の慣性スクロールを有効にする */ article.page{ box-sizing: border-box; position: absolute; width: 100%; height: 100%; top 0; left: 0; overflow: scroll; -webkit-overflow-scrolling: touch; }
18.
スクロール速度 scrollView.decelerationRate = UIScrollViewDecelerationRateNormal; // デフォルトは
UIScrollViewDecelerationRateFast 慣性スクロールの減速が緩くなる。scrollViewのスクロ ールを使う場合は設定する。 CSSでブロック要素の慣性スクロールを有効にした場 合は UIScrollViewRateNormal 相当になる。
19.
NavigationBar • ポジション固定にする場合はネイティブのを 使うと楽 • NavigationBarを半透明にして、背後にもコンテ ンツを配置したい
(iOS7) • 初期表示でnavbarの下にコンテンツが潜りこ まないようにscrollViewの調節が必要 • webView.scrollView.contentInset • webView.scrollView.contentOffset • webView.scrollView.scrollIndicatorInsets
20.
position: fixed • 効かない •
スクロールに引きずられる • iScroll • onScrollイベントを監視してposition:fixedを再 現している • https://github.com/cubiq/iscroll • 代替策として別のViewにして配置するのもアリ
21.
テキスト入力 1. <input type=”text”>
or <textarea> にフォーカス 2. Keyboard Windowがせり上ってくる 3. document.scrollTopがずれる • テキスト入力パーツはなるべく画面上部に配置す る。下の方だと最悪Keyboard Windowが被る。 • scrollViewのスクロールを無効にしているとユーザ ーが元に戻せない。 →入力後にscrollTopを調整する。 • JavaScriptからキーボードの上げ下げを可能にして おく
22.
その他よくやる設定 <!-- 電話番号らしき数列をリンクにするのを無効化 --> <meta
name="format-detection" content="telephone=no"> body { /* 文字列のコピーや選択をできなくする */ -webkit-user-select:none; /* リンクの長押しメニューを出なくする */ -webkit-touch-callout:none; /* アンカー要素をタップした時に出現する枠を見えなくする */ -webkit-tap-highlight-color: rgba(0, 0, 0, 0); }
23.
ネイティブとの連係
24.
To WebView NSString *js
= @”window.App.hello();”; [self.webView stringByEvaluationgJavaScriptFromString:js]; // 例:ネイティブからsessionId, userId etc.. を渡す NSString *js = [NSString stringWithFormat: @”window.App.deviceReady({ sessionId: ‘%@’, userId: ‘%@’, apiBase: ‘%@’ });”, self.sessionId, self.user_id, @”http://api.hoge.com”]; [self.webView stringByEvaluatingJavaScriptFromString:js];
25.
From WebView 1. 独自スキーマを指定してlocationを変更 2.
UIWebViewDelegateのshouldStartLoadWithRequest でフック 3. なにかやる 4. UIWebViewのstringByEvaluatingJavaScriptFromString で結果を返す ヒント:PhoneGapのソースの方がこのスライドよりも参考になる https://github.com/phonegap/phonegap/blob/master/lib/ios/CordovaLib/cordova.js
26.
// JS側の実装例 var transactionId
= 0; function nativeBridge(action, params, callback) { // 後で呼び出すためにコールバック関数を保持する var transactionId = transactionId++; callbacks[transactionId] = callback; var data = encodeURIComponent(JSON.stringify({ transactionId: transactionId, params: params })); // iframeのlocation変更リクエストはWebViewDelegateで // フックできる var frame = $('<iframe>').attr('src', 'MyActionHandler://' + action + '/' + data ).css({display: "none"}); $(document.body).append(frame); frame.remove(); }
27.
// Objective-C - (BOOL)webView:(UIWebView
*)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { // Check schema if ([[request.URL.scheme lowercaseString] isEqualToString:@”MyActionHandler”]) { // なんかやる return NO; } return YES; }
28.
App.nativeBridge(‘alert’, { title: “Error”, message:“Sorry...”, buttonTitle:
“OK” }, function(){ // UIAlertViewのOKボタンがタップされた }) 使用例
29.
最初から作っておくと便利 • キーボードWindowの上げ下げ • Alert •
Confirm • ActionSheet • ジェスチャー認識
30.
リクエストのフック • UIWebViewDelegateのshouldStartLoadWithRequest ⃝ ロケーション変更
(iframe含む) ⃝ リロード (iframe含む) ⃝ フォームサブミット × XMLHttpRequest × script要素、link要素、img要素による通信 • NSURLProtocol • 全ての通信をフックできる、ホワイトリストを 実装するならこちら
31.
リクエストのフックの応用 • ロケーション変更時、ドメインによって処理を変 える(ex 自サービスの外に出る場合はSafariで開く) •
認証情報の付加 • NSMutableURLRequestを操作してcookieや独自 ヘッダを付加する • ホワイトリスト (NSURLProtocol) • しかし、アドネットワークを利用して広告を表 示しているとホワイトリストのメンテは困難を 極める
32.
パフォーマンス
33.
Clickイベントが遅延する問題 • タッチデバイスブラウザはtouchstart後clickイベント までの間隔が300msec程度空く • リンククリックの反応が遅い •
もっさり感 • 解決策 • FastClick.js • clickイベントが速くなる、リンククリックも改善 • jQuery mobileであればvclickイベントを使う • clickでは無くtouchendイベントを使う (ブラウザのデバッグが面倒になる)
34.
DOM操作のチューニング • DOM操作は最小限に、変更が必要な箇所のみ • アニメーションはGPUを効かせる •
-webkit-transform: translate3d を使う • レイアウトの再計算が発生する回数を減らす • 例 • offsetHeightを取得して挿入した要素の高さだけ スクロール位置を下にずらす処理 • DOM操作全てが終ったタイミングで行なう
35.
無限リスト • DOMツリーが増え続けると重くなる • iOSのテーブルセルの再利用のような仕組みが必要 になる •
iOS SDKのUITabelViewCellの標準機能だけどDOM にはそんな物無いです……
36.
デバッグ
37.
ブラウザでデバッグ可能にする Chromeで開発 and デバッグ ↓ iPhoneシミュレーターで開発
and デバッグ ↓ 実機 (最終確認)
38.
• ブラウザでデバッグする際はネイティブ機能呼び出 しのブリッジを差しかえる (Alert,
ActionSheet ...) • AppDelegate相当の物を作っておく • イベント受信部 • Push通知, Navigationbar button操作, on/offline.. • どの画面からでも開始できるようにしておく • 画面遷移して到達しないと機能しない画面はデバ ッグしづらい。なるべくステートレスに。 • Chromeのエミュレーションモード • iPhone5, 4S etc... 選べるがイマイチ ブラウザでデバッグ
39.
Chromeのエミュレートモード
40.
• オートリロード必須 • リロードするのが手間 •
grunt auto-reload を使う • JS, HTMLはソース編集と同時にリロード • CSSはDOMの状態を維持したまま変更が反映さ れる • window.onerrorでキャッチした例外をXcodeのロ グに吐くようにしておく(特に発生行数) • Safariの開発メニューから、開発者コンソールを アタッチできる iOSシミュレーターでデバッグ
41.
• ローカルサーバーと通信してると何もかもが一瞬で 取得できてしまう • Network
Link Conditioner を使う • 使わないと3G回線の速度を再現できない • 通信中インジケーターをゆっくり眺められる 通信状況のエミュレート
42.
通信状況のエミュレート
43.
• 特にアニメーション、タッチレスポンス周りを確認 • 通信中の電話着信や、アプリがバックグラウンド に行っても大丈夫か 実機でデバッグ
44.
サーバーAPIの実装
45.
• 素直なRESTful APIにしておく •
Request • content-type: application/json • Response • content-type: application/json 設計 モダンなJavaScriptライブラリはこれが前提になって いたりする(ex. backbone.js)。道を外れると一気に工 数が跳ね上がる。
46.
• APIサーバーはCross Domain
XHRに対応しておく • HTML, JS, CSSはlocalhost (grunt server)で編集 • APIサーバーはAWS上の開発機を参照してAjaxで 叩く • デザイナー or フロント担当エンジニアはローカ ルに静的ファイルの開発環境のみ作れば良い • 認証情報を独自ヘッダに持たせている場合 • OPTIONSのプリフライトリクエストが飛ぶので APIサーバーをCORSに対応させておく 開発時
47.
まとめ
48.
• とにかくブラウザでデバッグする • UIの実装はネイティブ同様時間がか かる
(楽はできない) • 覚悟が必要 まとめ
Download now