おがさわらなるひこのオープンソースとかプログラミングとか印刷技術とか

おがさわらなるひこ @naru0ga が技術系で興味を持ったりなんだりしたことをたまーに書くブログです。最近はてなダイアリー放置しすぎて記事書くたびにはてな記法忘れるのではてなブログに移行しました。

クリエイティブ・コモンズ・ライセンス
特に断りがない場合は、本ブログの筆者によるコンテンツは クリエイティブ・コモンズ 表示 - 継承 4.0 国際 ライセンスの下に提供されています。

Smalltalk合同勉強会@名古屋 2009.12

普段は東京と京都、それぞれを起点に行われている Smalltalk 勉強会を中間(ちょっと西よりだけど)の名古屋で! という試み。
2009.12.18の openSolaris Hot Topic セミナーの打ち上げを途中で抜け出し、夜行バスに飛び乗って行って参りましたよ名古屋。

もう開催されてから年も明けてしまいましたし、Smalltalk 勉強会のページに資料も公開されていますし、私が変なノイズを入れるより参照いただいたほうがいいと思うのでさらっと流します。

ハンズオン (10:00〜12:00)

ハンズオンは、とりあえず Twitter クライアントでも作ってみようかなとぼんやり思っているわけですね。
いやほっときになってる Plurk でも、アカウント持ってるだけでほとんど活用できてない Google Wave でもなんでもいいんですけど。

でも当然ネットワーク部分も含めて2時間ではできるわけないので、まずは GUI アプリでも作りましょうかと。VisualWorks でも Squeak でもいいけどこないだの勉強会でとりあえず画面つつくっていうアプローチが印象的だったので Squeak で。

ぶっちゃけまったく完成物が作れなかったけど、どうやって問題にアプローチするかのヒントをもらったので満足。
あと、フランスから Pharo と esug の宣伝に来た Serge Stinckwich さんと結構話す時間が取れたことがうれしい。
Ruby の文法はぼくには複雑すぎる」とか言ってたけど、じゃあ他の言語とかどうするんだと思った (^^;) まあ確かに Smalltalk から見ればどの言語だって複雑だよなあ。

「プロジェクト STEPS の紹介」by 山宮さん

アラン・ケイの設立した非営利団体 Viewpoint Research Institude (VRI) のメンバーである山宮さんに、現在関わっていらっしゃる VRI の研究プロジェクト STEPS についてお話していてだきました。

私がぐでぐで書くより山宮さんのブログエントリが完璧な出来なのでそちらをごらんください。

印象的だったのは、

  • VMを含めて自己記述性がある言語を20000ステップで記述するのが目標
    • この目標値は文庫本のボリュームがだいたいそれぐらいだから
  • そもそも Smalltalk 72 はかなり自己言及性がある言語だった
    • STEPS はその再発明 (reinovation)
    • VM 自体も触れるようにしたいというのも Smalltalk でもともとやりたかったこと*1

あと山宮さんといえばちょっとだけ見せてもらった木製半加算機
これ全部手加工 (歯車とかもやすりで削りだし) なんだって。すげー。
ビデオの最後に「こういうことに興味があったら、ぜひ自分のコンピュータをつくってごらんよ!」という呼びかけが最高。

「Groovy使いのためのSmalltalk入門」by 南谷さん

会場をお借りした(株)ニューキャストさんのセミナールームでよくGroovyの勉強会などをやっているとのことでこういうタイトルにしたら、実はGroobyをやってるのは tyama さんお一人だけだったという (^^;)

超かいつまめば、

  • Groovy は Java VM の上で動く Dynamic Type な言語
    • Ruby + Java といえばいいかしら
    • Java のクラス (ライブラリ) が普通に使えることが売り
    • パフォーマンスも遜色ない
  • Smalltalk と比較すると、言語仕様的に大きな優劣はない
  • しかし Smalltalk は超すばらしい環境がある

以上。
脱線としては、

  • SmallTalk R4.1 とか思い出すね
  • Groovy のクロージャはなんで -> なんだ。キモイ。
    • もしかしてスマイリーフェイス的に横に見ればλに見えるとか?
    • 最初は Ruby っぽく "|" だったんだけどなんかの文法とぶつかるので "->" になったらしい。詳細不明。
{ a, b -> print a+b } 
青木さん欠席のお知らせ

ここで会場に同様が走る (^^;)

「Seaside 3.0」by 梅澤さん

「自由自在 Squeak プログラミング」の著者であり、東京Smalltalk勉強会の主催である梅澤さんのプレゼン。

自由自在Squeakプログラミング

自由自在Squeakプログラミング

Smalltalk 上に実装された Web アプリケーションフレームワーク Seaside についての紹介です。
資料は Seaside 全般についての説明がこちら開発中の Seaside 3.0 の資料がこちら

内容は資料見てもらったほうが早いと思うので Q&A など。

Q
Webアプリケーションフレームワークとして脆弱性対策を盛り込むべきという議論が散見されるがSeasideはそこのところはどうなっているのか?
A
基本的にURI動的生成なのでアタックを受けにくい。
Q
SEO 的にそれはどうなの?
A
すべてをSeasideで書こうと思わないほうがいい。Seasideの強みは継続を使ったセッション管理、GUIアプリライクな強力なデバッグ機構などなので、たとえばショッピングモールなどの動的な画面遷移を行う部分だけに限定し、あとはStaticなHTMLか他のWAFを使うなどとすればいい。
C
動的生成されたURIを引っかけてガンガンクエリしてくる馬鹿なクローラ (例:百度など) もいるので、そういうのはブロックした方がいい。

「Pharoの紹介」by Serge Stinckwich さん

Pharo は Squeak をフォークして開発されている「よりよい Squeak」です。資料は Slideshare で。

というのはとっても楽しみでよいのだけど、

「多言語化どうするの?」
「うーん、大事なことはわかるけど、やり方わからないから、どうやっていいか教えて欲しい」
「梅澤さんがやってる Squeak のやり方だとうまくいかないんですか?」
「ちょっとやってみたけど一筋縄じゃいかないみたいなんですよね〜。まあ開発途上だから様子見かなと」

という会話が非常に微妙だ……。

「ESUGの活動報告」by Serge Stinckwich さん

ESUG = Europe Smalltalk User Group の紹介です。Pharo のお話しされた Serge さん続けて発表。

あーこれは資料見てとしか。
あ、ここに過去の活動で使ったプレゼンが集まってるので見てね、とのことです。
Ruby との合同勉強会なんかもやってるそうです。

まあ私もそうっちゃそうなんですけど、今だと Ruby とかで Dynamic Typing でかつすべてがオブジェクト (基本型がない) 言語に触れて、そのオリジンはというと matz さんが SmalltalkLisp の名前を出して、それで興味を持って勉強するってパターンが多いみたいなので、他言語との交流ってのも面白そうですよね。

LT 大会

Speaker のお名前ほとんど忘れてしまいました。ごめんなさい。

「Objective-Ruby」by technohippy さん
  • いやいや Ruby はそもそもオブジェクト指向やん、と思うけど、Smalltalk みたいにシンプルに書けないのが不満。
  • そこでひょいっと脇を見ると Objective-C って言語がある。
  • C と名前が付いてるけど文法はまるで Smalltalk
  • 素敵!
  • Ruby でも実現しよう!
    • %o{...} の中はまるで Smalltalk のような世界に
    • %o{...} の中と外でオブジェクトの行ったり来たりも可能
    • 実装は parse.y いじったりしてるのでただのネタです (^^;)

アイディアありきで実現してしまう行動力はすばらしいですね。
詳しくは d:id:technohippy:20091219:1261330025 をどうぞ。Github へのリンクもあります。

Groovy 紹介 by tyama さん

Grails徹底入門*3 の9〜10章(一番マニアックな章だそうな)を書いた tyama さんの発表。探し回ったんですが LT の資料見つけられませんでした。JGGUG の LT の流用とのことなんでどっかにあると思うんだけどなあ。

さっきもちょこっと書きましたが、

  • Java使ってるなら使え。
    • 文法ほとんど一緒。
    • でもめんどくさいこと (型宣言とか) はやらなくていい。
    • いろいろインフラもそろってる。
  • なぜか日本だといまいちという噂がある
    • どうやら一時期開発が止まったことがあってそのときに悪い噂が広まったかも
    • でも海外だと結構活発。
  • 繰り返すが Java 使いなら使え!

Java のクラス使えて JVM で動くってことは Java では書きたくないけど JVM では書かなきゃ行けないときには使えるんですかね? って質問したら「Groovy のおっきなクラスライブラリをがつんと必要とするので組み込みとかは厳しい」といわれてしまいました。しくしく。

M.Minsky「心の社会」と Smalltalk by お名前失念 ><;

乱暴にまとめてしまえば、

心の社会

心の社会

の心のモデリングSmalltalk でできないでしょうか? という問いかけ。
そう簡単にはいかないでしょうが*4 面白いテーマですね。
それより「心の社会」を読み返したくなってきた……これは手元にあるんで読めばいいだけなんですが時間がね……。


以上で発表Done。おつかれさまでした。

懇親会

いろいろお話ししましたがなにを話したか忘れてしまいました。
でもとっても刺激的な話をしたのは確かです。
プログラミング言語教育論とかしたような気がするなあ。

まとめ

そんなバリバリの Smalltalker でない私が名古屋までいってどうするの? と思いつつ参加した会でしたがとても楽しかったです。
ある意味伝説の人、青木さんのお話を聞けなかったのは残念ですが、今回盛り上がったのできっと来年もあるでしょう。あるといいな。そのときに機会はあると思うし。ま、最悪京都の勉強会にお邪魔する手もあるよな。

幹事の梅澤さん&解除を提供してくださった(株)ニューキャストさん、ありがとうございました!

*1:こういうと誤解を生むかもしれませんが (というか私自身も誤解しているかもしれませんが) アラン・ケイはどっちかというとコンセプトを出す人で、実装は周囲にいたハッカーたちが進めていたので、彼らの考えで Smalltalk の今の仕様が決まっていったところもあるようです。

*2:? 付きなのはこのブログエントリをご覧ください。

*3:Grails は Groovy on Rails なんでしょうね。Groovy を使った Web アプリケーションフレームワーク

*4:心理モデルの計算機での具象化というのはものすごくAIでは普通のテーマで、いわゆるフレーム表現という知識表現からオブジェクト指向はとても多くの考え方をパクっていると元AI屋のぼくは思っています。