ラベル Windows の投稿を表示しています。 すべての投稿を表示
ラベル Windows の投稿を表示しています。 すべての投稿を表示

2013年2月23日土曜日

Windowsストアアプリ開発 XAML vs HTML


Windowsストアアプリを開発する場合、開発言語が一つの悩みです。

  • 方法1;HTML/CSS とJavaScript で開発
  • 方法2;XAML と C#、Visual Basic、またはC++ で開発

結論からいうと、業務アプリ開発者(特に.NET/Java開発経験者)にはXAMLが良いかと。
開発言語はC#。

以下、私見。

■方法1;HTML/CSSと JavaScript で開発

  • 概要
    • UI(View)はHTML/CSSで実装する。
    • ロジックを主にJavaScriptで実装する。
  • 適しているアプリ
    • 一般コンシューマー向けのアプリ
      • 完全新規の開発。既存のしがらみが無い。
      • 開発者がHTML/CSS、JavaScript開発に慣れている。
  • 生産性の観点
    • 業務アプリ開発の場合、開発者にまともなJavaScriptプログラミングをできる人はどれだけいるのか、懸念。
      • 例えば、プロトタイプベースの概念を理解している開発者がどれだけいるのか。
      • Javaの開発経験しか無いとしても、C#の方がJavaScriptよりJavaに良く似ているので習熟が容易。Javaの開発経験しかなければ、C#がお勧め。
    • HTML/CSS/JavaScriptに慣れた開発者であっても、MS独自のJavaScriptライブラリ(WinJS) と CSSスタイルセットの学習は必要。
    • VisualStudioだけではGUIを使った画面開発ができない。
      • VisualBasic/VisualStudioを使って画面開発をすることになれた開発者にはデザインが大変。
      • HTML/CSSを手書き、または、BlendやDreamweaverのようなHTMLオーサリングツールを使う必要があるため。
  • その他
    • リバースエンジニアリングされやすい。
      • アプリのパッケージをZip解凍するとソースが丸見え。
      • ソースコード内のコメント行もそのまま残る。(不用意なことを書けない)
      • JavaScriptの圧縮と難読化が必要か。(だが、圧縮&難読化にはリスクあり)
    • ソースコード等の既存資産の流用は大変。
      • 仮に既存のロジックが.NETのクラスライブラリとしてきれいに分離、流用できる状態にあっても、流用は大変。.NETのクラスライブラリは使えないため、Windows ランタイム コンポーネントに移植が必要となるため。
    • HTML/CSS/JavaScriptで行くなら、PhoneGapの活用も要検討?(未調査)

■方法2;XAMLとC#、Visual Basic、またはC++ で開発

  • 概要
    • UI(View)はXAMLで実装する。
    • ロジックをC#(またはVisual Basic、C++)で実装する。
      • 開発言語は特に理由が無ければC#がお勧め。サンプルプログラム等の情報が最も多いため。
      • Visual BasicやC++は実装サンプルが少ないため、C#のサンプルを読解、移植する手間がかかる。
  • 適しているアプリ
    • 業務アプリ
      • .NETで作られた既存のロジックを流用したい。
      • 開発者がC#、Javaなどオブジェクト指向言語の開発に慣れている。
  • 生産性の観点
    • GUI開発がVisual Studioで完結。Blendも複雑なデザインが要らなければ不要。
    • 素のJavaScriptの生産性より、.NET(C#、VB)の方が生産性が高い。
      • Linq、XML、JSON etc.. 豊富なクラスライブラリが標準で使える。
      • 型付言語なのでコードアシスト(intellisense)が強力に効く。リファクタ機能もあり。
      • 非同期処理の実装が楽。 (await/async)
    • 共通部品化(ユーザーコントロール、カスタムコントロール)が簡単。
  • その他
    • 既存の.NETクラスライブラリが利用・流用できる。
      • Windows ランタイム コンポーネントに移植する必要は無い。
      • 既存のロジックがクラスライブラリ化されている場合、あまり修正する必要が無く流用できる可能性がある。
      • ただし、WinRT用の.NETは従来の.NETから機能削減されている機能があるため、一部修正が必要なこともある。


※参考にしたサイト


コメント欄も良く読んだ方が良いと思います。


2011年12月31日土曜日

Windows7でCOM+の登録(regsvcs)に失敗

会社のPCをWindows7の64bit版に入れ替えた後のトラブル。
COM+の登録ができない。

管理者権限で"regsvcs"コマンドを使っても"要求された操作を実行する権限がありません。"と怒られる。
GUI使おうとしてもダメ。(コントロールパネル → 管理ツール → コンポーネント サービス)
GUIから見てみると「マイコンピューター」のアイコンがダウン(「↓」アイコン)表示されている。

原因は、Windows転送ツールを使うとCOM+カタログの復元に失敗することがあるらしい。

COM+アプリケーションの登録に失敗する。DCOMCNFG.EXEでCOM+アプリケーションの画面を開けない
http://social.msdn.microsoft.com/Forums/ja/windowsgeneraldevelopmentissuesja/thread/112ad571-7b30-4853-9933-1dabe1e0269e

Windowsのバグだね、これ。

紹介されていた英語サイトを読んでみたけど、正常稼働しているコンピューターでカタログをバックアップして、そのバックアップファイルを問題が発生しているコンピューター上で復元しろと。
普通の人には無理だよ、これ。コンピューターがもう1台必要でしょ。。。

ちなみに、以下に置かれている「COM フィックスツール」をダウンロードして実行するだけでも治ります。

COM+ アプリケーションのカタログを復元する方法
https://www-secure.symantec.com/norton-support/jsp/help-solutions.jsp?docid=20100527005227JP&lg=japanese&ct=japan&product=home&version=1&pvid=f-home

自己責任でお願いしますね。

Windows7 32bit版から64bit版へのアップグレード (Windows 転送ツール)

最近会社のPCのOSをWindows7 32bit版から64bit版に入れ替えました。
その時使ったのがWindows 転送ツール。これ便利。

データファイルだけではなくレジストリ系(個人デスクトップの設定とかね)含めて自動的にバックアップ&リストアしてくれるので、楽ちんです。

■Windows 転送ツール

・スタート → すべてのプログラム → アクセサリ → システムツール → Windows 転送ツール

<古いコンピューター側での作業>(Win7 32bit版側)
・転送する方法の選択画面では、「外付けハードディスク または USBフラッシュドライブ」を選択。
・現在使用しているコンピューターでは「これは今までのコンピューターです」を選択。
・転送する内容のチェック(バックアップするファイルの選択)が自動的に始まる。
・チェックが終わったら「カスタマイズ」→「詳細設定」を押してバックアップする内容に過不足が無いか確認。
・パスワードの入力画面が表示されるので、必要であればパスワードを設定。
・転送するファイル(バックアップファイル)の保存先を聞かれるので、適当な保存先を指定する。
 この際、外付けディスクディスクである必要はなく、ローカルディスク上の任意のフォルダでOK。
・保存が終わったら、保存されたファイルを外付けディスクに保存する or
 ネットワーク経由で適当な共有サーバ等に保存しておく。

<新しいコンピューター側での作業>(Win7 64bit版側)
・Windows7をクリーンインストールする。
・Windows 転送ツールを立ち上げて、「これは新しいコンピューターです」を選択。
・古いコンピューター側で保存したファイルを指定して復元を開始。
・復元中はコンピューターに触るなと言われるので、言われるがまま触らない。
・終わると再起動を求められるので再起動。再起動すれば、復元されているはず。
・最後に古いコンピューター側にインストールしていたアプリケーションの一覧が表示される。
 それを参考にアプリケーション(Officeとか)を再セットアップして終了。

これだけ。普通の人は。

僕の場合は8時間くらいでアプリケーションの再セットアップ含めたOSの入れ替えが完了しました。
設定も引き継がれるし、おすすめです。

でもCOM+が動かなくなることがあるっぽい。.NET開発者の人はもうひと手間必要。

次の記事へ続く。