マルチデバイス開発選択肢としてのMicrosoft Visual Studio

マルチデバイス開発環境の選択肢

自身の開発環境上、Windowsベースとなりますが、現在いくつかの、マルチデバイス開発環境があります。

ゲームに向いているもの

細かいのを入れるともう少しありますが、Windowsで有名どころとなるとこんなところでしょうか?

開発環境としてVisualStudioを選択すべきか?

私はアプリの開発環境ということでVisualStudioを選択してるわけですが、Windows環境がメインであるというのが大きな理由ではあります。
では、ほかの方に開発環境としてVisualStudioを薦めるのか?ということになります。

標準で対応している使用可能な言語も多くあります。

  • C/C++
  • C#
  • Visual Basic
  • Visual F#
  • JScript
  • Python
  • HTML5
  • JavaScript
  • TypeScript

基本的には非常に強力なVisualStudioという開発環境もあり、Windowsという世界で広く流通、使用されているOSであるということを考えれば、薦めることに何の問題もないと思います。

なぜ基本的なのかですが、iOS/OSX専用アプリのみ開発するというのであれば、Mac環境を選択するしかないわけですので、VisualStudioを薦めるというのは難しく、Linuxなどの環境についても同じく、専用アプリだけということであれば、VisualStudioを勧めることはできないです。

ですが、Windows/WindowsPhone/iOS/Android/Web/クラウド/IoTと多岐の環境へのアプリリリースが求められる状況が増えています。

MacやLinuxでもかなりのマルチデバイス対応開発は行えますが、現在どれかしらへの開発が行えないという状況が多くあります。

もちろんVisualStudioでも単独では開発できないiOSアプリ、Macアプリ等があります。
現在VisualStudioでiOSを開発するにはどうしてもMacが別途必要で、XCodeコンパイラを経由する必要があります。
単独で開発できないだけでVisualStudioを使用した開発が可能な物は多いです。

MacにはBoot CampというWindowsをインストール可能にする公式ツールがあります。
ネイティブなWindowsをMacにインストールし、VisualStudioを使用するというのが可能です。

Boot Camp

Visual Studioに関して

さて、VisualStudioですが、MicrosoftイベントConnect();において VisualStudio Community Edition(以下 VSCE)が発表され、今までのExpress Edition(VSEE)は今後廃止されることになりました。(VSEE2015は出ないそうです)

VisualStudio Community Edition 日本語ページ

VSCEはVSEEと同じく無償で使用可能なVisualStudioですが、大きな違いがあります。
VSEEは非常に制限が大きく、各種拡張機能が使用できない、使用用途ごとにエディション(desktop、Web等)が存在するというものでしたが、VSCEはProfessional Editionに準拠した1エディションになり、今まで使用できなかったVS tools for Unity等の拡張機能が使用できるようになります。

使用条件は、個人開発者が無償または有償のアプリの開発に使用可能、オープンソースコミュニティへの貢献開発もOK、企業の場合でも条件によっては使用可能、ただし受託開発に使用するのには制限有となっているようです。
詳しくはMicrosoftのライセンス ホワイトペーパーを確認の上でお願いします。

Microsoft Visual Studioによるマルチデバイス開発ですが、標準ではWindowsデスクトップアプリ(ネイティブ、WPF、DirectX)、ASP.NET(WEB)、Azure(クラウド)、Windowsストアアプリ、WindowsPhoneアプリ、Kinect等、各種Windowsプラットフォームアプリの開発が可能です。

これ以外の場合、Xamarin(BusinessLicense以上)、Cordova(Visual Studio Tools for Apache Cordova)、Unity(Visual Studio 2013 Tools for Unity)をインストールすることで、Android、iOS向けの開発がVisual Studio上でも可能になります。

さらに.NET MicroFramework(以下 NETMF)をインストールすることで.NET Gadgeteerの開発(.NET Gadgeteer SDKと実機が必要)が可能になり、組み込み開発が比較的手軽に行えます。

.NET MicroFramework
.NET Gadgeteer 日本代理店

Windows Embedded環境向けの開発もSDKを導入することで可能ですが、EmbeddedはOSの入手がMSDNユーザー以外では開発会社くらいでしょうから、少々厳しいかもしれません。
もっともWindows Embedded 8.1 HandheldはWindowsPhone8.1用アプリが使用可能になっていますので、WindowsPhone8.1アプリ開発が、Embedded向けアプリの開発ともいえるかもしれません。

XamarinはC#.NET、CordovaはHTML5+JavaScript(TypeScript)ですので、慣れた開発言語を選択するというのも手です。

また、これらを使わなくても実は可能な方法が存在はしています。

最近Microsoft Officeがマルチデバイス対応しています。(Office 365の契約が必要な機能もあります)
AndroidでもiPadでも限定的ではあるものの編集可能なOfficeが提供されています。

さて、MS OfficeはどうやっているのかというのがMSの講演などで判明しており、内部的にはコアをC++で再利用な形で作り、OSごとに薄いレイヤを作って、UI/UXを載せるという形になっているそうです。

マイクロソフトは、C++でいかにしてMicrosoft Officeのクラスプラットフォームを実現したのか 

銀の弾丸はない。唯一のアプローチは、コストとリスクとベネフィットのトレードオフを考えることだ。

・ 良く定義された組み立て可能なコンポーネント
・ 可能なかぎりメカニカルなリファクタリングを行う
・ つねにすべてのプラットフォームで(開発中のコードが)動くようにした
・ 毎日全てのプラットフォームで大規模なドッグフーディング

XamarinはAndroid、iOS、Formsという形式がVS上で開発可能です。
Android、iOSは名前の通りそれぞれ単独用です。(MVVM Crossを使うなどで共通化は可能)
FormsはXAMLベースのコントロールが使用可能でAndroid、iOS、WinodwsPhone8.0の開発が共通化されています。

CordovaはAdobe社が構築したもので元の名前が「PhoneGap」という名称です。
そのためCrdovaで情報を探すよりはPhoneGapで探したほうが情報が見つかりやすいと思います。

連載:初めての PhoneGap 第1回 - ハイブリッドアプリのメリット・デメリット

Unityはゲームアプリまたはリッチな表現を多くしたいアプリに向いています。
Visual Studio Tools for Unityを導入することで、Visual Studio上でコード記述、デバッグ作業が行えます。

Visual Studioを、できればMSDNライセンス付きで使用してぜひ快適な開発環境の構築を行いましょう。

VisualStudio2015PreviewでXamarin.Androidを作業するために

VisualStudio 2015 のインストールは少々変更が図られています。
本体のインストールの後に、SecondaryInstallerが立ち上がり、追加機能のインストールを行う形になっています。
セカンダリインストーラー

セカンダリインストーラー2

セカンダリインストーラー3

この中で注目したいのは「Microsoft Visual Studio Emulator for Android」です。
このEmulatorはHyper-Vへx86ベースのAndroid4.4が搭載されたもので、WindowsPhone8.1Emulatorと同じように加速度のテストなどもEmulator上で可能になりますし、Hyper-Vベースなので、今までのVirtualBoxベースのエミュでは毎回Hyper-VのON/OFF切り替えをしなければならかったことから解放されます。

VisualStudio 2015 Preview をインストールしたあとAndroidアプリの作成を行うと、Xamarinのダウンロードを促す画面が表示されます。

Xamarin01

さて、すでにXamarinをインストール済みの方も多いと思うのですが、この画面のリンクから表示されるホームページに掲載されているXamarinは「XamarinInstaller-VS2015」という専用のXamarinが用意されています。
すでにインストールして最新のXamarinにしている場合は、一度アンインストールしてから「XamarinInstaller-VS2015」をインストールする必要があります。
また、インストール後にXamarinのアップデートを行えますが、アップデートしてしまうとVS2015対応が削除されてしまうそうなので、アップデートは避けましょう。

さて、早速テストしようと思いブランクを作成してコンパイルを行うと「”MergeApkRecipelists” task was not given a value for the required parameter “RecipeFiles”」が発生してコンパイルが行えません。

エクセルソフトの田淵さんもBlogで同じ現象が起きていることを書かれていたのですが、田淵さんからツイッターでコメント欄に回避方法が乗っていますと教えていただき、試したところ無事ビルドしてNexus7に転送して起動することまでは確認できました。

手順としては、ソリューションへプロジェクトの追加で「Visual C++>Cross Platform」で「Dynamic Shared Library (Android)」を追加します。
追加したプロジェクトを、メインのAndoroidプロジェクトから参照します。

Xamarin02

次に「C:\Program Files (x86)\MSBuild\Xamarin\Android」にある「Xamarin.Android.Common.After.targets」を書き換えて、「Import Project」をコメントアウトしておきます。

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
    <Import Project="$(MSBuildThisFileDirectory)\Xamarin.Android.Common\ImportAfter\*"
            Condition="Exists('$(MSBuildThisFileDirectory)\Xamarin.Android.Common\ImportAfter')"/>
-->
</Project>

AndroidのBuild設定ですが「Dynamic Shared Library (Android)」が「API Lebel 19」を指定されているので、メインプロジェクトの設定も「API Lebel 19」に設定する必要があります。

これでとりあえずビルドが通り、実行可能にはなります。

さて、自分の一番の目的は「Microsoft Visual Studio Emulator for Android」だったのですが、「Emulator start error: VS Emulator Android Phone」とだけ表示され、起動させることができていません。

まずは入口に立ったというだけですが、もう少し探ろうと思います。

※追記

 増田さんのBlogに書かれていたのですが、Xamarin.Formsを使用する場合は上記の設定をわざわざしなくてもBuild可能とのことです。
 「Microsoft Visual Studio Emulator for Android」を起動可能な方法を記載されていますが、やはり茨の道で、まだまだこれからのようです。
 自分がいろいろ試していたところ、やりすぎて開発環境のVS2013が不調になったため、VS2015Preをアンインストールして、VS2013Up4を修復インストールすることで、無事元の状態に戻せました。

Microsoft開発者向けイベントConnect();を視聴して

日本時間で11/13の0時からMicrosoftの開発者向けイベントConnect();が行われています。
Channel9でイベントの動画が公開中。

にこ生での解説付き中継を視聴しました。
※タイムシフトの視聴が可能です。

下記のようなことが発表されました。

・.Net Core 5 がオープンソース化されすでに GitHub で公開済み
・.Net server framework を Linux / OSX のオフィシャルディストリビューションとして発表

.Net のオープンソースというと Mono が思い出されますが、イベントの中でマルチデバイス開発として Xamarin が VisualStudio と連携可能な開発拡張としてプッシュされています。
Xamarin は Mono ベースで Win/Android/iOS を C# 開発が可能で、CEOとCTOが登壇し、Monoに今回の公開分がフォークされました。

Xamarin は Business レベルのライセンスでなければ VisualStudio の拡張が使用できなかったのですが、今回さらに提携が進み Starter ライセンスでも VisualStudio 拡張が有効になるとのことです。
※詳細はまだ出ていないようですので、確認が必要です。

Xamarin以外にもCordova(PhoneGap)によるHTML5+JS(TypeScript)でのマルチデバイス開発も押していました。

VisualStudio もいろいろな発表が行われました。
VisualStudio 2013 Community Edition
 現在無償版として Express Edition が公開されていますが、Community Edition は VisualStudio Professional Edition 相当で、 Express Edition ではほぼ使用できなかった拡張機能が使用できます。
 この変更で、Xamarin の拡張や VisualStudio tool for Unity が無償環境で使用可能になります。
 また、今後 Express Edition は公開されず VisualStudio 更新時に Community Edition が提供されていくとのことです。
 無制限に利用可能というわけではなく、無償/有償問わず開発は許可されますが、個人、教育、NPO、OSSコミュニティ向けですが、企業でも条件付きで使用可能となっていますが、詳しくはライセンスをご確認ください。

 VisualStudio tool for Unity は Unity3D というGameEngine のコードを VisualStudio 上で行うことができるようになる拡張機能です。
Express Edition では使用できなかったのですが Community Edition では使用可能になりました。
 無償環境だけで Unity を効率的に開発可能になりました。

・VisualStudio 2015 Preview
 次期VisualStudioとして VisualStudio 2015 が発表され、すでに Preview 版がダウンロード可能になっています。
「Visual C++ for Cross-Platform Mobile Development」というのがリリースノートにあるので、C#だけではなくC++でもAndroidなども行けるようになるということかもしれません。
 地味に便利になったなーと思う部分としては、NuGetパッケージのインストールが作業をいちいち止めなくてもできるようになっていることですかね。

・Visual Studio’s Emulator for Android
 VisualStudio 2015 PreviewにHyper-VベースのAndroid Emulatorが搭載されました。
 ・Introducing Visual Studio’s Emulator for Android
 これでWindowsPhoneEmulatorとの共存が可能になり、VirtualBoxベースのEmulatorで切り替えていたのが必要なくなります。

・VisualStudio 2013 Update4
 VisualStudio 2013 にも最新版が出ました。
 Community Edition もこの Update4 が定期用済みのようです。
 こまごまとアップデートが施されています。

・Microsoft Azure
 モバイルファースト、クラウドファーストを実践するために Microsoft Azure を使用しましょうという感じ。
 データ分析としてMachineLearning機能などを紹介していたものの、VSと.Netに裂いている時間が長かったので、少なめでしたね。

Demoも見ごたえがありました。
そこまで作りこむのかというくらい作りこまれたマルチデバイス向けアプリを用いたDemoセッションでした。
Azureと連携した Windowsストアアプリ / WindowsPhone(日本はいつだろうね) の universal Apps Android、iOSもPCLを利用したコードの統合などでした。
Android、iOSの部分はXamarinを利用してMVVMCrossを利用しているように見えました。
CordovaもDemoで使用され、マルチデバイスに向けた開発が可能になったとアピールしていました。

また、Microsoft が GitHub で公開しているオープンソースプロジェクトの一覧下記ページに記載されています。
Microsoft on GitHub

今夜からConnect();はDay2が開始され、深い内容がセッションで語られるようです。
Day1/Day2共にChannel9でオンデマンド公開されるので、ゆっくり見ましょう。

Lumia 535 is not a NOKIA Brand

Lumia 535 は Microsoft Lumia 535 として、ついに NOKIA のブランド名が消えて、Microsoft ブランドとして発表されました。

Microsoft Lumia 535 Single SIM
Microsoft Lumia 535 Dual SIM

搭載OSは「Windows Phone 8.1 with Lumia Denim」
Windows Phone 8.1 Update 1 の拡張ということらしいのですが、Cortanaの対応言語が増えたことなどのようです。

対応するバンドは「GSM network: 850 MHz, 900 MHz, 1800 MHz, 1900 MHz」「WCDMA network: Band 1 (2100 MHz), Band 8 (900 MHz)」
GSMは所謂2G、WCDMAは3Gです。
低価格端末なためかLTEは無しの模様

SIMサイズは「Micro SIM 」

メインカメラは「5.0MP」
フロントもあり

CPUは1.2GHzのクアッドコア(Snapdragon™ 200)
画面解像度は「qHD (960 x 540)」

Homeボタンなどはスクリーンキーになっている模様、出し入れできるタイプかなこれは?

価格は「110ユーロ~」で日本円で1万6千円くらいとかなり低価格、新興国向けとしては人気の Dual SIM 端末も出るので、これでさらに広がってくれればと、、、

さて、期待としては日本なわけですが、Cortanaの対応言語に日本語はなく、MAPの改善というのもなさそうなので、すぐさまこれがというのは考えにくいと思います。

さすがにムービーなどからは技適の有無は確認できていませんが、まあ、あれですよね、、、
価格としても魅力的で、十分競争力はあると思いますが、春は遠いなー

Xamarin.Android開発をVisualStudio2013で行う際のメモ

MS MVP向けにXamarin.AndroidとXamarin.iOSのライセンスがあるということで、申し込みをしたところ、無事ライセンスが発行されました。

このライセンスはBusinessレベルのライセンスになっているので、自身が使い慣れた「VisualStudio2013」と連携させて使用できるようになりました。

無償のライセンスもあるのですが、「VisualStudio」との連携がなく「XamarinStudio」での開発になり、アプリケーションの容量に制限があります。
まずC#で開発を試したいという場合には無償版でも問題ないと思いますが、「VisualStudio」を利用できるメリットは非常に大きいので、ライセンスの購入を検討されてはいかがでしょうか?

Xamarinのインストールに関しては、Xamarin の代理店であるエクセルソフトの田淵さんがBlogに詳しく書かれています。
これから Xamarin を始めたい方向けの凄く丁寧なインストールガイド (Windows/Android 編)

・個人的な追記
・環境変数は「コントロールパネル」>「システム」>「システムの詳細設定」>「環境変数」
・システム環境変数に新規追加で変数に書く際は「%」は記述不要(のはず、「値」には必要)
・「%JAVA_HOME%」はJAVA SDKインストールフォルダ
・SDK Manager で「Google USB driver」は実機デバッグに必須

さて、実機シミュレーターですが、「VirtualBox」ベースのため「Hyper-V」が有効の環境では使用できません。
自分はWindowsPhone8.1開発も行っているため、これが地味に困る状況だったりします。
今後「Hyper-V」に展開される実機シミュレーターが出るともっと便利かなとは思います。

なので、「Nexus 7(2013)」を購入して、実機デバッグを行うことにしました。

Nexus 7は(2012)と(2013)がありますが、知人から(2013)でないとBLE(Bluetooth Low Energy)が使用できないという情報がもたらされたので、今後も考えて(2013)にしました。((2012)でも向け道はあるようですが、面倒なので)
また、Nexusじゃなくてもいいんじゃないかというのもあったのですが、キャリア端末の場合デバッグが動かない可能性をやはり知人からもたらされたので、Googleの公式端末であるNexusを手に入れました。

さすがにXamarin初心者ですので、参考にするために「C#によるiOS、Android、Windowsアプリケーション開発入門」を丁度参加していたMicrosoft Conference 2014会場で先行販売していたので、購入してきました。

Kindle版も出ています。

現在XamarinはXamarin.FormsというView部分の共通作業を行えるように発展しています。
上記の本ではこれが出る前の方法となっているので、少々古い部分はありますが、手探りでやるという状態よりは良いでしょう。

実機デバッグの準備
インストールは上記の方法でしているものとして、まずNexus7の「開発者向けオプション」を有効にします。

・「設定」>「タブレット情報」>「ビルド番号」を7回タップ
タップしていると「デベロッパーになるまであと~ステップです」と表示されてステップが減ります。
・成功すると「設定」に「開発者向けオプション」が表示されます。
・「開発者向けオプション」>「USBデバッグ」をタップして有効にします。
・PCにデータ通信可能なケーブルでUSB接続します。
・「コントロールパネル」>「システム」>「デバイスマネージャー」>「Nexus7」に「?」がついています。
・「Nexus7」を右「クリック」>「プロパティ」>「ドライバー」>「ドライバーの更新」>「コンピュータを参照してドライバーソフトウェアを検索します」>「参照」>「C:\dev\Android-Studio\sdk\extras\google\usb_driver」
・インストールを行うと「Android ADB Interface」がインストールされます
Android ADB Interface

android01

・インストール後、実機側で「USBデバッグを有効にします」と出るのでタップすれば、VisualStudio2013上で認識されます。
android02

android03

これで取りあえず、VisualStudio2013上での開発と実機デバッグが行えるはずです。

AndroidはバージョンごとにAPIレベルが設定されているので、使用するコンパイラレベルと最少バージョンを指定しなければいけません。
プロジェクトのプロパティで「Compile using Android version」と「Minimum Android to target」を変更します。

ProjectProperty

既存のVisualStudio2013ソリューションにXamarinプロジェクトを追加する場合、追加が終わらず応答なしになる時があります。
この場合、VisualStudio2013を強制終了して、ソリューションを起動、既存プロジェクトの追加で、追加はされていないもののプロジェクトファイルは作成されているので、それを参照して追加することで、作業を開始できます。

さて、なんでVisualStudio2013ベースをお勧めしているかといえば、楽だからです。
もちろんXamarinStudioも性能が上がってきていますが、VisualStudioはそれ以上に便利でパワフルです。
また、Windows/WindowsPhone8.1の開発を先に開始していることもあり、既存ソリューションの移植、TFSとの連携からVisualStudio上での開発を行っています。

まずはこんなところから開発事始め的なメモ記事を書いてみました。

Windows 10 Technical PreviewをThinkPad T400にアップグレードインストールしてみた

 Lenovo ThinkPad T400 は、ほぼ6年ほど前のノートPCでWindowsXP(Vistaダウングレード)搭載機でした。
 購入後、HDD交換などで延命して、現在もWindows8.1をインストールして使用しています。

スペックとしては下記のようなものです。
・Intel Core2 Duo P8600
・メモリ 8GB
・VGA Intel GM45 / AMD Mobility Radeon HD 3400 Switchable Graphics
・インストールに使用したHDDには「Windows7 SP1 Ultimate」がインストールされています。
という感じです。

 使用した「Windows7 SP1 Ultimate」環境は、一年以上前の物だったので、WindowsUpdate等を行い最新の更新状況にしたうえで、アップグレードインストールを行いました。

 アップグレードインストールはローカルファイルは基本的には保持されますが、インストールしたアプリケーションはすべてアンインストールされた状態になり、再インストールが必要になります。
 ローカルファイルも、「ProgramFile」フォルダーなどの、退避されるフォルダーにある場合は、一緒に退避させられます。

 さて、Windows8.1でもですが、この機体での「Switchable Graphics」は特殊な方法で実現している物で、現在いくつかの機体に搭載されている新しい「Switchable Graphics」ではないので、標準ドライバでは対応していません。
 また、公式ドライバにも存在しないため、「Switchable Graphics」を有効にしている場合「Radeon」に注意マークがつき、Intel側が有効なVGAとして表示され、Radeonは使用できない形になります。
Switchable Graphics
 もちろん、BIOSでどちらか片方に設定を変更すれば、そちらが優先で使用可能なので、Radeonも使用できます。

 また、いくつかのハードにドライバが標準では存在しないため同じく注意が出ています。
 ハード注意

 少し動かしてみた感じでは、もたつく感じもほぼないので、各種アプリケーションを入れてみるところも確認できればと思いますが、開発用となると時間がかかるので、どうしようかとは思っています。

 手持ちの環境としては前回の記事と今回の記事の機体、後は普段使用しているデスクトップがあるのですが、さすがにこれに入れるのは別なHDD(SSD)を用意して行いたい、インストールテストはとりあえずここまでとします。

Windows 10 Technical Preview をインストールしてみた

Windows 9やWindows THという名前が浮かんでいた次期WindowsはWindows 10となりました。

Windows 10 technical Preview(以下Win10TP)」は開発者やIT Proに向けた最初期のテストプログラムです。
現在使用している環境や、重要な環境への適用は行わないようにアナウンスされています。

Win10TPは日本語イメージは現在ありません。
また、いくつかの機能はまだ実装されていません。

Win10TPの「システム要件」は現状では
・CPU: 1 GHz 以上
・メモリ: 1 GB (32 ビット) または 2 GB (64 ビット)
・ハード ディスクの空き容量: 16 GB
・グラフィックス カード: Microsoft DirectX 9 グラフィックス デバイス (WDDM ドライバー付き)
・Microsoft アカウントとインターネット アクセス
 MSアカウントは後でも設定可能なので、インストール時に必要というわけではありません。
 また、解像度としては1024*768以上の解像度が必要になります。

・Hyper-Vへのインストール
Windows8.1 Pro 64bit でHyper-Vを有効にして、Win10TP x64のインストールテスト行いました
Hyper-Vマネージャーを起動
001
仮想マシンの新規作成で「世代の割り当て」を「第二世代」に設定しました
002
「メモリの割り当て」はx86なら1024MB以上、x64なら2048MB以上に設定します。
余裕を持たせるためには+1024MBを割り当てたほうがいいと思います。
003
「インストールオプション」はブートイメージからOSをインストールするを選択して、ISOイメージを参照しておきます。
004
インストールに成功して、ログインするとこうなります。
win10tp001
・設定解像度は1366*768にしました。

・ストアの表示
標準ではフルスクリーンで表示されないため、スクロールが非常に分かりにくくなっています。

win10tp000

win10tp002

もちろん、開始解像度が広ければ起こらないかもしれませんが、少々改善の余地がありそうな気はします。

・東芝 dynabook Tab VT484/22Kへのアップグレードインストール
最初行った際に、UpDateCheckで無限ループを繰り返すという現象が起きました。
「CCleaner」「Auslogics Registry Cleaner」で、余分なファイルの削除、レジストリーの掃除を行い、Windows8.1のWindowsUpDateが来ていたので、インストールしたところUpDateCheckから先に進みました。
さて、これでアップグレードインストールがと進めたのですが、エラーが表示され、現在進んでいません。
WP_20141003_004
「何かが起きたので失敗しました、再度セットアップを行ってください」ということでしょうが、何度行っても、ここから先に進みません。

さて、さすがに Technical Preview 色々と癖があるようです。
わからない方は絶対に手を出さないでください。

de:code Special Edition に参加してきました

開発者向け講演イベント「de:code Special Edition ~マイクロソフト本社のエグゼクティブが語るエンジニアの未来~」が昨日開催され、参加してきました。
本社エグゼクティブですが、Microsoftサティア新CEOが初来日され、最初の一時間ほど、講演されました。
サティア・ナデラCEOと伊藤かつら氏

Windows10の発表直後ということで、Windows10に関する意気込み、Officeに関するコミット等
WindowsPhoneに関して二度ほど伊藤さんが話題を振っていただけましたが、「WindowsPhoneは日本の会議で話題になる」「universal アプリをもっと出してほしい」等、言葉上は前向きですというかんじですが、これはもう3年ほど同じ状況が続いていることの追認でしかなく、残念ながら、日本での展開は期待できない状況であることには変わらないようです。

私はWindowsPhoneアプリ、universalアプリの開発公開は継続しますが、日本語アプリの提供は今後基本行いません。
universalアプリについてはWindowsPhoneと連携しなければ意味のないアプリもあるので、その場合日本市場への提供を行わないという選択肢も入れることにします。

これ以外については、IoT、Unity等のプラットフォームへ対応を進めること、クラウド(Azure)への機能対応、iOS、Android、Linux他OSへの幅広い選択肢が可能なように、SDKやコードの提供を行うとのことです。

ランチセッション
 SurfacePro3の利用に関してエヴァンジェリスト高橋忍氏が軽く行いました。
 「ペン」使ってますか?
 ペン入力を行う場合は画面の拡大や罫線表示機能を利用して、ペン入力しやすいようにするといい。
 手書き文字入力は便利で高性能に判断してくれます。

ジェネラルセッション
 お昼の後はエヴァンジェリスト5人によるセッション
 VisualStudioのコードレンズ機能やコードマップ機能など便利になってますよという紹介(ultimateでないと使えない機能もあります)
 BlendはPen入力でベクターデータを作成可能
  高橋忍氏が一筆書きでサティアを描き出してました。

 BCP(事業継続性)について
  Azureにフェールオーバー可能になりましたという紹介など
  クラウドに開発が映っている

 AzureとVisualStudio
  Azureの仮想マシンにVisualStudioを乗せているイメージが提供されているので、クラウド上で開発を行える
  VisualStudioOnlineというWebブラウザで動作するVisualStudioも使用可能
  AzureMobileServiceは様々なプラットフォーム(iOS、Android、PhoneGap等々)に対応している

 Xamarin
  Xamarin(ザマリン)を使用すると使い慣れたVSを利用してiOS、Androidの開発をC#で可能になる
  VSとの連携にはXamarin Pro版が必要

One‐Microsoft
WEBの技術でuniversalApplication
HTML5/JavaScriptで開発可能
 XBox(開発契約が必要)も可能になっていく

 ほぼ一日がかりのセッション群でした。

Unityでuniversal Appのメモ

Unityスクリプト上でBackKeyは「KeyCode.Escape」になる。
でもあんまり行儀のいいコードでは無いような気がする

#if UNITY_WINRT
        if (Input.GetKey(KeyCode.Escape))
        {
            Application.Quit();
        }
#endif

※これは間違い
Main.csにBackキーをとるためのコードをMainPage関数に追加したものの、発生しない模様

		public MainPage(SplashScreen splashScreen)
		{
            …
#if UNITY_WP_8_1

            Windows.Phone.UI.Input.HardwareButtons.BackPressed += (sender, e) =>
		    {
                Frame frame = Window.Current.Content as Frame;
                if (frame == null)
                {
                    return;
                }

                if (frame.CanGoBack)
                {
                    frame.GoBack();
                    e.Handled = true;
                }
		    };

#endif
		}

傾き検出
 全部テスト
 いくつか機能しない、実機では「Input.gyro.enabled」をtrueにしていても「False」と表示される

	void Start () {
        Input.gyro.enabled = true;
        Input.gyro.updateInterval = 0.01F;
	}
	
	// Update is called once per frame
	void Update ()
	{
        var gyroText = "enabled : " + Input.gyro.enabled.ToString() + Environment.NewLine;
        gyroText += "attitude : " + Input.gyro.attitude.ToString() + Environment.NewLine;
        gyroText += "gravity : " + Input.gyro.gravity.ToString() + Environment.NewLine;
        gyroText += "rotationRate : " + Input.gyro.rotationRate.ToString() + Environment.NewLine;
        gyroText += "rotationRateUnbiased : " + Input.gyro.rotationRateUnbiased.ToString() + Environment.NewLine;
        gyroText += "updateInterval : " + Input.gyro.updateInterval.ToString() + Environment.NewLine;
        gyroText += "userAcceleration : " + Input.gyro.userAcceleration.ToString() + Environment.NewLine;

        guiText.text = gyroText;
	}

GyroTest

Unity-chanの表示がおかしいですが、これはWindowsPhone8.1(実機)がカスタムシェーダーに対応していないためです。
マテリアルを改良または取り去れば、きちんと表示されるはずです

Unity3dでuniversal App Projectを吐き出す際のメモ

※再度試したところ、プロジェクトファイルを書き換えなくてもコンパイラが通りました。
 自分の環境のせいで何かしらおかしなことが起こっていたのかもしれないですが、なぜ通らない現象が起きたのか、何が原因なのかよくわかりません。


吐き出して其の儘だとVisualStudio2013Up3でコンパイルが通りません。

参照の中にリンク不明のエラーが二つでます。

Unity3d Ver4.5.4p2
VisualStudio2013 UpDate3
VisualStudio Tools Unity 1.9.1
上記環境で現象が起きています。

・.Windows.csproj
・.WindowsPhone.csproj
上記二つのプロジェクトファイルの一部を書き換えます。
エラーを起こしているファイルは「Assembly-CSharp.dll」「Assembly-CSharp-firstpass.dll」の二つです。

	<Reference Include="$(UnityProjectDir)\bin\Store 8.1\$(PlatformName)\$(ConfigurationName)\Assembly-CSharp-firstpass.dll" >
		<HintPath>.\$(UnityProjectDir)\bin\Store 8.1\$(PlatformName)\$(ConfigurationName)\Assembly-CSharp-firstpass.dll</HintPath>
	</Reference>
	<Reference Include="$(UnityProjectDir)\bin\Store 8.1\$(PlatformName)\$(ConfigurationName)\Assembly-CSharp.dll" >
		<HintPath>.\$(UnityProjectDir)\bin\Store 8.1\$(PlatformName)\$(ConfigurationName)\Assembly-CSharp.dll</HintPath>
	</Reference>

このように書かれており、一見問題なく通ると思われるのですが、なぜか「$(PlatformName)」がコンパイラで指定している「ARM」「x86」ではなく「AnyCPU」となってしまうために起こるエラーです。
(「Store 8.1」の部分はWP8.1用では「Phone 8.1」となっています)

    <Reference Include="Assembly-CSharp">
      <HintPath>bin\$(PlatformName)\$(ConfigurationName)\Assembly-CSharp.dll</HintPath>
    </Reference>
    <Reference Include="Assembly-CSharp-firstpass">
      <HintPath>bin\$(PlatformName)\$(ConfigurationName)\Assembly-CSharp-firstpass.dll</HintPath>
    </Reference>

そこで上記のように書き換えます。
さらに、VisualStudio2013Up3の「デバッグ」>「オプションと設定」>「全般」の中の「起動時にユーザーコードが見つからない時警告(マネージのみ)」についているチェックを外します。

debugoption
これが自分の環境のせいなのか、VS側の問題なのか、Unityの書き出しの問題なのか不明です。
もう少し調べてみたいところですが、そんなことよりアプリ作るために作業を進めたいと思います。

※追記
Unity-chanというUnity公式キャラクターがあります。
オフィシャルページからUnity用のAssetファイルをダウンロードすることができます。

このキャラクターを使ったアプリを作成しようとテストしていたのですが、ストアアプリ向けに吐き出そうとするとエラーが発生します。

困ったことにエラーのログが文字化けして詳しいエラー内容がわかりませんが、エラーコードから「Script/AutoBlink.cs」に書かれている「using System.Security.Policy;」はassemblyがないというエラー。
これはコメントアウトすれば解決するので、それほど問題はないと思います。
(もしくは#ifで囲ってしまうほうがいいかもしれません)

もう一つは下記画像なのですが

BycphOiIYAEf1nW.jpg large

「Script/SpringManager.cs」にある「UpdateParameter」関数内

			var prop = springBones [0].GetType ().GetField (fieldName, System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public);

GetType しているGetField の内容が不正ということだと思うのですが、取りあえずこれも「#if」で囲って使用されないようにすることで、吐き出すことができました。

とりあえず出だしのところで躓くというへっぽこな開発スタートでしたが、まずはどうすればいいかを早いところ洗い出しておきたいです。