SlideShare a Scribd company logo
互換性とコード進化の両立
川口耕介 CloudBees, Inc.
kk@kohsuke.org / @kohsukekawa

©2013 CloudBees, Inc. All Rights Reserved

1
分散・独立・並行開発

©2013 CloudBees, Inc. All Rights Reserved

2
http://commons.wikimedia.org/wiki/File:Close_up_of_Hand_Cut_Jigsaw_Puzzle.JPG
©2013 CloudBees, Inc. All Rights Reserved

3
実行時結合
©2013 CloudBees, Inc. All Rights Reserved

4
共通ライブラリ

ウェブアプリX

モジュールA

モジュールB

ライブラリ v1.0

ライブラリ v2.0

©2013 CloudBees, Inc. All Rights Reserved

5
©2013 CloudBees, Inc. All Rights Reserved

6
©2013 CloudBees, Inc. All Rights Reserved
© いまいまさのぶ

7
プラグイン機構
プラグイン

プラグイン

コア

プラグイン

プラグイン

様々なクラス

©2013 CloudBees, Inc. All Rights Reserved

…

80+のライブラリ

8
拡張ポイント
• コア

interface Animal {
void bark();
}

• プラグイン
@Extension
class Dog implements Animal {
void bark() { print(“ワン!”); }
}
©2013 CloudBees, Inc. All Rights Reserved

9
プラグインはコアをガンガン使う

Project p = …;
Future<Build> f = p.scheduleBuild();
Build b = f.get();

©2013 CloudBees, Inc. All Rights Reserved

10
この苦しみから解脱する方法はないかと
• お釈迦様の絵
• 徐々に蓄積してきたノウハウ・ツールを大公
開

©2013 CloudBees, Inc. All Rights Reserved

11
©2013 CloudBees, Inc. All Rights Reserved

mage © http://sfcitizen.com/blog/wp-content/uploads/2011/11/6302790910_c4eb865892_o-copy.jpg

12
フィールドの隠蔽

class Point {
int x,y;
}

class Point {
int getX();
int getY();
void setX(int);
void setY(int);
}

©2013 CloudBees, Inc. All Rights Reserved

13
インターフェース?抽象クラス?

interface Animal {
void bark();
}

abstract class Animal {
public abstract
void bark();
}

©2013 CloudBees, Inc. All Rights Reserved

14
インターフェース?抽象クラス?

interface Animal {
void bark();
void bark(int times);
}

©2013 CloudBees, Inc. All Rights Reserved

15
インターフェース?抽象クラス?

abstract class Animal {
public abstract void bark();
public void bark(int times) {
for (int i=0; i<times; i++)
bark();
}
}

©2013 CloudBees, Inc. All Rights Reserved

16
ピンポンパターン

abstract class Animal {
@deprecated
public void bark() {
bark(1);
}
public void bark(int times) {
for (int i=0; i<times; i++)
bark();
}
}

©2013 CloudBees, Inc. All Rights Reserved

17
コンストラクタの肥大化
• 外部コードによる
サブクラス化を許可
したい
• GitSCMの例

public GitSCM(
String scmName,
List<UserRemoteConfig> userRemoteConfigs,
List<BranchSpec> branches,
UserMergeOptions userMergeOptions,
Boolean doGenerateSubmoduleConfigurations,
Collection<SubmoduleConfig> submoduleCfg,
boolean clean,
boolean wipeOutWorkspace,
BuildChooser buildChooser, GitRepositoryBrowser browser,
String gitTool,
boolean authorOrCommitter,
String relativeTargetDir,
String reference,
String excludedRegions,
String excludedUsers,
String localBranch,
boolean disableSubmodules,
boolean recursiveSubmodules,
boolean pruneBranches,
boolean remotePoll,
String gitConfigName,
String gitConfigEmail,
boolean skipTag,
String includedRegions,
boolean ignoreNotifyCommit,
boolean useShallowClone) {

©2013 CloudBees, Inc. All Rights Reserved

18
我慢してセッター
class Foo {
void initXYZ(int x, int y, int z) { … }
void initABC(String a, String b, String c) { … }
}

©2013 CloudBees, Inc. All Rights Reserved

19
コンフィグパターン
class FooConfig {
int x,y,z;
String a,b,c;
}

abstract class Foo {
Foo(FooConfig config) {
…
}
}

©2013 CloudBees, Inc. All Rights Reserved

20
©2013 CloudBees, Inc. All Rights Reserved

mage © http://sfcitizen.com/blog/wp-content/uploads/2011/11/6302790910_c4eb865892_o-copy.jpg

21
パッケージ越しにアクセスするた
めにpublicなんだけど、
外部からは使わせたくない

©2013 CloudBees, Inc. All Rights Reserved

22
互換性用に@deprecatedとした
コードを次のステップに進めたい

©2013 CloudBees, Inc. All Rights Reserved

23
だ をつ 修 ア 俺
し く 飾ク俺
て る 子セ
! 道 をス
具

© 小学館

©2013 CloudBees, Inc. All Rights Reserved

24
http://kohsuke.org/access-modifier/
• 独自のアクセスチェッカを定義する
class 俺俺アクセス extends AccessRestriction
{
public void instantiated(loc,target,listener) {
listener.onError(null,loc,
target+“インスタンス生成は禁止”);
}
}
• サブタイプ、読み、書き、呼び出しなど6種
類
©2013 CloudBees, Inc. All Rights Reserved

25
http://kohsuke.org/access-modifier/
• 通常のアクセス修飾子と共に使う
@Restricted(俺俺アクセス.class)
public class Foo {
public String value;
}
• Mavenプラグインがクラスファイルを検査

©2013 CloudBees, Inc. All Rights Reserved

26
©2013 CloudBees, Inc. All Rights Reserved

27
バイナリ互換性を活用
interface Animal {
void bark();
}
class Dog implements Animal {
void bark() { print(“ワン”); }
}

Animal a = new Dog();
a.bark();
©2013 CloudBees, Inc. All Rights Reserved

28
バイナリ互換性を活用
interface Animal {
void bark(int n);
}
1. new Dog()でInstantiationError
class Dog implements Animal{
2. Dog→Animalのキャストで
ClassCastException
void bark() { print(“ワン”); }
3. a.bark(3)でAbstractMethodError
}
4. その他

Animal a = new Dog();
a.bark(3);
©2013 CloudBees, Inc. All Rights Reserved

29
try {
a.bark(3);
} catch (AbstractMethodError e) {
// 互換性モード
…
}

©2013 CloudBees, Inc. All Rights Reserved

30
ジェネリクス
class Foo {
List<Object> getChildren() { … }
}

class Foo {
List<String> getChildren() { … }
}

©2013 CloudBees, Inc. All Rights Reserved

31
ジェネリクス
class Foo<T extends X> implements Future<T> {
T get() { … }
}

class Foo<T extends Y> implements Future<T> {
T get() { … }
}
class Y extends X { … }
©2013 CloudBees, Inc. All Rights Reserved

32
ジェネリクス型変更のルール
• メソッド・フィールドのErasureが変わって
いなければOK
– T<X,Y,…>
→
T
– T extends X →
X
–…

• 検査してくれるツールをいつかは書きたい

©2013 CloudBees, Inc. All Rights Reserved

33
根底のルール
foo/Foo.class
invokevirtual
org.example.Bar#method1(java.lang.String,int,int)boolean
…

org/example/Bar.class

メソッド method1 (java.lang.String,int,int):boolean

©2013 CloudBees, Inc. All Rights Reserved

34
参照解決のルール
• メソッドへの参照
– クラス名:
– メソッド名:
– 戻り値型:
– パラメータ型:

java.lang.String
indexOf
int
java.lang.String,int

• 関連事項
– アクセス修飾子
– 例外

©2013 CloudBees, Inc. All Rights Reserved

35
コード進化のパターン
class Foo {
X get() { … }
}

class Foo {
Y get() { … }
}
class Y extends X { … }
©2013 CloudBees, Inc. All Rights Reserved

36
コード進化のパターン
class Foo {
X get() { … }
}

class Foo {
Y get() { … }
X get() { … }
}
©2013 CloudBees, Inc. All Rights Reserved

37
Bridge Method Injectorプロジェクト bit.ly/b-mi
class Foo {
@WithBridgeMethods(X.class)
Y get() { … }
}

class Foo {
Y get() { … }
X get() { Y y=get(); return y; }
}
©2013 CloudBees, Inc. All Rights Reserved

38
応用
class Foo {
@WithBridgeMethods(value=X.class,
castRequired=true)
Object get() { … }
}
class Foo {
Object get() { … }
X get() { Object o=get(); return (X)o; }
}
©2013 CloudBees, Inc. All Rights Reserved

39
自分はルールを守っていても
モジュールB

ライブラリ 1.0

モジュールA

ライブラリ 2.0

©2013 CloudBees, Inc. All Rights Reserved

40
シェーディング / パッケージ・リネーミング
package org.jenkinsci.foo;
import org.acme.A;
import org.acme.B;
class Foo {
private List<A> a = …;
void bar() { new B().b(); }
}
©2013 CloudBees, Inc. All Rights Reserved

41
シェーディング / パッケージ・リネーミング
package org.jenkinsci.foo;
import hidden.org.acme.A;
import hidden.org.acme.B;
class Foo {
private List<A> a = …;
void bar() { new B().b(); }
}
©2013 CloudBees, Inc. All Rights Reserved

42
シェーディング / パッケージ・リネーミング
• 事後に
– maven-shade-plugin

• 事前に
– 予めリネームしたやつをjarにパッケージしてお
く

©2013 CloudBees, Inc. All Rights Reserved

43
うまくいかない場合もある
• 文字列操作でパッケージ名をいじっている
• META-INF/…
• モジュールの公開APIから参照されている

©2013 CloudBees, Inc. All Rights Reserved

44
©2013 CloudBees, Inc. All Rights Reserved

mage © http://sfcitizen.com/blog/wp-content/uploads/2011/11/6302790910_c4eb865892_o-copy.jpg

45
ありがちなパターン
class Foo {
static final Foo INSTANCE = new Foo();
…
}
class Bar {
void bar() {
doSomethingWith(Foo.INSTANCE);
}
}
©2013 CloudBees, Inc. All Rights Reserved

46
逆立ちしたって無理!
class Foo {
static Foo getInstance() { … }
}

class Bar {
void bar() {
doSomethingWith(Foo.INSTANCE);
}
}

©2013 CloudBees, Inc. All Rights Reserved

47
©2013 CloudBees, Inc. All Rights Reserved

48
書き換え方
class Foo {
@AdaptField(name=“INSTANCE”)
static Foo getInstance() { … }
}

Barのロード時に
書き換え

class Bar {
void bar() {
doSomethingWith(Foo.INSTANCE);
}
}
©2013 CloudBees, Inc. All Rights Reserved

49
Bytecode Compatibility Transformer bit.ly/b-c-t
class Foo {
@AdaptField(name=“INSTANCE”)
static Foo getInstance() { … }
}
foo.jar

Foo.class

変換
定義

©2013 CloudBees, Inc. All Rights Reserved

50
Bytecode Compatibility Transformer bit.ly/b-c-t
• 実行時
– 変換定義 → byte[] transform(byte[] classFile)

独自class loader

foo.jar

bar.jar

変換
定義

©2013 CloudBees, Inc. All Rights Reserved

51
思わぬ落とし穴が!

©2013 CloudBees, Inc. All Rights Reserved

52
思わぬ落とし穴
class Foo {
static Foo INSTANCE;
}
class Bar extends Foo {
void m() {
System.out.println(INSTANCE);
}
Bar#INSTANCE
}
©2013 CloudBees, Inc. All Rights Reserved

53
プログラム変換の利点
• 思い切った書き換え
• 予期しない変更に対応

©2013 CloudBees, Inc. All Rights Reserved

54
プログラム変換の欠点
• 独自のクラスローダが必要

©2013 CloudBees, Inc. All Rights Reserved

55
http://commons.wikimedia.org/wiki/File:Light_Bulb.jpg
©2013 CloudBees, Inc. All Rights Reserved

56
一分で学ぶInvokedynamic
• Java7の新しい機能
• 実行時リンク
• 静的リンクと同じ速度
void foo() {
+リンカの為の追
int x = 5;
加情報
String y = “hello”;
Object o = intとstringからObjectを返す何か(x,y)
return o;
}
+リンカの名前
©2013 CloudBees, Inc. All Rights Reserved

57
http://no-more-tears.kohsuke.org/

class Foo {
void foo() {
Project p = new Project();
Future<Build> f = p.scheduleBuild();
Build b = f.get();
…
}
}

©2013 CloudBees, Inc. All Rights Reserved

58
ビルド時にinvokedynamicに置き換え
new Project()

class Foo {
Project.scheduleBuild()
void foo() {
Project p = [void→Project](this);
Future<Build> f = [Project→Future] (p);
Build b = [Future → Build](f);
…
Future.get()
}
}

©2013 CloudBees, Inc. All Rights Reserved

59
実行時に適宜書き換え

class Foo {
void foo() {
Project p = Project.create();
Future<Build> f = p.scheduleBuild(0);
Build b = f.value;
…
}
}

©2013 CloudBees, Inc. All Rights Reserved

60
まとめ

互換性とコードの進化は両立できる

©2013 CloudBees, Inc. All Rights Reserved

61

More Related Content

What's hot

Cloud Foundry V2を、もうちょっと深掘りしよう
Cloud Foundry V2を、もうちょっと深掘りしようCloud Foundry V2を、もうちょっと深掘りしよう
Cloud Foundry V2を、もうちょっと深掘りしよう
Kazuto Kusama
 
自動化ハンズオン
自動化ハンズオン自動化ハンズオン
自動化ハンズオン
VirtualTech Japan Inc.
 
CoreOS OEM on NIFTY Cloud - CoreOS Meetup Tokyo #1 #coreosjp
CoreOS OEM on NIFTY Cloud - CoreOS Meetup Tokyo #1 #coreosjpCoreOS OEM on NIFTY Cloud - CoreOS Meetup Tokyo #1 #coreosjp
CoreOS OEM on NIFTY Cloud - CoreOS Meetup Tokyo #1 #coreosjp
雄也 日下部
 
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Javaどこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
Toshiaki Maki
 
Introduce that Best practices for writing Dockerfiles
Introduce that Best practices for writing DockerfilesIntroduce that Best practices for writing Dockerfiles
Introduce that Best practices for writing Dockerfiles
Yukiya Hayashi
 
20150101勉強会 dokku alt
20150101勉強会 dokku alt20150101勉強会 dokku alt
20150101勉強会 dokku altShugo Numano
 
kpackによるコンテナイメージのビルド
kpackによるコンテナイメージのビルドkpackによるコンテナイメージのビルド
kpackによるコンテナイメージのビルド
Masanori Nara
 
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけねGitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
Naoto TAKAHASHI
 
st2-docker ことはじめ
st2-docker ことはじめst2-docker ことはじめ
st2-docker ことはじめ
Shu Sugimoto
 
Quarkus による超音速な Spring アプリケーション開発
Quarkus による超音速な Spring アプリケーション開発Quarkus による超音速な Spring アプリケーション開発
Quarkus による超音速な Spring アプリケーション開発
Chihiro Ito
 
自前CF環境を整えよう 2013年11月版
自前CF環境を整えよう 2013年11月版自前CF環境を整えよう 2013年11月版
自前CF環境を整えよう 2013年11月版
Kazuto Kusama
 
Githubを使って簡単に helm repoを公開してみよう
Githubを使って簡単に helm repoを公開してみようGithubを使って簡単に helm repoを公開してみよう
Githubを使って簡単に helm repoを公開してみよう
Shingo Omura
 
第18回Cloud Foundry輪読会用 Buildpackを使ってアプリを 載せるためのアプローチ
第18回Cloud Foundry輪読会用 Buildpackを使ってアプリを 載せるためのアプローチ第18回Cloud Foundry輪読会用 Buildpackを使ってアプリを 載せるためのアプローチ
第18回Cloud Foundry輪読会用 Buildpackを使ってアプリを 載せるためのアプローチ
Takeshi Morikawa
 
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
Masaya Aoyama
 
Japan Container Day 2018
Japan Container Day 2018Japan Container Day 2018
Japan Container Day 2018
Yoshio Terada
 
Jenkins x Kubernetesが簡単だと思ったら大変だった話
Jenkins x Kubernetesが簡単だと思ったら大変だった話Jenkins x Kubernetesが簡単だと思ったら大変だった話
Jenkins x Kubernetesが簡単だと思ったら大変だった話
Masaki Yamamoto
 
Cloud foundry(v2)へアプリを載せ替え
Cloud foundry(v2)へアプリを載せ替えCloud foundry(v2)へアプリを載せ替え
Cloud foundry(v2)へアプリを載せ替え
Takeshi Morikawa
 
AlibabaCloudではじめるKubernetes
AlibabaCloudではじめるKubernetesAlibabaCloudではじめるKubernetes
AlibabaCloudではじめるKubernetes
Shinya Mori (@mosuke5)
 
DockerCon参加報告 (`docker build`が30倍以上速くなる話など)
DockerCon参加報告 (`docker build`が30倍以上速くなる話など)DockerCon参加報告 (`docker build`が30倍以上速くなる話など)
DockerCon参加報告 (`docker build`が30倍以上速くなる話など)
Akihiro Suda
 
BOSH-lite で 1VM Cloud Foundry
BOSH-lite で 1VM Cloud FoundryBOSH-lite で 1VM Cloud Foundry
BOSH-lite で 1VM Cloud Foundry
i_yudai
 

What's hot (20)

Cloud Foundry V2を、もうちょっと深掘りしよう
Cloud Foundry V2を、もうちょっと深掘りしようCloud Foundry V2を、もうちょっと深掘りしよう
Cloud Foundry V2を、もうちょっと深掘りしよう
 
自動化ハンズオン
自動化ハンズオン自動化ハンズオン
自動化ハンズオン
 
CoreOS OEM on NIFTY Cloud - CoreOS Meetup Tokyo #1 #coreosjp
CoreOS OEM on NIFTY Cloud - CoreOS Meetup Tokyo #1 #coreosjpCoreOS OEM on NIFTY Cloud - CoreOS Meetup Tokyo #1 #coreosjp
CoreOS OEM on NIFTY Cloud - CoreOS Meetup Tokyo #1 #coreosjp
 
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Javaどこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
 
Introduce that Best practices for writing Dockerfiles
Introduce that Best practices for writing DockerfilesIntroduce that Best practices for writing Dockerfiles
Introduce that Best practices for writing Dockerfiles
 
20150101勉強会 dokku alt
20150101勉強会 dokku alt20150101勉強会 dokku alt
20150101勉強会 dokku alt
 
kpackによるコンテナイメージのビルド
kpackによるコンテナイメージのビルドkpackによるコンテナイメージのビルド
kpackによるコンテナイメージのビルド
 
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけねGitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
 
st2-docker ことはじめ
st2-docker ことはじめst2-docker ことはじめ
st2-docker ことはじめ
 
Quarkus による超音速な Spring アプリケーション開発
Quarkus による超音速な Spring アプリケーション開発Quarkus による超音速な Spring アプリケーション開発
Quarkus による超音速な Spring アプリケーション開発
 
自前CF環境を整えよう 2013年11月版
自前CF環境を整えよう 2013年11月版自前CF環境を整えよう 2013年11月版
自前CF環境を整えよう 2013年11月版
 
Githubを使って簡単に helm repoを公開してみよう
Githubを使って簡単に helm repoを公開してみようGithubを使って簡単に helm repoを公開してみよう
Githubを使って簡単に helm repoを公開してみよう
 
第18回Cloud Foundry輪読会用 Buildpackを使ってアプリを 載せるためのアプローチ
第18回Cloud Foundry輪読会用 Buildpackを使ってアプリを 載せるためのアプローチ第18回Cloud Foundry輪読会用 Buildpackを使ってアプリを 載せるためのアプローチ
第18回Cloud Foundry輪読会用 Buildpackを使ってアプリを 載せるためのアプローチ
 
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
 
Japan Container Day 2018
Japan Container Day 2018Japan Container Day 2018
Japan Container Day 2018
 
Jenkins x Kubernetesが簡単だと思ったら大変だった話
Jenkins x Kubernetesが簡単だと思ったら大変だった話Jenkins x Kubernetesが簡単だと思ったら大変だった話
Jenkins x Kubernetesが簡単だと思ったら大変だった話
 
Cloud foundry(v2)へアプリを載せ替え
Cloud foundry(v2)へアプリを載せ替えCloud foundry(v2)へアプリを載せ替え
Cloud foundry(v2)へアプリを載せ替え
 
AlibabaCloudではじめるKubernetes
AlibabaCloudではじめるKubernetesAlibabaCloudではじめるKubernetes
AlibabaCloudではじめるKubernetes
 
DockerCon参加報告 (`docker build`が30倍以上速くなる話など)
DockerCon参加報告 (`docker build`が30倍以上速くなる話など)DockerCon参加報告 (`docker build`が30倍以上速くなる話など)
DockerCon参加報告 (`docker build`が30倍以上速くなる話など)
 
BOSH-lite で 1VM Cloud Foundry
BOSH-lite で 1VM Cloud FoundryBOSH-lite で 1VM Cloud Foundry
BOSH-lite で 1VM Cloud Foundry
 

Similar to コードの互換性と進化の両立

爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon
爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon
爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon
Yosaku Toyama
 
第2回デザインパターン資料
第2回デザインパターン資料第2回デザインパターン資料
第2回デザインパターン資料gaaupp
 
QuickDemo HashiCorp Terraform with Microsoft Azure and VMware vSphere
QuickDemo HashiCorp Terraform with Microsoft Azure and VMware vSphereQuickDemo HashiCorp Terraform with Microsoft Azure and VMware vSphere
QuickDemo HashiCorp Terraform with Microsoft Azure and VMware vSphere
Wataru Unno
 
「AROW」お披露目(実用編)
「AROW」お披露目(実用編)「AROW」お披露目(実用編)
「AROW」お披露目(実用編)
Drecom Co., Ltd.
 
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜
Hyperleger Tokyo Meetup
 
Groovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUGGroovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUG
Uehara Junji
 
GoF デザインパターン 2009
GoF デザインパターン 2009GoF デザインパターン 2009
GoF デザインパターン 2009
miwarin
 
Flutterを体験してみませんか
Flutterを体験してみませんかFlutterを体験してみませんか
Flutterを体験してみませんか
cch-robo
 
[1C5] Docker Comose & Swarm mode Orchestration (Japan Container Days - Day1)
[1C5] Docker Comose & Swarm mode Orchestration (Japan Container Days - Day1)[1C5] Docker Comose & Swarm mode Orchestration (Japan Container Days - Day1)
[1C5] Docker Comose & Swarm mode Orchestration (Japan Container Days - Day1)
Masahito Zembutsu
 
Swift2 の新機能 Protocol Extension
Swift2 の新機能 Protocol ExtensionSwift2 の新機能 Protocol Extension
Swift2 の新機能 Protocol Extension
Yuichi Adachi
 
FxUG in Toyama - ASphalt2 container -
FxUG in Toyama - ASphalt2 container -FxUG in Toyama - ASphalt2 container -
FxUG in Toyama - ASphalt2 container -Akio Katayama
 
FxUG in Toyama - ASphalt2 container -
FxUG in Toyama - ASphalt2 container -FxUG in Toyama - ASphalt2 container -
FxUG in Toyama - ASphalt2 container -
Akio Katayama
 
ストリームデータ分散処理基盤Storm
ストリームデータ分散処理基盤Stormストリームデータ分散処理基盤Storm
ストリームデータ分散処理基盤Storm
NTT DATA OSS Professional Services
 
cocos2d-xとネイティブ間の連携
cocos2d-xとネイティブ間の連携cocos2d-xとネイティブ間の連携
cocos2d-xとネイティブ間の連携
Tomoaki Shimizu
 
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?
Takuya Ueda
 
Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方
Yasutaka Kawamoto
 
Javaセキュアコーディングセミナー東京第3回講義
Javaセキュアコーディングセミナー東京第3回講義Javaセキュアコーディングセミナー東京第3回講義
Javaセキュアコーディングセミナー東京第3回講義JPCERT Coordination Center
 
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
Akira Inoue
 
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
Fujio Kojima
 

Similar to コードの互換性と進化の両立 (20)

爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon
爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon
爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon
 
第2回デザインパターン資料
第2回デザインパターン資料第2回デザインパターン資料
第2回デザインパターン資料
 
QuickDemo HashiCorp Terraform with Microsoft Azure and VMware vSphere
QuickDemo HashiCorp Terraform with Microsoft Azure and VMware vSphereQuickDemo HashiCorp Terraform with Microsoft Azure and VMware vSphere
QuickDemo HashiCorp Terraform with Microsoft Azure and VMware vSphere
 
「AROW」お披露目(実用編)
「AROW」お披露目(実用編)「AROW」お披露目(実用編)
「AROW」お披露目(実用編)
 
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜
 
Groovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUGGroovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUG
 
GoF デザインパターン 2009
GoF デザインパターン 2009GoF デザインパターン 2009
GoF デザインパターン 2009
 
Flutterを体験してみませんか
Flutterを体験してみませんかFlutterを体験してみませんか
Flutterを体験してみませんか
 
[1C5] Docker Comose & Swarm mode Orchestration (Japan Container Days - Day1)
[1C5] Docker Comose & Swarm mode Orchestration (Japan Container Days - Day1)[1C5] Docker Comose & Swarm mode Orchestration (Japan Container Days - Day1)
[1C5] Docker Comose & Swarm mode Orchestration (Japan Container Days - Day1)
 
Swift2 の新機能 Protocol Extension
Swift2 の新機能 Protocol ExtensionSwift2 の新機能 Protocol Extension
Swift2 の新機能 Protocol Extension
 
FxUG in Toyama - ASphalt2 container -
FxUG in Toyama - ASphalt2 container -FxUG in Toyama - ASphalt2 container -
FxUG in Toyama - ASphalt2 container -
 
FxUG in Toyama - ASphalt2 container -
FxUG in Toyama - ASphalt2 container -FxUG in Toyama - ASphalt2 container -
FxUG in Toyama - ASphalt2 container -
 
ストリームデータ分散処理基盤Storm
ストリームデータ分散処理基盤Stormストリームデータ分散処理基盤Storm
ストリームデータ分散処理基盤Storm
 
cocos2d-xとネイティブ間の連携
cocos2d-xとネイティブ間の連携cocos2d-xとネイティブ間の連携
cocos2d-xとネイティブ間の連携
 
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?
 
Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方
 
Javaセキュアコーディングセミナー東京第3回講義
Javaセキュアコーディングセミナー東京第3回講義Javaセキュアコーディングセミナー東京第3回講義
Javaセキュアコーディングセミナー東京第3回講義
 
Lithium Labo #1
Lithium Labo #1Lithium Labo #1
Lithium Labo #1
 
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
 
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
 

More from Kohsuke Kawaguchi

Jenkins 2.0 (日本語)
Jenkins 2.0 (日本語)Jenkins 2.0 (日本語)
Jenkins 2.0 (日本語)
Kohsuke Kawaguchi
 
Workflow, container, and beyond
Workflow, container, and beyondWorkflow, container, and beyond
Workflow, container, and beyond
Kohsuke Kawaguchi
 
Jenkins User Conference 東京 2015
Jenkins User Conference 東京 2015Jenkins User Conference 東京 2015
Jenkins User Conference 東京 2015Kohsuke Kawaguchi
 
JavaOne 2014: Next Step in Automation: Elastic Build Environment
JavaOne 2014: Next Step in Automation: Elastic Build EnvironmentJavaOne 2014: Next Step in Automation: Elastic Build Environment
JavaOne 2014: Next Step in Automation: Elastic Build Environment
Kohsuke Kawaguchi
 
On sharing ideas & sharing code
On sharing ideas & sharing codeOn sharing ideas & sharing code
On sharing ideas & sharing code
Kohsuke Kawaguchi
 
Jenkins User Conference 2013: Literate, multi-branch, mobile and more
Jenkins User Conference 2013: Literate, multi-branch, mobile and moreJenkins User Conference 2013: Literate, multi-branch, mobile and more
Jenkins User Conference 2013: Literate, multi-branch, mobile and more
Kohsuke Kawaguchi
 
Jenkins User Conference 2013 Palo Alto: Keynote
Jenkins User Conference 2013 Palo Alto: KeynoteJenkins User Conference 2013 Palo Alto: Keynote
Jenkins User Conference 2013 Palo Alto: Keynote
Kohsuke Kawaguchi
 
Jenkins State of union 2013
Jenkins State of union 2013Jenkins State of union 2013
Jenkins State of union 2013
Kohsuke Kawaguchi
 
How we made jenkins community
How we made jenkins communityHow we made jenkins community
How we made jenkins community
Kohsuke Kawaguchi
 
第六回Jenkins勉強会
第六回Jenkins勉強会第六回Jenkins勉強会
第六回Jenkins勉強会
Kohsuke Kawaguchi
 
Large scale automation with jenkins
Large scale automation with jenkinsLarge scale automation with jenkins
Large scale automation with jenkins
Kohsuke Kawaguchi
 
Jenkins User Conference 2012 San Francisco
Jenkins User Conference 2012 San FranciscoJenkins User Conference 2012 San Francisco
Jenkins User Conference 2012 San Francisco
Kohsuke Kawaguchi
 
Jenkins+Gitによる検証済みマージ(30分版)
Jenkins+Gitによる検証済みマージ(30分版)Jenkins+Gitによる検証済みマージ(30分版)
Jenkins+Gitによる検証済みマージ(30分版)
Kohsuke Kawaguchi
 
ここ最近のJenkins新機能
ここ最近のJenkins新機能ここ最近のJenkins新機能
ここ最近のJenkins新機能
Kohsuke Kawaguchi
 
Jenkins user conference 東京
Jenkins user conference 東京Jenkins user conference 東京
Jenkins user conference 東京
Kohsuke Kawaguchi
 
Dev@cloudの実装
Dev@cloudの実装Dev@cloudの実装
Dev@cloudの実装
Kohsuke Kawaguchi
 
Developer summit continuous deliveryとjenkins
Developer summit   continuous deliveryとjenkinsDeveloper summit   continuous deliveryとjenkins
Developer summit continuous deliveryとjenkins
Kohsuke Kawaguchi
 
Creating a Developer Community
Creating a Developer CommunityCreating a Developer Community
Creating a Developer Community
Kohsuke Kawaguchi
 
Jenkins user conference 2011
Jenkins user conference 2011Jenkins user conference 2011
Jenkins user conference 2011
Kohsuke Kawaguchi
 
プロジェクト現状報告・Rubyによるjenkinsプラグイン開発
プロジェクト現状報告・Rubyによるjenkinsプラグイン開発プロジェクト現状報告・Rubyによるjenkinsプラグイン開発
プロジェクト現状報告・Rubyによるjenkinsプラグイン開発Kohsuke Kawaguchi
 

More from Kohsuke Kawaguchi (20)

Jenkins 2.0 (日本語)
Jenkins 2.0 (日本語)Jenkins 2.0 (日本語)
Jenkins 2.0 (日本語)
 
Workflow, container, and beyond
Workflow, container, and beyondWorkflow, container, and beyond
Workflow, container, and beyond
 
Jenkins User Conference 東京 2015
Jenkins User Conference 東京 2015Jenkins User Conference 東京 2015
Jenkins User Conference 東京 2015
 
JavaOne 2014: Next Step in Automation: Elastic Build Environment
JavaOne 2014: Next Step in Automation: Elastic Build EnvironmentJavaOne 2014: Next Step in Automation: Elastic Build Environment
JavaOne 2014: Next Step in Automation: Elastic Build Environment
 
On sharing ideas & sharing code
On sharing ideas & sharing codeOn sharing ideas & sharing code
On sharing ideas & sharing code
 
Jenkins User Conference 2013: Literate, multi-branch, mobile and more
Jenkins User Conference 2013: Literate, multi-branch, mobile and moreJenkins User Conference 2013: Literate, multi-branch, mobile and more
Jenkins User Conference 2013: Literate, multi-branch, mobile and more
 
Jenkins User Conference 2013 Palo Alto: Keynote
Jenkins User Conference 2013 Palo Alto: KeynoteJenkins User Conference 2013 Palo Alto: Keynote
Jenkins User Conference 2013 Palo Alto: Keynote
 
Jenkins State of union 2013
Jenkins State of union 2013Jenkins State of union 2013
Jenkins State of union 2013
 
How we made jenkins community
How we made jenkins communityHow we made jenkins community
How we made jenkins community
 
第六回Jenkins勉強会
第六回Jenkins勉強会第六回Jenkins勉強会
第六回Jenkins勉強会
 
Large scale automation with jenkins
Large scale automation with jenkinsLarge scale automation with jenkins
Large scale automation with jenkins
 
Jenkins User Conference 2012 San Francisco
Jenkins User Conference 2012 San FranciscoJenkins User Conference 2012 San Francisco
Jenkins User Conference 2012 San Francisco
 
Jenkins+Gitによる検証済みマージ(30分版)
Jenkins+Gitによる検証済みマージ(30分版)Jenkins+Gitによる検証済みマージ(30分版)
Jenkins+Gitによる検証済みマージ(30分版)
 
ここ最近のJenkins新機能
ここ最近のJenkins新機能ここ最近のJenkins新機能
ここ最近のJenkins新機能
 
Jenkins user conference 東京
Jenkins user conference 東京Jenkins user conference 東京
Jenkins user conference 東京
 
Dev@cloudの実装
Dev@cloudの実装Dev@cloudの実装
Dev@cloudの実装
 
Developer summit continuous deliveryとjenkins
Developer summit   continuous deliveryとjenkinsDeveloper summit   continuous deliveryとjenkins
Developer summit continuous deliveryとjenkins
 
Creating a Developer Community
Creating a Developer CommunityCreating a Developer Community
Creating a Developer Community
 
Jenkins user conference 2011
Jenkins user conference 2011Jenkins user conference 2011
Jenkins user conference 2011
 
プロジェクト現状報告・Rubyによるjenkinsプラグイン開発
プロジェクト現状報告・Rubyによるjenkinsプラグイン開発プロジェクト現状報告・Rubyによるjenkinsプラグイン開発
プロジェクト現状報告・Rubyによるjenkinsプラグイン開発
 

Recently uploaded

LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
CRI Japan, Inc.
 
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.
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / 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
 
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
 
【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
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
論文紹介: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
 
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
 
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
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
論文紹介: 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: 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
 
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
 

Recently uploaded (16)

LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
 
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の勉強会で発表されたものです。
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / 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...
 
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
 
【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
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
論文紹介: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...
 
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 Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
論文紹介: 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: 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 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
 

コードの互換性と進化の両立

Editor's Notes

  1. 本当に実行するまでわからない
  2. Jenkinsでも似たような問題に何度も遭遇した
  3. でも進化しないといけない、どうするか。
  4. コードの進化と互換性の狭間の苦しみからどう解脱するか。徐々に蓄積してきたノウハウ・ツールを大公開
  5. コンパイルはできないが動く。ソースコード上の規則とバイナリ上の規則の違い。
  6. プログラムを書き換えればいいじゃんか