Visual Studio 2010 Ready Dayに行ってきました。ほぼ1日がかりです。
「というわけで、久々に行った感想を聞かせてくれよ」
「うん。椅子に座って大人しく話を聞くというスタイルが、いかに自分に合っていないかがよく分かったよ」
「話が、そっち方面にいくんかい」
「うん。いくいく」
「もうちょっと話をしてよ。話は役に立ったの?」
「まず、話の中に冗長な部分があったと思うが、全般的には役に立ったと思う。通常の1日では得られないぐらいのいろいろな情報が得られたと思う」
「冗長っていうのは?」
「Visual Studio 2010を使ったパートナーさんとかの話は要らなかったと思うな」
「どうして?」
「他人が何を作ろうと、関係ないからさ。Visual Studio 2010を買うのはソフトを作ってる人であって、他人が作ったソフトを買う人じゃないからさ」
「ライブラリとかツールなら買うんじゃない?」
「うん。そういう系統の話は聞きたいのだろうから、こういうイベントに人が集まるのだと思うよ」
「そういう意味で冗長?」
「うん、その部分は滑っていたような気がする」
「それで、良かった部分は?」
「やはり社内で生のVisual Studio 2010を使い込んでいるエバンジェリストの方々の言うことは違う。数行のコードを打ち込むだけでその場でプログラムを完成させてデモ実行してくれるのは圧巻だ」
「でも、それってネットでもそういう話は出てくるのじゃない?」
「いや、そうじゃないんだ」
「どう違うの?」
「ネットのサンプルソースは長々と掲載されることが多い」
「うん」
「でも、その場で組んで見せてくれるプログラムは短いんだ。時間の都合もあるからね」
「なるほど」
「それに、ウィザードが自動生成してくれるコードと、手で打ち込んだコードの違いがすぐ分かるぞ」
「そうか。ネットに掲載されたソースは、両者混在なんだ」
「実際にその場で見ていれば、実は打ち込んだ行はほんの数行ってことも分かる」
「なるほどねえ」
「だから、こういうイベントは本当なら行く方が良いと思っている。高い金を取られる場合は考えてしまうが、こういう無料のイベントならね」
「なら、なぜ最近出不精になってるわけ?」
「まあ理由はいろいろとね」
「で、今回はなぜ行ったの?」
「それも理由はいろいろとね」
「じゃあズバリ聞くけど、Visual Studio 2008ユーザーとして2010に移行するの?」
「うん」
「その理由は何?」
「前に試したときの記憶だから当てにならないかも知れないけど。Invokeメソッドで走らせたメソッドの中で静的コンストラクタが走って例外が起きたとする」
「うん。WinFormのアプリは別スレッドからフォームを操作できないならInvokeメソッド経由で走らせるわけだね」
「その場合、2008だとInvokeメソッドで例外が起きたことになってそこが報告されてしまう。しかし、2010だと正しく例外が発生した箇所が分かる」
「なるほど」
「一応、これが私の考える目玉機能だ」
「そういう話を大々的に行うイベントだったのね」
「いやそうじゃない」
「というと?」
「実は、凄く多くの機能が含まれていて、そんな地味な機能は全く出てこなかったのさ」
「ほほう?」
「たとえば、ビルドが通らないとチェックインできないという設定が追加されているが、これは私としては全く意識していなかった盲点的な新機能だった」
「というと?」
「終電問題の一種で、終電の時間が来てしまったら未完成のコードをチェックインできないと他のマシンでチェックアウトして継続作業できず、困るのではないか、といいう問題もあるが、一方でチェックインするごとに結合テストしたいといった要求があるのも分かる」
「うん」
「しかし、うちではチーム開発はやってないからね。そういう要求は一切無かったから、意識もしていなかった」
「なるほど」
「1人で書いている分には、チェックインする前に行ったビルドとサーバ上の最新ソースで行うビルドは一致して当たり前だ。だから、意識もしていなかった」
「でも、チームで開発している人にはいいかもね」
「それを判断するのは、実際にチームで開発している人たちに任せよう」
「関わり方と作業スタイルで、ずいぶん印象が変わりそうなソフトだね」
「うん。だから、結果として印象が散漫なイベントになってしまった、という気もする。残念ながらね」
「それで?」
「私はいくつか重要な知りたい情報をゲットしてきたら良いのだけど、平服で来てエバンジェリストの名前も知っている人と、背広で来てきょとんと見ているだけのサラリーマンでは、かなり印象が違ったかも知れないと思う」
「両者はそれほど違うの?」
「たぶんね。昔はWin95系がラフすぎる子供ばかりで、NT系は背広を着込んだ出来る奴ら、という感じだったけどもうそれは昔の話だと思った」
「もう時代が変わったのだね」
「そうだ。そもそもVisual Studioの歴史を紹介するとき、Visual Basicを起点に据えちゃう時点で、もう時代が違う」
「MS-Cじゃないの?」
「こちら感覚では、MS-CのPWBがVisual Studioの元祖っていう感覚だが、もうMS-CもPWBも分からないだろう」
「PWBって本当に使ってたの?」
「短期間だが実際に使っていたぞ。英語モードで縦50行に設定してな。使ったPWBも英語版だったしな。日本語文字をソースに入れる習慣がまだ無かったらそれで十分だ。むしろ画面に広さに重宝した」
「Quick BasicとかQuick Cとかも忘却の彼方?」
「というか、そんなものの存在を知らないぐらい、MSの社内も世代交代が進んでいるわけだろう」
「そうか、分かったぞ。Visual Studioの歴史を机上の知識として調べていくと、Visual Basicが始祖に見えるという罠なんだ。Visual Studioは最初に出たときにはVisual BasicとVisual C++を1つの箱に入れただけの製品で、両者の歴史を辿るとVisual Basicの方が速いように見える」
「実際には、Visual Basicの成功にあやかってVisualブランドができただけで、それ以前から他の言語製品はいくらでもあるのにね」
「しかも、Visual Basicの成功というのはWindows上の話で、MS-DOS上ではMS-Cも十分すぎるほど成功していた。Cブームの立役者の1人だ」
「Visual C++がイマイチな印象を残してしまったのはMFCのせいかな?」
「そういえば、C#の進化よりも、MFCのメンバーを追加するダイアログが復活しました!という点がアピールされていたけれど、あれも聞く人によって印象がかなり変わりそう」
「若いプログラマにはチンプンカンプンだろうしね」
「年を食っていてもVBプログラマには分からない話題だろう」
「じゃあC++プログラマなら」
「それでも、MFCが好きな派と嫌いな派があるんだ。最初に勉強した時からMFCという人と、後から出てきたMFCで酷い目にあったという人では印象が180度違う」
「ますます、印象が散漫なイベントという感じだね」
「というか、Visual Studioというのは最初からそういう存在だったと思うよ。関係者が幅広すぎて印象が1つにまとまれないし、ましてTeam Systemが出てからその傾向が更に加速されている」
「なるほど」
「たとえば、チームを率いて固有のお客さんの案件に対処するような話がけっこうあったけれど、それはうちの現状とはまるで違う。うちは、不特定のユーザーから不特定のフォーマットでバグレポートが来る状況を回避できないから、バグ管理の自動化もできようはずがないが、想定モデルだとできるんだよね。関係者が限定されているから」
「難しいね」
「もちろん、うちの状況が典型的だと言う気もないけどね。おそらく想定モデルと違うイレギュラーなケースは他にも山ほどあって、その中で何をするかが問われているのだろうね」
「Visual Studioが問われているということ?」
「いや、想定モデルとの違いを的確に把握して上手く使っていくことさ」
「ちなみに、Visual Studioじゃないとダメなの? Eclipseとかではダメ?」
「うん。本筋から外れるけど、既に却下した選択肢だ。だけどね」
「けど?」
「意外や意外。オプションソフトでEclipseから接続できるってことがTFSの目玉の1つだったよ」
「どういうこと?」
「JavaとかEclipseというのは、既にうちでは過去の話なんだよ。遠い昔の思い出の中にそういう名前もあるという程度。まだ現物は残ってはいるものの、遠いマイナーな世界の話で細々と続いているだけで主要なトレンドですらないという認識だったのだが」
「だが?」
「実際は、そういうものに固執して使いたい人もいて、無視できなかったということだろう」
「ということは?」
「はい、世界の広さを体感できて勉強になりました」
「他の人とまるで違う感想だったかもね」
「普通の感想はみんな書くと思うので、あえて変えてみたぞ」