ということで Smalltalker でもないのになぁ……と躊躇していた、うそ、タイミングが合わなかっただけです、Smalltalk 勉強会ですが、今回は事例発表スペシャルということで気楽に参加してきました。
http://www.smalltalk-users.jp/Home/gao-zhi/dai13kaismalltalkbenkyoukai
えーとえーと、事例発表とのことで技術は分からなくても気軽に聞けるけど、守秘義務踏みそうで怖いので、淡々と当日取ったメモを上げておきます。
Cincom Systems 様事例発表 by 梅澤さん
概要
- 商用 Smalltalk システム VisualWorks の発売元
- ただここの会社はあまり事例を出したがらない*1
- ので Web サイトからあたりさわりのない情報を。
導入事例
- 使用している企業はかなり大企業も含めて多岐に渡る
- XP (エクストリーム・プログラミング) で有名な Kent Beck のクライスラーのプロジェクトも VisualWorks でのもの
- 顧客 J 社によれば「Smalltalk の生産性は他の言語の三倍以上!」
VisualWorks の特徴
GEN - Squeakによるオントロジーモデリングツールの開発 by 梅澤さん
そもそもオントロジーってなに?
というワシのような人はWikipedia ja の「コンピュータにおけるオントロジー」を読むのがいいと思う。要は知識のモデリングのことみたいね。古くはフレーム理論みたいな。
主な機能と特徴
- 暗黙知化した業務知識を見える化するオントロジーモデリング。
- Wiki っぽいメモ帳。外部リンク、内部リンクあり。モデリングの補足的に使える。コメントは公開コメントと非公開コメントがつけられる。
- 作業スケジューリング。作業の依存関係を DSL で記述しスケジュールを自動的に生成。
- 基礎オントロジー。概念集のようなもの。業務に出てくる概念(例えばオイラの業務なら「Linux ディストリビューション」とか) を一種のクラスとして、そのインスタンス (Ubuntu とか Debian とか Fedora とか) を作ることができる。インスタンス間のリンクを張った場合、必ず逆リンクも自動的に張られる。多重度も変更可能。
実装面
メトリクス計測
- 結果はメモってません。
- 短期間で(プロトタイプしながら作る感じで)がーっと書くと結構メトリクスはよくなるみたい。
- 基本的に、Smalltalk で自然に書くと綺麗なコードになりやすい?
困ったこと
- UI はかなり地獄。
- Squeak はトロい (VisualWorksの 1/10)。
- ×ボタンで閉じちゃうと問答無用で VM が落ちるので DB のセッションを切るタイミングがない。
- しかも×ボタンを無効化できない……。
- UI については Pharo という次世代 Squeak に期待。
「パーソナルコンピューティングへの回帰 - 自分のためにプログラムを書こう」 by 阿部さん
阿部和広さんはアラン・ケイの弟子筋であってバリバリの Smalltalker でもあるんだけど Squeak eToys とか SCRATCH の方でも活躍されていらっしゃって、とっても面白い方です。
資料はこちら。
「事例発表ということですが、Smalltalk は実務で使えるよという話はみんなすると思いましたので、今日は違う話をしにきました」だそうで。
Personal Computing という言葉の発祥
- Alan Kay「A Personal Computer for Children of All Ages」(1972)。
- Personal Computing とは「自分のために自分の欲しいものを作る」ということと不可分!
昔の Smalltalker
- 有名な逸話
- Steve Jobs ら Apple の人間が PARC を見学にきたとき、一人の Smalltalker、Dan Ingalls*5 がエディタを弄っていた
- Jobs 曰く「スクロールが行単位なのがかっこ悪い」
- Dan
その Smalltalker (名前忘れちゃった)はその場で速攻 hack して、エディタの動きをスムーススクロールに変えてしまった! - Jobs びっくり。大興奮。「なぜ XEROX はこれを商品化しない?」
- 昔の Smalltalker は欲しいものをガンガン自分で作る。
- 仲間が欲しいといったら分け与える
- 欲しい物は自分で作るのが Smalltalker の原点
では阿部さんの実例
- もうあるものを作っても面白くない
- 自分が面白いと思えて、だれも作ってないものをつくろう!
それって意味あるの?
関係ないけど
- Smalltalk のクラス定義には examples というのがあってクラスの使用例が書ける。
- オブジェクトブラウザで参照すればラクチン実装。
- 今の若い Smalltalker は examples を書かないのがけしからん。
「VisualWorksによるルーティングシミュレーションツール: RoutingSimulator」 by 南谷さん
Smalltalk でルーティングシミュレータを作りましたよというお話。資料こちら。ルーティングシミュレータについての説明は省略。Smalltalk ならではって話に乏しいし。
使用したライブラリ群
メトリクスについて
困りごと
- 多くは開発環境側の問題。
- OS 標準の Widget が用意されていないことも多い
- ベクタグラフィックのアンチエイリアスなど今っぽい機能がないので見た目が劣る
- VisualWorks の次バージョンでは Cairo を使用するので遅くなるがアンチエイリアスなどに対応する予定。
- VisualWorks にはサービスパックなどの中間アップデートがないのでバグが放置されぎみ。
- ただしソース付きなので自分たちで直せちゃうのも事実。
嬉しいこと
- やっぱり開発環境。
- IDEとしては最強。Eclipse とかクソ。
- VisualWorks は描画まわり以外は速度に不満なし。たぶん動的言語としては最速の部類ではないか。
- Squeak は見た目が Squeak アプリになってしまうが、VisualWorks ならそのプラットフォームのアプリにちゃんと見える。これは重要。
- 顧客にバレないように Smalltalk で開発するにはやっぱ VisualWorks ですかね。
「ちょこッと Pier」by 西原さん
Pier って?
- http://www.piercms.com
- "Pier is a content management system that is light, flexible and free."
なぜ Pier か。
- 使ってる奴がいない。
- だから使ってみたい。
- 最初に Pier ありき。
- そこで Wiki を使えそうなプロジェクトがあったので飛びついた。
インストール
「2009年夏 Smalltalkの思い出。そして、過ぎ去りし日々」by 林さん
C++ の他言語インタフェース SWIG で Smalltalk から C++ のモジュールをドライブする話。
既存の方法
- DLL コールについては VisualWorks/Squeak それぞれに専用の I/F がある
- しかし DLL は C 形式の関数でないと呼べないため、C++ の場合はラッパを書かなければならない
「CSbook - 構成主義的スクラップブックの開発」 by 横川さん
構成主義とはシーモア・パパートの提唱した「何かを作ることに非常に高い教育効果がある」という教育理論でして、LOGO はその実践であります*8
これは横川さんが多摩美大の研究室と共同で構造主義を実現するシステムを構築したお話です。
オンサイトエンジニア(笑)
そして懇親会へ
頭に残ったことをぱぱっと。
- 「Smalltalk の利点は?」「使ってみたら分かるよ」「いや、それは禁句ですよ、だから Smalltalker は宗教がかってるとか言われるんですよ」
- Smalltalk はプロトタイプを積み上げて行ってコーディングして、パフォーマンスチューニングは最後にやるのが普通。
- だから業務の場合、生産性優先であるとか、要件が不明確で手探りで作りたいとか、3ヶ月で動く物がとにかく欲しい、という案件は非常に向くが、とにかくカリカリに早いのが欲しいというのには向いてない。
- Smalltalk は入りやすいが奥が深すぎるので技術者のレベルにばらつきが出やすい。
- 明文化できない細かなノウハウが多すぎる。
- Morph の実装はかなり腐っている。メソッド数が 1300*9
2000を越えている。- 単純継承しかない Smalltalk の言語仕様の問題もあるけど、ちょっとひどすぎる。
- Matz さんはなんでああ Smalltalk を dis るんだろう。細々とやってるんだからほっといてくれればいいのに*10
いやしかし楽しかったです。
もちょっと自分自身勉強して、Smalltalk 勉強会の本編にも参加してみようっと。
あと阿部さんのプレゼンに刺激されたので、Wassr API でなんか遊ぶおもちゃを作ってみたいな。
では皆々様、ありがとうございました!
*1:あまりにも VisualWorks がすげーので……という理由らしいです。よくわからん。
*2:多いからいいというものでもないですが、というセルフツッコミあり。
*3:umejava さんよりコメントいただきました。JLC というライブラリを導入すれば日本語対応になるそうです。
*4:昔懐かしの Smalltalk/V についてたおまけのルールベース。名前のとおり Prolog っぽい処理を Smalltalk でできる。
*5:id:abee2 さんが教えてくださいました。Dan Ingalls は名うてのスーパーハッカーだそうです。Squeak の開発にも深く関与したとか。コメント欄参照
*6:今の奴はメール着信も教えてくれるらしいですが、昔のはダメなのでなんとかしたかったんだそうです。
*7:Smalltalk 環境で選択した単語を Google で検索するというデモを6分で実装してました。
*8:ただし芸術の分野では違う意味があるかもしれないのでご注意、とのこと……。
*9:最初は 2000 と書いてましたが、これは上位オブジェクトからの継承も含めたものであり、実際 Morph の固有メソッドはこれぐらいだそうです。
*10:そうなの? ブログとかあんまりチェックしてないから、Matz さんの Smalltalk の悪口ってあんま記憶にないなあ。単純継承しかないのはちょっと不便だよね、って言説は「コードの世界」で読んだけど。