2005年11月18日金曜日

Paul VickからVB9の話を聞く

昨日はMSC2005でした。
VBのテクニカルリードであるPaul Vickの特別セッションに参加しました。
VBの歴史を軽くおさらいし、VBの将来(計画中のVB9)について話を聞きました。
内容としては@ITに吉松さんが書いたPDCレポートとかぶってはいたのですが、@ITの方には書いてなかった話を聞きました。それはXMLリテラル。
MSDNの"Visual Basic 9.0 概要"から引用しますが、こんなコードが書けてしまう。
Dim CountriesWithCapital As XElement = _
<Countries>
<%= Select <Country Name=(Country.Name)
Density=(Country.Population/Country.Area)>
<Capital>
<Name><%= City.Name %></Name>
<Longitude><%= City.Longitude %></Longtitude>
<Latitude><%= City.Latitude %></Latitude>
</Capital>
</Country> _
From Country In Countries, City In Capitals _
Where Country.Name = City.Country %>
</Countries>

引用符も何もなしにXMLが埋め込まれている。注意すべきはCountriesWithCapital変数の型で、これってStringじゃなくてXElement型なんです。つまるところ、New XElement("Country")みたいなコードと同等だと。
しかもASPみたいに、<%= City.Name %>みたいな表記もあります。動きもASPみたいなもんで、コードとして実行評価される部分です。
まとめると、「Select *** From Country In Countries, City In Capitals Where Country.Name = City.Country」のところはLinq。それによって得られたCountryやCityなんかを使ってXElementを構築する、そんなコード。
うっはー、変態だー。この機能はC#3.0には今のところ入っていないのかな。

2 件のコメント:

  1. RoundTableだともっと微妙な話が聞けたけど…当然の如くお話できん(w

    それにしても、やっぱり今一番の関心はLINQなのね。

    どっちにしてもPaulイイ人!!
    すんごい気さくで大好きになりました。
    とはいえVBはもう5年近く書いてないけど…。

    返信削除
  2. 猪股 健太郎2005年11月25日 1:28

    特別セッションではあまり突っ込んだ話ができませんでした。
    VB6からの移行がますます難しくなるんじゃ?と聞いてみましたが、VB2005→VB9でギャップが広がったわけではないとのお答えでした。
    VB2005でE&CやMy Name Space、My Frameworkが入ったので、移行の壁は低くはなっていますね。
    とはいえVB6 -> VB.NETの壁は依然としてそびえているので、.NETにおいてVBを選ぶ積極的な理由がなければ、移行をきっかけにVBをやめてC#にする選択もありですね。

    僕自身は、LINQを早めに理解しておきたいと思いました。他の開発環境にはない機能(LISPとかでDSLつくってしまえば別ですが……)なのと、Generic CollectionやAnonymous Methodといった、.NET Framework 2.0の新機能に対する理解も深まるのでは……という期待、あとは単純に面白そうだからですね。
    現場ですぐに使いたい機能か?と聞かれると、そうじゃないけど、と答えるでしょう。

    返信削除