jun4pharo @ smalltalk勉強会 2015/5/29

27
Jun4Pharo ~まだ登り始めたばかりだからな この果てしなく遠いJun坂をよ~ Tomohiro "tomo" Oda @tomooda

Upload: tomohiro-oda

Post on 28-Jul-2015

394 views

Category:

Software


3 download

TRANSCRIPT

Page 1: Jun4Pharo @ Smalltalk勉強会 2015/5/29

Jun4Pharo~まだ登り始めたばかりだからな この果てしなく遠いJun坂をよ~

Tomohiro "tomo" Oda@tomooda

Page 2: Jun4Pharo @ Smalltalk勉強会 2015/5/29

installation

Page 3: Jun4Pharo @ Smalltalk勉強会 2015/5/29

repository

http://smalltalkhub.com/#!/~tomooda/Jun4Pharo

Gofer new smalltalkhubUser: 'tomooda' project: 'Jun4Pharo'; configurationOf: #Jun; load.(Smalltalk at: #ConfigurationOfJun) load.

Page 4: Jun4Pharo @ Smalltalk勉強会 2015/5/29

CI server

https://ci.inria.fr/pharo-contribution/job/Jun4Pharo/

Page 5: Jun4Pharo @ Smalltalk勉強会 2015/5/29

CIサーバ

Nightly build● Pharo 4.0

https://ci.inria.fr/pharo-contribution/job/Jun4Pharo/lastCompletedBuild/PHARO=40,VERSION=stable,VM=vm/artifact/Jun4Pharo.zip

● Pharo 3.0https://ci.inria.fr/pharo-contribution/job/Jun4Pharo/lastCompletedBuild/PHARO=30,VERSION=stable,VM=vm/artifact/Jun4Pharo.zip

Page 6: Jun4Pharo @ Smalltalk勉強会 2015/5/29

good old days in 90s

Page 7: Jun4Pharo @ Smalltalk勉強会 2015/5/29

Jun for Smalltalk

● Jun for Smalltalk○ VisualWorks上で動く3Dライブラリ○ 開発期間 1996~現在○ AOKI Atsushi, ODA Tomohiro, HOSHI Takanori, NISHINAKA

Yoshiyuki, YAMADA Ryousuke, WATANABE Katsuhiro, Ankur J. Chavda, NISHIHARA Satoshi, MATSUDA Ryouichi, MATSUO Minoru, Brent N. Reeves, ASAOKA Hiroko, TANAKA Shinichi, ASADA Mitsuhiro, Paul Guyot (and LIP6), Albert Kerssies, MATSUBARA Nobuto, SAWAMOTO Eri, HAYASHI Koichiro, NAKAO Tatsuya, NISHIMURA Yuuri

○ 999 classes○ Jun4Java, ChemoJunなどを派生

○ 電子マネキン、造船CAD、工場シミュレーション、化学情

報学などで利用されている

Page 8: Jun4Pharo @ Smalltalk勉強会 2015/5/29

Jun for Smalltalkの歴史

● 青木さんが z-sort法による3D描画ライブラリとして作成

● 電子マネキン時代:○ Mei由来のコードを投入

○ 小田が加わり、OpenGL、ソリッドモデル、ナドナドを実

● みんなでよってたかってマルチメディアだの何だのを拡張

Page 9: Jun4Pharo @ Smalltalk勉強会 2015/5/29

Jun for Smalltalk機能

● 幾何○ Point, Curve, Surface, ParametricCurve, ...○ Transformation, ...○ Delauney, Voronoi, ...

● グラフィックス○ Vertex, Polylines, Polygons, NURBS, ...○ RenderingContext, DisplayModel, ...○ VRML, ...

● ソリッド○ Breps, CSG, Octree, Metaball, ...

● 可視化○ Chart, Grapher, ...

Page 10: Jun4Pharo @ Smalltalk勉強会 2015/5/29

Jun for Smalltalk機能

● データ処理○ Matrix, SVD, Random, FFT, ...

● メディア○ QuickTime, Midi, Gif, ...

● ソース管理○ JunSystem○ Encyclopedia

● Smalltalkユーティリティ○ MVC互換レイヤ, File, Progress, MessageSpy, ...

● 言語○ Lisp, Prolog, Plotter

Page 11: Jun4Pharo @ Smalltalk勉強会 2015/5/29

related work

Page 12: Jun4Pharo @ Smalltalk勉強会 2015/5/29

RMapViewer

同じ化学組成を持つ分子の取りうる構造の

マップを可視化して、

反応経路を探索して可視化する

GRRM:量子力学的に可能な構造とその変化を全探索する

http://grrm.chem.tohoku.ac.jp/GRRM/

RMapViewer:探索結果を可視化する

http://sourceforge.net/projects/rmapviewer/

Page 13: Jun4Pharo @ Smalltalk勉強会 2015/5/29

Roassal

可視化フレームワーク

Roassal City Layoutshttps://www.youtube.com/watch?v=CuimMwuZiGA

Page 14: Jun4Pharo @ Smalltalk勉強会 2015/5/29

Woden

シェーダー

Woden Demo for ESUGhttps://www.youtube.com/watch?v=1Nze9tnwYxY

Page 15: Jun4Pharo @ Smalltalk勉強会 2015/5/29

design rationale

Page 16: Jun4Pharo @ Smalltalk勉強会 2015/5/29

Jun4Pharo

Jun4Pharoが目指すのは

GrapherやShaderというよりも

● 幾何とかBodyとかをちゃんと扱える

● 自分で3DなMorphをゴリゴリ書ける○ DisplayModelばっかり使いまわしてほしくない

● でもお気楽に3D可視化できるようにしたい○ データマイニングとかでも使えるように

● 他のライブラリと相互連携したい

Page 17: Jun4Pharo @ Smalltalk勉強会 2015/5/29

Jun4Pharo

● Smalltalk-80的な丸鍋的なライブラリからPharo的なモジュール化されたライブラリへ○ なんでも抱え込まない

○ 芋づる的依存性の解消

● Pharo上の他の3Dライブラリとの連携○ Roassal - ビジュアライゼーション

○ Woden - シェーダフレームワーク

● OpenGLに依存しない○ Canvasでもがんばる!○ もっとすごいライブラリが来たら乗っかる!

Page 18: Jun4Pharo @ Smalltalk勉強会 2015/5/29

Jun4Pharo

One more thing...

Page 19: Jun4Pharo @ Smalltalk勉強会 2015/5/29

Jun4Pharo

One more thing...● いわゆるBSDライセンスです

○ なので、本当はJunではなくTakenokoベース

Page 20: Jun4Pharo @ Smalltalk勉強会 2015/5/29

Demonstration

Page 21: Jun4Pharo @ Smalltalk勉強会 2015/5/29

Jun4Pharo デモ

JunGeometryでゴリゴリ

JunCanvasRenderingContextでゴリゴリ

JunNBGLRenderingContextでゴリゴリ

asWodenRenderableでゴリゴリ

HoneyGingerとゴリゴリ

Page 22: Jun4Pharo @ Smalltalk勉強会 2015/5/29

JunGeometryでゴリゴリJunCanvasRenderingContextでゴリゴリ

Page 23: Jun4Pharo @ Smalltalk勉強会 2015/5/29

NBGLRenderingContextでゴリゴリ

Page 24: Jun4Pharo @ Smalltalk勉強会 2015/5/29

asWodenRenderableでゴリゴリ

Page 25: Jun4Pharo @ Smalltalk勉強会 2015/5/29

HoneyGingerとゴリゴリ

Page 26: Jun4Pharo @ Smalltalk勉強会 2015/5/29

コードはこんな感じ

| form rc |form := Form extent: 500@500 depth: 32.rc := form renderingContext.rc clear.Jun3dDisplayObject benzene renderOn: rc.rc flush.form asMorph openInWorld

Page 27: Jun4Pharo @ Smalltalk勉強会 2015/5/29

まとめ

● 巨大なJun for SmalltalkからPharoに移植はじめたばかりです。

● 少しずつ移植を進めていきます。

● ぜひ遊んでやってください○ http://smalltalkhub.com/#!/~tomooda/Jun4Pharo