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の活用も要検討?(未調査)
- http://docs.phonegap.com/en/2.2.0/guide_getting-started_windows-8_index.md.html
- 実績に懸念(まともに動くのか)はあるが、WinJSのようなMS独自の技術を覚えるより、より普及している技術(PhoneGap)を覚える方が技術者としては得。
- 他のデバイス(Android、iOS)から/への移植が容易になる可能性もある。
■方法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から機能削減されている機能があるため、一部修正が必要なこともある。
※参考にしたサイト
コメント欄も良く読んだ方が良いと思います。
0 件のコメント:
コメントを投稿