SlideShare a Scribd company logo
OpenBinder
~Android IPC の 2 回目 ~
横浜 Android プラットフォーム部
第 11 回勉強会
2011/7/19
@l_b__
今日の内容
● OpenBinder のドキュメントを読んでみたら非常に興味深
かったので内容のご紹介。
● 元ネタは OpenBinder のアーカイブ
(http://www.angryredplanet.com/~hackbod/openbinder/)
 と
Introduction to OpenBinder and Interview with
Dianne Hackborn
(http://www.osnews.com/story/13674/Introduction_to_OpenBinder_and_I
nterview_with_Dianne_Hackborn)
OpenBinder って ?
●元々は Next Generation BeOS に採用される予定
だった。
●UNIX の CORBA 、 Windows の COM のように分散
コンポーネント環境を提供するフレームワーク。
 以上第 3 回の勉強会資料から。
 実はここに全部答えがありました。
今日の結論
● OpenBinder は COM です。
COM って ?
● この結論でなるほどと分かる方は今日の話は面
白くないかも。
● COM についてはあまり知らなかったので、その辺
も色々調べてみたというのが今日の内容です。
OpenBinder って ?
● The Binder could be described as a "framework
framework". It doesn't do anything itself, but is an
enabling tool for implementing other rich frameworks,
such as the view hierarchy, media framework, etc.
  (OpenBinder Binder Kit の説明から )
OpenBinder って ?
● OpenBinder was really designed as an operating
system component framework.
( インタビューから )
● つまり、 OpenBinder は OS 上に View フレームワークや
Media フレームワークなどを構築するためのコンポーネン
トフレームワークであり、
“ ”フレームワークのためのフレームワーク 。
分散コンポーネント環境
● 分散コンポーネント / 分散オブジェクトとは
● システムを機能分割し、適切に ( ネットワーク上のマシンに )
配置
● 機能をコンポーネント化して再利用性を高める
● 標準化された呼び出し規約を使用して、離れた位置に配置
された機能を簡単に利用可能にする。
● 代表的な技術に CORBA 、 JavaRMI/EJB 、 COM(COM+)
等。
分散コンポーネント / オブジェクトの仕
組み
● 以下、 @IT 「スキルアップのための分散オブジェク
ト入門」から色々抜粋
● オブジェクトインターフェースを定義
● リモートオブジェクトを呼び出すためのインターフェースを定
義する必要がある。
● CORBA 、 COM は IDL(Interface Definition Language) で
定義。
● JavaRMI は Java の Interface で定義。
分散コンポーネント / オブジェクトの仕
組み
● スタブとスケルトン
● インターフェース定義をコンパイルして、ローカルクライアン
ト側で使用するスタブと、リモート側のスケルトンを生成
する。
スタブとスケルトンの役割
スタブの役割
● スタブはリモートオブジェクトと同じメソッド、プロパティを持
ち、プロキシとして動作する。
● ローカルクライアントはスタブにアクセスすることで、あたかも
リモートオブジェクトに直接アクセスするかのように操作でき
る。
● 実際の呼び出しは、スタブと下の ORB(Object Request
Broker) ランタイムがパラメータをマーシャリング ( 共通データ
形式変換 ) してリモートにメッセージ送信する。
スケルトンの役割
● クライアントから来たメッセージをアンマーシャリン
グしてリモートオブジェクトに渡して呼び出し、結果
をマーシャリングしてクライアントに返す。
分散システムの機能の特徴
● リモートオブジェクトを bind( 登録 )
● bind されたリモートオブジェクトを lookup( 検索 )
● lookup したリモートオブジェクトを call( 呼び出し )
する仕組みを持っている。
分散システムの機能の特徴
● ブラウザと Web サーバと DNS の仕組みも同じ。
 以上の機能を代表的な技術で見てみると
CORBA の場合
● 特定 OS や言語に依存しない共通プラットフォー
ム
● IDL(Interface Definition Language) で呼び出し
先オブジェクトインターフェースを定義
● IIOP(Interner Inter-ORB Protocol) で COM や
JavaRMI 等とも通信可能
CORBA の場合
● IDL を作成し、 IDL コンパイラでコンパイルしてス
タブとスケルトンを作成。
● スタブとスケルトンをそれぞれの言語で実装。
● オブジェクトの登録はいろいろなサービスが用意
されている。 1 例としてネーミングサービス。名前
で登録して名前で検索できる。
JavaRMI の場合
● 特定 OS に依存しない Java プラットフォーム
● IDL は使わず、 Java のインターフェースでリモート
インターフェースを定義
JavaRMI の場合
● インターフェースを定義、これを実装するリモート
オブジェクトクラスを作成する。
● リモートオブジェクトクラスから rmic コンパイラで
スタブとスケルトンを生成する。
● リモートオブジェクトを RMI レジストリか JNDI
(Java Naming and Directory Interface) に登録
する。
JavaRMI の場合
● クライアントは RMI レ
ジストリ /JNDI からリ
モートオブジェクト参照
を取り出し、スタブを
使ってアクセスする。
COM/COM+ の場合
● Windows プラットフォーム上で特定言語に依存しない。
● スクリプト言語ではオートメーション (IDL コンパイラによる
事前の静的処理でなく、実行時に動的にインターフェース
を取得してリモートオブジェクトを呼び出す ) サポート。
● 複数のインターフェースをサポートするコンポーネントを
構築するための IUnknown インターフェース。
COM/COM+ の特徴
● オブジェクト登録・呼び出しにはレジストリを使用。
● 全インターフェースは IUnknown インターフェースを継承
し、 AddRef 、 Release 、 QueryInterface 関数を実装する。
● AddRef 、 Release はオブジェクトの参照カウントを増
減させるために使用される。
● QueryInterface はコンポーネントが実装する他のイン
ターフェースを取得するために使用される。
COM/COM+ の特徴
● COM+ オブジェクトは、自分を参照しているクライ
アントをカウントし、参照カウント 0 になったら自ら
を削除する。
● サーバ側は ping を使ってクライアントの生存確認
を行い、メッセージが戻らない場合は参照カウント
を減らす。
参照カウント
● ガベージコレクタの動作方法の一つ
● オブジェクトに対し、どれだけ参照されているかの
値。
● 参照カウント 0 なら参照されなくなったということ
で削除。
参照カウントの例
class A { public B b;}
class B { public A a;}
public class Test {
public static void main(String[] args) {
A a = new A();
B b = new B();
a.b = b;
b.a = a;
  }
}
参照カウントの例
●A を生成  A の参照カウント 1
●B を生成  B の参照カウント 1
●A から B を参照  B の参照カウント 2
●B から A を参照  A の参照カウント 2
Test
Object A Object B
① ②
③
④
参照カウントの問題点
● 循環参照が発生すると、到達不可能なオブジェク
トも解放できなくなる。
循環参照の例
class A { public B b;}
class B { public A a;}
public class Test {
public static void main(String[] args) {
A a = new A();
B b = new B();
a.b = b;
b.a = a;
a = null;
b = null;
  }
}
循環参照の例
●A を生成  A の参照カウント 1
●B を生成  B の参照カウント 1
●A から B を参照  B の参照カウント 2
●B から A を参照  A の参照カウント 2
●A への参照を削除  A の参照カウント 1
●B への参照を削除  B の参照カウント 1
A 、 B は到達不可能だが
参照カウントは 1 のまま
Test
Object A Object B
①
②
③
④
⑤ ⑥
弱い参照
● 循環参照を防ぐために、弱い参照を用いることが
出来る。
● 他の強参照が無くなると参照カウント 0 となって
削除される。
Test
Object A Object B
①
②
③
④
⑤ ⑥
弱い参照の例
●A を生成  A の参照カウント 1
●B を生成  B の参照カウント 1
●A から B を参照 弱参照のため B の参照カウントは増えない
●B から A を参照 弱参照のため A の参照カウントは増えない
●A への参照を削除  A の参照カウント 0
●B への参照を削除  B の参照カウント 0
A 、 B は参照カウント 0 になり、
自分を削除する。
ようやく本題
● OpenBinder を分散オブジェクト技術として見ると。
● C++ で記述、プラットフォームには依存しないが、実装は最終的に Linux
向け。
● IDL で呼び出し先オブジェクトインターフェースを定義。
● 複数のインターフェースをサポートするコンポーネントを構築するための
IInterface や IBinder インターフェース。
● リモートオブジェクトを参照カウントによって監視。
● ネットワークには非対応、 Binder カーネルドライバによる IPC をコンポー
ネント間に使用。
ソース構成
build ビルドの出力先
build_system make ベースの build システム
commands Linux のコマンドラインツール
components Binder コンポーネント
docs ドキュメント
headers OpenBinderAPI ヘッダファイル
interfaces 公開 API 中の IDL ファイル
libraries OpenBinder ライブラリ
modules Binder カーネルモジュール
samples サンプルコード
scripts Linux/Binder シェル向けスクリプト
servers Binder 実行環境向けデーモン
tools システム生成用 Linux コマンドラインツール
Binder の特徴
● フォーカスする対象が Handheld(Be InternetAppliance,
Palm) なので、ネットワーク間ではなく、プロセス間の分散
システムとして設計
● 50MHz ARM7 から 400MHz ARM9 がターゲット
● コンポーネントモデルを取り入れることでシステム構成が
柔軟に
● プロセス間で処理を分散することで Robust
Binder と COM の相違点
● COM は C ベースだが、 Binder は C++ ベースなのでよ
りオブジェクト指向な実装となっていて、またスマートポイ
ンタのような高度な機能を使用できる
● COM ではスクリプトをサポートするには IDispatch を実
装する必要があるが、全ての Binder オブジェクトはスクリ
プト実行可能
● Binder はマルチスレッド対応としてデザインされていて、
SLocker や SHandler のようなクラスが用意されている。
BinderAPI 規約から抜粋
● クラス名
● I で始まるクラスは Binder インターフェー
ス。 IBinder を除き IInterface を継承。
● B は BBinder に直接 / 間接的に由来する Binder
クラス。大体は Concrete Class 。
● S はその他のクラス。 SValue などのデータ型が多
いが、 SAtom や SHandler のようなものもある。
BinderAPI 規約から抜粋
● メモリ管理
● 通常 Stack-base と参照カウントの 2 種類のクラス
を使う。
● 参照カウントされるクラスは SAtom(SLightAtom 、
SLimAtom) 由来。 I 、 B で始まる全てのクラスは
参照カウントされる。
● 参照カウントされるクラスは必ず new で生成され、
sptr<> 、 wptr<> を用いる。
BinderAPI 規約から抜粋
● メモリ管理
● Stack-Base クラスは大体データ型クラス
● new では生成せず、スタック上や SVector<> 等の
コンテナ上で生成。
● 値渡しで使用する。 Copy-On-Wright Semantics
が使用される。
● SSharedBuffer は以上の全ての特徴を持つ。
SupportKit
● OpenBinder は SupportKit 、 BinderKit 、 StorageKit 等
から成る。
● SupportKit は便利なユーティリティや通常処理のための
スイートで構成される。
● データ型、コンテナ、メモリ管理、スレッド処理、文字列処
理等。
● SHandler 、 SMessage のようなイベントループの仕組み
も。
BinderKit
● OpenBinder の本体。分散オブジェクトを使った
framework のための Framework 。
● ネットワークを使う COM や CORBA と違い、 Binder IPC
Mechanism を使用したメッセージング。
● manifest ファイルベースのコンポーネント登録
Binder サービス呼び出し
#include <services/Informant.h>
sptr<IBinder> informantBinder
= Context().LookupService(SString("informant"));
sptr<IInformant> informant
= interface_cast<IInformant>(informantBinder);
if (informant != NULL) {
informant->Inform( SValue::String("myMessage"),
SValue::String("myData") );
}
Binder オブジェクト作成
#include <services/Informant.h>
class MyWatcher : public BnInformed, public SPackageSptr
{
public:
MyWatcher(const SContext& context)
: BnInformed(context)
{}
void OnInform( const SValue& information,
const SValue& cookie, const SValue& key)
{
bout << "Got informed: " << information << endl;
}
};
SPackageSptr は PackageManag-
er のクラス。参照がある限りロードさ
れたままにする。
BnInformed は IInformant.idl から
IDL コンパイラで生成されたクラス
Binder オブジェクトをサービスに
#include <services/Informant.h>
sptr<IInformant> informant =
interface_cast<IInformant>(
Context().LookupService(SString("informant")));
sptr<IBinder> informed = new MyWatcher;
if (informant != NULL && informed != NULL)
{
informant->RegisterForCallback(
SValue::String("myMessage"), informed,
SValue::String("OnInform"));
}
Binder コンポーネント作成
● コンポーネント化するには以下が必要。
● Manifest の作成
● PackageManager がインスタンス生成時に呼ぶ
Factory メソッドの追加
● Manifest
<manifest>
   <component>
     <interface name="org.openbinder.services.IInformed" />
   </component>
</manifest>
Binder コンポーネント作成
● Factory メソッド
#include <support/InstantiateComponent.h>
sptr<IBinder>
InstantiateComponent( const SString& component,
const SContext& context,
const SValue &args)
{
if (component == "")
return static_cast<BnInformed*>(new MyWatcher(context));
return NULL;
}
コンポーネント Makefile
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
BASE_PATH:= $(LOCAL_PATH)
PACKAGE_NAMESPACE:= org.openbinder.samples
PACKAGE_LEAF:= MyWatcher
SRC_FILES:= 
MyWatcher.cpp
include $(BUILD_PACKAGE)
BinderShell
● Binder コンポーネントをコマンドライン操作できる Binder
Shell が用意されている。
● C++ を使わなくても Binder コンポーネントにアクセス可
能。
● 詳細は割愛。
Binder 用語解説
● Binder
● "The Binder” は Binder アーキテクチャ全般を指
す。
● "a Binder” は BinderInterface の実装を指す。
● Binder Object
● IBinder の実装エンティティ。大抵は BBinder を継
承するクラスのこと。
Binder 用語解説
● Component
● PackageManager に公開された Binder オブジェ
クト。 Java ライクな NamingScheme を使用。
● Package
● 1 つ以上のコンポーネント実装を含む。
● コンポーネント実装、 Manifest から成る。
● COM と違い、コンポーネント情報は静的に扱われ
る。
Binder 用語解説
● PackageManager
● 使用可能なコンポーネントを追跡管理する。
● コンポーネントを動的に生成し、管理する。
● /packages/components 以下に配置されたコン
ポーネントを Binder の名前空間を使ってロード、
インスタンス生成できるようにする。
Binder 用語解説
● Interface
● Binder オブジェクトが実装するメソッド、プロパ
ティ、イベントなどの定義、 IDL として記述さ
れ、 Pidgen(IDL コンパイラ ) で C++ のヘッダと
実装に変換される。
● Bn* クラスが Pidgen で生成されるので、 BBinder
ではなくこちらを継承してクラスを実装する。
Binder 用語解説
● Context
● 各 Binder オブジェクトは SContext で表され
る "context” 中に生成される。
● context はオブジェクトがアクセスできるサービス、
設定等の Global な状態を保持している。
Binder 用語解説
● Service
● /service に公開され、事前に生成される Binder オ
ブジェクト。大抵システム起動時に起動される。
Binder IPC メカニズム
● カーネルモジュールを使用したプロセス間通信の仕組
み。
● 標準 LinuxIPC の代わりに使われ、効率的に「スレッド移
送」として IPC 操作を行うことが出来る。
● ioctl() を使っての read-write として実装されている。
まとめ
● OpenBinder ドキュメントには他ではあまり見ない Binder
の設計思想が書かれている。
● Binder は分散オブジェクトプラットフォームの事であ
り、 IPC はあくまでオブジェクト間のメッセージングに特化
した部分に過ぎない。
最後に
● Binder を理解するためには、 OpenBinder ドキュメントの
● Binder Overview
● API Conventions
● SHandler Patterns
● Binder Recipes
● Binder Terminology
● Binder IPC Mechanism
あたりを読むことをお勧めします。

More Related Content

What's hot

プロトコル拡張の話? #WWDC21cafe
プロトコル拡張の話? #WWDC21cafeプロトコル拡張の話? #WWDC21cafe
プロトコル拡張の話? #WWDC21cafe
Tomohiro Kumagai
 
2012-09-09.nagoyapm07
2012-09-09.nagoyapm072012-09-09.nagoyapm07
2012-09-09.nagoyapm07
IWATA Susumu
 
linq.js - Linq to Objects for JavaScript
linq.js - Linq to Objects for JavaScriptlinq.js - Linq to Objects for JavaScript
linq.js - Linq to Objects for JavaScript
Yoshifumi Kawai
 
Pythonで始めるWebアプリケーション開発
Pythonで始めるWebアプリケーション開発Pythonで始めるWebアプリケーション開発
Pythonで始めるWebアプリケーション開発
Takahiro Kubo
 
Swift : クラス継承とプロトコル拡張を比べてみる #yidev
Swift : クラス継承とプロトコル拡張を比べてみる #yidevSwift : クラス継承とプロトコル拡張を比べてみる #yidev
Swift : クラス継承とプロトコル拡張を比べてみる #yidev
Tomohiro Kumagai
 
NSNotification in Swift #cocoa_kansai
NSNotification in Swift #cocoa_kansaiNSNotification in Swift #cocoa_kansai
NSNotification in Swift #cocoa_kansai
Tomohiro Kumagai
 
Swift ドキュメントコメント
Swift ドキュメントコメントSwift ドキュメントコメント
Swift ドキュメントコメント
Tomohiro Kumagai
 
Ruby way-openstack.keynote
Ruby way-openstack.keynoteRuby way-openstack.keynote
Ruby way-openstack.keynote
Uchio Kondo
 
OCIランタイムの筆頭「runc」を俯瞰する
OCIランタイムの筆頭「runc」を俯瞰するOCIランタイムの筆頭「runc」を俯瞰する
OCIランタイムの筆頭「runc」を俯瞰する
Kohei Tokunaga
 
Groovy Shell Scripting 2015
Groovy Shell Scripting 2015Groovy Shell Scripting 2015
Groovy Shell Scripting 2015
Uehara Junji
 
20170527 inside .NET Core on Linux
20170527 inside .NET Core on Linux20170527 inside .NET Core on Linux
20170527 inside .NET Core on Linux
Takayoshi Tanaka
 
貧乏人でも出来るお手軽docker
貧乏人でも出来るお手軽docker貧乏人でも出来るお手軽docker
貧乏人でも出来るお手軽docker
Kenzo Nagahisa
 
Docker入門 - 基礎編 いまから始めるDocker管理
Docker入門 - 基礎編 いまから始めるDocker管理Docker入門 - 基礎編 いまから始めるDocker管理
Docker入門 - 基礎編 いまから始めるDocker管理
Masahito Zembutsu
 
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏Developers Summit
 
Groovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUGGroovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUG
Uehara Junji
 
Dockerだけではないコンテナのはなし
DockerだけではないコンテナのはなしDockerだけではないコンテナのはなし
Dockerだけではないコンテナのはなし
Katsunori Kanda
 
Swift 構造体の時代 #yidev
Swift 構造体の時代 #yidevSwift 構造体の時代 #yidev
Swift 構造体の時代 #yidev
Tomohiro Kumagai
 
Go MobileでAndroidアプリ開発
Go MobileでAndroidアプリ開発Go MobileでAndroidアプリ開発
Go MobileでAndroidアプリ開発
Takuya Ueda
 
DockerでJupyter使おうぜ
DockerでJupyter使おうぜDockerでJupyter使おうぜ
DockerでJupyter使おうぜ
Satoshi Yazawa
 

What's hot (20)

プロトコル拡張の話? #WWDC21cafe
プロトコル拡張の話? #WWDC21cafeプロトコル拡張の話? #WWDC21cafe
プロトコル拡張の話? #WWDC21cafe
 
Code ignitertalk 01
Code ignitertalk 01Code ignitertalk 01
Code ignitertalk 01
 
2012-09-09.nagoyapm07
2012-09-09.nagoyapm072012-09-09.nagoyapm07
2012-09-09.nagoyapm07
 
linq.js - Linq to Objects for JavaScript
linq.js - Linq to Objects for JavaScriptlinq.js - Linq to Objects for JavaScript
linq.js - Linq to Objects for JavaScript
 
Pythonで始めるWebアプリケーション開発
Pythonで始めるWebアプリケーション開発Pythonで始めるWebアプリケーション開発
Pythonで始めるWebアプリケーション開発
 
Swift : クラス継承とプロトコル拡張を比べてみる #yidev
Swift : クラス継承とプロトコル拡張を比べてみる #yidevSwift : クラス継承とプロトコル拡張を比べてみる #yidev
Swift : クラス継承とプロトコル拡張を比べてみる #yidev
 
NSNotification in Swift #cocoa_kansai
NSNotification in Swift #cocoa_kansaiNSNotification in Swift #cocoa_kansai
NSNotification in Swift #cocoa_kansai
 
Swift ドキュメントコメント
Swift ドキュメントコメントSwift ドキュメントコメント
Swift ドキュメントコメント
 
Ruby way-openstack.keynote
Ruby way-openstack.keynoteRuby way-openstack.keynote
Ruby way-openstack.keynote
 
OCIランタイムの筆頭「runc」を俯瞰する
OCIランタイムの筆頭「runc」を俯瞰するOCIランタイムの筆頭「runc」を俯瞰する
OCIランタイムの筆頭「runc」を俯瞰する
 
Groovy Shell Scripting 2015
Groovy Shell Scripting 2015Groovy Shell Scripting 2015
Groovy Shell Scripting 2015
 
20170527 inside .NET Core on Linux
20170527 inside .NET Core on Linux20170527 inside .NET Core on Linux
20170527 inside .NET Core on Linux
 
貧乏人でも出来るお手軽docker
貧乏人でも出来るお手軽docker貧乏人でも出来るお手軽docker
貧乏人でも出来るお手軽docker
 
Docker入門 - 基礎編 いまから始めるDocker管理
Docker入門 - 基礎編 いまから始めるDocker管理Docker入門 - 基礎編 いまから始めるDocker管理
Docker入門 - 基礎編 いまから始めるDocker管理
 
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
 
Groovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUGGroovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUG
 
Dockerだけではないコンテナのはなし
DockerだけではないコンテナのはなしDockerだけではないコンテナのはなし
Dockerだけではないコンテナのはなし
 
Swift 構造体の時代 #yidev
Swift 構造体の時代 #yidevSwift 構造体の時代 #yidev
Swift 構造体の時代 #yidev
 
Go MobileでAndroidアプリ開発
Go MobileでAndroidアプリ開発Go MobileでAndroidアプリ開発
Go MobileでAndroidアプリ開発
 
DockerでJupyter使おうぜ
DockerでJupyter使おうぜDockerでJupyter使おうぜ
DockerでJupyter使おうぜ
 

Viewers also liked

Stagefright入門
Stagefright入門Stagefright入門
Stagefright入門
l_b__
 
Eclipseを使ったandroid nativeデバッグ
Eclipseを使ったandroid nativeデバッグEclipseを使ったandroid nativeデバッグ
Eclipseを使ったandroid nativeデバッグ
l_b__
 
Yapf2013
Yapf2013Yapf2013
Yapf2013l_b__
 
JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)
l_b__
 
ABS2015 のセッション紹介
ABS2015 のセッション紹介ABS2015 のセッション紹介
ABS2015 のセッション紹介
l_b__
 
PF開発に使えるAOSPのツール達
PF開発に使えるAOSPのツール達PF開発に使えるAOSPのツール達
PF開発に使えるAOSPのツール達
l_b__
 
Stagefright入門
Stagefright入門Stagefright入門
Stagefright入門
l_b__
 
Androidの新ビルドシステム
Androidの新ビルドシステムAndroidの新ビルドシステム
Androidの新ビルドシステム
l_b__
 
Android デバッグ小ネタ
Android デバッグ小ネタAndroid デバッグ小ネタ
Android デバッグ小ネタ
l_b__
 
Android,Brillo,ChromeOS
Android,Brillo,ChromeOSAndroid,Brillo,ChromeOS
Android,Brillo,ChromeOS
l_b__
 

Viewers also liked (10)

Stagefright入門
Stagefright入門Stagefright入門
Stagefright入門
 
Eclipseを使ったandroid nativeデバッグ
Eclipseを使ったandroid nativeデバッグEclipseを使ったandroid nativeデバッグ
Eclipseを使ったandroid nativeデバッグ
 
Yapf2013
Yapf2013Yapf2013
Yapf2013
 
JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)
 
ABS2015 のセッション紹介
ABS2015 のセッション紹介ABS2015 のセッション紹介
ABS2015 のセッション紹介
 
PF開発に使えるAOSPのツール達
PF開発に使えるAOSPのツール達PF開発に使えるAOSPのツール達
PF開発に使えるAOSPのツール達
 
Stagefright入門
Stagefright入門Stagefright入門
Stagefright入門
 
Androidの新ビルドシステム
Androidの新ビルドシステムAndroidの新ビルドシステム
Androidの新ビルドシステム
 
Android デバッグ小ネタ
Android デバッグ小ネタAndroid デバッグ小ネタ
Android デバッグ小ネタ
 
Android,Brillo,ChromeOS
Android,Brillo,ChromeOSAndroid,Brillo,ChromeOS
Android,Brillo,ChromeOS
 

Similar to Open binder

Deep-Dive into Scriptable Build Pipeline
Deep-Dive into Scriptable Build PipelineDeep-Dive into Scriptable Build Pipeline
Deep-Dive into Scriptable Build Pipeline
Haruto Otake
 
130329 04
130329 04130329 04
130329 04openrtm
 
20130329 rtm4
20130329 rtm420130329 rtm4
20130329 rtm4openrtm
 
Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.
Yuki Higuchi
 
Ifcq o smeetup20190517_tokyo_8esp32iot
Ifcq o smeetup20190517_tokyo_8esp32iotIfcq o smeetup20190517_tokyo_8esp32iot
Ifcq o smeetup20190517_tokyo_8esp32iot
If_CQ
 
Make: Ogaki Meeting 2012 Androidロボットサミットin大垣
Make: Ogaki Meeting 2012 Androidロボットサミットin大垣Make: Ogaki Meeting 2012 Androidロボットサミットin大垣
Make: Ogaki Meeting 2012 Androidロボットサミットin大垣三七男 山本
 
TypeScriptでライトニングネットワークを使ってみよう
TypeScriptでライトニングネットワークを使ってみようTypeScriptでライトニングネットワークを使ってみよう
TypeScriptでライトニングネットワークを使ってみよう
bitbank, Inc. Tokyo, Japan
 
A Framework for LightUp Applications of Grani
A Framework for LightUp Applications of GraniA Framework for LightUp Applications of Grani
A Framework for LightUp Applications of Grani
Yoshifumi Kawai
 
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
Preferred Networks
 
Android Studioの魅力
Android Studioの魅力Android Studioの魅力
Android Studioの魅力
Keiji Ariyama
 
KueCon 2020 NA Recap - Building a Global Supercomputer with Virtual Kubelet /...
KueCon 2020 NA Recap - Building a Global Supercomputer with Virtual Kubelet /...KueCon 2020 NA Recap - Building a Global Supercomputer with Virtual Kubelet /...
KueCon 2020 NA Recap - Building a Global Supercomputer with Virtual Kubelet /...
Preferred Networks
 
Android Hacks - 合宿インテント
Android Hacks - 合宿インテントAndroid Hacks - 合宿インテント
Android Hacks - 合宿インテント
Masanori Ohkawara
 
はじめての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
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
ThinReports
 
The Next Generation for C# Developers
The Next Generation for C# DevelopersThe Next Generation for C# Developers
The Next Generation for C# Developers
Takayoshi Tanaka
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
Kohei Tokunaga
 
Web API 通信の符号化について
Web API 通信の符号化についてWeb API 通信の符号化について
Web API 通信の符号化について
幸雄 村上
 
NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法Naruto TAKAHASHI
 
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中
Takako Miyagawa
 
Docker 基本のおさらい
Docker 基本のおさらいDocker 基本のおさらい
Docker 基本のおさらい
Naoki Nagazumi
 

Similar to Open binder (20)

Deep-Dive into Scriptable Build Pipeline
Deep-Dive into Scriptable Build PipelineDeep-Dive into Scriptable Build Pipeline
Deep-Dive into Scriptable Build Pipeline
 
130329 04
130329 04130329 04
130329 04
 
20130329 rtm4
20130329 rtm420130329 rtm4
20130329 rtm4
 
Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.
 
Ifcq o smeetup20190517_tokyo_8esp32iot
Ifcq o smeetup20190517_tokyo_8esp32iotIfcq o smeetup20190517_tokyo_8esp32iot
Ifcq o smeetup20190517_tokyo_8esp32iot
 
Make: Ogaki Meeting 2012 Androidロボットサミットin大垣
Make: Ogaki Meeting 2012 Androidロボットサミットin大垣Make: Ogaki Meeting 2012 Androidロボットサミットin大垣
Make: Ogaki Meeting 2012 Androidロボットサミットin大垣
 
TypeScriptでライトニングネットワークを使ってみよう
TypeScriptでライトニングネットワークを使ってみようTypeScriptでライトニングネットワークを使ってみよう
TypeScriptでライトニングネットワークを使ってみよう
 
A Framework for LightUp Applications of Grani
A Framework for LightUp Applications of GraniA Framework for LightUp Applications of Grani
A Framework for LightUp Applications of Grani
 
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
 
Android Studioの魅力
Android Studioの魅力Android Studioの魅力
Android Studioの魅力
 
KueCon 2020 NA Recap - Building a Global Supercomputer with Virtual Kubelet /...
KueCon 2020 NA Recap - Building a Global Supercomputer with Virtual Kubelet /...KueCon 2020 NA Recap - Building a Global Supercomputer with Virtual Kubelet /...
KueCon 2020 NA Recap - Building a Global Supercomputer with Virtual Kubelet /...
 
Android Hacks - 合宿インテント
Android Hacks - 合宿インテントAndroid Hacks - 合宿インテント
Android Hacks - 合宿インテント
 
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
 
The Next Generation for C# Developers
The Next Generation for C# DevelopersThe Next Generation for C# Developers
The Next Generation for C# Developers
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
 
Web API 通信の符号化について
Web API 通信の符号化についてWeb API 通信の符号化について
Web API 通信の符号化について
 
NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法
 
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中
 
Docker 基本のおさらい
Docker 基本のおさらいDocker 基本のおさらい
Docker 基本のおさらい
 

Recently uploaded

CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 

Recently uploaded (16)

CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 

Open binder