SlideShare a Scribd company logo
1 of 44
Download to read offline
Iceberg 2018
カチンカチンやで
Originally by Guille Polito
@GuillePolito
Translated by Tomohiro Oda
@tomooda
Icebergとは?
+ =
https://github.com/pharo-vcs/iceberg
関連するプロジェクト
Iceberg OSSubprocess
Ring2 Spec
Launcher
UFFI
Smalltalk

CI
Pillar
最初のIcebergから2年
• Git は 善良なモンスター: 

ただし、「大いなる力は大いなる責任を伴う」

• Iceberg はもはや

プロトタイプではない

(v1.2.2)
いろいろやってます
より簡単に、よりガッチリと
新 UI
大量のCI
64bit support
53% coverage
二重 Working Copy
- =
- =
=+
3ウェイマージ
新UI:IceTip
Spec ベース
+ 新しいウィジェット (toolbars, status bars...)
3つのガイドライン
• 明示せよ: 不可逆な操作のプレビュー
• 明示せよ: 危険な状態の警告
• 明示せよ: そしてユーザーに決定を委ねる
commit 時のプレビュー
pull 時のプレビュー
checkout 時のプレビュー
レポジトリの状態
レポジトリの状態
問題の説明
解決策の提案
何が起こるのか
トレードオフ
より簡単に、よりガッチリと
- =
- =
=+
新 UI
大量のCI
64bit support
53% coverage
二重 Working Copy 3ウェイマージ
自動化でガッチリ
力
Icebergのサイズ
• packages	size

					=> 17
• packages	sum:	[	:e	|	e	definedClasses	size	]

					=> 589
• packages	sum:	[	:e		|	e	linesOfCode	]

					=> 21769
テストカバレッジの改善

直近6ヶ月で
~6% => ~53%
Parameterized tests
複雑なテストやフィクスチャを定義する仕組み
https://github.com/tesonep/ParametrizedTests




テストが増えれば
実行時間も

増える
Ring2による高速化
Esug 17

Meta-Modeling of

Custom Pharo Images



Pavel Krivanek
時間がかかる大部分はシステムへの変更からくる
(再コンパイルとかシステムの整合性とか)
膨大なCIリソース
• 18 jobs, プラットフォーム数 x Pharoバージョン数
• Pharo integration pre-test, metacello integration,
wiki synchronization
• SmalltalkCI!!
x64対応
• OSSubprocess を64ビットでも安定させた
• 最新版 v1.0.1は5月中旬ごろから安定
ガッチリさせるために

大事なこと
• 変更を恐れない
• 大量・高速な統合テスト単体テスト
• 複数プラットフォーム
• 自動化
• インフラの拡充
• OSSubprocess, Ring, ParameterizedTests, Spec...
より簡単に、よりガッチリと
- =
- =
=+
新 UI
大量のCI
64bit support
53% coverage
二重 Working Copy 3ウェイマージ
Working Copy
Iceberg の Working Copy
• aRepositoryがイメージ内の
working copyを持っている
• A working copy remembers
its current commit
• Required for pulling,
pushing, diffing...
Pharo Image
Iceberg
Working Copy
commit=dc4a3e7
2つの Working Copy
Working Copy Repository
…
ディスク上のworking copyと同期
していないといけない
Pharo Image
Iceberg
Working Copy
commit=dc4a3e7
commit=dc4a3e7
同期が外れたWorking Copy
Working Copy Repository
…
イメージ中のworking copyがディ
スク上のworking copyとの同期が
外れることがある
Pharo Image
Iceberg
Working Copy
commit=dc4a3e7
commit=0c0c5ff
Working Copyの

同期が外れる原因
それほど頻繁に起こるものではないが
• 原因1) 他のツールでディスク上のworking copyを
いじった
• 原因2) コミット中にイメージがクラッシュした
• 原因3) コミット後にイメージを保存し忘れた
Working Copyの

同期外れから回復するには
• 方法1) image側を更新する

ディスク上のworking copyをimage上に読み込む
• 方法2) ディスク側を更新する

イメージ上のworking copyをcommitする
• 方法3) マージする
より簡単に
• シンプルなモデルに(< 0.7)
• コードの質の向上
• より簡単なワークフローに向けて

(仮想ブランチとか?)
Working Copy
Pharo
Iceberg
Working Copy
commit=dc4a3e7
commit=dc4a3e7
より簡単に、よりガッチリと
- =
- =
=+
新 UI
大量のCI
64bit support
53% coverage
二重 Working Copy 3ウェイマージ
新しいマージアルゴリズム
• パッケージベースからレポジトリベースへ
• ファイルのマージ
• git merge (ff, non-ff…)
• 3ウェイ!
3ウェイ マージ
37adf4e
master
0c0e5ff
development
b894b84 dc4a3e71. 共通の親からそれぞれ
への差分を取る
2. 2つの差分をマージする

(コンフリクトがない
かチェックする)
37adf4e
master
0c0e5ff
pment
b894b84 dc4a3e7
HEAD
t1 t2
t3
t1 t3- = d1
t2 t3
- = d2
d1 d2 m
=+
3ウェイマージとは
すべてはオブジェクト
checkout 時のdiff
merge 時のマージ
信頼性のあるマージ
• コードが消えない
• コンフリクトが正確に求まる
• これから UI の改善が必要
より簡単に、よりガッチリと
- =
- =
=+
新 UI
大量のCI
64bit support
53% coverage
二重 Working Copy 3ウェイマージ
さらなる進化
• コード以外の管理は?
• サブプロジェクトは?
まとめ
- =
- =
=+
Iceberg OSSubprocess
Ring Spec
Launcher

:)
UFFI
https://github.com/pharo-vcs/iceberg
Inspect, inspect, inspect
iceCommit	fileSystem
Credential Manager
Prototyping about Files

More Related Content

What's hot

OpenStack Summit in Atlanta 参加報告
OpenStack Summit in Atlanta 参加報告OpenStack Summit in Atlanta 参加報告
OpenStack Summit in Atlanta 参加報告Akira Yoshiyama
 
kube-system落としてみました
kube-system落としてみましたkube-system落としてみました
kube-system落としてみましたShuntaro Saiba
 
自由な空間情報利用のためのツールQGISと日本語化プロジェクトの紹介
自由な空間情報利用のためのツールQGISと日本語化プロジェクトの紹介自由な空間情報利用のためのツールQGISと日本語化プロジェクトの紹介
自由な空間情報利用のためのツールQGISと日本語化プロジェクトの紹介Yoichi Kayama
 
CloudStack advent calendar jp 2013_12_16
CloudStack advent calendar jp 2013_12_16CloudStack advent calendar jp 2013_12_16
CloudStack advent calendar jp 2013_12_16Hiroyuki Sato
 
SIerにおけるKubernetes活用(OSSユーザーによる勉強会-公開版)
SIerにおけるKubernetes活用(OSSユーザーによる勉強会-公開版)SIerにおけるKubernetes活用(OSSユーザーによる勉強会-公開版)
SIerにおけるKubernetes活用(OSSユーザーによる勉強会-公開版)Tetsurou Yano
 
自作クラウド基盤 n0stack と ソフトウェア開発の気持ち
自作クラウド基盤 n0stack と ソフトウェア開発の気持ち自作クラウド基盤 n0stack と ソフトウェア開発の気持ち
自作クラウド基盤 n0stack と ソフトウェア開発の気持ちh-otter
 
Azure CDNの実力を知ろう
Azure CDNの実力を知ろうAzure CDNの実力を知ろう
Azure CDNの実力を知ろうMasateru Suzuki
 
自作クラウド基盤 n0stack in ICTSC 2018
自作クラウド基盤 n0stack in ICTSC 2018自作クラウド基盤 n0stack in ICTSC 2018
自作クラウド基盤 n0stack in ICTSC 2018h-otter
 
Azure container service上でコンテナベースでオートスケールの検証をしてみた
Azure container service上でコンテナベースでオートスケールの検証をしてみたAzure container service上でコンテナベースでオートスケールの検証をしてみた
Azure container service上でコンテナベースでオートスケールの検証をしてみたエンジニア勉強会 エスキュービズム
 
IDCF クラウド meets Node-RED !
IDCF クラウド meets Node-RED !IDCF クラウド meets Node-RED !
IDCF クラウド meets Node-RED !K Kimura
 
第五回テックヒルズ登壇資料 git移行の3つの山 (株)モバイルファクトリー 阿部氏
第五回テックヒルズ登壇資料 git移行の3つの山 (株)モバイルファクトリー 阿部氏第五回テックヒルズ登壇資料 git移行の3つの山 (株)モバイルファクトリー 阿部氏
第五回テックヒルズ登壇資料 git移行の3つの山 (株)モバイルファクトリー 阿部氏Katsuya Ohnishi
 
[ Rhinoceros ] make terrain suface from pointcloud (j)
[ Rhinoceros ] make terrain suface from pointcloud (j)[ Rhinoceros ] make terrain suface from pointcloud (j)
[ Rhinoceros ] make terrain suface from pointcloud (j)onioncraft
 
CloudStack4.4でGlusterFS環境を構築してみた
CloudStack4.4でGlusterFS環境を構築してみたCloudStack4.4でGlusterFS環境を構築してみた
CloudStack4.4でGlusterFS環境を構築してみたTakuma Nakajima
 
最近のJuju/MAASについて 〜 15分版 - OpenStack最新情報セミナー 2017年11月
最近のJuju/MAASについて 〜 15分版 - OpenStack最新情報セミナー 2017年11月最近のJuju/MAASについて 〜 15分版 - OpenStack最新情報セミナー 2017年11月
最近のJuju/MAASについて 〜 15分版 - OpenStack最新情報セミナー 2017年11月VirtualTech Japan Inc.
 
20121013_GIS学会FOSS4G分科会
20121013_GIS学会FOSS4G分科会20121013_GIS学会FOSS4G分科会
20121013_GIS学会FOSS4G分科会Toshikazu Seto
 

What's hot (20)

OpenStack Summit in Atlanta 参加報告
OpenStack Summit in Atlanta 参加報告OpenStack Summit in Atlanta 参加報告
OpenStack Summit in Atlanta 参加報告
 
kube-system落としてみました
kube-system落としてみましたkube-system落としてみました
kube-system落としてみました
 
ClipASTERImage
ClipASTERImageClipASTERImage
ClipASTERImage
 
自由な空間情報利用のためのツールQGISと日本語化プロジェクトの紹介
自由な空間情報利用のためのツールQGISと日本語化プロジェクトの紹介自由な空間情報利用のためのツールQGISと日本語化プロジェクトの紹介
自由な空間情報利用のためのツールQGISと日本語化プロジェクトの紹介
 
CloudStack advent calendar jp 2013_12_16
CloudStack advent calendar jp 2013_12_16CloudStack advent calendar jp 2013_12_16
CloudStack advent calendar jp 2013_12_16
 
SIerにおけるKubernetes活用(OSSユーザーによる勉強会-公開版)
SIerにおけるKubernetes活用(OSSユーザーによる勉強会-公開版)SIerにおけるKubernetes活用(OSSユーザーによる勉強会-公開版)
SIerにおけるKubernetes活用(OSSユーザーによる勉強会-公開版)
 
自作クラウド基盤 n0stack と ソフトウェア開発の気持ち
自作クラウド基盤 n0stack と ソフトウェア開発の気持ち自作クラウド基盤 n0stack と ソフトウェア開発の気持ち
自作クラウド基盤 n0stack と ソフトウェア開発の気持ち
 
Azure CDNの実力を知ろう
Azure CDNの実力を知ろうAzure CDNの実力を知ろう
Azure CDNの実力を知ろう
 
自作クラウド基盤 n0stack in ICTSC 2018
自作クラウド基盤 n0stack in ICTSC 2018自作クラウド基盤 n0stack in ICTSC 2018
自作クラウド基盤 n0stack in ICTSC 2018
 
git移行の3つの山
git移行の3つの山git移行の3つの山
git移行の3つの山
 
ASTERGDEMContour
ASTERGDEMContourASTERGDEMContour
ASTERGDEMContour
 
Azure container service上でコンテナベースでオートスケールの検証をしてみた
Azure container service上でコンテナベースでオートスケールの検証をしてみたAzure container service上でコンテナベースでオートスケールの検証をしてみた
Azure container service上でコンテナベースでオートスケールの検証をしてみた
 
ASTERFalseColorImage1
ASTERFalseColorImage1ASTERFalseColorImage1
ASTERFalseColorImage1
 
MapCreation
MapCreationMapCreation
MapCreation
 
IDCF クラウド meets Node-RED !
IDCF クラウド meets Node-RED !IDCF クラウド meets Node-RED !
IDCF クラウド meets Node-RED !
 
第五回テックヒルズ登壇資料 git移行の3つの山 (株)モバイルファクトリー 阿部氏
第五回テックヒルズ登壇資料 git移行の3つの山 (株)モバイルファクトリー 阿部氏第五回テックヒルズ登壇資料 git移行の3つの山 (株)モバイルファクトリー 阿部氏
第五回テックヒルズ登壇資料 git移行の3つの山 (株)モバイルファクトリー 阿部氏
 
[ Rhinoceros ] make terrain suface from pointcloud (j)
[ Rhinoceros ] make terrain suface from pointcloud (j)[ Rhinoceros ] make terrain suface from pointcloud (j)
[ Rhinoceros ] make terrain suface from pointcloud (j)
 
CloudStack4.4でGlusterFS環境を構築してみた
CloudStack4.4でGlusterFS環境を構築してみたCloudStack4.4でGlusterFS環境を構築してみた
CloudStack4.4でGlusterFS環境を構築してみた
 
最近のJuju/MAASについて 〜 15分版 - OpenStack最新情報セミナー 2017年11月
最近のJuju/MAASについて 〜 15分版 - OpenStack最新情報セミナー 2017年11月最近のJuju/MAASについて 〜 15分版 - OpenStack最新情報セミナー 2017年11月
最近のJuju/MAASについて 〜 15分版 - OpenStack最新情報セミナー 2017年11月
 
20121013_GIS学会FOSS4G分科会
20121013_GIS学会FOSS4G分科会20121013_GIS学会FOSS4G分科会
20121013_GIS学会FOSS4G分科会
 

Similar to Iceberg 2018 (Japanese translation)

CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜Masaya Aoyama
 
Building Static Website With Github And Jekyll
Building Static Website With Github And JekyllBuilding Static Website With Github And Jekyll
Building Static Website With Github And JekyllYoji Shidara
 
Linux も動く Microsoft Azure HoloLens にも対応した次世代マルチプレイミドルウェア
Linux も動く Microsoft Azure HoloLens にも対応した次世代マルチプレイミドルウェアLinux も動く Microsoft Azure HoloLens にも対応した次世代マルチプレイミドルウェア
Linux も動く Microsoft Azure HoloLens にも対応した次世代マルチプレイミドルウェアHiroko Umetsu
 
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)シスコシステムズ合同会社
 
Cloud Foundryのコンポーネントloggregatorについて
Cloud FoundryのコンポーネントloggregatorについてCloud Foundryのコンポーネントloggregatorについて
Cloud FoundryのコンポーネントloggregatorについてTakeshi Morikawa
 
OSC2013 Tokyo/Spring JOSUG
OSC2013 Tokyo/Spring JOSUGOSC2013 Tokyo/Spring JOSUG
OSC2013 Tokyo/Spring JOSUGHideki Saito
 
OpenStack Summit November 2014 Paris出張報告
OpenStack Summit November 2014 Paris出張報告OpenStack Summit November 2014 Paris出張報告
OpenStack Summit November 2014 Paris出張報告Mitsuhiro SHIGEMATSU
 
2018 07-18 git-hub講座
2018 07-18 git-hub講座2018 07-18 git-hub講座
2018 07-18 git-hub講座貴一 末田
 
Git運用ダメ出し会 - ネクストスケープ 2014/05/27 パワーランチ資料
Git運用ダメ出し会 - ネクストスケープ 2014/05/27 パワーランチ資料Git運用ダメ出し会 - ネクストスケープ 2014/05/27 パワーランチ資料
Git運用ダメ出し会 - ネクストスケープ 2014/05/27 パワーランチ資料mihararyosuke
 
今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみたKohei Tokunaga
 
Microservices and Servcie Mesh on Azure
Microservices and Servcie Mesh on AzureMicroservices and Servcie Mesh on Azure
Microservices and Servcie Mesh on AzureTsukasa Kato
 
PRMU201902 Presentation document
PRMU201902 Presentation documentPRMU201902 Presentation document
PRMU201902 Presentation documentMasayuki Tanaka
 
Bug for Install Linux on Atom Z8700 Portabook ポータブックのLinuxインストールバグ対策 2018 #東海道らぐ
Bug for Install Linux on Atom Z8700 Portabook ポータブックのLinuxインストールバグ対策 2018 #東海道らぐBug for Install Linux on Atom Z8700 Portabook ポータブックのLinuxインストールバグ対策 2018 #東海道らぐ
Bug for Install Linux on Atom Z8700 Portabook ポータブックのLinuxインストールバグ対策 2018 #東海道らぐNetwalker lab kapper
 
Cloud impact on IT industry (in Japanese)
Cloud impact on IT industry (in Japanese)Cloud impact on IT industry (in Japanese)
Cloud impact on IT industry (in Japanese)shojiro-tanaka
 

Similar to Iceberg 2018 (Japanese translation) (19)

MySQL Binlog Events でストリーム処理してみた #MySQLUC15
MySQL Binlog Events でストリーム処理してみた #MySQLUC15MySQL Binlog Events でストリーム処理してみた #MySQLUC15
MySQL Binlog Events でストリーム処理してみた #MySQLUC15
 
mikutter入門
mikutter入門mikutter入門
mikutter入門
 
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
 
Building Static Website With Github And Jekyll
Building Static Website With Github And JekyllBuilding Static Website With Github And Jekyll
Building Static Website With Github And Jekyll
 
Linux も動く Microsoft Azure HoloLens にも対応した次世代マルチプレイミドルウェア
Linux も動く Microsoft Azure HoloLens にも対応した次世代マルチプレイミドルウェアLinux も動く Microsoft Azure HoloLens にも対応した次世代マルチプレイミドルウェア
Linux も動く Microsoft Azure HoloLens にも対応した次世代マルチプレイミドルウェア
 
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
 
Cloud Foundryのコンポーネントloggregatorについて
Cloud FoundryのコンポーネントloggregatorについてCloud Foundryのコンポーネントloggregatorについて
Cloud Foundryのコンポーネントloggregatorについて
 
OSC2013 Tokyo/Spring JOSUG
OSC2013 Tokyo/Spring JOSUGOSC2013 Tokyo/Spring JOSUG
OSC2013 Tokyo/Spring JOSUG
 
OpenStack Summit November 2014 Paris出張報告
OpenStack Summit November 2014 Paris出張報告OpenStack Summit November 2014 Paris出張報告
OpenStack Summit November 2014 Paris出張報告
 
Vacuumとzheap
VacuumとzheapVacuumとzheap
Vacuumとzheap
 
2018 07-18 git-hub講座
2018 07-18 git-hub講座2018 07-18 git-hub講座
2018 07-18 git-hub講座
 
Git運用ダメ出し会 - ネクストスケープ 2014/05/27 パワーランチ資料
Git運用ダメ出し会 - ネクストスケープ 2014/05/27 パワーランチ資料Git運用ダメ出し会 - ネクストスケープ 2014/05/27 パワーランチ資料
Git運用ダメ出し会 - ネクストスケープ 2014/05/27 パワーランチ資料
 
今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた
 
Microservices and Servcie Mesh on Azure
Microservices and Servcie Mesh on AzureMicroservices and Servcie Mesh on Azure
Microservices and Servcie Mesh on Azure
 
PRMU201902 Presentation document
PRMU201902 Presentation documentPRMU201902 Presentation document
PRMU201902 Presentation document
 
Bug for Install Linux on Atom Z8700 Portabook ポータブックのLinuxインストールバグ対策 2018 #東海道らぐ
Bug for Install Linux on Atom Z8700 Portabook ポータブックのLinuxインストールバグ対策 2018 #東海道らぐBug for Install Linux on Atom Z8700 Portabook ポータブックのLinuxインストールバグ対策 2018 #東海道らぐ
Bug for Install Linux on Atom Z8700 Portabook ポータブックのLinuxインストールバグ対策 2018 #東海道らぐ
 
Git勉強会
Git勉強会Git勉強会
Git勉強会
 
Git 20100313
Git 20100313Git 20100313
Git 20100313
 
Cloud impact on IT industry (in Japanese)
Cloud impact on IT industry (in Japanese)Cloud impact on IT industry (in Japanese)
Cloud impact on IT industry (in Japanese)
 

Iceberg 2018 (Japanese translation)