高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

VSUG Day 2006 Winter

――というわけで行ってきました。2:30から。1:45に着ければ良かったのですが、案の定迷って遅刻してしまいました。やっぱり(忙しかったようだけど)駅員さんにちゃんと聞き込みした方が良かったかな。

鋼鉄製のニシキヘビに巻かれて

IronPythonという.NET言語の紹介と提案。

機能

まあ、早い話が.NET Frameworkのクラスが呼び出せるPython というところですね、アセンブリを作ることもできるし、Perlなどと同じくコマンドプロンプトだけでも動かせるので、.NET Frameworkが使えるスクリプト言語が欲しい という人には大助かりですね。
C#IronPythonの接続方法についてはわたしの聞いた範囲ではわかりませんでしたが、.NET Frameworkで呼び出す組み込みスクリプト言語の選択肢としてはちょうど良いかもしれません。.NET Framework組み込みスクリプト言語は今のところ無かったと思うし(まあ、C#スクリプト言語のように使用する という方法もあるにはありますが)。

提案

仕事等で使う上では、これらスクリプトを外部からもいじれるようにして、お客さんにもスクリプトのカスタマイズができるようにしたらどうでしょう? ということ。
開発者側はそのために使う部品をC#などで作成して、あらかじめIronPythonで組み合わせておく。お客さんが「ここをこうしたい」などという要望を投げてきたときには、簡単なものならそちら側で対応してもらう、もしくは、そちら側で対応できるようなサジェスチョンを返す。 という開発方針の提案です。
業務レベルでそれをする というのにはどうなのかなと ちょっと不安も覚えますが(デバッグが不要になる などとは言っていましたが、別にスクリプト言語だってデバッグは必要だし、ともすればコンパイル言語以上の労力をかけることもあるし)、たしかにひとつの案ではあると思います。
セッションでは、フォームデザインもPythonで行う という方法をデモしていました。フリーウェア界隈ではあまり聞きませんが、フォームまでカスタマイズするとなると、こういう方法が安定していて良いのかもしれませんね。

感想

早い話が、プリセットが豊富なスクリプトプラットフォーム ということになるのでしょうか。
IronPythonでいくつかの実装をのり付けして提供(――このことから、講演者の菊池さんはIronPythonのことを「のり付け言語」と称していました)。必要ならのりをばらして好きに組み立てて使う と。
たしかに、PCだってばらしたり、組み合わせたり、増設したりしますものね。そういうやりかたがソフトウェアには通用しない っていうのはおかしい話かもしれません。
そして、フォームなどもごっそりスクリプトで というのも案外一理あるような気がします。
Opera(――SharpDevelopもそうかな?)なんかはダイアログのデザインをINIファイルやXML(xform)ファイルで改造できるような実装になっているようですが、いかんせん「ドキュメント」がない(そりゃ、Opera社やIC#Code自体を探せばあるのかもしれませんけど)。ドキュメントがないユーザーカスタマイズ項目なんて何の役にも立たないですから。
そのドキュメントを作る代わりに、ユーザーカスタマイズのための部分をIronPython実装にしてしまう という考え方は悪くないかもしれません。ドキュメントがなくてもわかる人には(わかる人には だけどね)カスタマイズできるのですから。
とくにMicrosoft Officeなどのようにやたらと多方面で使われるのにもかかわらずカスタマイズのしづらいソフトは、そういう実装になってくれるとうれしいな とは思います。
でもやはり、.NET Frameworkでのスクリプト言語実装としては、「C#VB.NETをスクリプトとして使う」というわけで・・・ そこがIronPythonでなければいけない というような必然性は感じなかったなあ(まあ、必然性を感じるような項目でもないのかもしれませんが)。


そういう「基本的なところ以外はスクリプトで ユーザーにもカスタマイズできるように」という観点で作成されてるソフトはフリーウェアでも少なく、正直わたしもちょっとうんざりしてるところはあります。
昨日の電車で読ませていただいた、id:yasuho:20061125:p1にもコメントしたように、やはりフリーウェアだとしても、カスタマイズのあまりできない形でソフト開発を負えるのは危険だと思うんですよね。
なぜなら、自分の趣味のやりかただって変動する可能性は十分にあるわけですから、仮に他のユーザーからのフィードバックが一切なかった(そして今後もあり得ない)としても、その時々の気分でころころ構成や機能を調整できるようにしておくのが望ましい(もっと言うと、配布時のために、元の構成に戻すのも容易であるとなお望ましいですが)。
以前にプログラミングのできないデバイスなんて面白くも何ともないなんて息巻いていましたが、ソフトにおいてもそうで、プログラミングのできない(スクリプトなどの仕組みを実装していない)ソフトなんていつか必ず限界が来るんです。フリーウェアだっておなじ――いや、業務より変動性があるかもしれないですよね、趣味の世界は。
だからこそフリーウェアでもこういう仕組みを取り入れて欲しいな と思います。まあ、業務で使う云々はその先かな。

新世代のスレッドアプリケーション開発手法

インテルさんの発表。これからどんどんコアを増やしていくCPU(今は4つ、そのうち8つ、16――と、どんどん増やしていくつもりらしい!? ますます発熱が心配になりそうですが)に対応した、複数のCPUを使うアプリの開発についてのお話。
まあ、これについてはC/C++言語ユーザーしか関係なさそう(説明としてもC/C++のライブラリの紹介のような感じでしたし)ですのでわたしは傍観だけでしたが。わたしからすると、1コアを1アプリケーションで占有できるというだけで、贅沢すぎることのような気がしますが、上を目指す人は目指しますねえ。
まあ、pragmaだけでその部分を複数のCPUで分業するのか、それともひとつのCPUで単独でやるのか(いわゆるシンクロナイズ処理部分?)を規定するOpenMPというC/C++コンパイラ拡張と、STLによく似たライブラリを使うことで、局所的に簡単にマルチCPUに対応できるようにもできるTBBという二つの仕組みを用意していますよ ということです。まあ、わたしにはよくわかりませんが(^_^;

でもまあ、マルチスレッド マルチCPUアプリケーションのデバッグやチューニングが難しい というのは、わたしにも漠然と理解できます。
VB6で言う「メッセージフックをしているアプリケーションをデバッグする」ような状態なんでしょうね*1

そのためのパフォーマンス解析や、デバッグツールもあわせて制作しているよう。
CPUごとのリソースデッドロックや、ボトルネックになっている処理の抽出などを行ってくれるツール群だそうです。よくわかりませんがとりあえず強力そうですねー。


まあ、おそらく.NET Frameworkではフレームワークにおまかせできる ということでしょう(――と考えて良いのかな?)。

Windows Workflow Foundation(WF)

.NET Framework3.0の機能の一つ、WFの説明です。
ワークフローを書いて、必要な部分に処理内容を付け足してあげて、Runしたら動く というような仕組みを作る機能――なんだかこう書いているだけでもレゴのマインドストームを想起します(実際デモを見てみたらそのとおりでした!)。
ただ、実はワークフローのパーツ(アクティビティと呼ばれます)は、すべてひとつひとつクラスとして実装されていて(とうぜん派生クラスを作ることも可能)、WinFormみたいにPartialなクラスファイルに分けられているだけのもの ということでした*2
まあ、そういう簡単な実装でも、いざちゃんとしたアドインをVisualStudioに入れてみると、あたかもマインドストームみたいに(まだ言うか)ぺたぺた処理を実現できる というのがなんだかすごいですねえ。

現状ライブラリ作成か、コンソールアプリケーション作成にしか使用できないようですので、その辺がちょっと残念(WinFormやASP.NETアプリケーション用のWFは、別に考えているらしい?)ですが。まあ、それだけでも結構面白いものにはなるかと思います。


まあ、正直なところ、わたしはWFそのものというより、考えている独自言語のネタになるなと思っていたわけですが。

流れ図(ワークフロー)を書いて、その中をいくつかの子ブロックで埋めて、アプリケーションを作成する。
子ブロックをカスタマイズしたいときに限りブロックの直接編集(コード編集)も可能ですが、なるべくそれをしないでもほとんどのことができるようなアプリケーション開発環境 そして.NETコンパイルも可能なもの。
以前id:yasuho:20061115:p1でもコメントしたWindows Mobile上でのプログラミングも可能でいいじゃないですか。

――っとまあ、それはともかく。
まあ、業務にどう使えるのかはさておき、前回のthe Microsoft ConferenceでMicrosoftの人も言っていたように、初心者にも使いやすいものになるんじゃないでしょうか と、期待しています。

懇親会

懇親会にも出席してきました。
あいにくちょっと時間がおしてしまったせいもあり、あんまり人と話ができなかったのは残念ですが・・・。
とりあえず、「プロプログラミング界がもっと盛り上がるためにも、アマチュアプログラミング界がもっと盛り上がるといい」ということ、そして、Microsoftの人からも「こういうコミュニティの存在は貴重だ」ということを聞けた それだけでもとても良かったと思います。
そうそう、以前出入りしていたVBQ&A掲示板でちょくちょく見かけ、他とは違う存在感から一目置いていた「魔界の仮面弁士」さんとも会えましたね、実は最初からすぐ側にいたのに、最後の数分まで全く気がつかなかったというのがネット世界のふしぎです。
彼が他の人に話していたことを聞いただけですが、Microsoft MVPというものの仕組みについても軽く聞きました。もしかしてわたしも、MVPになれる可能性がほんのちょっとでもあったりするんでしょうか。


そうそう、まあ、こんな大規模な講演会を開けるのだから、よく考えれば当然ですし、事前資料にもたくさん書いてあったことですが。
MicrosoftやIntel その他いろいろな会社がこういうコミュニティのスポンサーになっている ということにも驚きでした。このような組織が、権力でもなんでもなく、人の楽しみたいという力によってできている ということには感動を覚えます。

その他感想

まあ、正直他の人と話があまりできなかったのは、自分に今ひとつ自信が持てなかったせいもあるかと思います。
場の雰囲気がないときに、今ひとつ他人の会話に割り込んだり、他人を会話に巻き込むことができなかった。懇親会で幅の雰囲気に任せてちょっとは話もできたものの――。もう学校を出て半年もたつのに、臆病なものです。
まあ、一度の二度も繰り返してきた失敗なのだから、三度目はないよね。もうおなじ失敗をしないように、努力しなければ。
明日は勇気を持って、初めての人にもどんどん話していきたいと思います。


あと、一応誘ったのに、学校の学生が一人も来てなかったのは残念・・・ (まあ、宣伝は少なかったですが)。
内容的にVistaとか、もうちょっと未来のC/C++技術とか、今ひとつ今すぐに役に立つ知識がなかったのは確かですが。プログラミングの大まかな流れ、どういう考え方を持つと良いのか、そんなところを理解するのにとても役に立つと思ったのに。もちろんちんぷんかんぷんなところが多いかもしれませんが、そこはある程度ならわたしがサポートしますので(無計画な・・・)(^_^;
――12/9に、わんくま同盟さんのイベントがあるそうです。12/2には学校に行きますので、ちょっといろいろ発言しておこうかと(もちろん、そんな時間と余裕があれば ですけど・・・。先生方なら用意してくださいますよね?――と、無茶なことをいってみる)

全体的な流れ

各セッション(Intelのはちょっと属性が違ったので除外ですが)を通してみると、やはり開発者側にも、利用者側にも、オープン(一部 または全部を都合によって改変可能)であることがテーマのような気がしました。
まあ、わたしも会社でいくつかのツールを使わされているので、その気持ちはよくわかります。
オープンじゃないシステムだと、いくらめんどくさい作業でもWSHでオートメーションくらいしかできることがないし、結構限界があるんですよね。ですから、これからは問題のない部分は改変可能にしていく というのが良いんだな という流れに感じました。
これは上でも言ったとおりフリーウェア界にも当てはまると思います。
ひょっとしたら企業よりも流動的な、(自分を含む)ユーザーのニーズに的確に応えていくためにも、是非とも皆さん自作ソフトにスクリプト機能の導入を考えていただきたいですね。
そうすれば、必要性に駆られて、お手軽だから と、プログラミング人口ももっともっと増えていくかもしれません。

地図

えーっと・・・、上にもあったように、非常に迷いに迷ったわけです。いつのまにか秋葉原まで行ってしまいました。警察に保護を求め、おかげで無事に目的地には着けましたが・・・ ご迷惑をおかけしましたm(__)m

新しい場所に行くにはちゃんと住所くらい覚えておかないとダメですね。住所もわからないので誰にも聞けないという有様です。
しかし、会場の知名度があんなにも低かったとは。EZナビウォークにも引っかからないなんて知らなかったです。やはりビル街が当たり前の東京、うちみたいな田舎とは違って、たとえ高層ビルでも誰も知らないケースってあるんだなあ・・・。


それにしても、(携帯の)GPSだけだとやはり、いざというときに測位がずれたりしてちょっと不安ですねえ、更新速度も決して速くないし、この間タクシーで見かけた車載GPSと比べると非常に不安を覚えます。
無線通信で場所を計測できるW-ZEROのほうが地図としても優秀になるのでしょうか。あれならGPSほど距離は遠くないから追跡も早いでしょうし。
これから東京や見知らぬ土地に出かけることも多くなるわけだし、携帯ツールを選ぶなら地図アプリケーションの有用性も(いや・・・ それ以外は自分で好きにカスタマイズ可能であることを考えると、そっちのほうが重要かも?)考えなくてはいけませんね。

(わたしの)コミュニティ活動は?

うーん、いまのところは、自分の制作活動に手一杯で――。Site Systemだけは、自分の手で完成させたいですからね。
本当はこれができて、ある程度「自分はこれを作ったんだ」って言えるようになるまで、こういうことはするべきでなかったのかもしれません。
わたし自身としてもますます逃げ場が無くなってしまい、さあ(早く)作らざるをえないぞという状況です。早くソフトを完成させて、堂々と活動できるようにしなくちゃいけませんよね。


――ってなわけで、来週は久しぶりに土日ゆっくり休み(め)ます。
再来週は学校そしてその次の週は・・・ イベントがいくつかあるようで、どれに行こうか考え中です。2日までには決めて、学生を巻き込む準備をしなければ。もちろんまた不発に終わる可能性はありますが。

*1:VB6でメッセージフックをしているアプリケーションをデバッグすると、デバッガで止めてる間にもメッセージがプロシージャにたまり、結果一秒もしないうちにIDEごと強制終了する という困った状態になります。IDEとプログラムがおなじプロセスで動いてるとか、メッセージフックに対する対策も何も取っていないからこういうことになるんですね

*2:ワークフローをxomlというxamlの派生フォーマットファイルにすることもできます。なんと、それを動的に読み込むこともできます!