30
Firefox OS コココココココココココ きききききききききき

きつねさんでもわかる Firefox OS コードリーディング入門

Embed Size (px)

Citation preview

Page 1: きつねさんでもわかる Firefox OS コードリーディング入門

Firefox OS コードリーディング入門

きつねさんでもわかる

Page 2: きつねさんでもわかる Firefox OS コードリーディング入門

#fxos

はじめに

コードリーディングとは・・・• 読んで字のごとく、ソースコードを読む事。

エンジニアの「書く」時間と「読む」時間• 殆どのエンジニアは書く自間の方が多い?

オープンソースのコードリーディング• コードリーディングって敷居が高い?

Page 3: きつねさんでもわかる Firefox OS コードリーディング入門

#fxos

本日のアジェンダ読み始める前に(準備編)

1. FirefoxOS ってなぁに2. FirefoxOS のソースはどこにあるの ?

読んで行こう ( 実践編 ).① Gaia ( user interface )

1. どのように読むのか ( ツール説明 )2. 読み方編(デモ)3. デバッグ(デモ)

.② Gecko (browser engine)1. どのように読むのか(ツール説明)2. 読み方編(デモ)

Page 4: きつねさんでもわかる Firefox OS コードリーディング入門

#fxos

FirefoxOS ってなぁに?Mozilla 財団が開発している Web プラットフォーム

HTML5 でアプリの開発を行える

Firefox/Thunderbird でおなじみのブラウザエンジンGecko が ほぼそのまま乗っている

Page 5: きつねさんでもわかる Firefox OS コードリーディング入門

#fxos

FirefoxOS のアーキテクチャ

Gaiaユーザーインタフェース部すべて html5,css,javascript で書かれている。OS とのやり取りは WebAPI(Gecko)側に実装されています。

Geckoアプリケーションランタイム部HTML,css, JavaScript エンジン、 WebAPI の実装があります。

Gonkプラットフォーム部Linux カーネル (AOSP) と HAL で構成されている。

Page 6: きつねさんでもわかる Firefox OS コードリーディング入門

#fxos

本日のスコープGaiaユーザーインタフェース部すべて html5,css,javascript で書かれている。OS とのやり取りは WebAPI(Gecko)側に実装されています。

Geckoアプリケーションランタイム部HTML,css, JavaScript エンジン、 WebAPI の実装があります。

Gonkプラットフォーム部Linux カーネル (AOSP) と HAL で構成されている。

Page 7: きつねさんでもわかる Firefox OS コードリーディング入門

#fxos

ソースコードはどこに?

mozilla-centralhttp://hg.mozilla.org/mozilla-central

Githubhttps://github.com/mozilla-b2g/gaiahttps://github.com/mozilla/gecko-dev

Page 8: きつねさんでもわかる Firefox OS コードリーディング入門

#fxos

よんでみよう

Page 9: きつねさんでもわかる Firefox OS コードリーディング入門

#fxos

Gaia を読もう

Page 10: きつねさんでもわかる Firefox OS コードリーディング入門

#fxos

Gaia を読もうGithubhttps://github.com/mozilla-b2g/gaiahttps://github.com/mozilla/gecko-dev

Page 11: きつねさんでもわかる Firefox OS コードリーディング入門

#fxos

Gaia を読もうMXR (Mozilla Cross Reference)http://mxr.mozilla.org/gaia/

Page 12: きつねさんでもわかる Firefox OS コードリーディング入門

#fxos

Gaia を読もう/apps 直下にアプリのコードが入ってる。

Page 13: きつねさんでもわかる Firefox OS コードリーディング入門

#fxos

Gaia を読もうWebIDE ( デバッグが可能 )https://developer.mozilla.org/ja/docs/Tools/WebIDE

Page 14: きつねさんでもわかる Firefox OS コードリーディング入門

#fxos

Gaia を読もう ( おまけ )

translateZ は GPU を使用するので早い(あと低電力)

子要素だけを回転させるので、子要素のレイアウト変更、塗りつぶしなどによる予期せぬ動作を回避しています。

Page 15: きつねさんでもわかる Firefox OS コードリーディング入門

#fxos

Gaia を読もうOpenGrokreading.fxos.org/source/

Page 16: きつねさんでもわかる Firefox OS コードリーディング入門

#fxos

Gaia を読もう ( まとめ )UI の実装を調べたいときに見るWebAPI の使い方の参考になる

HTML / JavaScript / CSS ベースで書いてある

最初に読むとき、オススメのディレクトリ/apps• firefoxOS 標準インストールされているアプリの格納箇所• WebAPI の実践的な使い方が書かれている。• Keybord, camera, bluetooth… など

割とブレークポイントを用いた動的解析は容易読んで動きが良くわからないときは WebIDE でデバッグするのも有り!

Page 17: きつねさんでもわかる Firefox OS コードリーディング入門

#fxos

Gecko を読もう ( WebAPI )

Page 18: きつねさんでもわかる Firefox OS コードリーディング入門

#fxos

Gecko を読もう ( WebAPI 編 )FirefoxOS と Gecko のバージョンを理解する

Firefox OS Gecko

2.0 32

2.1 34

2.2 37

3.0 ? 41 ?

Page 19: きつねさんでもわかる Firefox OS コードリーディング入門

#fxos

Gecko を読もう ( WebAPI 編 )調べたい API を絞る ( Can I Use )http://caniuse.com/#comparison

Page 20: きつねさんでもわかる Firefox OS コードリーディング入門

#fxos

Gecko を読もう ( WebAPI 編 )調べたい API の仕様を見る ( W3C Document )http://www.w3.org/TR/proximity/

Page 21: きつねさんでもわかる Firefox OS コードリーディング入門

#fxos

Gecko を読もう (Tool 編 )MXR (Mozilla Cross Reference)http://mxr.mozilla.org/mozilla-central/

Page 22: きつねさんでもわかる Firefox OS コードリーディング入門

#fxos

Gecko を読もう (Tool 編 )殆どの場合 /dom 配下に WebAPI の実装がある

Page 23: きつねさんでもわかる Firefox OS コードリーディング入門

#fxos

Gecko を読もう ( おまけ )

一部の近接センサーはバイナリ情報で遠いか近いかと言う情報を観測します。この場合、センサーが返す値は最大検知範囲の値と近い状態の中で、最も小さい値を報告する必要が有ります。

Page 24: きつねさんでもわかる Firefox OS コードリーディング入門

#fxos

Gecko を読もう (Tool 編 )DXR ( 検索性が良い Tool)https://dxr.mozilla.org/mozilla-central/source/

Page 25: きつねさんでもわかる Firefox OS コードリーディング入門

#fxos

Gecko を読もう (Tool 編 )ADB + ( デバッグする )https://developer.mozilla.org/ja/Firefox_OS/Debugging

初心者は同ページの「デバイス上でコンソールログを取る」から始めるのがオススメ。

Page 26: きつねさんでもわかる Firefox OS コードリーディング入門

#fxos

Gecko を読もう ( まとめ )プラットフォーム部分を調べたいときに見るWebAPI の実装とかエンジン部分とか

C,C++ で書かれている

最初に見るべきオススメのディレクトリ/dom• だいたいココに WebAPI の実装がある• レンダリングエンジンとか JS エンジンは別の場所

動的解析が割と大変 (Gaia に比べて )慣れると簡単なのかもしれないけど、未だ慣れない

Page 27: きつねさんでもわかる Firefox OS コードリーディング入門

#fxos

まとめ / オススメ資料• 簡単なまとめ

• コードリーディング入門ノウハウhttps://goo.gl/7Po36g

• Firefox の基本 ( アプリケーション )• つくろう! Firefox OS アプリ

http://www.slideshare.net/chikoski/firefox-os-43867933

• MDN アプリセンターhttps://developer.mozilla.org/ja/Apps

• アーキテクチャ ( 全体像 )• FIrefox OS アーキテクチャクイックツアー

https://prezi.com/dxbgeptaxqtb/firefox-os/

• Firefox Diagramshttps://github.com/sotaroikeda/firefox-diagrams/wiki/Firefox-Diagrams

Page 28: きつねさんでもわかる Firefox OS コードリーディング入門

#fxos

さいごに / イベント紹介• FxOS コードリーディングミートアップ

• ひとりで読まず、みんなで読もうhttps://firefox-os.doorkeeper.jp/

Page 29: きつねさんでもわかる Firefox OS コードリーディング入門

#fxos

さいごに / 個人的な一言最初から全体から把握しようは読まない

モチベーションを維持する為に気になったところからつまみ始めるのがおすすめ。例: 時計アプリの実装方法とか、気になる WebAPI とか

WoT では最も先進的なプラットフォームだと思ってるすべてが Open なのでデバイス系 API を実機付きで手軽に試せるのは FirefoxOS の強み!( 早く CHIRIMEN触りたい・・・ )

Page 30: きつねさんでもわかる Firefox OS コードリーディング入門

#fxos

酒巻瑞穂は自身のポテンシャルを最大限発揮するために常に挑戦を通してその分野への大志を抱く意欲的な専門家である。 以前は物流系での開発、主にデータベース設計やバックエンドのフレームワーク構築 /運用に情熱をかけ、 如何に生産性を上げつつ運用コストを削減するかと言う観点から製造の基盤系技術や学習に挑戦と意欲を出していた。 近年では Web技術を中心としたフロントソフトウェア開発 /製造において、 開発基盤と開発ライフサイクルを如何に効率化 / 高品質化するかに対して情熱を注いでいる。 そこで得た Web技術中心の UI製造ノウハウを元に、業務システムエンジニアに向けたセミナーや勉強会に貢献しているだけでなく、 積極的に Google や Mozilla等の Open系の Web技術コミュニティーにて参加し、将来有力な開発基盤となりそうな OSS のコミッターを目指す野心家でもある。

自己紹介酒巻 瑞穂 ( さかまき みずほ )

グロースエクスパートナーズ フロントエンドエンジニア

Github: https://github.com/MSakamaki

ご清聴ありがとうございました。