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」で囲って使用されないようにすることで、吐き出すことができました。

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

WinRTで画面遷移の履歴スタックを削除する

WindowsRuntime(WinRT)アプリで画面遷移を行っている際に、一気にTOPページに戻したいけど、戻した後に戻ってこられては困るという時があります。

そこで下記のコードを「OnNavigatedTo/NavigationHelper_LoadState」に書いておきます。

Frame.BackStack.Clear();

このAPIで履歴スタックを一括で消せます。

また、あるページに到達した時点で、直前のページには戻したくなく、入力などを行ってるページまで戻したい場合などに、戻す件数を把握してBackKeyが押された際の制御を行うのもアプリの構成としてはありだと思います。

下記のように「Frame.BackStack.RemoveAt」を利用して指定したスタックを削除することもできるので、使い分けるといいでしょう。

            // 画面遷移の履歴スタック数を取得する
            int stackCount = Frame.BackStackDepth;
            for (int i = 0; i < stackCount; i++)
            {
                // 指定した位置のBackコレクションを削除
                Frame.BackStack.RemoveAt(0);
            }

dynabook TabをWindowsストアアプリのリモートデバッガで使用する

2014/05/29-30に行われた日本マイクロソフト社主催のイベント「de:code」で学習用機材として配布された「TOSHIBA dinabook Tab VT484/22K」を活用する一歩として、Windowsストアアプリのリモートデバッグを出来るようにしてみました。

使用した機材
・母艦PC:デスクトップPC
・タブレット:TOSHIBA dinabook Tab VT484/22K
・LAN:BUFFALO 10/100M USB2.0用 LANアダプタ LUA3-U2-ATX
・USB変換:ELECOM タブレットPC用USB変換アダプタ A(メス)-microB(オス) TB-MAEMCB010BK

リモートデバッグを行う場合は同一ネットワーク内にある必要があります。
その為デスクトップPCと接続するため、有線LANにするためUSB-LANアダプタを使用しました。

設定
・ルーターのDHCPでMACアドレスを利用してIPを固定しています。
固定していなくても実行可能とは思いますが、IPがコロコロ変わるのは面倒なので、固定しました。

必要なソフト
・母艦PC側はVisualStudio2013(Update3適応済み)を使用しています。
・dynabook Tabには「Remote Tools for Visual Studio 2013 Update1 x86」をインストールします

「Remote Tools for Visual Studio 2013」は「x86」「x64」「ARM」があります。
dynabook Tabでは「x86」版を使用しています。
dynabook Tab以外で行う場合は其々環境にあったバージョンをご使用ください。

インストール後、「Remote Debugger」を起動します。
起動すると各種設定に関する承諾が出ますがOKを押してください。
「Visual Studio リモート デバッグ モニター」が表示され、「サーバが開始され、接続を待っています」と表示されれば、「dynabook Tab」側は準備完了です。

Remote
母艦PC側のアプリソリューションを開き、アプリ動作先を「リモートコンピュータ」に変更して実行します。
実行の際、dynabook Tabがロックされていないように注意してください。
ロックされていると転送エラーになり、作業できません。

実行すると「接続先の選択」が表示されますので、きちんと接続準備ができていれば、リモートの「dynabook Tab」が選択可能です。(使用している開発言語で違いがあります)

接続が完了すると「開発者ライセンス認証」が促されます。
認証を行うとアプリが転送され、リモートデバッグが可能になります。

マルチタッチやカメラ、比較的非力なタブレット型でのデバッグが可能になり、開発のアイデアも浮かびやすいのではないかと思います。

Windowsデベロッパーセンターに「リモート マシンでの Visual Studio からの Windows ストア アプリの実行」という項目があり、ここに詳細がかかれています。

Autorun.infで32/64bitを分けて起動する

Autorun.infの[AutoRun]セクションの拡張で[AutoRun.Amd64]というのがあるようで、これで起動ファイルを分岐できるようです。

[AutoRun.Amd64]
open=setup.exe
icon=setup.exe,0

[AutoRun]
open=sperr32.exe
icon=sperr32.exe,0

記事などでWindows9は64bitオンリーになるんではないかというのが流れてきて、デスクトップの起動はどうしたものかというのがTwitterで流れていたのですが、「いきなり32bitアプリが全面禁止は考えにくい」というのが自分の考えですが、64bitアプリの対応は行うべきかなという感じです。

ただ、最近デスクトップアプリは全く触ってなかったので、この方法にたどり着くのに検索しまくったのはダメな感じだなー(;´Д`)

シンプルサッカー戦術ボード for WindowsPhone8.1 リリース

シンプルサッカー戦術ボード WindowsPhone8.1版をリリースしました。
これは先にリリースしていたWindows 8.1 ストアアプリ版をWindowsPhone8.1用に編集、再編したアプリです。

また、このアプリとWinストア版のアプリはuniversalアプリとして連携しています。

シンプルなサッカー戦術ボードアプリです
マグネットを移動出来ます。
また、マーカーで指示記入ができます。
ゴール前ボードに切り替えることが出来ます
Tweet 機能を搭載しています

試用版でも、機能制限は一切ありません。
気に入っていただけたら、ご購入下さい。

WPS_Download_cyan

*対応言語:日本語,English,português,español,italiano,русский,Deutsch,
français,简体中国,한국어

シンプルサッカー戦術ボード

*Simple soccer tactics board
*Simples Placa das táticas do futebol
*Simple tablero de tácticas de fútbol
*Simple tactique de football bord
*Semplice bordo tattiche di calcio
*Einfache Fußball Taktik Bord
*Простой тактики футбола доска
*심플 축구 전술 보드
*简单的足球战术板

Windopws Phone SilverLight 8.1 アプリをuniversal Appとして申請する場合のメモ

Windows8.1ストアアプリ側でInkManagerなどを使用したアプリを作成していた場合、WindopwsPhone SilverLight 8.1(以下WPSL8.1)で、アプリを作成しなければならなくなります。

このWPSL8.1アプリをユニバーサルアプリとして連携させる場合、ひと手間かかります。

sys000

上記のように同じソリューション内にWPSL8.1用のプロジェクトを作成するのが一般的だと思います。

作成はそのまま進めることで問題ないですが、そのままではアプリ登録時の検証でエラーが発生します。

sys001

WPSL8.1用の「Package.appxmanifest」をダブルクリックすると上記のように表示されるので、「パッケージ名」を登録済みWindowsストアアプリの「Package.appxmanifest」からコピーします。

次にWPSL8.1用「Package.appxmanifest」を右クリックし、「ファイルを開くアプリケーションを選択」>「ソースコード(テキスト)エディター」を選択して、XMLをテキストとして開きます。

sys002

「Identity」にある「Publisher=”CN=~”」をWindowsストアアプリの「Package.appxmanifest」、発行者に書かれている「CN=~」をコピーしてペーストします。

これらの書き換えはWindowsストアアプリが登録済みでなければできないので、WPSL8.1アプリを先行させている場合は、更新時に連携設定と書き換えを行う形になります。

WinRTベースのユニバーサルアプリを作成する場合は共有となり「Publisher=”CN=~”」の書き換えなどは必要ないので迷わず行えます。

今回はWPSL8.1アプリで説明しましたが、universal連携そのものはWP7.5/8アプリでも可能なようです。
おそらく同じような方法で連携設定を行うことになるのではないかと思いますが、自分は環境をWP8.1に移行していますので、検証できていないことをご了承ください。

de:code 2014 day2 #decode14

さてさて、二日目です。

・Kinect update 2014 ~テクノロジの進化~
 新Kinectの話題、いろいろできそうだなー
 新型はWindows8以降対応の予定、Core i7以上、DirectX11(GPU使っているため)、メモリ4GB以上など少々負荷が高め
 新型はサービス動作なので複数アプリから動作可能
 旧型は複数台可能、旧型+新型も可能、新型の複数台は未定

・WindowsPhone8.1アプリ開発徹底解説
 WinRTJSが投入された。
 APIは90%共有しているから、ほぼそのままWin8.1のコードが流用可能。
 WP8.1はSilverLight(以下SL)8.1を搭載しており、これまでのWP7のSL、XNA、WP8でのSL8.0、DirectX、WinRTのAPIが使用可能
 開発の際はSL8.1をベースにするとWinRTも使えるので、非常に強力な開発が可能。
 端末固有の機能はSL8.1でしかアクセスできないものがある(カメラなど)のでそういう意味でも、SL8.1をベースにするのが良いのではないか?
 バックグラウンド音楽再生機能などの一部機能がSL8.1では未実装だが、早いうちに更新されるのではないか?

・Internet of ThingsをWindowsプラットフォームで実践~センサークラウド、M2M、Big data、つないで、連携して、溜めて、活用~
 BTLE Gatt protocol等つなぐためのプロトコルにいろいろ対応
 今後マイクロソフトがIoT向けのサービス、エージェントを直接提供する
 6月にIoTイベント「Microsoft IoT Summit 2014」を開催
 「.Net Micro Framework」は「FEZ」というボードが対応している
 「FEZ」は「TINYCLR社」の商品で日本では「株式会社デバイスドライバーズ」が取り扱っている
 ※VS2012までの対応なので、現在のところはVS2013は非対応

・ユニバーサルWindowsアプリの画面設計~4インチから82インチまで~
 高DPI、画面の解像度、モニタのサイズが非常に幅広い
 30cm前の4インチと3メートル先の40インチは同じサイズに見える
 縦長への対応どうする?
 そして正方形の画面になる場合が存在するがどうする?
 横前提なら、縦長への対応をすっぱり割り切って横表示だけにする、横表示で狭いなら広げて使ってもらうように促す画面を表示する
 ゲームなどの場合メインの「表示/プレイエリア」を正方形で作ってしまい、周辺のUIをサイズに合わせて移動させるのもあり(例としてアナ雪のパズルアプリ)
 解像度ごとの対応はscaleで複数用意することができて自動的に変更してくれるが、一枚で済ませたいのなら、(必要なサイズの)400%サイズの画像を用意して配置する。

・de:code参加者に捧げる最新Microsoftデモ・プレゼンの極意
 短時間ではあったものの、スピーチテクニック、デモテクニックについて濃い内容でした
 自分もこうできるように訓練しよう
 西脇さんは本を出されているのでリンクを置いておきます。
 Kindle版もあるよ

二日間にわたって参加してきましたが、非常に濃い技術漬けの二日間でした。
ただ、どちらかといえば導入向けのセッションがDeviceセッションでは多かったかもしれません。

今後順次ビデオなどがMicrosoft Virtual Academy等で公開されるそうです

参加者の皆様、関係者の皆様、お疲れさまでした。

de:code 2014 day1 #decode14

日本マイクロソフトのデベロッパーイベント「de:code」に参加してきました。
早期割引でとは言え、自分には少々重い負担ではありましたが、非常に濃く、刺激を受けることができました。

・キーノート
 樋口泰行氏、伊藤かつら氏、MSエヴァンジェリストの皆様
 キーノートでは先にアメリカで開催されたBuildを元に日本での技術、開発者向けイベントを開催するにあたって、マイクロソフトの現在の方向性が「Mobile First、Cloud First」であることを再度訴えていました。

 今回、教材として東芝とインテルの協力で「dynabook TAB VT484/22K(8int WindowsTab)」を配布するので、ストアアプリの開発、普及に活用してくださいとのことでした。

 さて、自分が気になっていた事というかメインは日本での「WindowsPhone」の展開に関してですが、樋口氏からは「今日は何も発表ございません」とのことで、周辺からやはりかとがっかりした雰囲気が漂いました。

 しかしながら伊藤氏スピーチの際に、「各国からかき集めたWindowsPhone8端末を教材としてお渡ししますので体験してください」との発言の際は会場から驚きが上がりました。
 ただ、この端末は技適には通っていないので「通信機能をOFF」で使用するようにとの注意は付きました。
 一応とは付きますが日本での「WindowsPhone」展開に関しては含みを残した状態でキーノートは終わりました。

 もちろん、WindowsPhone以外にも、

 ・今後もde:codeを開催する
  TechEdからde:codeへ、毎年開催すると宣言されていました。

 ・Microsoftのフォーカス
  ・Mobile
  ・Cloud
  ・Usage(使ってもらってなんぼ)
  ・Engineer

IoT(MSとしてはIoYT=Internet of YOUR Things)
  すべての物がネットに接続される、MSとしては身近な物、使うものだから「YOUR」を追加

 ・Project Siena
  タブレットでタブレットアプリを作るためのツールということで、紹介されたプロジェクト
  グリッドアプリを配置と、Excelのような関数、Bindの簡易化などで、手軽にプリプロできる、簡単な物ならそのまま提供可能なアプリを制作可能

 等々、時間中に可能な限り二日間の内容を凝縮したようなキーノートでした。

 Channel 9に伊藤かつら氏の部分が公開されていました
 「de:code | Channel 9
 今後公開可能なセッションはさらに追加されていくことでしょう。

・Windowsアプリ開発、どこへ向かうのか。~Deviceトラックの歩き方~
 奥主洋氏
 今回「Deviceセッション」が非常に多く、どのような感じなのかを分類してチラ見せしつつこの講義はチェックということを解説されました。
 また、ストアアプリをお勧めはするけども、デスクトップアプリを切るわけではなく、共存進化させていく。
 ただ、タブレット等のタッチデバイスへの対応を考えるとストアアプリ化を進めていただいたほうが便利で楽に作れますとのこと。

・Xbox One apps~新世代エンターテイメントの提案~
 鵜木健栄氏
 日本での発売日が決まったXbox Oneに関するセッションでした……が、ごめんなさい都合により書けません。

・HTML/JavaScript/CSSとC++で作る、Windows、WindowsPhone、Xbox One アプリ
 WP8.1でWinRTの共用が図られた結果、HTML5+JSで両方のアプリが使えるようになった。
 ライブコーディングで、ほぼそのまま動作。
 ほぼというのは、読み込むJSが違うので、宣言をすることを忘れずにとのこと。

・WindowsPhone8.1プラットフォーム徹底解説
 WPアプリは現在25万アプリだそうです。
 非公開配布(URL知ってれば別として)機能はWPだけ

・デスクトップアプリケーションとWindowsストアアプリの連携ーアプリ間の連携技術ー
 非常にマニアックな内容ではあったんですが、なんだか懐かしいセッション内容
 言ってしまえば「プロセスフック(乗っ取り)」でアクセスする
 いやー懐かしい話だなーw
 もちろんこれはストアに提出してもはじかれるものではあるんですが、企業内アプリをタブレットなどのタッチデバイス化したい場合に有効ではないかなと思います。

・参加者パーティ
 DJやazure#というグループが歌ったりとなかなかに派手でした。

一日目はこんなセッションに参加していました。

//Publish/ ハッカソンに参加していました

2014/05/17-18の二日間にわたって、//Publish/ハッカソンに参加してきました。
//Publish/ハッカソンは全世界で行われており、早いところは金曜~土曜で行われていたため、日本は二番手くらいの開始で行われました。

ハッカソンでは、ExpertとしてMVP/MSPの方々がイベント補佐でアプリを製作しながらいろいろなセッションなどを行っていました。

ハッカソンは徹夜、泊まり込みで作成していいようにイベントスペースで行われていましたが、自分は夜はいったん帰宅して部屋で調べ物など行い、就寝して翌朝再度イベントに向かいました。

当初予定していた、WinストアアプリとWPアプリ間のWi-fi Direct接続するアプリというネタをいろいろ検証しながら仕込んでいたのですが、ハッカソンで相談などした結果、現状できないのではないかというところになり、ネタを変更しました。

最終的に選択した画像をゲーム風ステータス表示するというどこかでありそうなネタにしました。
Win/WPのuniversal Project Appsで作成してWP版はハッカソン中に承認が降りて掲載されています。
Win版は現在申請中です。

そしてWP版なんですが、Releaseモードでのデバッグや最終的なスクリーンショット生成時は動いていたのですが、発表時にはうまく動かないという状況になりました(汗

なんとか原因を調べて安定させたものを再申請しようとは考えております。

二日間、ハッカソンに参加された皆様、運営の関わった皆様、会場提供の会社様、ありがとうございました。
そして、お疲れ様でした。

かけ算 九九表です。簡単な問題、フラッシュ暗算もあります

かけ算を勉強するための、日本風の九九表アプリです。
計算の力を伸ばせれるように、簡単な問題を出す機能を搭載しています。

Windows8.1に最適化を行い、フラッシュ暗算機能を搭載しました。
標準では、「桁数は1桁、2桁、3桁の固定」、「出題数は10問まで」、「表示時間は約 1 ~ 0.7 秒まで」、「足し算のみ」、となっています。
アプリ内で機能解除をご購入いただけると、「桁数は1~7桁を最少~最大で設定可能」、「出題数は30問まで」、「表示時間は約 1 ~ 0.2 秒まで」、「足し算と引き算」、となります。

さらに、WindowsPhone8.1(WindowsRuntime)版をuniversal Appsとして連携しており、アプリ内課金によるフラッシュ暗算の機能拡張は共通課金となっています。

Windowsストア版初期画面
Windowsストア版初期画面
Windowsストア版フレッシュ暗算画面
Windowsストア版フレッシュ暗算画面

Windowsストア版
対応言語:日本語 , English , Deutsch, español, français,
português, 简体中国 , 傳統中國 , 한국어

WindowsPhone8.1版初期画面
WindowsPhone8.1版初期画面

WindowsPhone8.1版
対応言語:日本語 , English , Deutsch, español, français,
português, 简体中国 , 傳統中國 , 한국어

*かけ算 九九表です。簡単な問題、フラッシュ暗算もあります
*Is the multiplication times table. A simple problem, there is also a flash mental calculation.
*Multiplikation mal Tisch. Ein einfaches Problem, es ist auch ein Blitz Kopfrechnen
*Mesa de Multiplicación. Un problema sencillo, también hay un cálculo mental de flash
*Table fois de multiplication. Un problème simple, il ya aussi un calcul mental flash
*Vezes Multiplicação mesa. Um problema simples, existe também um cálculo mental de flash
*次乘法表。一个简单的问题,也有闪光心算
*次乘法表。一個簡單的問題,也有閃光心算
*곱셈 구구단 표. 단순한 플래시 암산도 있습니다