SlideShare a Scribd company logo
1 of 23
Download to read offline
Geckoと仲良くなりたい人主催 FxOS Gecko勉強会
Gecko入門
- Introduction to Gecko –
Masahiro Hidaka / @mhidaka
ABOUT.ME();
Hello, Everyone 
自己紹介
• 日高 正博 / @mhidaka
– Embedded Engineer, 7年目。今年、関西→関東
– Android, Linux, RTOS。 Firefox OSは最近!
• コミュニティ活動
– 執筆、勉強会
– techbooster.org
• Android ,Mobile技術
お知らせ:絶賛発売中
Effective Android 進撃の火狐
ABOUT.GECKO();
Hello, Firefox OS ;)
なぜ今、Gecko勉強会なのか
• これのせい。
発表は昨日、ソースコードを落として読んだ内
容を元にしてます。ある意味、最新情報です
が、うそを言う可能性が微レ存。
その場合は優しく訂正してください。優しく。
# WebにGeckoの情報なさ過ぎてビビる
Geckoを知る意義
• Firefox OSの重要なブロックの1つ
– プラットフォームとして理解するうえで避け
ては通れない。
• GeckoはWeb技術との接点
– HTML5による実装
– Google Chrome OSも同様の方向性
WebApp Based OS
• Web標準技術が中心に
• 両方ともブラウザがベース
• chrome OS
– Androidのタイミングでは
HTML5は時期尚早
– ラップトップのローレンジへの
展開
• Firefox OS
– Anroidが既にあった
– モバイルのローレンジへの展開
– シンプルな構成でパフォーマン
スを得る(Javaやネイティブなど
の両サポートに比べると)
ARCHITECTURE();
Hello, Firefox OS :p
Firefox OS
アプリケーション開発と密接に関わる
UIコンポーネント、Home,SystemAppの提供
HTML,CSS,JavaScriptで記述、描画等も担当。
Gaia
Gecko
Gonk
https://developer.mozilla.org/ja/docs/Mozilla/Firefox_OS/Platform/Architecture
カーネル、ライブラリ層。デバイス制御機能を提供
Linuxカーネル, init.rc / ほぼAndroidと同じ仕組み
システムプロセスであるchrome(b2g)プロセスが存在。
Web標準技術の実装(アプリが動くために必要なもの全て)
レイアウト、JavaScriptエンジン、ネットワーク、グラ
フィックスタック。ブラウザそのもの。
B2G(Boot to Gecko): Firefox OSプロジェクト全体のコードネーム
Firefox OSの肝はGaiaとGecko
• Gaia
– Webアプリではあるが特別な権限を
もったシステムアプリとして振る舞う
– SystemUI like
• Gecko
– PC版Firefoxブラウザのノウハウが生
きている(その分、複雑…)
– OSのもつデバイス制御を可能にして
いる
※ざっくりとした理解ですよ
Gaia
Gecko
Gonk
Web
アプリ
Web
ブラウザ
ソースコードを確認する
$ git clone git://github.com/mozilla-b2g/B2G.git
$ ./config.sh nexus-4
# ./config.sh galaxy-nexus はリポジトリが死んでた。つらい。
# ./config.sh で対応デバイスを確認できる
以下のスライドは2013.09.30 時点の情報をもとに作成
B2Gディレクトリ
device external frameworks gaia gecko
gonk-misc hardware libcore
libnative
helper
ndk
prebuilts rilproxy scripts system tools
abi bionic bootable build dalvik
GECKO.INNER();
Hello, Firefox OS :)
geckoディレクトリ
browser chrome
content dom
hal
xpcom
view
xulrunner
dom Web APIの提供
xulrunner レンダリングエンジン
xpcom Mozillaのコンポーネント化技術
Chrome chromeプロセス用コード
content domへローレベルAPI提供(Canvas等)
view 基本的なview管理機構
layout 画面に表示するレイアウト要素
table,sytle
hal geckoのHAL層
(Sensor, Switch, FMRadio, EventPolling )
layout …more
gecko/hal/gonk/GonkHal.cpp
class BatteryObserver : public IUeventObserver,
public RefCounted<BatteryObserver>
{
… 省略 …
virtual void Notify(const NetlinkEvent &aEvent) // バッテリー変化の通知
{
// this will run on IO thread
NetlinkEvent *event = const_cast<NetlinkEvent*>(&aEvent);
const char *subsystem = event->getSubsystem();
// e.g. DEVPATH=/devices/platform/sec-battery/power_supply/battery
const char *devpath = event->findParam("DEVPATH");
if (strcmp(subsystem, "power_supply") == 0 &&
strstr(devpath, "battery")) {
// aEvent will be valid only in this method.
NS_DispatchToMainThread(mUpdater);
}
}
他にもバイブレータ、明るさ、
スクリーン、時刻設定など
基本的な制御シーケンス
DOM
(API , DOM)
Content Layout Hal XPCOM…
WebApp Gaia
Gecko
Linux
GECKO.READ();
Hello, Firefox OS :)
gecko/hal/gonk/GonkHal.cpp
SetLight(hal::LightType light, const hal::LightConfiguration& aConfig)
{
light_state_t state;
InitLights();
… 省略 …
memset(&state, 0, sizeof(light_state_t));
state.color = aConfig.color();
state.flashMode = aConfig.flash();
state.flashOnMS = aConfig.flashOnMS();
state.flashOffMS = aConfig.flashOffMS();
state.brightnessMode = aConfig.mode();
sLights[light]->set_light(sLights[light], &state);
sStoredLightState[light] = state;
return true;
}
明るさを設定するコード
明るさ設定のCall Graph
gaia/apps/system/js/settings.js
gecko/dom/base/Navigator.cpp / nsIDOMNavigator.idl (バインディング)
gecko/dom/power/PowerManager.cpp
gecko/hal/sandbox/SandboxHal.cpp
gecko/hal/gonk/GonkHal.cpp –SetScreenBrightness
gecko/hal/gonk/GonkHal.cpp – setLight
navigator.mozPower.screenBrightness = parseFloat(value);
Navigator::GetMozPower(nsIDOMMozPowerManager** aPower)
PowerManager::SetScreenBrightness(double aBrightness, ErrorResult& aRv)
Hal()->SendSetScreenBrightness(brightness);
hal::SetLight(hal::eHalLightID_Backlight, aConfig);
GaiaからGeckoへの
コールグラフ
PPT.FINISH();
Hello, Firefox OS :)
おや?Geckoの様子が?
これであなたも
Geckoが読めるようになりましたよね?
Geckoが仲良くなりたそうにこちらを見ている!!
仲良くしますか?
→ はい いいえ
ご清聴ありがとうございました
そういえば https://wiki.mozilla.org/B2G/Hacking っていう
ページがあってHackの仕方が書いてあるぽいんだけど誰か?
FAQ
• ソースコードの接頭子のNSは何の略?
– Netscapeのこと。NextStepではない。S
• 時折みる接頭子のMozはどういう意味?
– 独自実装されたもの(Web標準化前を含む)
– o(opera)とか色々あるが、最近のトレンドとしてconfigや開発
者版のみなど使える環境を限定してたくさん接頭子が乱立しな
いように工夫した上で接頭子を使わないケースもある
• IDLってバインディングに使ってるんじゃない?
– 実は3種類ある!S
– JSのバインディング、FirefoxのAPI(XPCOM)、プロセス間通
信(pidl)

More Related Content

What's hot

What's hot (11)

M5StackにFPGAをつないでみた
M5StackにFPGAをつないでみたM5StackにFPGAをつないでみた
M5StackにFPGAをつないでみた
 
GnukトークンでSSH
GnukトークンでSSHGnukトークンでSSH
GnukトークンでSSH
 
Firefox OS for Embedded System
Firefox OS for Embedded SystemFirefox OS for Embedded System
Firefox OS for Embedded System
 
Debian tokyo-20150224-01
Debian tokyo-20150224-01Debian tokyo-20150224-01
Debian tokyo-20150224-01
 
nfcpy 0.10.0 でハマった話
nfcpy 0.10.0 でハマった話nfcpy 0.10.0 でハマった話
nfcpy 0.10.0 でハマった話
 
ESP32開発環境まとめ
ESP32開発環境まとめESP32開発環境まとめ
ESP32開発環境まとめ
 
AndroidでFeliCaの履歴を読もう
AndroidでFeliCaの履歴を読もうAndroidでFeliCaの履歴を読もう
AndroidでFeliCaの履歴を読もう
 
4th tokushimaapp
4th tokushimaapp4th tokushimaapp
4th tokushimaapp
 
Pythonについて
PythonについてPythonについて
Pythonについて
 
Outsmarting Smartphone Apps
Outsmarting Smartphone AppsOutsmarting Smartphone Apps
Outsmarting Smartphone Apps
 
Html5jplat 7th webはいつもあなたを見守っている
Html5jplat 7th   webはいつもあなたを見守っているHtml5jplat 7th   webはいつもあなたを見守っている
Html5jplat 7th webはいつもあなたを見守っている
 

Viewers also liked

Anroid Design Guide 3つのポイント
Anroid Design Guide 3つのポイントAnroid Design Guide 3つのポイント
Anroid Design Guide 3つのポイント
Masahiro Hidaka
 
Google I/O 2011 HowToADK
Google I/O 2011 HowToADKGoogle I/O 2011 HowToADK
Google I/O 2011 HowToADK
Masahiro Hidaka
 
書籍制作でReVIEWを使う実践ワークフロー
書籍制作でReVIEWを使う実践ワークフロー書籍制作でReVIEWを使う実践ワークフロー
書籍制作でReVIEWを使う実践ワークフロー
Masahiro Hidaka
 

Viewers also liked (18)

Fxos lt1 shino_merry_mhidaka
Fxos lt1 shino_merry_mhidakaFxos lt1 shino_merry_mhidaka
Fxos lt1 shino_merry_mhidaka
 
Android bluetooth
Android bluetoothAndroid bluetooth
Android bluetooth
 
Developers Summit 2017 17-A-7 執筆を支える技術と技術書のトレンド
Developers Summit 2017 17-A-7 執筆を支える技術と技術書のトレンドDevelopers Summit 2017 17-A-7 執筆を支える技術と技術書のトレンド
Developers Summit 2017 17-A-7 執筆を支える技術と技術書のトレンド
 
DroidKaigi - Welcome talk
DroidKaigi - Welcome talkDroidKaigi - Welcome talk
DroidKaigi - Welcome talk
 
Anroid Design Guide 3つのポイント
Anroid Design Guide 3つのポイントAnroid Design Guide 3つのポイント
Anroid Design Guide 3つのポイント
 
Android端末の選び方
Android端末の選び方Android端末の選び方
Android端末の選び方
 
Androidの衝撃 クラウドで進化する組込システム
Androidの衝撃 クラウドで進化する組込システムAndroidの衝撃 クラウドで進化する組込システム
Androidの衝撃 クラウドで進化する組込システム
 
RecentApps
RecentAppsRecentApps
RecentApps
 
失敗しない!Androidアプリ開発最前線!
失敗しない!Androidアプリ開発最前線!失敗しない!Androidアプリ開発最前線!
失敗しない!Androidアプリ開発最前線!
 
DroidKaigi 2017 welcometalk DAY01
DroidKaigi 2017 welcometalk DAY01DroidKaigi 2017 welcometalk DAY01
DroidKaigi 2017 welcometalk DAY01
 
Android Studio First Step Guide
Android Studio First Step GuideAndroid Studio First Step Guide
Android Studio First Step Guide
 
Google I/O 2011 HowToADK
Google I/O 2011 HowToADKGoogle I/O 2011 HowToADK
Google I/O 2011 HowToADK
 
Androidアプリのストレージ戦略
Androidアプリのストレージ戦略Androidアプリのストレージ戦略
Androidアプリのストレージ戦略
 
DroidKaigi 2017 welcometalk DAY02
DroidKaigi 2017 welcometalk DAY02DroidKaigi 2017 welcometalk DAY02
DroidKaigi 2017 welcometalk DAY02
 
新版 OutOfMemoryErrorを知る
新版 OutOfMemoryErrorを知る新版 OutOfMemoryErrorを知る
新版 OutOfMemoryErrorを知る
 
Google I/O 報告会 Overview
Google I/O 報告会 OverviewGoogle I/O 報告会 Overview
Google I/O 報告会 Overview
 
Android Things Latest News / Aug 25, 2017
Android Things Latest News / Aug 25, 2017Android Things Latest News / Aug 25, 2017
Android Things Latest News / Aug 25, 2017
 
書籍制作でReVIEWを使う実践ワークフロー
書籍制作でReVIEWを使う実践ワークフロー書籍制作でReVIEWを使う実践ワークフロー
書籍制作でReVIEWを使う実践ワークフロー
 

Similar to Gecko入門 - Introduction to Gecko -

Firefox OS - Blaze Your Own Path
Firefox OS - Blaze Your Own PathFirefox OS - Blaze Your Own Path
Firefox OS - Blaze Your Own Path
dynamis
 
関西Firefox os勉強会1st発表資料130615fin
関西Firefox os勉強会1st発表資料130615fin関西Firefox os勉強会1st発表資料130615fin
関西Firefox os勉強会1st発表資料130615fin
yosuke_kirihata
 
Firefox mobile for android internals
Firefox mobile for android internalsFirefox mobile for android internals
Firefox mobile for android internals
Makoto Kato
 
Nseg3 firefoxとmozillaコミュニティの紹介
Nseg3 firefoxとmozillaコミュニティの紹介Nseg3 firefoxとmozillaコミュニティの紹介
Nseg3 firefoxとmozillaコミュニティの紹介
hATrayflood
 

Similar to Gecko入門 - Introduction to Gecko - (20)

20150117 gunmaweb Firefox OSの紹介
20150117 gunmaweb Firefox OSの紹介20150117 gunmaweb Firefox OSの紹介
20150117 gunmaweb Firefox OSの紹介
 
Mobile + HTML5
Mobile + HTML5Mobile + HTML5
Mobile + HTML5
 
Firefox OS - Blaze Your Own Path
Firefox OS - Blaze Your Own PathFirefox OS - Blaze Your Own Path
Firefox OS - Blaze Your Own Path
 
Firefox OS 起動の仕組みを調べてみた
Firefox OS 起動の仕組みを調べてみたFirefox OS 起動の仕組みを調べてみた
Firefox OS 起動の仕組みを調べてみた
 
関西Firefox os勉強会1st発表資料130615fin
関西Firefox os勉強会1st発表資料130615fin関西Firefox os勉強会1st発表資料130615fin
関西Firefox os勉強会1st発表資料130615fin
 
きつねさんでもわかる Firefox OS コードリーディング入門
きつねさんでもわかる Firefox OS コードリーディング入門きつねさんでもわかる Firefox OS コードリーディング入門
きつねさんでもわかる Firefox OS コードリーディング入門
 
Firefox mobile for android internals
Firefox mobile for android internalsFirefox mobile for android internals
Firefox mobile for android internals
 
Firefox osで変わるアプリケーションの開発ライフサイクル
Firefox osで変わるアプリケーションの開発ライフサイクルFirefox osで変わるアプリケーションの開発ライフサイクル
Firefox osで変わるアプリケーションの開発ライフサイクル
 
20141115グンマーのヤボー
20141115グンマーのヤボー20141115グンマーのヤボー
20141115グンマーのヤボー
 
20150317 firefox os勉強会
20150317 firefox os勉強会20150317 firefox os勉強会
20150317 firefox os勉強会
 
Nseg3 firefoxとmozillaコミュニティの紹介
Nseg3 firefoxとmozillaコミュニティの紹介Nseg3 firefoxとmozillaコミュニティの紹介
Nseg3 firefoxとmozillaコミュニティの紹介
 
Firefox OSのアーキテクチャと構成技術
Firefox OSのアーキテクチャと構成技術Firefox OSのアーキテクチャと構成技術
Firefox OSのアーキテクチャと構成技術
 
FirefoxOS を AndroidStick で動かしてみた(updated)
FirefoxOS を AndroidStick で動かしてみた(updated)FirefoxOS を AndroidStick で動かしてみた(updated)
FirefoxOS を AndroidStick で動かしてみた(updated)
 
keep it real
keep it realkeep it real
keep it real
 
ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414
 
Xcode 5 で見つけた「どうでもいい」機能(厳選6つ) #cocoa_kansai, #yidev
Xcode 5 で見つけた「どうでもいい」機能(厳選6つ) #cocoa_kansai, #yidevXcode 5 で見つけた「どうでもいい」機能(厳選6つ) #cocoa_kansai, #yidev
Xcode 5 で見つけた「どうでもいい」機能(厳選6つ) #cocoa_kansai, #yidev
 
深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル
 
Firefox FAQ
Firefox FAQFirefox FAQ
Firefox FAQ
 
SORACOM UG 広島 #2 | SORACOM の紹介から SORACOM Conference "Discovery" 2018 SORACOM ...
SORACOM UG 広島 #2 | SORACOM の紹介から SORACOM Conference "Discovery" 2018 SORACOM ...SORACOM UG 広島 #2 | SORACOM の紹介から SORACOM Conference "Discovery" 2018 SORACOM ...
SORACOM UG 広島 #2 | SORACOM の紹介から SORACOM Conference "Discovery" 2018 SORACOM ...
 
Xcode 再入門「Xcode の検索機能」 #さいたまdev
Xcode 再入門「Xcode の検索機能」 #さいたまdevXcode 再入門「Xcode の検索機能」 #さいたまdev
Xcode 再入門「Xcode の検索機能」 #さいたまdev
 

More from Masahiro Hidaka

DroidKaigi 2018 Android Back to the Future
DroidKaigi 2018 Android Back to the FutureDroidKaigi 2018 Android Back to the Future
DroidKaigi 2018 Android Back to the Future
Masahiro Hidaka
 
ETWest2012 コミュニティセッション
ETWest2012 コミュニティセッションETWest2012 コミュニティセッション
ETWest2012 コミュニティセッション
Masahiro Hidaka
 

More from Masahiro Hidaka (11)

DroidKaigi 2019 WelcomeTalk
DroidKaigi 2019 WelcomeTalkDroidKaigi 2019 WelcomeTalk
DroidKaigi 2019 WelcomeTalk
 
Google I/O 2018 KeynoteとDeveloper KeynoteのOverview
Google I/O 2018 KeynoteとDeveloper KeynoteのOverviewGoogle I/O 2018 KeynoteとDeveloper KeynoteのOverview
Google I/O 2018 KeynoteとDeveloper KeynoteのOverview
 
DroidKaigi 2018 Android Back to the Future
DroidKaigi 2018 Android Back to the FutureDroidKaigi 2018 Android Back to the Future
DroidKaigi 2018 Android Back to the Future
 
DroidKaigi 2018 WelcomeTalk
DroidKaigi 2018 WelcomeTalk DroidKaigi 2018 WelcomeTalk
DroidKaigi 2018 WelcomeTalk
 
KotlinConf Recap
KotlinConf RecapKotlinConf Recap
KotlinConf Recap
 
コミュニティ活動と企業の相互作用 ~コミュニティへの貢献と組織活動への還元~
コミュニティ活動と企業の相互作用 ~コミュニティへの貢献と組織活動への還元~コミュニティ活動と企業の相互作用 ~コミュニティへの貢献と組織活動への還元~
コミュニティ活動と企業の相互作用 ~コミュニティへの貢献と組織活動への還元~
 
Google I/O 2017 Extended: Android O And Android Studio
Google I/O 2017 Extended: Android O And Android StudioGoogle I/O 2017 Extended: Android O And Android Studio
Google I/O 2017 Extended: Android O And Android Studio
 
Devsumi2013 15-C-1 実践!スマホアプリのマネタイズ!! ~マーケット把握術と iPhone&Androidプログラミングテクニック~
Devsumi2013 15-C-1 実践!スマホアプリのマネタイズ!! ~マーケット把握術と iPhone&Androidプログラミングテクニック~Devsumi2013 15-C-1 実践!スマホアプリのマネタイズ!! ~マーケット把握術と iPhone&Androidプログラミングテクニック~
Devsumi2013 15-C-1 実践!スマホアプリのマネタイズ!! ~マーケット把握術と iPhone&Androidプログラミングテクニック~
 
Android カスタムROMの作り方
Android カスタムROMの作り方Android カスタムROMの作り方
Android カスタムROMの作り方
 
ETWest2012 コミュニティセッション
ETWest2012 コミュニティセッションETWest2012 コミュニティセッション
ETWest2012 コミュニティセッション
 
Android gameprogramming
Android gameprogrammingAndroid gameprogramming
Android gameprogramming
 

Recently uploaded

Recently uploaded (7)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 

Gecko入門 - Introduction to Gecko -