Jun4Pharo @ Smalltalk勉強会 2015/5/29

Post on 28-Jul-2015

394 views 3 download

Transcript of Jun4Pharo @ Smalltalk勉強会 2015/5/29

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

Tomohiro "tomo" Oda@tomooda

installation

repository

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

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

CI server

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

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

good old days in 90s

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、工場シミュレーション、化学情

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

Jun for Smalltalkの歴史

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

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

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

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

Jun for Smalltalk機能

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

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

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

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

Jun for Smalltalk機能

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

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

● ソース管理○ JunSystem○ Encyclopedia

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

● 言語○ Lisp, Prolog, Plotter

related work

RMapViewer

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

マップを可視化して、

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

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

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

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

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

Roassal

可視化フレームワーク

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

Woden

シェーダー

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

design rationale

Jun4Pharo

Jun4Pharoが目指すのは

GrapherやShaderというよりも

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

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

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

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

Jun4Pharo

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

○ 芋づる的依存性の解消

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

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

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

Jun4Pharo

One more thing...

Jun4Pharo

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

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

Demonstration

Jun4Pharo デモ

JunGeometryでゴリゴリ

JunCanvasRenderingContextでゴリゴリ

JunNBGLRenderingContextでゴリゴリ

asWodenRenderableでゴリゴリ

HoneyGingerとゴリゴリ

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

NBGLRenderingContextでゴリゴリ

asWodenRenderableでゴリゴリ

HoneyGingerとゴリゴリ

コードはこんな感じ

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

まとめ

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

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

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