locked
Silverlight 2 + JavaScript で開発する方法は? RRS feed

  • 質問

  • Silverlight 初心者です。
    現在、Silverlight 2 による開発を調査中ですが、
    条件が色々とややこしいので、
    要件を下記にまとめてみました。

    ●要件
    ・Grid 等、Silverlight 2 で追加されたコントロール群を使用する
    ・使用できるツール:Visual Studio 2008, Visual Web Developer, Blend 2

    上記要件を満たした上で、下記の実装方針の内、
    できるだけ手軽にできる方針と具体的な方法をご教授いただけないでしょうか?

    ●使用する言語と実装方針

    1:JavaScript + Xaml だけを使用する
      (マネージコードおよび動的言語を使用しない)

    2:JavaScript + Xaml だけを記述する
      (ツールによる
    マネージコードおよび動的言語の自動書き出しは可)

    3:JavaScript + Xaml + JScript を使用する



    2008年10月20日 15:48

回答

  • >●要件
    >・Grid 等、Silverlight 2 で追加されたコントロール群を使用する

    Silverlight 2で追加されたコントロール群を使用するという時点で、選択肢は、

    ・Silverlight 2のCLRで動くマネージコード (C#, Visual Basic)を使い、一部をJavaScriptと組み合わせて使う

    ・Silverlight Dynamic Language SDK (http://www.codeplex.com/sdlsdk)を導入して、Managed JScriptを使う

    の2つになると思います。

     

    したがって、実装方針1、2は選択できませんが、方針2をちょっと変えればよいかと思います。

     

    C#やVisual Basicで記述したSilverlight 2用のマネージコードは、Silverlight側をスクリプトから呼び出せるように設定することで、JavaScriptから参照してアクセスすることができます。

    http://msdn.microsoft.com/ja-jp/library/cc645085(VS.95).aspx

     

    コード例については、私のブログで紹介します。

    http://blogs.msdn.com/aonishi/archive/2008/10/21/9009439.aspx

     


    この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。詳しくは http://www.microsoft.com/japan/communities/msp.mspx をご覧ください。
    2008年10月21日 12:05
  • Silverlight 2の動的言語については、まず、次のURLにある文書をご覧ください。

    http://msdn.microsoft.com/ja-jp/library/cc189024(VS.95).aspx

     

    Silverlight Dynamic Language SDK の使い方については、弊社の荒井のブログにエントリーがありますので、合わせてご覧ください。

    http://blogs.msdn.com/shozoa/archive/2008/10/19/silverlight-dynamic-language-sdk-1.aspx

     

    またVisual Studio上でSilverlight Dynamic Languageを使う方法については、次に説明があります。(英語)

    http://blogs.msdn.com/webnext/archive/2008/03/30/silverlight-dynamic-languages-in-visual-studio.aspx

    このエントリを投稿したLaurence Moroneyの書籍は、「Microsoft Silverlight 2 テクノロジ入門」として日本語化されており、第14章に動的言語の話があり、Visual Studioの構成を含めて解説があります。

    http://www.microsoft.com/japan/learning/books/JPN_ViewMsPress.aspx?Book_id=1136&list_id=1

     

    >私にはどうしてもマネージコードを記述できない事情がございます。

    Managed JScriptは技術的にはマネージコードとして実行されるものです。

    開発ツールとしてVisual Studio 2008を入手するのが難しいというのであれば、無償提供であるVisual Web Developer 2008 Express Edition SP1をお使いいただけます。

     

    >A:できるだけ手軽に開発したい

    Silverlight 2のコントロールを利用されるのであれば、Blend 2 SP1の利用は必須となるかと思います。


    >B:できるだけ、JavaScript やその周辺の言語(Managed JScript?)だけしか記述したくない

    Silverlight 2のコントロールを操作する部分は、Managed JScriptが利用できると思いますが、Silverlight内のオブジェクトを操作するという観点で見ると、C#で書くのとそんなに労力が変わらないように思います。

    文法も似通っているのでC#を使う部分も併用されてはいかがでしょうか。

     

    「Microsoft Silverlight 2 テクノロジ入門」の書籍を購入され、XAML、JavaScript、C#、動的言語、それぞれとの組み合わせについて比較しながら学ばれるとよいかもしれません。

     


    この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。詳しくは http://www.microsoft.com/japan/communities/msp.mspx をご覧ください。

    2008年10月22日 2:54

すべての返信

  • >●要件
    >・Grid 等、Silverlight 2 で追加されたコントロール群を使用する

    Silverlight 2で追加されたコントロール群を使用するという時点で、選択肢は、

    ・Silverlight 2のCLRで動くマネージコード (C#, Visual Basic)を使い、一部をJavaScriptと組み合わせて使う

    ・Silverlight Dynamic Language SDK (http://www.codeplex.com/sdlsdk)を導入して、Managed JScriptを使う

    の2つになると思います。

     

    したがって、実装方針1、2は選択できませんが、方針2をちょっと変えればよいかと思います。

     

    C#やVisual Basicで記述したSilverlight 2用のマネージコードは、Silverlight側をスクリプトから呼び出せるように設定することで、JavaScriptから参照してアクセスすることができます。

    http://msdn.microsoft.com/ja-jp/library/cc645085(VS.95).aspx

     

    コード例については、私のブログで紹介します。

    http://blogs.msdn.com/aonishi/archive/2008/10/21/9009439.aspx

     


    この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。詳しくは http://www.microsoft.com/japan/communities/msp.mspx をご覧ください。
    2008年10月21日 12:05
  • >大西様
    大変丁寧なご回答ありがとうございます。

    >Silverlight 2で追加されたコントロール群を使用するという時点で、選択肢は、

    >・Silverlight 2のCLRで動くマネージコード (C#, Visual Basic)を使い、一部をJavaScriptと組み合わせて使う

    >・Silverlight Dynamic Language SDK (http://www.codeplex.com/sdlsdk)を導入して、Managed JScriptを使う

    >の2つになると思います。

    上の2つに絞れたというだけでも、大変助かりました。
    ありがとうございます。
    やはり、どうしてもマネージコードは記述する必要がありそうですね。
    参考にさせていただきます。


    しかしながら、私にはどうしてもマネージコードを記述できない事情がございます。
    そこで、、「3:JavaScript + Xaml + JScript を使用する」について
    どなたかご教授いただけないでしょうか?

    正直、DLR についてまだまだ理解しきれていない部分が多く、
    現時点でツールを使用して簡単に
    作成することができないという印象があります。
    できるだけ Blend 2 SP 1 を使用したいのですが、
    Chiron.exe と併用できるのかどうかもまだ確認できていません。


    補足説明として、実は上記1~3で実現したかったことは、下記2点です。

    A:できるだけ手軽に開発したい
    B:できるだけ、JavaScript やその周辺の言語(Managed JScript?)
      だけしか記述したくない

    よろしくお願いします。
    2008年10月21日 13:52
  • Silverlight 2の動的言語については、まず、次のURLにある文書をご覧ください。

    http://msdn.microsoft.com/ja-jp/library/cc189024(VS.95).aspx

     

    Silverlight Dynamic Language SDK の使い方については、弊社の荒井のブログにエントリーがありますので、合わせてご覧ください。

    http://blogs.msdn.com/shozoa/archive/2008/10/19/silverlight-dynamic-language-sdk-1.aspx

     

    またVisual Studio上でSilverlight Dynamic Languageを使う方法については、次に説明があります。(英語)

    http://blogs.msdn.com/webnext/archive/2008/03/30/silverlight-dynamic-languages-in-visual-studio.aspx

    このエントリを投稿したLaurence Moroneyの書籍は、「Microsoft Silverlight 2 テクノロジ入門」として日本語化されており、第14章に動的言語の話があり、Visual Studioの構成を含めて解説があります。

    http://www.microsoft.com/japan/learning/books/JPN_ViewMsPress.aspx?Book_id=1136&list_id=1

     

    >私にはどうしてもマネージコードを記述できない事情がございます。

    Managed JScriptは技術的にはマネージコードとして実行されるものです。

    開発ツールとしてVisual Studio 2008を入手するのが難しいというのであれば、無償提供であるVisual Web Developer 2008 Express Edition SP1をお使いいただけます。

     

    >A:できるだけ手軽に開発したい

    Silverlight 2のコントロールを利用されるのであれば、Blend 2 SP1の利用は必須となるかと思います。


    >B:できるだけ、JavaScript やその周辺の言語(Managed JScript?)だけしか記述したくない

    Silverlight 2のコントロールを操作する部分は、Managed JScriptが利用できると思いますが、Silverlight内のオブジェクトを操作するという観点で見ると、C#で書くのとそんなに労力が変わらないように思います。

    文法も似通っているのでC#を使う部分も併用されてはいかがでしょうか。

     

    「Microsoft Silverlight 2 テクノロジ入門」の書籍を購入され、XAML、JavaScript、C#、動的言語、それぞれとの組み合わせについて比較しながら学ばれるとよいかもしれません。

     


    この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。詳しくは http://www.microsoft.com/japan/communities/msp.mspx をご覧ください。

    2008年10月22日 2:54
  • 大西様

    ご回答ありがとうございます。
    Silverlight 2の動的言語についてまとめてくださり、大変参考になりました。
    セカンドファクトリーさんの書籍は購入させていただく予定です。
    (原本よりかなり内容が充実されているようですね。)

    >文法も似通っているのでC#を使う部分も併用されてはいかがでしょうか。
    私も個人的には慣れている C# を使用したいのですが、
    今回の調査の目的は、C# を使用しないで開発する方法なので。。(すいません)

    特に「Visual Studio上でSilverlight Dynamic Languageを使う方法」は
    恥ずかしながら、知らなかったので、さっそく試させていただきました。。が、
    上手く動かず、XAML で定義した TextBlock が表示されませんでした。
    詳細は下記のとおりです。
    引き続き調査し、結果が出ましたらご報告させていただく予定ですが、
    お気づきの点等ございましたら、ご教授いただけないでしょうか。

    よろしくお願いします。


    ●開発環境:
    OS: Windows Vista Ultimate
    Tools:
    Visual Studio 2008 + Silverlight 2 Tools RC0 日本語版 + Dynamic Languages SDK 0.4.0
    Runtime Version: 2.0.31005.0

    ●参考:「Visual Studio上でSilverlight Dynamic Languageを使う方法」
    http://blogs.msdn.com/webnext/archive/2008/03/30/silverlight-dynamic-languages-in-visual-studio.aspx

    ●変更箇所:
    Default.html:「 type="application/x-silverlight-2-b1"」→「 type="application/x-silverlight-2"」
     
    コンソールには、下記のように表示されています。

    "app.xap [error generating XAP: Could not find assembly: Microsoft.Scripting.Silverlight.dll]"

    「Microsoft.Scripting.Silverlight.dll」は、「Chiron.exe」とともに、
    C:\Program Files\Microsoft SDKs\Silverlight\v2.0\Tools\Chiron
    内に配置しました。

    試しに Chiron のソースから該当するエラーメッセージを下記のように変更して、
    Chiron.exe を再コンパイルしたところ、下記のようになりました。

    変更箇所:
    XapBuilder.cs
    http://www.codeplex.com/IronPython/SourceControl/FileView.aspx?itemId=477928&changeSetId=34376

    131行:throw new ApplicationException("Could not find assembly: " + "uri=" + uri + ", targetPath=" + targetPath + ", localPath" + Path.Combine(dir, targetPath));

    結果:
    uri=Microsoft.Scripting.Silverlight.dll
    targetPath=Microsoft.Scripting.Silverlight.dll
    localPath= (プロジェクトのディレクトリ)\app\Microsoft.Scripting.Silverlight.dll

    更に、localPath の箇所にも 「Microsoft.Scripting.Silverlight.dll」を含む
    Chiron モジュールを配置したところ、エラーは出なくなりましたが、
    やはり TextBlock は表示されませんでした。
    2008年10月22日 17:48
  • すいません。
    こちら、調査途中で打ち切りとなってしまったため、
    結果がご報告できませんでした。

    ただ、おかげさまで、
    C#で開発するための十分な説得材料となりました。

    特に大西様にはご丁寧にお答えいただき、
    ありがとうございました。
    2009年1月5日 15:23
  • こんにちは、フォーラムオペレータ大久保です。

    tngar さん、フォーラムのご利用ありがとうございます。
    弊社 大西 のアドバイスがお役に立てたようですので、勝手ながら「回答済みとしてマーク」させていただきました。
    今回は残念ながら調査途中で打ち切りとなってしまったということでしたが、また機会がございましたらMSDN フォーラムをご利用ください。
    おまちしてます!
    マイクロソフト株式会社 フォーラム オペレータ 大久保 直美
    2009年2月19日 5:15