13
63Smalltalk勉強会 2014 Masashi Umezawa ([email protected]) Cuis Smalltalkの紹介

Cuis Smalltalkの紹介

Embed Size (px)

DESCRIPTION

Cuis Smalltalkの紹介です

Citation preview

Page 1: Cuis Smalltalkの紹介

第63回 Smalltalk勉強会

2014 Masashi Umezawa ([email protected])

Cuis Smalltalkの紹介

Page 2: Cuis Smalltalkの紹介

Cuis Smalltalkとは?

Squeakから派生したコンパクトなSmalltalk

http://www.jvuletich.org/Cuis/Index.html

https://github.com/Cuis-Smalltalk

機能性よりもシンプルさを重視

500クラス程度

全容を理解できる (かも)

「クイ」と読む ペルーの食用ネズミ

Page 3: Cuis Smalltalkの紹介

インストール安定版は略

イメージ入手してCog VMで動かせば良い

開発版は以下を実行

Cuis-Smalltalk-Proj以下にProj.imageができ、CogVMもダウンロードされる

Windowsの場合、手作業でVMやImageをコピー

git clone https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev

chmod a+x ./Cuis-Smalltalk-Dev/bin/*.sh

./Cuis-Smalltalk-Dev/bin/newImage.sh ./Cuis-Smalltalk-Proj/Proj

Page 4: Cuis Smalltalkの紹介

Cuisの起動Cog VMに<YourProj>.imageをドロップ Unix系は以下

初回のイメージ保存時にCog VM用フォーマットで保存するか聞かれるが、Yesで良い

./coglinux/squeak YourProj.image &

Page 5: Cuis Smalltalkの紹介

シンプル版Morphic (1)メソッドの大幅削減

Squeak 4.5: 1632

Pharo 3.0: 1231

インスタンス変数も整理

Morph allSelectors size "=> 502"

'bounds owner submorphs fullBounds color extension'

'owner submorphs location layoutNeeded layoutSpec properties'

Page 6: Cuis Smalltalkの紹介

シンプル版Morphic (2)悪名高いレイアウト実装の撲滅

従来: extension->otherPropertiesにレイアウトの様々なプロパティ値がアドホックに入る

layoutSpec(LayoutSpecクラス)でレイアウト情報は一元管理 TableLayout, ProportionalLayoutの区別もなし

AlignmentMorphやAlignmentMorphBob1もない

○LayoutMorph, LayoutAdjustmentMorph

Page 7: Cuis Smalltalkの紹介

パッケージ管理独自のパッケージ管理ツール

PackageInfoは使うが、Monticelloではない

○ St側でバージョン管理は行わない

○変更があったパッケージに印がつくのみ

git, mercurialなどにまかせる方針

<Package名>.pck.st独自のチャンクフォーマット

依存パッケージなどのメタ情報を含められる

末尾はなぜかLF

Page 8: Cuis Smalltalkの紹介

パッケージのロードファイルリストからinstallPackage

or

Featureを使う

カレントディレクトリや親ディレクトリから<PackageName>.pck.st を探してロード

Feature require: '<PackageName>'.

Page 9: Cuis Smalltalkの紹介

日本語処理は... WideString, ByteStringもない

各種文字コードのコンバータもない

文字コードはISO 8859-15(Latin 9)でいいよねGitHubにもそれで置いてくれ

=>絶望的

一応 Cuis-Smalltalk-Unicodeプロジェクトの存在 https://github.com/KenDickey/Cuis-Smalltalk-Unicode

String class>>fromUtf8:と String>>asUtf8 の存在

外部UTF8文字列とのやりとりはできる

Page 10: Cuis Smalltalkの紹介

代表的アプリStyledTextEditor

https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-StyledTextEditor

リッチテキストのエディタ

RTF文書からのコピペもサポート(Macのみ)

ちょっとデモ

Page 11: Cuis Smalltalkの紹介

Cuisのプロジェクト Cuis-Smalltalk-<ProjectName>でGitHubに置く決まり

https://github.com/search?q=cuis-smalltalk

で、意外なほど見つかる

AIDA

RegEx

Zinc

SandstoneDBなど

Page 12: Cuis Smalltalkの紹介

移植に挑戦 作者自らFileMan, MessagePack-St, StOMPを移植してみた

https://github.com/mumez/Cuis-Smalltalk-FileMan

https://github.com/mumez/Cuis-Smalltalk-MessagePack

https://github.com/mumez/Cuis-Smalltalk-StOMP

この程度のものならなんとかなる

当然ながらマルチバイトがからむ部分は削除

ちょっとデモ

Page 13: Cuis Smalltalkの紹介

まとめ

Cuisは軽量でシンプルなSmalltalkの処理系

Smalltalkのコアを知るには良い

Morphicのレイアウトで心がすさんだとき

ConfigurationOfXXXを書くのが嫌になったとき

サーバ用途、モバイル、組み込みの方向に展開するとおもしろいかも