20
72Smalltalk勉強会 2015 Masashi Umezawa

何が変わった? VisualWorks 8.0

Embed Size (px)

Citation preview

Page 1: 何が変わった? VisualWorks 8.0

第72回 Smalltalk勉強会

2015 Masashi Umezawa

Page 2: 何が変わった? VisualWorks 8.0

はじめに

広く浅く話します

後半は皆でいろいろと試す時間にします

参考:

○第16回Smalltalk勉強会資料

「何が変わった? VisualWorks7.7」

Page 3: 何が変わった? VisualWorks 8.0

VisualWorksとは

最大のシェアを持つ老舗のSmalltalk

安定

○ Smalltalk-80直系

速い

○ 最近はCogVMが肉薄

http://d.hatena.ne.jp/sumim/20140826/p1

でかい

○フルインストールで1GB程度消費

○必要なものは大抵そろう

Page 4: 何が変わった? VisualWorks 8.0

VisualWorksの歴史

1992: ObjectWorks/Smalltalk

1993: VisualWorks 1.0

1994-1997: VisualWorks 2.0, 2.5

1998: VisualWorks 3

VisualWorks 4 (幻)

1999-2001: VisualWorks 5i - 5i.4

2002-2014: VisualWorks 7 - 7.10

2015: VisualWorks 8 <= イマココ

Page 5: 何が変わった? VisualWorks 8.0

8.0の新機能

いろいろあるので詳細はリリースノート参照

開発者からみて面白そうな部分をピックアップ

クライアント系

Text2

UISkinning

サーバ系

SiouX

AppeX

Page 6: 何が変わった? VisualWorks 8.0

Text2 とは従来のTextを置き換えるもの

よりリッチなテキスト表現が可能に

○ イメージ埋め込み、ワードラップ、アクション

○ 行頭文字、アラインメント、アノテーション

○ Unicodeを意識した検索、検索ダイアログ、diffなど

実例:

システムブラウザのコードペインもText2で実装

Page 7: 何が変わった? VisualWorks 8.0

Text2によるコードペイン

Page 8: 何が変わった? VisualWorks 8.0

Text2 の構成要素 (1)

Document

Text2の主要モデル

DocumentSegmentを集約

Zeroインデックス! (文字と文字の間を指すため)

DocumentSegment

テキストの特定部分(ボールド、イメージ埋め込みなど)

DocumentAction

Segmentの一種

○ リンクのクリックなど動作のある部分

Page 9: 何が変わった? VisualWorks 8.0

Text2 の構成要素 (2)

Flow

2次元領域にテキストをレイアウトするためのモデル

FlowSegmentを集約

カーソル移動をサポート(何文字目、何行目)

FlowSegment

テキストの特定箇所をレンダリングするためのモデル

○ 改行部、行頭文字部、パスワード部など

Page 10: 何が変わった? VisualWorks 8.0

Text2 の構成要素 (3) DocumentView

Documentのビュー

選択範囲、編集範囲、編集履歴などを管理

DocumentEditor

編集可能なDocumentのビュー

InputEditor

行が1行に限定されたDocumentEditor

Page 11: 何が変わった? VisualWorks 8.0

UISkinning

よりネイティブらしいウィジェット表現

「カメレオンビュー」廃止

薄いラッパーでシンプルに○ 重厚なAbstract Factoryをやめ、シンプルなStrategyで実現

○ OSのAPIを割とすぐに呼び出す形

○ 幻となったWidgetryの考えを再利用

Default, Windows, Macのスキンがある

○ MotifやOS/2、Smalltalk-80のスキンは廃止

○縦のスライダーなどもなくなった

Page 12: 何が変わった? VisualWorks 8.0

SiouX新たに実装されたWebサーバ

軽量

Xtreamsベース

○オンデマンドに必要部分のみをパースする

HTTPS, WebSocket, Servletもサポート

SeasideやAppeXのHTTPサーバとして動作

文字コードはデフォルトでUTF8

Page 13: 何が変わった? VisualWorks 8.0

SiouXの主要クラス Responder

あるURLに対する処理を記述

Server Responderを集約

RequestContext 現在のリクエスト情報が入っている

RequestFilter 認証など、リクエストのフックを記述

Session

SessionCache

Page 14: 何が変わった? VisualWorks 8.0

SiouXの例 (1)

SiouX.HttpResponderのサブクラスHelloResponderを定義

executeRequestFor:を実装

executeRequestFor: aRequestContext^aRequestContext response

contentType: 'text/html';contents:

'<html><body>Hello:', Time now printString, '</body></html>'

Page 15: 何が変わった? VisualWorks 8.0

SiouXの例 (2)

サーバの起動

○ Responderにpathを指定して追加

server := Server id: 'HelloServer'.responder := HelloResponder new.responder path: '/hello'.server addResponder: responder.server listenOn: 8000 for: SiouX.HttpConnection.server start.

Page 16: 何が変わった? VisualWorks 8.0

AppeX

Webアプリフレームワーク

HTTP5の機能を活用

○ Server side events (SSE)

○ Session Storage

アノテーション活用でコード量削減

クライアントをJSで記述可能

○ JSとSmalltalkがWebSocketで通信

○ JS部分の開発もSmalltalkのIDEで書く

○既存JSのライブラリ取り込みが自由にできる

Page 17: 何が変わった? VisualWorks 8.0

AppeXのサンプル(1)

AppeX-Examplesを参照のこと

AppeX-Examples-Mobile

jQueryMobileを使う例

"Web Servers"のUIを開き

Running状態にした後、以下のURLでアクセスしてみる

http://localhost:8888/appex/simplest-app

http://localhost:8888/appex/chat-room-demo

Page 18: 何が変わった? VisualWorks 8.0

AppeXのサンプル(2)サーバ側: Appex.Applicationを継承

Smalltalkで記述

applicationClientClassを実装し、Clientクラスと関連付け

クライアント側: Applec.ApplicationClientを継承

JSで記述

SimpleApp, SimpleAppClientはサーバ側のみの例

Chat, ChatClientの例が概観をつかむには良い

Page 19: 何が変わった? VisualWorks 8.0

AppeXのサンプル(3) Chat

クラスメソッド側

○ 静的コンテンツ

○ 各セッションで共通のサービスの実装

インスタンスメソッド側

○ セッション固有の処理を実装

ChatClient

インスタンスメソッドを見ると、JSが書いてある!

this.asyncMessageToServer('メソッド名') で非同期通信

Page 20: 何が変わった? VisualWorks 8.0

まとめ

VisualWorksは歴史ある商用Smalltalk

安定していて、速い

ビジネスで使うための部品が最初からそろっている

8.0となり、さらなる進化に期待したい