朝からIPAオープンソフトウェア活用基盤整備事業、 「クロスプラットホーム性を持つ帳票開発ツールの開発」の検収。
今回はトラブルもなく、お昼には完了。 こんなに手間のかからないところばかりだとありがたいとのお言葉をもらった。
次年度も、ものにしたいものだ。
kazamachiさんからの情報。JVM上で動くyet another language。 IBM Developer Worksのalt.lang.jreでもとりあげられている。
Java言語の冗長なところを取り除いて、 Parametric Typeなどを強化した、という感じか。
DBC(Design By Contract)やmulti-methodをサポートしているのは良いところだ。 というか、Javaが最初からこれくらいできていれば苦労しないですんだ人は多いだろう。 十分に保守的なので「Javaのあるべき姿」と言っても良いかもしれない。
でも、レシーバがある場合のmulti-methodの定義構文は好きじゃない。 定義と呼び出しで見かけが全く違うから。
void laugh(String str){ println("haha, I'm holding an instance of " str); } let myString = new String("Andy"); myString.laugh();
この「Matzにっき」で紹介した言語もかなりの数になると思うのだが、 よくもまあ次々と現れるものだ。言語好きとしては嬉しい限りだ。
Elevenは、 信頼性の高い、スケーラブルなWebアプリケーションを開発するためのプログラミング言語で、 Cに似た文法でデータベースをバックエンドとしたアプリケーションを開発できる。 Elevenで開発されたWebアプリケーションは PHPまたはmod_perlで動作する(ということは、コンパイラはPHPまたはPerlを吐くということか)。
面白いのはセッション状態変数をすべてMySQLデータベースに記録するので、 セッション管理などは暗黙的に行われる(これをstatesafe variableと呼ぶ)。
statesafe var first, last; display { print ("Please enter your name."); edit ("First name: ", first); edit ("Last name: ", last); } display { print ("Thank you, ", first, " ", last, "."); }
これだけで2画面を持つWebアプリケーションを実装したことになる(右図は実行例)。 実行例には「Updated state for user 1005.」とか「Continue」「Logout」とかのように 「どこから来たのか?」と疑問に思う部分もあるが、 とりあえず気にしないことにする(いざとなればソースを読めばよいから)。
それぞれのdisplayがWebアプリケーションの各画面に相当しており、 ロジックが非常にわかりやすい。画面遷移の記述として非常に直感的だ。 すばらしい。
次の例も衝撃的だ。
statesafe table { var deadline "Task deadline"; var description "Task description"; } todolist; display { edit ("Enter your tasks: ", todolist); }
これでToDoリストアプリケーションが実装できた、ということらしい(右図)。 非常に興味深い。tableというのがpredefinedな構造で、 "edit"に対して「Modify...」、「Remove...」、「Add entry...」などまで含めて提供しているようだ。
なかなかよくできている。 プレゼンテーションとロジックの分離のような 最近のWebアプリケーションサーバーでのはやりの仕組みはどうなっているのかという点も気にならないではないが、基本的な方向性は非常に共感できる。
で、考えてみると、これって別に新しい言語を導入しなくても、 Rubyのブロックとインスタンス変数を使ってライブラリで実現できそうだ。こんな感じで。
statesafe :first, :last; display { print "Please enter your name." edit "First name: ", @first edit "Last name: ", @last } display { print "Thank you, ", @first, " ", @last, "." }
だれかElevenのアイディアをRubyのライブラリとして実装しようという人はいないだろうか。
ということで、開催された。
事前の予想通り、社外からの参加者はなかったが、告知時間が短かったのでしょうがないだろう。 参加者は、私から時計まわりに、 まつもと、しゅうご、ゆうや、ごう、どん、こうじ、けんご、かずひこの計8名(敬称略)。 どこかに食べに行くか、という話もあったが、それでは食べるばかりでミーティングになりそうもなかったので、 オフィスの大机でピザを取ることにした。
結局、なんだか雑談で終わってしまったような気もするが、とりあえず話したこと。
あとなんだっけ。Lispにおけるレキシカルスコープとダイナミックスコープの話とか、 いろいろしてたような気がするけど。きっとかずひこくん辺りが議事録を出してくれるんではないかと。 出ても雑談ばかりで価値があるかどうかはわからないけど。
反省点など。
次回も開きたいが、今度はテーマを決めた発表か、CodeFestにした方が良いかもしれない。 時間も1時間半くらい限定で。
ところで、今回利用したMeetup.comだが、 ミーティング中にさっそく「今回のMeetupはどうだったか」とか「次回はいつにするか」とかメールを送ってきた。なんと積極的な。これは「出会え系(命令形)」とでも呼ぶべきか。
会場では各種ワークショップの報告会やクアラルンプール宣言(The Kuala Lumpur Statement)の策定が行われていたようだが、そういう外交的な集会にはあまり縁がないので、部屋でメールチェックおよびちょっとしたハック。
あ、そうそうなくしたカバンはちゃんと確保できた。
それからおみやげを買いに外に出る。暑い。やはり赤道近辺だ。 ホテルでは全然暑いと思わなかったのだが、 これはむちゃくちゃ冷房が効いているせいだったのだ。 どうやらこの国(他の国も?)では、豊かなことは暑くないこととイコールで、 ホテルやお金持ちの家はがんがん冷房をかけることがステータスのような。 なるほどわかりやすい。環境にはやさしくなさそう。 いや、寒くて暖房をかけっぱなしの家に住む私には彼らに対してどういう言う権利はないけど。
ホテルの向かいにあるスーパーマーケットに移動するだけで、すっかり汗ばんでしまう。 日本の真夏並みだな。
スーパーではいろいろと買い物をする。50RM(マレーシアリンギット、1RM≒30円)以上買わないと クレジットカードが使えないということで(今回一切両替をしなかった)、 おもわぬ買い物をしてしまった。 いかにもまずそうなジュースや、お菓子などジャンクフードが中心だが、 カップラーメンなども物色する。 しかし、タイグリコ社製のRockyなるお菓子はパチモンなのか、 それとも正当なOEMで単に「Pocky」という単語がどこかでは忌み言葉だったのか。 プリッツがPRETZというスペルだったので、これも偽物かと思ったが、 調べたら日本でもPRETZであった。 「タイ風ピリ辛サラダ・ラーブ味」(日本語で書いてある)というのはどういう味なんだか。
スーパーを出て、ゲームを売ってる店に寄ってみたのだが、 「ゲームボーイアドバンス用ゲーム180本入りカセット」とか謎の商品が189RMくらいで 売っている。知的所有権のようなものはあまり浸透していないようだ。
そういえば、今回モンゴルから来た人が「モンゴルではオープンソースソフトウェアの方が高い。Windowsとそのソフトはどこにでもある(コピーし放題ということらしい)が、オープンソースソフトウェアはわざわざ入手する必要があるから」だそうだ。うーむ、国が変われば事情も変わるもんだ。
午後はMIMOSが主催するツアーに参加する。 マレーシアのオープンソース振興センターであるOSCCの見学は面白かった。 立派な建物で本当にペイするのか不安な気がするのだが、 少なくとも力の入れ方は本物だ。 ちょうど行っていたLinuxアドミンセミナーを見学させてもらったが、 それなりに真剣にIPアドレスやDNSについて学んでいるようだった。 セミナーはテキストも講義もすべて英語であった。 マレーシアくらいだと自分の言語(マレー語)で、 コンピュータサイエンスを維持できないのかもしれない。 ホテルのテレビ番組もほとんど英語だったし(たまに字幕がつく)。
それから(知っている人には)有名なモスクを見学する...と思ったのだが、 外側から見るだけで、謎のガイドおじさんが延々と話し続ける。 マレーなまりの英語であまり興味のない歴史の話を続けるので弱った。 結局中は見せてもらえないし。モスクの中、見たかったのになあ。
で、その後新興開発都市らしい領域をバスを走らせながら、 おじさんしゃべりつづける。もうなにをいっているのか理解しようとする気持ちもない。 マレーシアは地震がないのか、建物がすごく脆弱に見えるなあ、とか思いながら そのまま寝てしまう。
気がつくとバスは元のモスクに戻っている。でも結局見学はできないみたい。残念。 ありがとう、おじさん。なにを言ってたのかほとんど理解する気もなかったけど。
ここで帰国組とホテル組に分かれて、帰国組は空港へ。
空港ではチェックイン後、おみやげを買うために歩き回る。 私、八田さん、風穴さんはうろうろと歩き回るが、 なかなか決められない。
なんだか中華風のような、南国風のような、やや日本の影響もあるような 謎のお土産物を眺めているうちに、やや催眠状態になってきて、 わけのわからないものを買いそうになる。 「そのうち、あのペナントを買う、とか言い出しそうなんで、そしたら止めて」とか言い合う。 しかし、結局八田さんはやっぱり変な物を買っていた。
ゲートをくぐる。バーガーキングで夕食。ここは無線LANが使える。 無料で使えるぶんチャンギより便利だなあ。
23:05発の日本航空で成田に向けて出発。
2007年中にRuby関連ツールを出すと言う「噂」のCodeGearが「Rubyエバンジェリスト」を探しているという話。
要件は以下の通り。
CodeGearも「本気」のようだ。
身内を見ても高専出身者は優秀な人が多いし、 しかも全国さまざまな場所に配置されているので、 地方の活性化に高専を活用するというのは優れたアイディアだと思う。
この近辺だけでも松江高専、米子高専のふたつがあるし。
先日の「日本発のソフトウェア」の話とも絡むが、 日本のソフトウエア産業衰退の真の原因は「誰も責任を取らない体質」にはじまる 「産業構造の劣化」である、との分析。
そうかもしれない。少なくとも
個人の自立とは、プロフェッショナル化であり、無理な要求に「ノー」と言える人を増やすことである。ベンダー、ユーザーが対等に近い立場で要求について議論できるようになれば、ソフトウエア産業は健全になっていく。
というのは私たちの目指すところでもある。
Rubyの「欠点」を直すために作られたfork。 ストレートにサファイアと名付けるというのは予想外だ。
直そうとする「欠点」は
なんだそうだ。どんどんやってほしい(いくつかは1.9で達成されてるけど)。 できが良い(かつ、互換性にあまり問題がないものは 本家Rubyに取り込みたいものだ。
半年に一度の新見での集会。 遠いぞ。