Expression Blend 3日本語版をインストールする前の注意事項

Expression Blend 3日本語版とVisual Studio 2008を両方使われる方は、ご注意ください。 Silverlight 3 Tools for Visual Studio 2008のインストールは、Expression Blend 3日本語版(あるいは、Expression Studio 3経由でBlend 3)をセットアップする前に完了するようにしてください。 Silverlight 3 Tools for Visual Studio 2008が参照するSilverlight 3 SDKのバージョンが古いため、先にExpression Blend 3日本語版がインストールされてしまうと、Silverlight 3 SDKのバージョンが合わず、Silverlight 3 Tools for Visual Studio 2008のインストールが失敗するようです。 もし先にExpression Blend 3日本語版をインストールしてしまった場合は、次の方法で対処できます。 ・Silverlight 3 SDK日本語版をアンインストールする・Silverlight 3 Tools for Visual Studio 2008日本語版をインストールする・Silverlight 3 SDK日本語版をアンインストールして再インストールする / あるいはSilverlight 3開発者用ランタイムを再インストールする  

0

PowerPointプレゼンテーションと同様のことをSilverlightでやってみる

詳細はゆくゆく紹介していこうと思いますが、現在、とあるプロジェクトで、PowerPointのプレゼンテーションと同様なことをSilverlight 1.0で実行するというアプリケーションを作っています。 プレゼンテーションのファイル内容を分析して・・・などと難しいことは考えず、スライドで動きがないところは、Imageで静止画像を利用し、ビデオが必要なところはMediaElementで、スライド切り替わりやアニメーションはStoryboardでというシンプルな構造でやっています。これがやってみると結構面白いもので、ブラウザの全画面表示にすると、もはやSilverlightで実行しているように見えないのも面白いです。 似たようなことにチャレンジする方がいるかもしれないので、次のような作業が可能であることを知っておくと、時間を短縮できるでしょう。 (1)PowerPointプレゼンテーションの再利用 ・すべてのスライドは、JPEGあるいはPNG形式でエクスポートできる(PowerPoint 2007だと960x720の解像度になる)・プレゼンテーション内の日本語をコピーして、Expression Blend 2に貼り付けて、TextBlockをPathに変換することができる・日本語部分のコピーをする際に、貼り付け直後に半角の文字を入れると消える確率が下がる・複数の色を用いているリッチテキストは、色別にコピーする方がよい(TextをPathに変えると色情報がなくなるから)・図の部分は、[図の保存]から静止画にするか、コピーした上で、Expression Designに貼り付けてXAMLをエクスポートする際にできあがる静止画を利用して使う(この際に、出来上がった画像ファイルを使い、XAMLそのものは使わない) (2)単純なアニメーションの再現 ・フェードインするようなものは、Opacityプロパティを0%から100%の間で変化するStoryboardを作ると簡単(3)クリッカブルエリアの作成 ・複数のオブジェクトを含む領域全体としてイベントを拾う場合、Canvasでグループ化し、Canvas内のオブジェクトは、個別にIsHitTestVisible=falseと設定して、event bubblingを避ける・マウスイベントに反応するエリアは、CanvasのFillプロパティで黒色などを選択しておき、アルファ値を0にして、透明でイベントに反応する場所を作る ・・・ 単純に作ると、1つのXAMLファイルと1つのJavaScriptの中で作業を完結できると思います。ゆくゆくサンプルのひとつとして公開したいと思います。

0

一つ一つの積み重ねの重要性

ソフトウェア開発の面白いところは、頭で考えたことをそのまま動かせることにあります。 演算や論理的な判断による処理の分岐、繰り返し、すでにあるライブラリの呼び出し、そういった小さなものを一つ一つ積み重ねた結果として開発者が意図した計画の下で何かを動かすというのは、対象としている処理が小さいうちはそんなに困ることはありません。しかし、規模が大きくなったり、いろんなものを統合していく状況下で、意図しないいくつもの新しい問題を抱えるようになってくると、解法はひとつではないので、単純な作業で終わるものではありません。 さらに近年は、複数のサーバとネットワークで接続されている状況で、物事を積み重ねていく必要があります。そうなると、単純にプログラミング言語が使えるだけでは十分ではない問題がいくつも出てきます。同期通信だけではなく非同期の通信が必要になったり、通信を暗号化したりといったネットワークに関する要件や、ユーザの認証や認可というアクセスコントロールやユーザの偽装などセキュリティ要件を無視することができなくなってきます。 ふと、「SilverlightによるAJAXアプリケーション開発」、とひとくくりに書いても、そのアプリケーションを実行するプラットフォームでどんな要素技術が関連しているのかということを、ぱぱっと図に描いて説明するのは実際のところ容易ではないかと思ってます。概要レベルは説明できても、いざ実行に移そうとすると、とたんに理解しなければならないことがたくさん現れてくると思います。また、頭ではなんとなくわかっていても、いざ、実際に開発をしてみて始めて気がつく問題というのも少なくないと思います。 久しぶりに開発の作業を続けてみて、改めて実感するのは、やはり、一つ一つの積み重ねの重要性です。何か新しいことをしようとして、サンプルプログラムを見て王道を探そうとしても、そんなうまい話はないということです。確かにサンプルプログラムから得られるヒントはたくさんあるのですが、なぜそのように考えられたのかというカラクリが文書化されているわけではないので、その謎解きをするつもりで追いかけないと自らの問題解決には結びつきづらいのではないかと思います。かくいう私も、気がつけば、一つ一つ問題にぶつかってはそれを理解し、解決しようとし、解決できなければ回避策を探し、という繰り返しを行っています。特に参考となるドキュメントが少ない状況においては、そもそもの想定以上に試行錯誤を繰り返さなければならず、読み間違いや勘違いをすることもあれば、投げ出したくなるようなこともあります。でも、そこでめげずにしつこく探求していくのが開発者のマインドではないかと思っています。 そんなわけで、今後の投稿において、知識を積み重ねていくためのポイントとなることを踏まえて、実体験に基づく記事を増やしていきたいと思っています。

0

Silverlight 1.0 とAJAXとの連携

現在、Silverlightを使い、ASP.NET AJAXとWebサービスとを連携させながらアプリケーションを開発しつつ、いろんな課題と向き合っています。実装方法はいろいろとあるわけですが、Visual Studio 2005とSilverlight 1.0 RCという制約の中で実行可能性を探りながら進めています。この制約においての実装ができたら、まだ正式版にはなっていないVisual Studio 2008とSilverlight 1.1との組み合わせでどういった変化が生じるのかをうまく考えることができるのではないかと仮説を立てているからです。 今、最大の課題は、Webサービス経由で取得したデータとSilverlightアプリケーションにおけるXAML要素へのデータバインディングです。 Silverlight 1.0 RCを利用してASP.NET AJAXと連携する場合、まだ正式版ではないVisual Studio 2008とASP.NET Futuresを組み合わせるとXAMLコントロールというのが使えるようにはなっています。http://quickstarts.asp.net/Futures/Silverlight/xaml01_wt.aspxこの組み合わせの選択だと、現時点で実装についての大部分で公式のサポートが得られません。 それを踏まえて、今、取り組んでいるのは、できる限り正式版の製品を組み合わせてデータ連携を行うSilverlightアプリケーションを開発するにはどうすればいいかというものです。言い方を変えると、新しい技術導入にあたり、サポートされていない製品の利用を少なくした上でどのように実装できるかということの検証になるのかもしれません。この制約の中でAJAXでデータ連携してSilverlight上で表示を行うには、SilverlightコントロールのCreateFromXAMLメソッドを使って、動的にXAMLの内容を更新するか、JavaScript上でXAML要素にアクセスして、値を変更するほかなさそうです。どちらにせよ、何らかのWebサービスのメソッドをJavaScriptから呼び出し、その結果を生データとして受けるか、XAMLデータとしての文字列として受けるか、どちらかしか選択肢はないように思います。 そうなると、ASP.NET AJAXを使ったWebアプリケーションとはちょっと異なり、Silverlightアプリケーションを実行している環境からJavaScriptでXML Webサービスを呼び出すことが一番の近道になるようです。つまりは、初期画面を生成し必要なスクリプトなどをクライアント環境に提供するWebアプリケーションと、クライアント環境でのユーザインターフェイスに絡む部分のデータ生成を行うWebサービスとを組み合わせることになります。 データバインディングを考えた場合、考慮すべき点が2つあります。 (1)XAML要素に名前を付けていく場合、既存のXAMLツリー上にある名前と重複しないこと(2)UIとして見せる部分と内部で利用したデータがある場合、XAMLとは別でデータ構造を保持しておくこと 文字だけで表現するのはわかりづらいかもしれませんが、データとXAMLのテンプレートとを連結する形でXAMLを部分的に生成するようなことを考えた場合、テンプレート側のXAMLには、x:Nameによる指定が可能なのは、取り扱うデータの中でユニークなものに限る、ということです。もしかすると、私のやり方が間違っているのかもしれませんが、(1)に違反すると、SilverlightがRuntime errorを発生させ、エラーメッセージからは即座に意味がわかりません。言い方を変えると、データをクラスのインスタンスのように考えて、それをXAMLにマップさせようとして、インスタンスが一つなら問題にならないのですが、複数のインスタンスを同一のXAMLツリー上で管理する場合、x:Nameをプロパティ名のようにして使うことができないということです。 この制約があるために、アプリケーションで取り扱いたいデータの一部をXAML上に隠し持っておいて、スクリプトから参照しようと思っても、上述のように複数のインスタンスを扱う場合に、名前が重複しないようにしなければならないので、単純な方法でデータを取り出すことはできないと思います。このため、(2)で述べているように、見せるためのXAMLとアプリケーション上で取り扱いたいデータ構造、その両方を含めたデータの集まりを何らかのオブジェクトで管理する必要があります。 現時点での結論としては次のようになります。私の体験に基づくものであり、マイクロソフトの公式見解ではありません。 Silverlight 1.0RCレベルの仕様でAJAX連携でサーバから何らかのデータを取得して、データバインドした結果の変更分をXAMLにして受け取るような仕組みをつくるためには、取得したデータ+変更するXAMLの部分的な文字列、これをWebサービス側でひとまとめにして、Scriptからのアクセスに対応できるようにする、ということが望ましいかと思います。ここでいうところのAJAXは、JavaScriptからWebサービスを呼び出し、呼び出しの結果に応じたイベントハンドラで変更分を反映するということになるので、ASP.NET AJAXのようにコントロールを組み合わせて簡単に行うものとは異なり、必要なコードは開発者がすべて面倒を見ることになります。 このあたりは、近い将来、まとまった形で文書にしたいと思います。

2

エンジニアのキャリアビジョン

皆さんは、3年後、5年後の自分というものを考えたことがありますか。 昨日、ある方とお話ししていて、「最近、日本のIT技術者が自分の3年後を考えられないらしい。他の業界ではそういうことはないんですが・・・」という話題がありました。 自分自身を振り返ってみると、将来の自分の姿を考えるようになったのは、たぶん、一匹狼的に何でもこなしていた立場から、他の人を支援する立場になったころかもしれません。駆け出しのころは、それこそ仕事があれば幸せ、みたいな感じで、未経験の領域も書籍などで学びながら知識獲得に躍起になっていて、あまり明確なビジョンというものを描いてませんでした。ビジョンを描く以前に自分の経験を重ねることが大切だと思っていたからです。 私の場合は、自分の知識をもとに他の人の開発を支援する立場に回ってから、先のことを考えるようになりました。ただ、振り返ると時代に応じて自分の将来に対する見方が変わってきているように思ってます。 オブジェクト指向の開発ツールのサポートを担当していたころは、短期的な目標とちょっと長めの目標を掲げていました。短期の目標としては、チームの力を引き上げることとできるだけ問題を短期間で解決に導けるようにツールの開発者やライブラリを提供している企業との良好な関係を築き上げること、ちょっと長めの目標としては、製品そのものの改良に携われる立場になることと業界の標準化の動きの中で技術を見ていこうということでした。その頃としては、製品の範疇で技術支援という立場から、もっと上位の視点で製品企画をする立場、というのが一つのキャリアビジョンでした。 エンタープライズ系のアプリケーションマネージメント製品のプリセールスを担当していたころは、目先の案件をこなす一方で、より上位のシステムインテグレーションを業務の視点、経営の視点から導いて包括的に考えられるような立場になることが一つの目標でした。その後は、担当していた製品の改良に始まり、気がついてみたら、国際化の観点を踏まえた製品開発を支援する立場になり、なかなか思い描いた通りにはならないものだったりしました。 いろいろな失敗もあり成功もあり、描いていたキャリアに届かないとしても、経験を重ねることで自分自身のスキルの幅が広がっていきます。価値観が変わっていくと、今まで興味のなかった分野が面白くなることもあります。年に1回くらい自分自身の棚卸をしてみるのも良いかもしれません。苦い経験の中にも学ぶことは多いでしょうし、失敗から学ぶことも少なくありません。 ひとつの分野に固執して極めていくもよし、広くいろんなことにチャレンジするもよし、ソフトウェアの世界はどんどん変化していくので、特定技術だけを知っているだけでは辛い部分もあるかと思います。時には特定の分野についての厳密な知識獲得を放棄してもよいかもしれません(見る触る程度は試してみる前提で)。 今の私は、ちょっと人と変わった経験を活かして、他の人を勇気づけることができる立場になりたいと考えています。その意味では方向として目指しているものはマネージメントの世界です。そこに到達するまでにまたいろんな経験を重ねることになるのでしょうが、その過程を楽しみ、多くを学び、知識を実行できるようなスタンスでこれからを進んでいきたいと思ってます。

0

社内テスト用のOffice 12 (2007 Microsoft Office system)をアンインストールしてみた

マイクロソフト社内では、自社製品のリリース前から、自社製品を業務の現場で利用する試みがあります。 そんなわけで、昨年の終わりぐらいからOffice 12(2007 Microsoft Office system)を使っていたのですが・・・。 最近になって、Office 2003をお使いの人とデータ交換する上で、PowerPointのファイルを下位互換性があるように保存するとファイルサイズが想定以上に大きくなってしまって困るようになってしまい、とうとう、アンインストールを試みてしまいました。(ちなみにOffice 12ネイティブのファイルならとても小さいんです。) 結果は正常にアンインストールできて、しかもシステムの再起動は不要!おー、これはいいじゃないですか。しかし、IE6のある環境にIE7をインストールするのとは異なり、元々使っていたOffice 2003が復旧するわけではありません。さすがに再度インストールが必要です。 Office 2003に戻ったはいいけれど、操作感が異なって、なんとも変な感じです。OutlookなんかはOffice 12のルック&フィールの方が断然使いやすいです。PowerPointは、Office 2003の方が線引きしやすいのですが、見た目を充実させるならばOffice 12の方が楽でしょうね。 今日は2製品のアンインストールねたになってしまいました。

0

IE7 Beta 2 Previewをアンインストールしてみた

この前紹介しましたIE 7のベータ版をアンインストールしてみました。 理由は、特定のブログサイトで使われているCSSとの相性が悪いようで、投稿内容が一部見えない現象に気がついたからです。 恐る恐るでしたが、結果としては問題なくIE7が削除され、以前のIE6が復活することがわかりました。アンインストールにはシステムの再起動が必要なのでご注意ください。これで安心してIE7の評価ができるかも?ですが、基本的に現時点のIE7はベータ版ですから、業務で重要なPCへの導入はお勧めしません。評価される方は、ご自身の責任の範囲で利用されることを望みます。

0