Archives for blog ViolentCoding

[WPF]XBAPとSilverlight

まれに旭山動物園のサイト「Mother Earth 〜母なる地球」がSilverlightとか書かれているのを見るんだけど、違うんだ。

クロスプラットフォームでは無いWPFのブラウザ展開「XBAP」(拡張子[.xbap])なんだよ。
「XAMLブラウザアプリケーション」って言われたりする。

 

たぶんSilverlightが、Flashみたいなマイクロソフトのブラウザ・プラグイン → WPFがWebで動く → 「旭山動物園」みたいな流れで誤解してしまっているのかな。

でも、SilverlightだったらMacでも見られるよね。

 

まあ、この「XBAP」自体、Silverlightがリリースされて、今後目にする機会はあまり無いと思う。
業務アプリとか社内イントラなどの動作環境が特定・統一できるところで(Windowsでしかも.NET Framework 3.0以上が入れられて・・・)、目立たず使われる事があるくらいだろうな。

XBAPは基本的にWPFをブラウザ内で動作させているので、動作環境がVistaか.NET Framework 3.0が入ってるXPで、しかもブラウザはIEのみなんだよ。.NET Framework 3.5 (今はBeta)を入れればFirefoxでも見れるようになるけどさ。

旭山動物園はHTMLページ段階でIE判定が入っているからFirefoxは蹴られちゃう。(XBAPのURLを直接たたけば大丈夫だけど)

 

Silverlightと何が違うかっていうと、Silverlightはプラグイン上で動作しているけど、XBAPは違う。実はEXEが動いてる。

 

まず「.xbap」はURLを直接指定するか、HTMLのiframeの中で指定しなきゃブラウザで見る事ができない。さらに「.xbap」自体は数KBしかなくて、実際のコンテンツとなるアプリ実体の(サーバーに配置された)「.exe」を指定しているに過ぎないファイル。

そして、もっとややこしいことに、このEXEを実行しているのはブラウザではなく、System32あたりにある「PresentationHost.exe」みたいな名前のWPF実行環境が行ってる。

当然、普通に相対パスとか書いていると、このPresentationHost.exeが基準の相対パスになる。もろにローカルで動いている。またWPFだからといっても、ローカルで動くアプリケーションに比べるとブラウザ内で動く以上、セキュリティ系やパフォーマンス系でいくつかの制約もある。

しかも、Silverlightがでてきて、忘却の彼方へ向かってる。(実際、久しぶりに「XBAP」という言葉を思い出した)

 

「旭山動物園」がSilverlightと誤解されたままだと、「Silverlightで3Dを使った、あの旭山動物園みたいの作ってよ」って言われても作れないよ。Silverlightの1.1でもリリースの時に、3Dをサポートする予定はないし。コンテンツ自体は3D部分を除くか、疑似で表現すればSilverlightになりそうな気もするけど。

クロスプラットフォームで動くのはSilverlightだけ。

 

じゃあ、結局SilverlightはFlashと比べてどうなのって話になるんだろうけど、たぶん

  • .NET開発者がWebのリッチコンテンツを作れる
  • DLLが使える
  • JavaScript・Python・RubyでもOK
  • LINQでデータにアクセスできる
  • XAMLのランタイム時のパースや動的生成ができる
  • .NET Framework の連携開発

が主なところになるんかな。

.NETでWebリッチコンテンツを作れるってのが一番大きいんだろうけど、技術的興味じゃなくて、そういうモノを作りたいって思う人が.NET開発者にどれだけいるかにかかってるんじゃないかな。

 

あ、もうひとつ付け加えておくと、シンプルなXAMLならXBAPみたく直接ブラウザで見れる「LooseXAML」ってのもある。実際のコンテンツじゃなありえないだろうけど直接URLに「.xaml」を指定して見れるやつ。これもSilverlightじゃないよ。

 

Related posts

[word]陰影、知性

その陰影の段階を認識し、理解するのが、健全な知性だ。そして健全な知性を獲得するには、それなりの時間と労力が必要とされる。

「ねえ、僕らの人生は、明るいか暗いかだけで単純に分けられているわけじゃないんだ。そのあいだには陰影というか中間地帯がある。その陰影の段階を認識し、理解するのが、健全な知性だ。そして健全な知性を獲得するには、それなりの時間と労力が必要とされる。君は別に性格的に暗いわけじゃないと思う」

村上春樹 アフターダーク

Related posts

[Flex]Flex Skin Design Extensionsをインストール

Flex Skin Design Extensionsの日本語版Adobe CS3へのインストールについて。

2008年10月15日更新:Flex Builder 3のリリース版での記述に修正。

 

Flex Skin Design Extensions はFlex3のスキン編集用に用意されたCS3(Flash・Illustrator・Photoshop・Fireworks)のための拡張機能で、Flex3とCS3用というところがちょっと注意です。

 

Flex Skin Design Extensions は Flex Builder 3 のインストールディスクに付属しているものを使用するか、下記サイトよりダウンロードして使用します。

Flex Skin Design Extensions & Flex Component Kit for Flash CS3
http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex_skins

 

拡張機能のインストール方法や使用方法・Flexのスキンとしてエクスポートする説明は「Importing Skins into Flex Builder」というPDFドキュメントに書いてあります。

[PDF]Importing Skins into Flex Builder
http://www.adobe.com/go/flex3_skinning_doc

 

でも、日本語環境だとIllustratorやPhotoshopで動かない場合があるんですね。
ということで、各CS3アプリケーションでSkin Extensionの開始までをメモしときます。
(Mac・Windows XPで確認)

 


Flash CS3

まずはFlashから。

「Flex Skin Design Extension for Flash」(flex_skins_flash.mxp or Flex_Skins_12_05.mxp)をインストールするんですが、その前に「Flex Component Kit for Flash CS3」をインストールしていない場合は「Flex Component Kit for Flash CS3」をインストールします。

「Flex Component Kit for Flash CS3」も上記のFlex Skin Design Extensions & Flex Component Kit for Flash CS3のページからダウンロードして使用するか(FlexComponentKit.mxp)、Flex Builder 3のインストールディスクにある「FlexComponentKit_ja.mxp」を使用してインストールします。

 

「Flex Component Kit for Flash CS3」と「Flex Skin Design Extension for Flash」をインストールしたら、Flash CS3起動し、[ファイル]メニューから[新規]を選択します。

fsde_fla01

 

表示されるダイアログで「一般」から「テンプレート」に切り替え、「テンプレートから新規作成」ダイアログにすると、カテゴリに「Flex Skins」が追加されていて、「Flex Skins」を選択し、テンプレートでスキン編集を行うアイテムを選択するか、全部入り「flex_skins」を選択すると、Flexスキンを編集するFlaファイルが開かれます。

fsde_fla02

 


Fireworks CS3

「Flex Skin Design Extension for Fireworks」(flex_skins_fireworks.mxp or FW_Flex_Skinning_11_20.mxp)をインストールするだけで、Fireworksの場合はシンプルです。

使用するには[コマンド]メニューから[Flex Skinning] > [New Flex Skin]と選択し、編集するスキンを選びます。表示されるパネルの「multiple components」はコンポーネント全部入り、「specific component」は単一コンポーネント編集です。

fsde_fw01fsde_fw02

※ここでキャンセルするとFireworksが落ちたりする(Mac)。

 

Windows Vistaにおいて、FlashやFireworks用のMXPファイルによるインストール完了後に拡張機能が正常に動作しない場合は、ユーザーアカウント制御(UAC)の設定などを変更して、MXPの再インストールということが必要なったりするかもしれません。

 


Illustrator CS3

Illustrator用の「Flex Skin Design Extension for Illustrator」では、「flex_skins_AI.zip or AI_Flex_Skinning_11_20.zip」を解凍してできる「FlexSkinning」の中身を指定ディレクトリにコピーします。

 

まず、FlexSkinning/Scriptsの「Flex Skin」フォルダを、Adobe Illustrator CS3/プリセット/スクリプト内に配置します。

次に「FlexSkinning」の「FlexSkinning/Templates」フォルダにある「FlexSkins」フォルダを配置しますが、「Adobe Illustrator CS3」フォルダに「Cool Extras」フォルダを用意し、さらに「Cool Extras」の中に「Templates」フォルダを作成します。そして、その「Templates」フォルダ内に「FlexSkins」フォルダを配置します。

 

または、この「FlexSkins」フォルダを「Adobe Illustrator CS3/エクストラ/テンプレート」に配置しても良いのですが、その場合には後述のIllustrator日本語版のパスに対応させる修正が必要になります。

 

Adobe Illustrator CS3/プリセット/スクリプト/Flex Skin

  • Create Flex Skin.jsx
  • Export Flex Skin.jsx

Adobe Illustrator CS3/Cool Extras/Templates/FlexSkins

  • components フォルダ(単体Flexスキン用aiテンプレートファイル群)
  • flex_skins.ait(Flexスキン用aiテンプレートファイル)

または、
Adobe Illustrator CS3/エクストラ/テンプレート/FlexSkins

  • components フォルダ(単体Flexスキン用aiテンプレートファイル群)
  • flex_skins.ait(Flexスキン用aiテンプレートファイル)

 

FlexSkinsフォルダを「エクストラ/テンプレート」に配置した場合には、日本版環境のパスに対応させるため「Create Flex Skin.jsx」を編集します。

「Create Flex Skin.jsx」をテキストエディタ等で開いて、71行目の「flexSkinPath = app.path.fullName + “/Cool Extras/Templates/FlexSkins”;」部分を日本語環境のパスに書き換えます。

Create Flex Skin.jsx

//71行目:英語版パスを日本語パスで指定
//flexSkinPath = app.path.fullName + "/Cool Extras/Templates/FlexSkins";
flexSkinPath = app.path.fullName + "/エクストラ/テンプレート/FlexSkins";

またこのスクリプトファイルの編集時には、ファイルの「読み取り専用」解除やVistaのユーザーアカウント制御(UAC)の設定の変更などが必要になるかもしれません。

 

Macの場合は「Adobe Illustrator CS3/Cool Extras.localized/Templates.localized/FlexSkins」のように「localized」が付いて参照されているので、ディレクトリが日本語のままでもOKで、変更の必要はありません。(また変更しても動作します)

 

[ファイル]メニューから[スクリプト]を選択し、[Flex Skin] > [Create Flex Skin]を選ぶと編集するFlexスキン選択パネルが表示されます。

fsde_ai01fsde_ai02

 


Photoshop CS3

PhotoshopでもIllustratorの場合と同じように「flex_skins_photoshop.zip or PS_Flex_Skinning_11_20.zip」の中身である「Presets」を指定ディレクトリにコピーします。

 

「Presets」内の「FlexSkins」と「Scripts」フォルダを、Adobe Photoshop CS3/プリセットに置き、その後日本語パスに対応させるために修正を行います。

※補足:「Scripts」フォルダ内のファイル(ExportFlexSkins.jsxとNewFlexSkins.jsx)をAdobe Photoshop CS3/プリセット/スクリプトに入れても大丈夫です。

 

Adobe Photoshop CS3/プリセット

  • Flex Skins フォルダ(Flexスキン用psdファイル群)
  • Scripts フォルダ(jsxファイル2つ)

 

または、
Adobe Photoshop CS3/プリセット

  • Flex Skins フォルダ(Flexスキン用psdファイル群)

Adobe Photoshop CS3/プリセット/スクリプト

  • ExportFlexSkins.jsx
  • NewFlexSkins.jsx

 

Photoshopで日本語パスに対応させるには、「プリセット/Scripts」または「プリセット/スクリプト」の「NewFlexSkins.jsx」を修正します。Illustratorと違って、Mac環境でもスクリプトの修正が必要になります。

「NewFlexSkins.jsx」の47行目を日本語環境のパスに書き換えます。また「NewFlexSkins.jsx」が読み取り専用となっている場合は読み取り解除して編集します。

NewFlexSkins.jsx

//47行目:英語版パスを日本語パスで指定
//var strPresetsFolderDirectory = localize( "$$$/Windows/PresetsFolder/Directory=Presets" );
var strPresetsFolderDirectory = localize( "$$$/Windows/PresetsFolder/Directory=プリセット" );

このスクリプトファイルの編集時には、ファイルの「読み取り専用」解除やVistaのユーザーアカウント制御(UAC)の設定の変更などが必要になるかもしれません。

 

[ファイル]メニューから[スクリプト]を選択し、[New Flex Skin...]でFlexスキン選択パネルが表示されます。

fsde_ps01fsde_ps02

 

Related posts

[Flash]TwitterPanel for Flash CS3

Flash CS3用の拡張機能「TwitterPanel」を作ってみました。

TwitterPanel01

Flash CS3のパネルからtwitterにアクセスする、新ジャンル「Flashに関係ない拡張機能」です。

 

他の人から見れば、ただFlashを使っているだけですので、お仕事中に堂々とtwitterすることもできます。ついでに、Flashで開発しながら、Flashに関する質問とかをtwitterすることにも利用できそうです。
1日中Flashで作業している人にとっては、こういうWebサービスに接続する機能がFlash IDE内にあっても良いんじゃないかと。

 

主な機能

  • Friendsの発言の表示・更新
  • Public発言の表示・更新
  • 単一ユーザー発言の表示・更新

TwitterPanelCap02

 

遠目にはFlashを開いているだけ。

TwitterPanelCap03

 

大胆なあなたに。

TwitterPanelCap04

でもパネルを小さくした状態で見てれば、ステージをクリックするだけでパネルが隠れる。

 

利用について

Flash Player 9が入っていれば、Flash 8でも動くかなと思って試してみたんですが、表示されませんでした。もしかすると、Flash 8ではパネル部分でもFlash Player 8が使用されるのかもしれません。

TwitterのActionScript 3.0のライブラリを使って、機能が満たせるくらいの感じで作ってます。
ログインエラーやタイムアウトとかの処理はしていないので、ログインに失敗してそうな時はスパッと一度パネルを閉じ、ずっとロード中の場合やTwitterが重いときなどはタブを切り替えると更新されたりします。
※ユーザー名/パスワードの保存などはSharedObject保存です。アカウント情報を保存する機能を使用する際にはご注意ください。

 

現在、正常に動作しないようになってしまいましたので、TwitterPanelの公開はひかえておきます。
Flex3でURLRequestHeader あたりが変わってTwitter ActionScript Libraryが動かないってこともメモしておきます。

 

TwitterPanel.mxp 0.8 ダウンロード
TwitterPanel08.zip
※インストールにはExtension Managerが必要です。

 

利用方法
「ウィンドウ」メニュー > その他のパネル > TwitterPanel

 

そのうち、「Flashに関係ない拡張機能」として、YouTubeパネルみたいなのでも作ってみようと思います。

 

参考
Twitter ActionScript Library
http://twitter.com/help/api

 

Related posts

[Blend]Canvas.xaml用テンプレートを追加する

Expression Blendで[ファイル]メニュー - [新しいアイテムの追加]に、パーシャルクラスを持たないXAMLのみの「Canvas」を追加する方法です。

Canvas.xamlを生成するテンプレート定義を作って、テンプレート用ディレクトリに配置すれば、[新しいアイテムの追加]ダイアログに「Canvas」が追加されます。

Blend1_addNewItem_Canvas

 

Blendのテンプレート用ディレクトリは、
C:\Program Files\Microsoft Expression\Blend 1.0\Templates\ja\が基本で、さらにその中に言語別の「CSharp」「VisualBasic」というフォルダがあります。

で、それぞれのフォルダに配置されたテンプレート定義が使用言語プロジェクトの「新しいアイテムの追加」ダイアログで表示されるテンプレートとなります。

 

テンプレート定義の内訳は、以下の3つです。

  • Canvas.vstemplate
  • Canvas.xaml
  • Canvas.png

Canvas.vstemplateが定義ファイルで、Canvas.xamlは追加されるファイル、Canvas.pngはダイアログで表示されるアイコン用です。

 

ダウンロード:
Blend1.0用Canvasテンプレート定義:CanvasTemplate_blend.zip
解凍した「Canvas」フォルダを使用する言語用フォルダ内に置いてください。

パーシャルクラスのコードを必要としない今回のCanvas.xamlでは、C#・VBを区別する必要が無いので、ResourceDictionaryのテンプレート定義と同じように「ja」直下の
C:\Program Files\Microsoft Expression\Blend 1.0\Templates\ja\に3つのファイルを直接配置してもOKです。

 

「.vstemplate」ファイルでいろいろ設定するんですが、<ProjectItem>タグのSubTypeが”form”の場合、ダイアログの「コードファイルを含める」チェックボックス部分が有効になるので、その部分をグレーアウトするために、ResourceDictionaryにならってSubTypeは「Canvas」としておきました。

<ProjectItem TargetFileName="$fileinputname$.xaml" ReplaceParameters="true" SubType="Canvas">Canvas.xaml</ProjectItem>

 

あんまりWPFアプリケーション作成の場合に使い道は無いですが、Silverlight用のプロジェクトが作成できるBlend2を使う場合には、そこそこメリットがあるかもしれません。


ということで、Silverlight 1.1を作成できるBlend2では、パーシャルクラスを必要としないCanvas.xamlを使用することもあり、そんな場合の単独Canvas.xamlファイルを作成したいときに使えます。

 

Silverlight 1.1用プロジェクトの場合、UserControlの追加でもCanvasのXAMLファイルが作成されるんですが、VBやC#のコードも作成されるので、CanvasのXAMLを単独で使用したい時には、それらを削除する必要があります。

この時、Canvas用テンプレートを用意すれば、VBやC#のコードを削除する手間が省けます。

 

はい。ただそれだけです。

 

Blend2 August Previewにテンプレートを追加するには、
まず、C:\Program Files\Microsoft Expression\Blend 2 August Preview\Templatesに「en」の内容をコピーした「ja」フォルダを作成する必要があります。

そしてBlend 1の場合と同じように「ja」直下に「CSharp」「VisualBasic」というフォルダがあります。ちなみに「HTML」というフォルダはSilverlight 1.0用ですね。

 

ダウンロード:
Blend2 August Preview用Canvasテンプレート定義:CanvasTemplate_blend2.zip
解凍した「Canvas」フォルダを使用する言語用フォルダ内に置いてください。

 

「CSharp」とか「VisualBasic」にテンプレート用ファイルを配置するか、「ja」直下に直接ファイルを置くかすれば「新しいアイテムの追加」ダイアログに追加されます。

Blend2 AddItemDialog Orcas

 

Blend2 August PreviewではWPFアプリケーション用のプロジェクトの他に、Silverlight 1.1 用に2種類のプロジェクト(Visuau Studio 2005用とVisual Studio 2008 Beta(Orcas)用)があるので、Silverlight用に2つのテンプレート定義を追加します。

  • Canvas.vstemplate :WPF用テンプレート定義
  • Canvas.xaml :WPF用Canvas.xaml
  • Canvas_Silverlight2005.vstemplate :Silverlight 1.1(.NET)用テンプレート定義
  • Canvas_Silverlight.vstemplate :Silverlight 1.1(.NET Orcas)用テンプレート定義
  • Canvas_Silverlight.xaml :Silverlight用Canvas.xaml
  • Canvas.png :ダイアログ用アイコン

 

Silverlight用のテンプレート定義では「.vstemplate」内で、
Silverlight(.NET Orcas)用に<templategroupid>を「Silverlight」と指定し、

    <templategroupid>Silverlight</templategroupid>

Silverlight(.NET)のVisual Studio 2005用では「Silverlight2005」とすれば良いみたいです。

    <templategroupid>Silverlight2005</templategroupid>

 

WPF用とSilverlight用でCanvas.xamlが別なのはXAMLのネームスペースが異なるからです。

WPFアプリケーション用:

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Sliverlight用:

xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

 

Related posts

Pages: Prev 1 2 3 4 5 6 7 8 9 Next