SlideShare a Scribd company logo
1 of 42
Download to read offline
猫でも分かる
  Android WebKit
Naruto TAKAHASHI(tnaruto@gmail.com)
Turbo Systems Co, Ltd.
横浜Androidプラットフォーム部第26回勉強会
Agenda



         WebKit


         Android WebKit
WebKit   Knowledge of WebKit
WebKit とは

OSSのHTMLレンダリングエンジンライブラリ

   HTML

   CSS

   Javascript

   SVG
WebKit とは(cont)

言語は C++

KDE プロジェクトの KHTML から fork した

KHTML は Qt がベースになっている。

    構造がしっかりしているとのうわさが!
ライセンス

ライセンスは    LGPL と BSD-style

  KHTML のものは LGPL

  それ以外は BSD-style
動作プラットフォーム

Mobile platform   Desktop platform
 •   iPhone       • MacOSX(Safari)
 •   Modern UI    • Windows
 •   BREW         • Linux(X11)
 •   Android        • GTK
                    • Qt
                    • EFL
Web”Kit”


≒Web レンダリングを
いろんなプラットフォー
ムで動かす”キット”です。
WebKit アーキテクチャ
WebKit API or WebKit2 API

• WebKit の 外部 API 宣言

• 各プラットフォームで使うための実装を行う
  レイヤー

   •   例: EFL -> evas_object

   •   例: GTK -> GObject
WebKit API vs. WebKit2 API
WebKit API vs. WebKit2 API(cont)

                             • WebKit API はシン
                               グルプロセスで
         WebKit   WebKit2
                               WebCore の実行は関
                               数コール
プロセス     シングル     マルチプ
モデル      プロセス     ロセス
API タイ   ブロッキ     ノンブ        • WebKit2 API はマル
プ        ング       ロッキン         チプロセスで UI プ
         API(関数   グAPI(IPC     ロセスと WebCore
         コール)     通信)          プロセスを分離
                               • タッチパネルと相性
                                 バツグン
WebKit API と WebKit2 API の採用
実績

•   WebKit API

     •   Chrome

     •   Android

•   WebKit2 API

     •   Tizen 2.0

     •   safari
WebCore

•   HTML レンダリング担当

•   WebKit の中核(Core)

•   どんなプラットフォームでも WebCore の差異
    は少ない。

     •   Android も 4.1 以降はそんなに手を入れないスタイ
         ルになりました。
WebCore 処理フロー



1. HTMLをパースして DOM ツリーを構成

2. レンダリングツリーを構成

3. レンダリングツリーのレイアウト

4. レンダリングツリーの描画
WebCore 処理フロー(cont)

• WebCore の処理に興味があればこちらをど
  うぞ

  •   ブラウザの仕組み: 最新ウェブブラウザの内部
      構造

  •   http://www.html5rocks.com/ja/tutorials/in
      ternals/howbrowserswork/
WebCore/platform

• WebCore のプラットフォーム依存処理の実
  装

• プラットフォームでの描画処理

   •   WebCore 処理フローの描画のブロック

• 各プラットフォームで実装が異なる箇所
Javascript

•   Javascript 評価

•   DOM API と Javascript エンジンとの繋ぎ込みを担当

     •   JavaScriptCore(WebKit 標準エンジン Tizen, Android 4.0)

     •   V8(Android 4.1 over)

     •   Nitro(iOS)

•   じゃあ DOM API の宣言や実装はどこでやってるの?
WebKitIDL

•   DOM API は WebKitIDL を用いて定義

     •   http://trac.webkit.org/wiki/WebKitIDL

•   拡張子は .idl

     •   WebCore の至るところへ散らばっている

•   独立した API もすべて WebKitIDL で定義

     •   GeoLocation API

     •   File API
Example: alert() (IDL 記述)

• IDL ファイルで alert() を宣言

• WebCore/page/DOMWindow.idl

module window {
  interface DOMWindow {
     void alert(in DOMString message);
  }
}
Example: alert() (ヘッダ宣言)

• 対応する処理をヘッダに宣言

• WebCore/page/DOMWindow.h

namespace WebCore {
  class DOMWindow {
     void alert(const String& message);
  }
}
Example: alert() (処理)

• 処理をソースに記述

• WebCore/page/DOMWindow.cpp

void DOMWindow::alert(const String& message)
{
   Page* page = m_frame->page();

  page->chrome()->runJavaScriptAlert(m_frame,
message);
}
WebKit 各レイヤーまとめ

•   WebKit API or WebKit2 API

      •   各プラットフォームのための外部 API 宣言


•   WebCore

      •   HTML レンダリング処理


•   WebCore/platform

      •   各プラットフォームへのレンダリング処理


•   Javascript

      •   Javascript エンジンとの繋ぎ込み
WebKit のポーティングガイド

• WebKit をプラットフォームへ移植したい

   •   WebKit あるいは WebKit2 を実装しましょう

   •   WebCore の platform を実装しましょう

• 独自 Javascript API がほしい

   •   WebKitIDL で実装しましょう
Android   Knowledge of
WebKit    Android WebKit
Android WebKit

•   WebKit の Java 実装ソース

     •   ${Android_Src}/framework/base/core/java/android/w
         ebkit

•   Android のブラウザは WebKit の Java API で作られて
    いる

     •   例外

         •   Google chrome(アプリ自身が WebKit を持っている)

         •   Firefox(アプリ自身が Gecko を持っている)
Android の定番のお約束

• Android Platform は Java なのに、C++ で
  作られた WebKit の API はどうやって実行
  するの?

   •   JNI(Java Native Interface)を使用
Android の Native WebKit

•   Android プロジェクトでソース管理

     •   ${Android_Src}/external/webkit

•   WebKit 本家の変更点をマージ

•   プラットフォーム依存の処理は android ディレクトリへ
    実装を書いている。

     •   WebKit 本家に android ディレクトリはなし

         •   本家へのフィードバックはしてない模様
Android Webkit アーキテクチャ
Android.WebKit

• Java から WebKit を使うためのクラス

   •   WebView

       •   http://developer.android.com/reference/android
           /webkit/WebView.html


• API の宣言と native WebKit のつなぎ合わ
  せをしている
Android.WebKit(cont)

• Android はなぜタッチパネルと相性の良い
  WebKit2 を採用していない?

   •   Android.WebKit で UI 処理とレンダリング処
       理を分離しているため
Android WebKit の UI とレンダリン
グの分離方法

• Android.Handler

   •   Android.WebKit で Handler で UI 処理とレン
       ダリング処理を分けている。

   •   Native WebKit は 関数コールでレンダリング
       処理をするほうが都合がよい。

       •   余計な処理されるとむしろ困る
Native WebKit API

• Android.WebKit が使用する API の実装

• Android.WebKit と WebCore を繋ぐための
  ブリッジ

• JNI の定義がほとんど(むしろ全部)
Native WebCore

• WebCore 部分は本家のオリジナルとほぼ一
  緒

• 例外的にプラットフォーム依存の処理が追加
  されている

   •   Video タグのジェスチャー処理(Android 4.1)
Native WebCore (cont)

• Platform 層

   •   Skia への描画

   •   Android リソースへのアクセス

       •   JNI(C->Java)
Skia

• グラフィックライブラリ

• http://code.google.com/p/skia/
Javascript 層

• Native WebKit と変わらないので省略

• Android 4.1 以降はエンジンが V8 になりま
  した。
まとめ   まとめます
WebKit と Android WebKit の比較

WebKit                 Android WebKit

     WebKit API or
                         Android.WebKit
         WebKit2 API

                                   JNI
          WebCore
                          Native     Native WebKit
                         WebCore          API


   WebCore/platform       Native
                                     Native WebCore
                         WebCore
所感

• Android WebKit を触るためには

  •   Android Platform についての知識

  •   WebKit 自体の知識

  •   上記二つを繋ぎ込む根気!

• 正直、複雑
最後に猫から大切なお知らせ




   ソースの見かた分かった?
おしまい

More Related Content

What's hot

202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPNAmazon Web Services Japan
 
AWS IoT Device Defender による IoT デバイスのセキュリティ管理
AWS IoT Device Defender による IoT デバイスのセキュリティ管理AWS IoT Device Defender による IoT デバイスのセキュリティ管理
AWS IoT Device Defender による IoT デバイスのセキュリティ管理Amazon Web Services Japan
 
製造装置データ収集の選択肢 (AWS IoT Deep Dive #5)
製造装置データ収集の選択肢 (AWS IoT Deep Dive #5)製造装置データ収集の選択肢 (AWS IoT Deep Dive #5)
製造装置データ収集の選択肢 (AWS IoT Deep Dive #5)Amazon Web Services Japan
 
いまさら、AWSのネットワーク設計
いまさら、AWSのネットワーク設計いまさら、AWSのネットワーク設計
いまさら、AWSのネットワーク設計Serverworks Co.,Ltd.
 
20211209 Ops-JAWS Re invent2021re-cap-cloud operations
20211209 Ops-JAWS Re invent2021re-cap-cloud operations20211209 Ops-JAWS Re invent2021re-cap-cloud operations
20211209 Ops-JAWS Re invent2021re-cap-cloud operationsAmazon Web Services Japan
 
AWS IoT SiteWise のご紹介 (AWS IoT Deep Dive #5)
AWS IoT SiteWise のご紹介 (AWS IoT Deep Dive #5)AWS IoT SiteWise のご紹介 (AWS IoT Deep Dive #5)
AWS IoT SiteWise のご紹介 (AWS IoT Deep Dive #5)Amazon Web Services Japan
 
Tealium+AWS Analytics サービスで実現する Customer Experience(CX)
Tealium+AWS Analytics サービスで実現する Customer Experience(CX)Tealium+AWS Analytics サービスで実現する Customer Experience(CX)
Tealium+AWS Analytics サービスで実現する Customer Experience(CX)Amazon Web Services Japan
 
AWS社員による怒涛のLTチャレンジ! なかなか飛行機に乗れてないので、Ruby on Jetsで飛んでみよう!
AWS社員による怒涛のLTチャレンジ! なかなか飛行機に乗れてないので、Ruby on Jetsで飛んでみよう!AWS社員による怒涛のLTチャレンジ! なかなか飛行機に乗れてないので、Ruby on Jetsで飛んでみよう!
AWS社員による怒涛のLTチャレンジ! なかなか飛行機に乗れてないので、Ruby on Jetsで飛んでみよう!Amazon Web Services Japan
 
Cloud9で試すAWS IoT Greengrass V2
Cloud9で試すAWS IoT Greengrass V2Cloud9で試すAWS IoT Greengrass V2
Cloud9で試すAWS IoT Greengrass V2Jun Ichikawa
 
IoT@Loft#20 - IoTプラットフォームを進化さ せるAWSの活用方法
IoT@Loft#20 - IoTプラットフォームを進化さ せるAWSの活用方法IoT@Loft#20 - IoTプラットフォームを進化さ せるAWSの活用方法
IoT@Loft#20 - IoTプラットフォームを進化さ せるAWSの活用方法Amazon Web Services Japan
 
IoT@Loft #4 - IoT製品の量産化および運用を効率化させるためのAWS サービスの使い方
IoT@Loft #4 - IoT製品の量産化および運用を効率化させるためのAWS サービスの使い方IoT@Loft #4 - IoT製品の量産化および運用を効率化させるためのAWS サービスの使い方
IoT@Loft #4 - IoT製品の量産化および運用を効率化させるためのAWS サービスの使い方Amazon Web Services Japan
 
デバイスの運用で使える AWS IoTサービスの紹介
デバイスの運用で使える AWS IoTサービスの紹介デバイスの運用で使える AWS IoTサービスの紹介
デバイスの運用で使える AWS IoTサービスの紹介Amazon Web Services Japan
 
[20210519 Security-JAWS] AWS エッジサービス入門ハンズオンの紹介と AWS WAF のアップデートについて
[20210519 Security-JAWS] AWS エッジサービス入門ハンズオンの紹介と AWS WAF のアップデートについて[20210519 Security-JAWS] AWS エッジサービス入門ハンズオンの紹介と AWS WAF のアップデートについて
[20210519 Security-JAWS] AWS エッジサービス入門ハンズオンの紹介と AWS WAF のアップデートについてAmazon Web Services Japan
 
202106 AWS Black Belt Online Seminar 小売現場のデータを素早くビジネス に活用するAWSデータ基盤
202106 AWS Black Belt Online Seminar 小売現場のデータを素早くビジネス に活用するAWSデータ基盤202106 AWS Black Belt Online Seminar 小売現場のデータを素早くビジネス に活用するAWSデータ基盤
202106 AWS Black Belt Online Seminar 小売現場のデータを素早くビジネス に活用するAWSデータ基盤Amazon Web Services Japan
 
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチAmazon Web Services Japan
 
AWS IoT サービス アップデートのご紹介
AWS IoT サービス アップデートのご紹介AWS IoT サービス アップデートのご紹介
AWS IoT サービス アップデートのご紹介Amazon Web Services Japan
 
Gaming on aws 〜ゲームにおけるAWS最新活用術〜
Gaming on aws 〜ゲームにおけるAWS最新活用術〜Gaming on aws 〜ゲームにおけるAWS最新活用術〜
Gaming on aws 〜ゲームにおけるAWS最新活用術〜Amazon Web Services Japan
 

What's hot (20)

202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
 
AWS IoT Device Defender による IoT デバイスのセキュリティ管理
AWS IoT Device Defender による IoT デバイスのセキュリティ管理AWS IoT Device Defender による IoT デバイスのセキュリティ管理
AWS IoT Device Defender による IoT デバイスのセキュリティ管理
 
製造装置データ収集の選択肢 (AWS IoT Deep Dive #5)
製造装置データ収集の選択肢 (AWS IoT Deep Dive #5)製造装置データ収集の選択肢 (AWS IoT Deep Dive #5)
製造装置データ収集の選択肢 (AWS IoT Deep Dive #5)
 
いまさら、AWSのネットワーク設計
いまさら、AWSのネットワーク設計いまさら、AWSのネットワーク設計
いまさら、AWSのネットワーク設計
 
20211209 Ops-JAWS Re invent2021re-cap-cloud operations
20211209 Ops-JAWS Re invent2021re-cap-cloud operations20211209 Ops-JAWS Re invent2021re-cap-cloud operations
20211209 Ops-JAWS Re invent2021re-cap-cloud operations
 
AWS IoT SiteWise のご紹介 (AWS IoT Deep Dive #5)
AWS IoT SiteWise のご紹介 (AWS IoT Deep Dive #5)AWS IoT SiteWise のご紹介 (AWS IoT Deep Dive #5)
AWS IoT SiteWise のご紹介 (AWS IoT Deep Dive #5)
 
AWS の IoT 向けサービス
AWS の IoT 向けサービスAWS の IoT 向けサービス
AWS の IoT 向けサービス
 
02B_AWS IoT Core for LoRaWANのご紹介
02B_AWS IoT Core for LoRaWANのご紹介02B_AWS IoT Core for LoRaWANのご紹介
02B_AWS IoT Core for LoRaWANのご紹介
 
Tealium+AWS Analytics サービスで実現する Customer Experience(CX)
Tealium+AWS Analytics サービスで実現する Customer Experience(CX)Tealium+AWS Analytics サービスで実現する Customer Experience(CX)
Tealium+AWS Analytics サービスで実現する Customer Experience(CX)
 
AWS社員による怒涛のLTチャレンジ! なかなか飛行機に乗れてないので、Ruby on Jetsで飛んでみよう!
AWS社員による怒涛のLTチャレンジ! なかなか飛行機に乗れてないので、Ruby on Jetsで飛んでみよう!AWS社員による怒涛のLTチャレンジ! なかなか飛行機に乗れてないので、Ruby on Jetsで飛んでみよう!
AWS社員による怒涛のLTチャレンジ! なかなか飛行機に乗れてないので、Ruby on Jetsで飛んでみよう!
 
Cloud9で試すAWS IoT Greengrass V2
Cloud9で試すAWS IoT Greengrass V2Cloud9で試すAWS IoT Greengrass V2
Cloud9で試すAWS IoT Greengrass V2
 
IoT@Loft#20 - IoTプラットフォームを進化さ せるAWSの活用方法
IoT@Loft#20 - IoTプラットフォームを進化さ せるAWSの活用方法IoT@Loft#20 - IoTプラットフォームを進化さ せるAWSの活用方法
IoT@Loft#20 - IoTプラットフォームを進化さ せるAWSの活用方法
 
Aws IoT Security101
Aws IoT Security101Aws IoT Security101
Aws IoT Security101
 
IoT@Loft #4 - IoT製品の量産化および運用を効率化させるためのAWS サービスの使い方
IoT@Loft #4 - IoT製品の量産化および運用を効率化させるためのAWS サービスの使い方IoT@Loft #4 - IoT製品の量産化および運用を効率化させるためのAWS サービスの使い方
IoT@Loft #4 - IoT製品の量産化および運用を効率化させるためのAWS サービスの使い方
 
デバイスの運用で使える AWS IoTサービスの紹介
デバイスの運用で使える AWS IoTサービスの紹介デバイスの運用で使える AWS IoTサービスの紹介
デバイスの運用で使える AWS IoTサービスの紹介
 
[20210519 Security-JAWS] AWS エッジサービス入門ハンズオンの紹介と AWS WAF のアップデートについて
[20210519 Security-JAWS] AWS エッジサービス入門ハンズオンの紹介と AWS WAF のアップデートについて[20210519 Security-JAWS] AWS エッジサービス入門ハンズオンの紹介と AWS WAF のアップデートについて
[20210519 Security-JAWS] AWS エッジサービス入門ハンズオンの紹介と AWS WAF のアップデートについて
 
202106 AWS Black Belt Online Seminar 小売現場のデータを素早くビジネス に活用するAWSデータ基盤
202106 AWS Black Belt Online Seminar 小売現場のデータを素早くビジネス に活用するAWSデータ基盤202106 AWS Black Belt Online Seminar 小売現場のデータを素早くビジネス に活用するAWSデータ基盤
202106 AWS Black Belt Online Seminar 小売現場のデータを素早くビジネス に活用するAWSデータ基盤
 
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
 
AWS IoT サービス アップデートのご紹介
AWS IoT サービス アップデートのご紹介AWS IoT サービス アップデートのご紹介
AWS IoT サービス アップデートのご紹介
 
Gaming on aws 〜ゲームにおけるAWS最新活用術〜
Gaming on aws 〜ゲームにおけるAWS最新活用術〜Gaming on aws 〜ゲームにおけるAWS最新活用術〜
Gaming on aws 〜ゲームにおけるAWS最新活用術〜
 

Viewers also liked

Report of linuxcon japan 2013
Report of linuxcon japan 2013Report of linuxcon japan 2013
Report of linuxcon japan 2013Naruto TAKAHASHI
 
NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法Naruto TAKAHASHI
 
Tizen の未来と可能性
Tizen の未来と可能性Tizen の未来と可能性
Tizen の未来と可能性Naruto TAKAHASHI
 
How to add nfc web api to android by using npapi
How to add nfc web api to android by using npapiHow to add nfc web api to android by using npapi
How to add nfc web api to android by using npapiNaruto TAKAHASHI
 
Rust samurai lightning talk
Rust samurai lightning talkRust samurai lightning talk
Rust samurai lightning talkNaruto TAKAHASHI
 
Tizen web app を FireFox OS へ移植する方法を考えた
Tizen web app を FireFox OS へ移植する方法を考えたTizen web app を FireFox OS へ移植する方法を考えた
Tizen web app を FireFox OS へ移植する方法を考えたNaruto TAKAHASHI
 
Japanese input environment on Tizen 2.0 Alpha
Japanese input environment on Tizen 2.0 AlphaJapanese input environment on Tizen 2.0 Alpha
Japanese input environment on Tizen 2.0 AlphaNaruto TAKAHASHI
 
せっかくだから俺はこの NPAPI の話をするぜ
せっかくだから俺はこの NPAPI の話をするぜせっかくだから俺はこの NPAPI の話をするぜ
せっかくだから俺はこの NPAPI の話をするぜNaruto TAKAHASHI
 
20150530 無名の会社が、大規模サイト(スマホ対応)相手に、構築・運用でやってること
20150530 無名の会社が、大規模サイト(スマホ対応)相手に、構築・運用でやってること20150530 無名の会社が、大規模サイト(スマホ対応)相手に、構築・運用でやってること
20150530 無名の会社が、大規模サイト(スマホ対応)相手に、構築・運用でやってることuenoyuuki
 
iOS 8のWebKit Frameworkでアプリ内ブラウザがどう変わる?
iOS 8のWebKit Frameworkでアプリ内ブラウザがどう変わる?iOS 8のWebKit Frameworkでアプリ内ブラウザがどう変わる?
iOS 8のWebKit Frameworkでアプリ内ブラウザがどう変わる?Kosuke Ogawa
 
freeCodeCamp Tokyo meetup 19
freeCodeCamp Tokyo meetup 19freeCodeCamp Tokyo meetup 19
freeCodeCamp Tokyo meetup 19健太 田上
 
Kelompok 4 fismod rustam
Kelompok 4 fismod rustamKelompok 4 fismod rustam
Kelompok 4 fismod rustamRustam Wabula
 
Get a Seat at the Table: Utah's Legislature and How it Impacts Nonprofit Orga...
Get a Seat at the Table: Utah's Legislature and How it Impacts Nonprofit Orga...Get a Seat at the Table: Utah's Legislature and How it Impacts Nonprofit Orga...
Get a Seat at the Table: Utah's Legislature and How it Impacts Nonprofit Orga...Parsons Behle & Latimer
 
Paper4 jefri using firebug
Paper4 jefri using firebugPaper4 jefri using firebug
Paper4 jefri using firebugJefri Fahrian
 
Actividad n1 yoselin barrera
Actividad n1 yoselin barreraActividad n1 yoselin barrera
Actividad n1 yoselin barreraYoselin Barrera
 

Viewers also liked (20)

Tizen & Crosswalk
Tizen & CrosswalkTizen & Crosswalk
Tizen & Crosswalk
 
Report of linuxcon japan 2013
Report of linuxcon japan 2013Report of linuxcon japan 2013
Report of linuxcon japan 2013
 
NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法
 
Tizen の未来と可能性
Tizen の未来と可能性Tizen の未来と可能性
Tizen の未来と可能性
 
Tizenについて
TizenについてTizenについて
Tizenについて
 
How to add nfc web api to android by using npapi
How to add nfc web api to android by using npapiHow to add nfc web api to android by using npapi
How to add nfc web api to android by using npapi
 
Rust samurai lightning talk
Rust samurai lightning talkRust samurai lightning talk
Rust samurai lightning talk
 
Tizen web app を FireFox OS へ移植する方法を考えた
Tizen web app を FireFox OS へ移植する方法を考えたTizen web app を FireFox OS へ移植する方法を考えた
Tizen web app を FireFox OS へ移植する方法を考えた
 
Japanese input environment on Tizen 2.0 Alpha
Japanese input environment on Tizen 2.0 AlphaJapanese input environment on Tizen 2.0 Alpha
Japanese input environment on Tizen 2.0 Alpha
 
せっかくだから俺はこの NPAPI の話をするぜ
せっかくだから俺はこの NPAPI の話をするぜせっかくだから俺はこの NPAPI の話をするぜ
せっかくだから俺はこの NPAPI の話をするぜ
 
Tizen 2.0 overview
Tizen 2.0 overviewTizen 2.0 overview
Tizen 2.0 overview
 
20150530 無名の会社が、大規模サイト(スマホ対応)相手に、構築・運用でやってること
20150530 無名の会社が、大規模サイト(スマホ対応)相手に、構築・運用でやってること20150530 無名の会社が、大規模サイト(スマホ対応)相手に、構築・運用でやってること
20150530 無名の会社が、大規模サイト(スマホ対応)相手に、構築・運用でやってること
 
iOS 8のWebKit Frameworkでアプリ内ブラウザがどう変わる?
iOS 8のWebKit Frameworkでアプリ内ブラウザがどう変わる?iOS 8のWebKit Frameworkでアプリ内ブラウザがどう変わる?
iOS 8のWebKit Frameworkでアプリ内ブラウザがどう変わる?
 
freeCodeCamp Tokyo meetup 19
freeCodeCamp Tokyo meetup 19freeCodeCamp Tokyo meetup 19
freeCodeCamp Tokyo meetup 19
 
Kelompok 4 fismod rustam
Kelompok 4 fismod rustamKelompok 4 fismod rustam
Kelompok 4 fismod rustam
 
Klíma 7 előnye
Klíma  7 előnyeKlíma  7 előnye
Klíma 7 előnye
 
Get a Seat at the Table: Utah's Legislature and How it Impacts Nonprofit Orga...
Get a Seat at the Table: Utah's Legislature and How it Impacts Nonprofit Orga...Get a Seat at the Table: Utah's Legislature and How it Impacts Nonprofit Orga...
Get a Seat at the Table: Utah's Legislature and How it Impacts Nonprofit Orga...
 
Paper4 jefri using firebug
Paper4 jefri using firebugPaper4 jefri using firebug
Paper4 jefri using firebug
 
Teknik presentasi
Teknik presentasiTeknik presentasi
Teknik presentasi
 
Actividad n1 yoselin barrera
Actividad n1 yoselin barreraActividad n1 yoselin barrera
Actividad n1 yoselin barrera
 

Similar to 猫でも分かる Android WebKit

はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-Saki Homma
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能Kohei Tokunaga
 
[Mobile5] 最新動向 2012年5月
[Mobile5] 最新動向 2012年5月[Mobile5] 最新動向 2012年5月
[Mobile5] 最新動向 2012年5月Akira Sasaki
 
JavaScript And Keywords
JavaScript And KeywordsJavaScript And Keywords
JavaScript And Keywordsuupaa
 
これから利用拡大?WebSocket
これから利用拡大?WebSocketこれから利用拡大?WebSocket
これから利用拡大?WebSocketAdvancedTechNight
 
改めて C# でできることを振り返る
改めて C# でできることを振り返る改めて C# でできることを振り返る
改めて C# でできることを振り返るYuta Matsumura
 
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~Saki Homma
 
Rubyで作るtwitter風webアプリケーション
Rubyで作るtwitter風webアプリケーションRubyで作るtwitter風webアプリケーション
Rubyで作るtwitter風webアプリケーションNaoto Hori
 
A 2-1 gitwebmatrix 2 から使う node.js on windows azure
A 2-1 gitwebmatrix 2 から使う node.js on windows azureA 2-1 gitwebmatrix 2 から使う node.js on windows azure
A 2-1 gitwebmatrix 2 から使う node.js on windows azureGoAzure
 
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜日本マイクロソフト株式会社
 
Monthly Lightning Talk Playback 2014-12
Monthly Lightning Talk Playback 2014-12Monthly Lightning Talk Playback 2014-12
Monthly Lightning Talk Playback 2014-12Seiya Konno
 
WebSocket + Node.jsでつくるチャットアプリ
WebSocket + Node.jsでつくるチャットアプリWebSocket + Node.jsでつくるチャットアプリ
WebSocket + Node.jsでつくるチャットアプリKohei Kadowaki
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発Yuta Matsumura
 
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介david9142
 
月刊ライトニングトーク 2014/05 atom-shell を試してみた
月刊ライトニングトーク 2014/05 atom-shell を試してみた月刊ライトニングトーク 2014/05 atom-shell を試してみた
月刊ライトニングトーク 2014/05 atom-shell を試してみたSeiya Konno
 
Web on Kernel
Web on KernelWeb on Kernel
Web on Kerneldynamis
 
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発Daizen Ikehara
 
Windows 8時代のアプリ開発
Windows 8時代のアプリ開発Windows 8時代のアプリ開発
Windows 8時代のアプリ開発信之 岩永
 

Similar to 猫でも分かる Android WebKit (20)

はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
 
[Mobile5] 最新動向 2012年5月
[Mobile5] 最新動向 2012年5月[Mobile5] 最新動向 2012年5月
[Mobile5] 最新動向 2012年5月
 
JavaScript And Keywords
JavaScript And KeywordsJavaScript And Keywords
JavaScript And Keywords
 
これから利用拡大?WebSocket
これから利用拡大?WebSocketこれから利用拡大?WebSocket
これから利用拡大?WebSocket
 
改めて C# でできることを振り返る
改めて C# でできることを振り返る改めて C# でできることを振り返る
改めて C# でできることを振り返る
 
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~
 
.NET Core 1.0
.NET Core 1.0.NET Core 1.0
.NET Core 1.0
 
Rubyで作るtwitter風webアプリケーション
Rubyで作るtwitter風webアプリケーションRubyで作るtwitter風webアプリケーション
Rubyで作るtwitter風webアプリケーション
 
A 2-1 gitwebmatrix 2 から使う node.js on windows azure
A 2-1 gitwebmatrix 2 から使う node.js on windows azureA 2-1 gitwebmatrix 2 から使う node.js on windows azure
A 2-1 gitwebmatrix 2 から使う node.js on windows azure
 
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜
 
Monthly Lightning Talk Playback 2014-12
Monthly Lightning Talk Playback 2014-12Monthly Lightning Talk Playback 2014-12
Monthly Lightning Talk Playback 2014-12
 
WebSocket + Node.jsでつくるチャットアプリ
WebSocket + Node.jsでつくるチャットアプリWebSocket + Node.jsでつくるチャットアプリ
WebSocket + Node.jsでつくるチャットアプリ
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
 
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
 
月刊ライトニングトーク 2014/05 atom-shell を試してみた
月刊ライトニングトーク 2014/05 atom-shell を試してみた月刊ライトニングトーク 2014/05 atom-shell を試してみた
月刊ライトニングトーク 2014/05 atom-shell を試してみた
 
Web on Kernel
Web on KernelWeb on Kernel
Web on Kernel
 
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
 
Windows 8時代のアプリ開発
Windows 8時代のアプリ開発Windows 8時代のアプリ開発
Windows 8時代のアプリ開発
 
Mvc conf session_1_osada
Mvc conf session_1_osadaMvc conf session_1_osada
Mvc conf session_1_osada
 

More from Naruto TAKAHASHI

CMake multiplatform build-tool
CMake multiplatform build-toolCMake multiplatform build-tool
CMake multiplatform build-toolNaruto TAKAHASHI
 
猫でも分かる Android WebKit ice break
猫でも分かる Android WebKit ice break猫でも分かる Android WebKit ice break
猫でも分かる Android WebKit ice breakNaruto TAKAHASHI
 
Tizen 2.0 alpha でサポートされなかった native api
Tizen 2.0 alpha でサポートされなかった native apiTizen 2.0 alpha でサポートされなかった native api
Tizen 2.0 alpha でサポートされなかった native apiNaruto TAKAHASHI
 
Tizen 2.0 alpha でサポートされなかった native api icebreak
Tizen 2.0 alpha でサポートされなかった native api icebreakTizen 2.0 alpha でサポートされなかった native api icebreak
Tizen 2.0 alpha でサポートされなかった native api icebreakNaruto TAKAHASHI
 
Html5 でアプリを作るということ
Html5 でアプリを作るということHtml5 でアプリを作るということ
Html5 でアプリを作るということNaruto TAKAHASHI
 
Tizen web app について調べたよ
Tizen web app について調べたよTizen web app について調べたよ
Tizen web app について調べたよNaruto TAKAHASHI
 
Linux ユーザーからみた tizen
Linux ユーザーからみた tizenLinux ユーザーからみた tizen
Linux ユーザーからみた tizenNaruto TAKAHASHI
 

More from Naruto TAKAHASHI (11)

CMake multiplatform build-tool
CMake multiplatform build-toolCMake multiplatform build-tool
CMake multiplatform build-tool
 
Tizen API
Tizen APITizen API
Tizen API
 
猫でも分かる Android WebKit ice break
猫でも分かる Android WebKit ice break猫でも分かる Android WebKit ice break
猫でも分かる Android WebKit ice break
 
Tizen 2.0 alpha でサポートされなかった native api
Tizen 2.0 alpha でサポートされなかった native apiTizen 2.0 alpha でサポートされなかった native api
Tizen 2.0 alpha でサポートされなかった native api
 
Tizen 2.0 alpha でサポートされなかった native api icebreak
Tizen 2.0 alpha でサポートされなかった native api icebreakTizen 2.0 alpha でサポートされなかった native api icebreak
Tizen 2.0 alpha でサポートされなかった native api icebreak
 
Tizen application
Tizen applicationTizen application
Tizen application
 
Tizen web app
Tizen web appTizen web app
Tizen web app
 
Tizen native application
Tizen native applicationTizen native application
Tizen native application
 
Html5 でアプリを作るということ
Html5 でアプリを作るということHtml5 でアプリを作るということ
Html5 でアプリを作るということ
 
Tizen web app について調べたよ
Tizen web app について調べたよTizen web app について調べたよ
Tizen web app について調べたよ
 
Linux ユーザーからみた tizen
Linux ユーザーからみた tizenLinux ユーザーからみた tizen
Linux ユーザーからみた tizen
 

Recently uploaded

プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価sugiuralab
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールsugiuralab
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 

Recently uploaded (8)

プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 

猫でも分かる Android WebKit

  • 1. 猫でも分かる Android WebKit Naruto TAKAHASHI(tnaruto@gmail.com) Turbo Systems Co, Ltd. 横浜Androidプラットフォーム部第26回勉強会
  • 2. Agenda WebKit Android WebKit
  • 3. WebKit Knowledge of WebKit
  • 5. WebKit とは(cont) 言語は C++ KDE プロジェクトの KHTML から fork した KHTML は Qt がベースになっている。  構造がしっかりしているとのうわさが!
  • 6. ライセンス ライセンスは LGPL と BSD-style  KHTML のものは LGPL  それ以外は BSD-style
  • 7. 動作プラットフォーム Mobile platform Desktop platform • iPhone • MacOSX(Safari) • Modern UI • Windows • BREW • Linux(X11) • Android • GTK • Qt • EFL
  • 10. WebKit API or WebKit2 API • WebKit の 外部 API 宣言 • 各プラットフォームで使うための実装を行う レイヤー • 例: EFL -> evas_object • 例: GTK -> GObject
  • 11. WebKit API vs. WebKit2 API
  • 12. WebKit API vs. WebKit2 API(cont) • WebKit API はシン グルプロセスで WebKit WebKit2 WebCore の実行は関 数コール プロセス シングル マルチプ モデル プロセス ロセス API タイ ブロッキ ノンブ • WebKit2 API はマル プ ング ロッキン チプロセスで UI プ API(関数 グAPI(IPC ロセスと WebCore コール) 通信) プロセスを分離 • タッチパネルと相性 バツグン
  • 13. WebKit API と WebKit2 API の採用 実績 • WebKit API • Chrome • Android • WebKit2 API • Tizen 2.0 • safari
  • 14. WebCore • HTML レンダリング担当 • WebKit の中核(Core) • どんなプラットフォームでも WebCore の差異 は少ない。 • Android も 4.1 以降はそんなに手を入れないスタイ ルになりました。
  • 15. WebCore 処理フロー 1. HTMLをパースして DOM ツリーを構成 2. レンダリングツリーを構成 3. レンダリングツリーのレイアウト 4. レンダリングツリーの描画
  • 16. WebCore 処理フロー(cont) • WebCore の処理に興味があればこちらをど うぞ • ブラウザの仕組み: 最新ウェブブラウザの内部 構造 • http://www.html5rocks.com/ja/tutorials/in ternals/howbrowserswork/
  • 17. WebCore/platform • WebCore のプラットフォーム依存処理の実 装 • プラットフォームでの描画処理 • WebCore 処理フローの描画のブロック • 各プラットフォームで実装が異なる箇所
  • 18. Javascript • Javascript 評価 • DOM API と Javascript エンジンとの繋ぎ込みを担当 • JavaScriptCore(WebKit 標準エンジン Tizen, Android 4.0) • V8(Android 4.1 over) • Nitro(iOS) • じゃあ DOM API の宣言や実装はどこでやってるの?
  • 19. WebKitIDL • DOM API は WebKitIDL を用いて定義 • http://trac.webkit.org/wiki/WebKitIDL • 拡張子は .idl • WebCore の至るところへ散らばっている • 独立した API もすべて WebKitIDL で定義 • GeoLocation API • File API
  • 20. Example: alert() (IDL 記述) • IDL ファイルで alert() を宣言 • WebCore/page/DOMWindow.idl module window { interface DOMWindow { void alert(in DOMString message); } }
  • 21. Example: alert() (ヘッダ宣言) • 対応する処理をヘッダに宣言 • WebCore/page/DOMWindow.h namespace WebCore { class DOMWindow { void alert(const String& message); } }
  • 22. Example: alert() (処理) • 処理をソースに記述 • WebCore/page/DOMWindow.cpp void DOMWindow::alert(const String& message) { Page* page = m_frame->page(); page->chrome()->runJavaScriptAlert(m_frame, message); }
  • 23. WebKit 各レイヤーまとめ • WebKit API or WebKit2 API • 各プラットフォームのための外部 API 宣言 • WebCore • HTML レンダリング処理 • WebCore/platform • 各プラットフォームへのレンダリング処理 • Javascript • Javascript エンジンとの繋ぎ込み
  • 24. WebKit のポーティングガイド • WebKit をプラットフォームへ移植したい • WebKit あるいは WebKit2 を実装しましょう • WebCore の platform を実装しましょう • 独自 Javascript API がほしい • WebKitIDL で実装しましょう
  • 25. Android Knowledge of WebKit Android WebKit
  • 26. Android WebKit • WebKit の Java 実装ソース • ${Android_Src}/framework/base/core/java/android/w ebkit • Android のブラウザは WebKit の Java API で作られて いる • 例外 • Google chrome(アプリ自身が WebKit を持っている) • Firefox(アプリ自身が Gecko を持っている)
  • 27. Android の定番のお約束 • Android Platform は Java なのに、C++ で 作られた WebKit の API はどうやって実行 するの? • JNI(Java Native Interface)を使用
  • 28. Android の Native WebKit • Android プロジェクトでソース管理 • ${Android_Src}/external/webkit • WebKit 本家の変更点をマージ • プラットフォーム依存の処理は android ディレクトリへ 実装を書いている。 • WebKit 本家に android ディレクトリはなし • 本家へのフィードバックはしてない模様
  • 30. Android.WebKit • Java から WebKit を使うためのクラス • WebView • http://developer.android.com/reference/android /webkit/WebView.html • API の宣言と native WebKit のつなぎ合わ せをしている
  • 31. Android.WebKit(cont) • Android はなぜタッチパネルと相性の良い WebKit2 を採用していない? • Android.WebKit で UI 処理とレンダリング処 理を分離しているため
  • 32. Android WebKit の UI とレンダリン グの分離方法 • Android.Handler • Android.WebKit で Handler で UI 処理とレン ダリング処理を分けている。 • Native WebKit は 関数コールでレンダリング 処理をするほうが都合がよい。 • 余計な処理されるとむしろ困る
  • 33. Native WebKit API • Android.WebKit が使用する API の実装 • Android.WebKit と WebCore を繋ぐための ブリッジ • JNI の定義がほとんど(むしろ全部)
  • 34. Native WebCore • WebCore 部分は本家のオリジナルとほぼ一 緒 • 例外的にプラットフォーム依存の処理が追加 されている • Video タグのジェスチャー処理(Android 4.1)
  • 35. Native WebCore (cont) • Platform 層 • Skia への描画 • Android リソースへのアクセス • JNI(C->Java)
  • 37. Javascript 層 • Native WebKit と変わらないので省略 • Android 4.1 以降はエンジンが V8 になりま した。
  • 38. まとめ まとめます
  • 39. WebKit と Android WebKit の比較 WebKit Android WebKit WebKit API or Android.WebKit WebKit2 API JNI WebCore Native Native WebKit WebCore API WebCore/platform Native Native WebCore WebCore
  • 40. 所感 • Android WebKit を触るためには • Android Platform についての知識 • WebKit 自体の知識 • 上記二つを繋ぎ込む根気! • 正直、複雑
  • 41. 最後に猫から大切なお知らせ ソースの見かた分かった?