2017年5月18日木曜日

iTunes on Windows Store を考える

(2018/03/20 - 最近の状況を末尾に追加しました。)

Build2017 二日目のKeynote で、iTunes が Windows Storeに来る!というビックリニュースがTerry Myerson からありました。
ビックリすぎてTerryが痩せたとかなんとか(すみません)。




このiTunes をWindows Storeに持ってくるという話、今のStoreの規約・またDesktop Bridge のシステムに照らすとどんな事が見えるのかしら?いろいろ考えてみよう!というのがこの記事のテーマです。色んな意味でDesktop Appの「大物」であるiTunes のDesktop Bridge化とそれに伴う課題は、他アプリから見ても参考になる部分が多いはずです。

※ これから先の事案を予想する記事なので、何時にも増して想像に頼る部分が多いです。話1/3くらいでお読み頂ければ。

※ この記事ではiTunes がDesktop Bridge を使う前提ですが、Buildの発表ではDesktop Bridge を使うとはTerryは一言も言っていません。…が、実際それしかないだろうという体で以降話を進めます(UWPとも言っていません)。


Windows Store のポリシーから見る


現在、Windows Storeのポリシー (Version 7.3)には以下の条項があります。

Windows ストア ポリシー
https://msdn.microsoft.com/ja-jp/library/windows/apps/dn764944.aspx

10.8 金銭的な取引
アプリにアプリ内購入、仮想通貨、請求機能を追加したり、アプリで財務情報を収集したりする場合は、以下の要件が適用されます。
10.8.1
アプリ内で利用されるデジタル アイテムまたはサービスを販売するには、Windows ストア アプリ内購入 API を使用する必要があります。 アプリでは、ユーザーが以前購入したデジタル コンテンツまたはサービスを利用可能にできますが、Windows ストア アプリ内購入 API 以外の購入メカニズムを使用するようにユーザーを誘導してはなりません。
アプリで販売されたアプリ内製品は、法的に有効な通貨 (米ドルやユーロなど)、または任意の物理的な商品またはサービスに変換できません。


つまり、「Windows Storeで配布・販売するアプリの中でデジタルアイテムを売る場合はWindows のAPIを使って金銭のやり取りをしなさい」という規約です。デジタルアイテムとは、例えば曲、映画等のコンテンツです。

これをもう少し実体に即した生々しい言い様にすると…「アプリ内購入APIを使う=売上の三割を手数料としてMSに持っていかれる」、という事です。

このせいもあってか、これまで Windows Store で提供されている電子書籍や音楽配信等のアプリで「アプリ内購入API」が使われていた事は少ないです。大抵は別にWebブラウザを起動し、そこから…Windows Storeの外側でアイテムを購入する仕組みになっています。ユーザーからすると多少手間ではあります。また、三割の話を別にしても…こういったサービスの場合、販売するコンテンツの配信開始・停止、権利の管理も含めて、Webベースで構築してある場合がほとんどです。これにわざわざアプリ内購入APIをねじ込む理由があまりありません。

以上を踏まえて、iTunes on Windows Store について考えてみます。

現状のiTunes は、もちろんAppleが自前で組んだ販売システムと強く結びついているものです。デジタル コンテンツの購入は、Desktop・Mobile 共に AppleのiTunes の中からのみ行い、Webには出ていません。

実際の所、今のiTunes をそのままDesktop App Converter に通す等してAppX化した場合、一部の機能(*1) を除いて大体そのまま動いてしまうと思います。
しかし、上で説明したように、Apple自前の販売システムをWindows Store上のアプリで使用するのは規約 10.8.1 に照らすとどう見ても×、無理、ダメっすねという事になります。

*1 デバイス接続検知のSystem Service、またDriver等もあったのでは?と記憶しています。後でまた触れます。

ではどうするのか?幾つか選択肢が考えられます。
※ここから先は事実に基づかない私の想像です。


  1. AppleがMSのアプリ内購入APIを使ってiTunesを書き直す
  2. 販売のみWebブラウザを使う
  3. iTunes に合わせてWindows Store の規約を変える


1 は…技術的には可能ですが、3割MSに使用料収めるためのシステムをAppleが新たに書く理由を考えにくいです。

2 は…今のiTunesだと難しいのではないかと思います。上でも触れましたが、私の知る限り、購入は全てiTunes App内(のWebView?)でやらせており、Webには出していないです。Windows Store の為に新たにこの仕組みを作るというのも無さそうな話です。

3 …おそらくこれになるんじゃないかと想像しています。
「独自システムによるアプリ内販売禁止」は別に法律では無く、結局はMSが自分で決めたルールですので…MSがいいよ!と言えば済む話ではあります。

今回 iTunes 以外にもSpotify がWindows Storeに来る事が発表されています。
こちらについても上と全く同じ話が当てはまります。
実際の所、こういったデジタルアイテムの販売は今迄のDesktop App では当たり前に行われていた話です。今後はDesktop App も基本Windows Store を配布の中心に据えるつもりのようですし、実態に即した形で規約も変わっていかざるを得ないだろうと思います。

(2017年6月追記) SpotifyがWindows Store からダウンロードできるようになりました。
https://www.microsoft.com/store/apps/9NCBCSZSJRSB
サブスクリプション契約自体はAppから外部のWebブラウザを起動して行う形です(元々のDesktop Installer版と同じでした)


※ この件、MSDN Forum で質問を書いてみたのですが…「変わるだろうね」というふわっとしたお返事がありました。デスヨネ

Desktop Bridge app that selling digital items and Store Policy 10.8.1 - and iTunes
https://social.msdn.microsoft.com/Forums/windowsapps/en-US/de7de9e9-17ea-4694-817b-b7ca05097f77/



Desktop Bridge の仕組みから見る


上で少し触れたSystem Service・Driverの話です。
iTunes、確か デバイスの接続検知用システムサービスと、iPhone・iPod 用のドライバを同時にインストールしていた気がします(最後に使ったの数年前なので自信が無いです)。

しかし、iTunes が使うであろうDesktop Bridge ではSystem Service・Driverをインストールすることができません。

これもいくつか方法が考えられるのですが、
※ ここも完全に私の想像です。


  1. System Service・Driver をインストールするWin32 App をWebから別途ダウンロード・インストールさせる
  2. Desktop Bridge に「特別な権限」を新たに設ける
  3. System Service 又はDriver が要らない使い方の提案

1 は…現状…Windows 10 Home / Pro に対してはかなり便利な方法です。実際やっている方居そうです。ただし・・・・この手はWindows 10 S には使えません。Win10SでStore外から取得した Win32 App は動作しないからです。今回の話はWin10 S でiTunes が動く、という文脈なのでこれは無いでしょう。

2 …これが現実的なのではと考えます。
またルール変えるのかよ!と言われそうですが、実は今迄にも似た運用がありました。
例えばUWP App の場合、基本はかなりキツいSandbox…動作上の権限に制限が加えられているのですが、

  • 企業アカウントからアプリを出している
  • Microsoft と交渉してOKが出ている

等の条件(ものにより色々です)が合致すると、追加の権限をアプリに付与する事が可能な仕組みになっています。

アプリ機能の宣言 - 特殊な用途および制限された用途に関する機能
https://docs.microsoft.com/ja-jp/windows/uwp/packaging/app-capability-declarations

Desktop Bridge についても、種々の条件を満たし、MSから許可を得たベンダ・またはアプリについて追加の権限…System Serviceのインストールと実行を許す、という事が出来るかもしれません。

3 これもありそうですが。例えばドライバを使う操作はWin10 Sではサポートしない、iTunes が起動していない場合にデバイスを接続しても何も起こらないのは仕様である、等々。


考察


「iTunes を Windows Store に持ってくる」と宣言した時点で、色々な決まり・機能を変える必要があり、MSさんはそうするつもりなのだろうな、というのが私の感想です。
そして、これは基本的には技術的制限というよりはポリシーの話でもあります。

Build2017 の少し前、 ZDNetに「Windows 10 S にGoogle Chromeは来ないのでは」という記事が載りました。

Google Chrome won't be allowed on Windows 10 S
http://www.zdnet.com/article/google-chrome-wont-be-allowed-on-windows-10-s/

詳しいところは元記事をご参照頂きたいのですが、主な論旨は


  • Chromium 等、Edge 以外のEngine を使ったWeb Browser をDesktop Bridge でAppX 化したアプリの申請がMicrosoft によりRejectされている (*2)
  • Windows Store の規約がこの三月にVersion 7.3 に改定され、その中に「Webをブラウズする場合、Windows が用意するHTML及びJavascript エンジンを使う必要がある」という項目が追加された
  • MSのSpokespersonが5月9日にZDNet の問い合わせに答えて曰く「MS製以外のWebブラウザ使いたければWindows 10 Proをどうぞ」

*2 MSがUWP App 用に用意しているWebView Control はEdge ベースのEngineになります。これを使った「ブラウザアプリ」は特に問題無くストアに載っています。


実際、Twitter等でちらちら聞こえてくる話ではChromium のAppX 化は技術的には何の問題も無いようです。しかし、Webブラウザ に合わせて規約が改定されるという話にはならず、むしろ規約を元に「無いです」というのが現時点での結論になっているようです。つまり、iTunes とは真逆の話になってしまっています。これもまた、技術的制限というよりはポリシー、Windows Store 大家の意向という事になるでしょう。

Windows Store、最終的には大家の意向が通る私設商店街です。店子も大家の意向、動向に多少気を付けていないといけないのだろうなと思います。この辺りはGoogle Play、Apple AppStore あたりと共通の話かもしれません。


※追記 2018/03/20
その後いくつかイベントはありましたが、結果としてiTunes はまだStoreに来ていません。

2017年12月 以下のZDNetの記事が公開されました。


iTunes won't be in Microsoft Store this year
http://www.zdnet.com/article/itunes-wont-be-in-the-microsoft-store-this-year/

年内(2017年)にStoreに載ることはない、というApple 側のSpokes Person のコメントを Foleyさんが紹介しています。Windows 10 S のユーザーにとっては残念な話だろう、と締められています。

2018年3月 Windows 10 S が 「S Mode」に「発展的解消」を遂げました。


Windows 10 in S Mode coming soon to all editions of Windows 10
https://blogs.windows.com/windowsexperience/2018/03/07/windows-10-s-mode-coming-soon-editions-windows-10/

少し前からちらちらと出ていた話なのですが、Windows 10 S 単体でのSKU、製品単位をやめ、各Windows 10 SKUが「S Mode」という設定を持つ、という方針転換でした。
この件中々評価が難しいです。10 S を諦めたんじゃん?という見方があり、いやS Mode でより展開し易くなったのでは、という人もいます。
私の見方は…わからん、です。OEM的には後者ですが、実際の数字が見えないのでなんとも言いづらい。

このように今回の話の元々にあったWin10 S がなんだかふわふわしており話が見えづらくなっています。

で、iTunes on Store どうなのよという話に戻りますが… 2018年3月現在、この記事の上半分で書いたようなストア内販売のポリシーの話、また後半で書いた技術的な話、共に2017年5月当時から特に変わっていません。
……。
去年のBuild 2017からそろそろ1年ですが、5月のBuild 2018で何もなかったら…まぁそういうことなのかもしれないですね。1年も引っ張るような話でも無いんじゃん、という気がします。また、既にSpotify も Amazon Music もStoreに載っていますから、音楽聞きたいS Modeユーザーはそっち使ってね、と言えばまぁ話としては通りますし。

ただ…S Modeや iTunes がどうなろうと、Build2017 でのKey Message、アプリの供給場所をストアに一本化したい、というのはおそらく一貫しているように思われます。この一年様々な技術の発表がありましたが、そこがブレているようには見えないからです。

※ 追記 2018/05
その後、iTunes 無事に公開されました。
ポリシーは…個別対応というふんわりした感じで収まっているようです。



2017年5月14日日曜日

Build 2017 Session視聴メモ その1

Build 2017, 見たセッションの内容をメモしておこうという記事です。
そうしないと忘れちゃうので。

Build 2017 Session視聴メモ その2
http://ddlgjp.blogspot.jp/2017/05/build2017.html


B8096 Ten things you didn't know about Visual Studio 2017 for building .NET UWP apps
P4171 Windows 10 on ARM
T6109-R2 Black Marble: What did UWP ever do for us?
B8004 App Model Evolution
B8098 Windows Store: Manage and promote apps your way
B8025 Cross-device and cross-platform experiences with Project Rome and Microsoft Graph
B8066 Introducing Fluent Design
B8034 Build Amazing Apps with Fluent Design
B8103 Xamarin: The future of mobile app development
B8099 What's new in Xamarin.Forms






B8096 Ten things you didn't know about Visual Studio 2017 for building .NET UWP apps


https://channel9.msdn.com/Events/Build/2017/B8096
https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8096.pptx



1 VS Install


UWP buildするにはチェックすれ
VS2017とSDKはSideBySide…サポートしてるので使え(VS本番とVSPreviewなど)


2 Windows Template Studio


UWPのBoilerplateな部分が大体入ってるFramework
Navigation, MasterDetail, background, MVVM, etc…
VSIX形式なので、VSで新規作成するとTemplate選択UIにシームレスに飛び、そこからFrameworkの種類を選択できる お馴染みの形式
MVVM basic, MVVM Light, そして「Code Behind」も選べるのがミソ
Pageの追加もここからできる
Githubにソース全部あるので何かあったらIssue立てれや

デモ 🍔ボタン、Master Detail Model、マップ、等のよくあるページがテンプレから選べるだけで即作れますよー Size変更に対応できるResponsiveなやつですよー という

(感想…VS統合型の分かりやすいテンプレートは今迄待ち望まれていた部分 既存のTemplate10、UWP Community Toolkitと合わせて便利に使えると思います)

3 Connected Services


UWPから サービスに繋げるのが楽になった
  • HockeyApp
  • Azure Mobile Apps Backend
  • Azure Cloud Storage
  • Office 365

デモ AzureMobileAppsも簡単に追加できるよー URL入れるだけよー
さっきのWTSと組み合わせればMVVMでRelayCommandで作るのも簡単だよ
ダメなコードはVS2017がそれダサいから書き直せと指摘してくださる
ほうらMobile ServiceへのFacebookを使った認証も一発だーーー(88888)

(感想 HockeyAppは今後どうなるんだべ MobileCenterに置き換えられそうな空気があるが)

4 NuGet PackageReference

今迄はProject.jsonに全部入れてたが、2017ではprojectの.csproj に入れるようになった

5 .NET Standard 2.0


1.x は.NET Core に引っ張られて扱う範囲小さかったっす
UWPは1.4だったが?
2.0は違うよ!でかいよ!!
.NET Core 2.0が太ったのに合わせて太った!
他のNuGetもかなり食えるようになった
表参照…PPTがもう上がってる 色々できる
そーしーてーーーーー SqlClientも使えますよお客さん!!!イエーーーーーーーーー!!!!!(Fall CUから)
.NET Native の改善
Incremental compilation support for .NET Native
.NET Native portable PDB

6 XAML Controls

TelerikのDataGridViewが使えます
UWP Community ToolKit HamburgerMenuも使えるよ

7 Coding Productivity


VS2017のCtrl-T Navigationは超便利だからお前ら使うべき
XAMLのIntellisenseが強まった
Namespaceの自動補完も効くぜ
色々

8 Debugging Productivity


2017のXAML UI Debugging…例の奴
LiveVisualTreeでOnTheFlyで書き換えられる
XAML UI Analysisも Performance Issue追っかけるのに使える
UI Elementそれぞれの初期化時間が全部出てくる しゅごい ListViewが仮想化されてないよ!UI ThreadをBlockしてるよ!等も教えてくれる そしてこうすれば早くなるよというms.docs文書に飛ばす 36分あたり

(感想 XAMLもののPerformance 問題、真剣に直そうとすると結構疲れる作業なのでこれはかなり有難いと思います)

9 Visual Asset Generator


UWP Appでアイコンだのなんだの100万個作る奴の自動化
今迄は有志のWebServiceその他でやってた奴

10 Visual Studio Mobile Center

UWPでも使えるようになーりーまーしーたーーーーーー
これはFall CU待ちなくて今日もう使える
余談だが💡サポートがさらに強まって、今迄はusing ついてないよ までだったが、今はこのnuget packageが入って無いからManagerからInstallしましょうか?まで提案するようになった これはVS2017Previewかな?

(感想 そこまでわかってんならお前が書けとちょっと思うが)
(感想 Mobile Center、Xamarin.Android で今使ってるけど良く出来ている Application Insightから移ってもいいかも)

まとめ

VSPreviewとSDKPreviewをDLすれナウ!SideBySideで入るから!痛くない!

(感想 そうはいっても、Fall CUの新機能はそれこそ秋になるまで世に出せないのでいまいちやりがいが無い Insider Preview 向けにアプリ出せる環境があればまた違うんだけど)

Q&A

UWP Community Toolkit  WTS 違い
UCTはNovember Updateから使える
WTSはCreators Update以降
重なってる部分多い



P4171 Windows 10 on ARM


https://channel9.msdn.com/Events/Build/2017/P4171

(これはPre-recordedなSession、12分の短いやつ 会期中にライブでやってたのとは別)

2020年に向けてConnectivityが要る!だからARM!

(感想 わかるし面白いと思うけど若干弱くないかなぁ)

Qualcomm製の小さいデバイスを見せる Phabletくらいのサイズかな
Win on ARM, ArmはARM 上から下まで メモリ4GB
Edgeも全然普通に動いている

(感想 WindowsRTもこのあたりは出来ていたので)

ビデオカメラ刺すと即Inbox Driverが動くよ!

7Zipのデモ 野良で拾ったWin32 Appももちろん動く (一部で心配されていた Win10SみたいにストアOnlyでは?というのは無い)
Win32 → ARM64 Emulationは全く透過的、Runtimeに行われ、またディスクにキャッシュされる

基本、OS持ちのアプリ…EdgeだのExplorerだの…は上から下まで全部ARM Native
X86はWOWレイヤに乗せてEmulation
Compiled Hybrid PE(CHPE) DLL…キメラというか Appからはx86DLLに見えるが中ではARMで動く この半年くらいWalking Cat氏が追っかけてたやつですね
OS持ちのSystemDLLをこれで準備しておくことで、RuntimeなEmulationをかなり減らせる

UWPのデモ
…UWPの場合、.NETものは.NET Native でそれぞれにNativeなのが降ってくるので問題は無い

(感想 一部、.NETじゃないC++の場合はビルド時に明示的にARMをチェックする必要があるかも)
(感想 個人的にはWindows がARMで動くだけで面白いので以前SurfaceRT買って遊んでたんだけども だが、それが一般に受け入れられるかというと微妙な気もしており・・・セッションの始めで言っていた「ARMで動かす理由」をもう少しBrushUpする必要があるように感じた)


T6109-R2 Black Marble: What did UWP ever do for us?


https://channel9.msdn.com/Events/Build/2017/T6109-R2

ソフト屋さん Black Marble が自アプリ tuServ をUWP化したよ話
Android・Win10 Client からBackendに繋げる感じ
警察で使うアプリなのかな
うn かなり良く出来ている (が、それ以上特に得るところが無かった…)



B8004 App Model Evolution



https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8004.pptx

(SpeakerのAndrew ClinickさんはWPの頃からAppModel、AppXの親分 今迄もDesktop Bridge、AppX、UWP Appで大事な話が多かったです Q&Aの時間たっぷり取ってくれるのもナイス)

AppX


Streaming supportが入った
Game等で、CoreがDL完了した時点で起動 残りのデータ部分はBgでDL
Self updating apps for UWP - 更新を自分で制御・App起動前に更新を強制・社内・ベータ配布等… しかしこのSessionではこれ以上の詳しい説明無し

Desktop Bridge



このSessionのKey Messageはこれでしょう。





(感想 ワオ 踏み込んだ この1年弱のDesktop Bridge運用で自信ついたのかな? もうWin32 Appの配布はAppXが本筋だぜ!という宣言ですね)

Lesson Learned
  • Q どうしてほとんどのWin32 Appが簡単に変換できるの?
  • A Appは変換していないから。インストーラを変換しています。
(感想 腑に落ちる大変分かりやすい説明です)

AppXを直接吐けるインストーラー製品が増えてきた
  • FLEXERA (InstallShieldでお馴染み)
  • RAD Studio
  • Firegiant (WiXでお馴染み)
  • InstallAware
  • Advanced Installer
「でもMS自身はDesktop Bridgeあんまり使ってないよね?」
「使います!」
  • Office - Win10 SのタイミングでPreview、GAは後で
  • Team - Soon™
ここからMicrosoft Graph の話

Graph、今まではIdentityのフレームワーク、くらいの地味な扱いだったんだけど、このBuildで急にスポットライトが当たった感じ
後の説明で分かるけど、Romeその他で今までWin10に少しづつ乗っていた機能がGraph,ということでAppでも使えるようになった感じします

App Graph


App同士がMSAまたはAADで認証してGraph経由でデータをやりとり
今回のGraph、WindowsだけでなくてiOS・Androidも入ってるのがポイント

Device Graph



いわゆるDevice Discovery、Serivce Discovery デバイスのEnumeration、デバイスが持つサービスのEnumerationを行う
MSAまたはAADの認証トークン付きでMSに
https://graph.microsoft.com/me/devices
で投げると、答えがJsonで返ってくる

KeyMessage

「Tranform your app into a service」


(感想 この考え方は大事やなと 特に…UWP Mobileが沈没した今、Windows AppがMobile Appの世界と連携していくには、UWP App側がサービスになってMobile App…iOS / Android からGraph経由で繋げるしか無いんだろうと思います)
おそらく、RomeのRemoteService、DeivceDiscoveryはこれで実装してたんだなーいうのが分かる

Activity Graph


Fall CUのTimelineや、AUで追加になった通知の同期がこれで作られている メッセージの同期・やりとりをGraphで行うよ、という話
(感想 Romeや通知の同期などは、「MSのクラウドで同期」というふんわりした説明が今まで多かったんだけど 今度からは「Graphで同期」と名前がついた感じです)

Adaptive Cardの話


通知の単位としてのAdaptive Card 例えば、Fall CUのタイムラインでタイルっぽく出しているのはまさにAdaptive Card
全部の通知がCardを持つという話でも無い(Grooveの再生ポジションとかカードにしても仕方ない)
Adaptive Card - MetaData、URI、Visual

Demo
これは実際手を動かした方が早い
http://adaptivecards.io/visualizer/index.html
ここで右上のコンボボックスからコンテナ…タイル、トースト、Facebook、BOT等を選択できる
左ペインのデータモデルが各コンテナでそれなりに表示されるよね、という話

QA Time

Q Win10SはDesktop Appインストールできないの?
A Win10SはWindowsストア からアプリをインストールできる Deskop Appも、Desktop Bridgeを使えばインストールできます

Q Graphのやりとり、データは実際どこに保存されるの?
A 'Complex Answer' ...この回答面白いですね ご存知のようにドイツはこの手のデータ保護超うるさいのでUSとは保存の仕方が別なんだよ、という (感想 Graph、一個の技術というよりは SignalRみたいに、いろんなレイヤの技術をまとめて…Synthesize…一つにしてお出ししてる感じです)

Q Graphに預けるデータのサイズ大きくなったら?
A 場合による…Activityだったらば渡して終わりなので貯めるというのが無い クラウドではないので概念がちょっと違う ただもうすこし詳しい話は聞きたい

Q Activityの読み書き?
A 自分のActivityは読み書きができる (よくわからなかった)

Q Desktop BridgeはSystemService持てないじゃん?
A うn セキュアなSerivce書くのは大変よね ただUsermodeのPrinterDriverのように道はある(うn・・・)

(感想 iTunes はどうするんじゃろう)

Q Longrunning Taskはどうするのん
A (苦しい) Consumer Appにフォーカスしてるから…(確かに難しい…)

Q BgTask、LongrunningTask
A (苦しい) (感想 たしかに・・・ResidentなBackgroundTaskが書けないのはUWP AppModelの弱点 Background Serviceは基本EventBaseなので、Win32App+SystemServiceを書いてる人はまず困る所だと思う)


B8098 Windows Store: Manage and promote apps your way



...ppt見れば済むので略 大体、今まで言っていたストアの拡張の話
Betaのリリースコントロールが多少細かくなるみたい


B8025 Cross-device and cross-platform experiences with Project Rome and Microsoft Graph



Speaker、かなり一杯一杯 がんばれ

User engagement がキーワード このEngagement、なんと訳すべきかいつも困るが

Rome
Q3 16 Windows
Q1 17 Android
Q2 17 iOS, Graph

Timelineの説明
UWPでのDeviceDiscovery → RemoteServiceのデモ この辺りは今更感ある

Rome iOS SDK
MS Graph SDK
iOS AppからWindowsのAppを起動して、iOSの写真アプリでの写真切り替えとWindowsを同期させるデモ
Graph SDK, 上のPresentation でもあったようにHTTPで生えてるから Webから使うのも楽なんだな

デモ AlexaからGraph SDKでPCのブラウザを起動

まぁこの辺りは全部GitHubにあるので実際手動かした方がいいですね


B8066 Introducing Fluent Design




最初の18分は要らない

Fluent Design Wave1

  • Reveal Highlight
  • Acrylic Material
  • Connected Animations
  • Conscious Controls
  • Perspective Parallax

このあたりはRS3で入るやつ 一部はVisualLayerとして技術は前からあったけれども、それらを束ね直して使いやすくしました、大部分はCommon Contorolに最初から入ってますよーという感じ Reveal HighlightやConnectedAnimation、Parallaxも以前からUI.Compositionで紹介されてましたよね

Reveal Highlight等はCommon Controlは最初からImplement済みである そりゃそうだ 自分でやれとか言われたら帰るよ俺は

Acrylic Material … いわゆるすけすけ
まぁ…Controlで適切にやってくれればそれ使うでいいよね(低意識)

Connected Animation
これは使ってるの多いですね最近 ただ、SingleWindowの中でPage切り替えるのには有効だけど MultiWindowだとあんまり出番を作りづらい

Perspective Parallax
これもよくある奴 前景と背景でずれながらスクロール的なアレ

ここでWave1の効果のみをつかったデモ動画 うん・・・まぁ・・・最初のFluent Design System 全部盛りとはだいぶ様子が違うっすね

Wave2は…?
未定だが
  • 360Degree Media playback
  • Conscious Headers Viewの変化に従ってヘッダの描画がぬるっと変わるやつ 最近Androidで多いアレ
  • Speech
  • Z-Depth Layering (動画デモで一番派手なやつ)
  • Spatial Sound

(あ、Pull To Refreshが見える これもFluent Designの一部として予算ついてんのかしら)

Web上のSample、Documents

https://docs.microsoft.com/en-us/windows/uwp/style/


B8034 Build Amazing Apps with Fluent Design


https://channel9.msdn.com/Events/Build/2017/B8034

B8066 を踏まえてAppを実際に書いてみようぜというSession
まぁこの辺りはもうSDKもDocumentもあるのでごりごり書いて行けばいいと思う
サンプルのソースもchannel9のコメント欄に中の人が全部URL貼ってくれているし

AcrylicはXAMLん中でBrush定義してそれ使うだけ

Reveal Highligh, 多くのControlが既定でサポートしてる
  • NaviationView
  • ListView
  • GridView
  • ComboBox
  • CommandBar
  • MediaTransportControl
そうでないControlもStyleで簡単にEffectを付けられる ただのボタンとか

その他ConnectedAnimation、Parallax の使い方等 見ればわかるので略


B8103 Xamarin: The future of mobile app development


https://channel9.msdn.com/Events/Build/2017/B8103
https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8103.pptx

Xamarin Live Player の説明
これやっぱり説明の画面構成がおかしいんだと思う 誤解した人が増えたのはしかたない

最初17分は全体にMiguelとJamesがイチャイチャLiveCodingしてるだけなので好事家の人向け

Upcoming .. SwiftNetifier - project and cosume Swift APIs into .NET  ほう

このセッションは左と右(講演者と画面モニタ)を逆にしたほうがいいのでは…
こいつらテーブルの下で何やってるか分かったもんじゃないね!(喜)

Android Platform - Integrated SDK Manager, Material Design Support いいね

AOT comes to Android and Mac (*´▽`*)ウラー  Android のAOT動いてるの見たことネー マジカー


B8099 What's new in Xamarin.Forms


https://channel9.msdn.com/Events/Build/2017/B8099
https://sec.ch9.ms/sessions/c1f9c808-82bc-480a-a930-b340097f6cc1/build/2017/B8099.pptx


水害で没した高校

















2017年5月13日土曜日

Wheel World Clock Android 版を公開しました

世界時計アプリ Wheel World Clock を Google Play で公開しました。Android 5.0 以降でお使い頂けます。無料です。

Wheel World Clock
https://play.google.com/store/apps/details?id=com.ddlg.wwcd


      


Google Play で手に入れよう

  • 世界時計です。文字盤は指でくるくると回すことができ、「ここの何時があそこの何時か」がすぐにわかります。
  • 表示するタイムゾーンは変更可能です。また、海外に移動してタイムゾーンが変更された場合、自動的にWheel World Clock にも新しいタイムゾーンが追加されます。
  • 夏時間に対応しています。



📱📱📱


元のWheel World Clock は、
リリースしたものです。


Microsoft からダウンロード


この世界時計アプリという題材、ある程度小規模であり、設定やデータの読み書き、アニメーション、グラフィックス等使用頻度の高い要素が適度に含まれているため、新しいプラットフォームで一度アプリを通して作ってみるのに丁度良く、今回は Xamarin.Android 学習用に作ってみたという所です。

小ネタアプリではありますが、この…「くるくる回せばここの何時があそこの何時かすぐわかる」形式は競合が少ないです(*1)。そのせいか、Windows用に出して2年、細く長く広告除去アイテムが売れ続けているという自分にとっては元の良いアプリでもあります。Android でも使ってもらえるとイーナー。


*1 スライドバーで変更できるタイプはいくつかあります。

Google Play and the Google Play logo are trademarks of Google Inc.


2017年5月6日土曜日

F10 recent updates / F10 最近の変更 すけすけ、広告除去

F10 image bbs browser, 最近の変更 サマリーです。
現時点での最新版は 5月5日リリースの ver 1.4.378 になります。

F10 image bbs browser

なお、F10 のVersion 1.1, 1.2, 1.3, ... は それぞれ Win10 のバージョンに対応しており、お使いのWin10 バージョンに合わせてダウンロード・インストールされます。

  • F10 v1.1.x - Win10 1507
  • F10 v1.2.x - Win10 1511 (November Update)
  • F10 v1.3.x - Win10 1607 (Anniversary Update)
  • F10 v1.4.x - Win10 1703 以降 (Creators Update)



背景の半透明化 / Enabling 'Acrylic' effect   (v1.4.378)


Windows 10 Creators Update の新機能の一つである半透明処理に一部対応しました。
…機能使用のガイドが出る前に勝手に対応しているので、今後変更が入るかもしれません。

一部注意点としては、

  • 動画の上にF10 を重ねて表示する場合、F10 側のウィンドウリサイズを行うと動作が少し固まるなど妙な動作をする事があります。この現象は Creators Update 以降にリリースされたビデオドライバで動作が改善する場合があります(私の使っているAMD A10 - R7 video がこれでした)。
  • OS側でアクセントカラーを変更する場合、F10 側もそれに合わせて色味を変更するのですが、その変更に数秒かかる場合があります。この間、F10 の操作が出来ません。
  • 今回は Windows 10 PC のみこの機能を有効にしています。



Dark themeでの表示例


Light theme での表示例


「広告の除去」の再有効化 / Re-enable the purchasing of 'Ad Removal' item  (v1.3.370 以降)



2017年2月、Store 側の手違いでF10 がStoreから取り下げられた事があったのですが、その時同時に 広告除去のアドオン アイテム も購入不可となっていたようです。

現在は問題は修正され、購入可能となっています。




2017年4月17日月曜日

Windows 10 Mobile について


基本的に、MSさんが自分で技術やプラットフォームの終了を宣言する事は少ないです。Silverlight も VB6 も一応まだ生きてはいます。HTML + JSもまだUWP App の一部ではあります。Lightswitch 、覚えておられるでしょうか。

では上に挙げたような技術に資源が投入され、活発に開発が続けられているかというと、もちろんそんな事は無いのは私もあなたも良く知っている所です。Silverlight はもうEdgeではサポートされていませんし、WinJS の改良も望めません。HTML+JS App、Build 2011の頃は今後 StoreAppのPrimary Language になるくらいの勢いがありましたが、Build 2016では遂に一つのセッションもありませんでした。

個人的な見解ですが、こういう場合、エンジニアは自分で見切りをつける必要があるように思われます。

Windows 10 Mobile も、残念ながらこのコースに入っているなというのが私の感想です。2015年一杯はまだ活動が続いていたように見えました(覚えておられるでしょうか?Lumia 950/XLが出たのは2015年10月、Win10M RTMとして更新が始まったのは12月です)。しかし、2016年以降の現状は…


  • 2016年2月 のLumia 650 が最後のHardware投入となりました。Lumia 750・850 はキャンセルされました。
  • 2016年2月 Xamarin社 をMicrosoft が買収しました。4月のBuild 2016でXamarin 開発環境の無償化が発表されました。
  • 2016年2月 Project Astoria ... Android App を Windows 10 Mobile 上で動かすFramework、の終了が発表されました。前年のBuild 2015で発表され、App Gap を埋める重要なKeyとなるはずでした。しかし、Closed Previewが始まった直後にMS側の反応が極端に減り、先行きが危ぶまれていた所でした。
  • 2016年4月 のBuild 2016 ではWin10M のセッションはほぼ有りませんでした。
  • 2016年以降、いくつかの開発系の新技術が紹介されましたがWin10M は未対応・後日対応となる場合がほとんどでした(Mobile Center 等)
  • 2016年以降、Office等のMS製アプリがiOS・Androidにリリースされましたが、Win10Mにはされていません。
  • Win10 は2016年夏のAU・2017年春のCU と2回大きな更新がありましたが、Win10Mについて目立った新規機能の追加はありませんでした(Coreの更新に伴う変更はありましたが)
  • 2016年7月 Edgeの機能拡張サポートからMobile が外れている事がわかりました。
  • 2016年9月 のIgnite では Continuum for Phone の機能拡張(Multi Window Support)が紹介されましたが、CU に載ることはありませんでした。
  • 2017年2月 のCreators Update Developers Day でWin10M についての言及はありませんでした。


新規投資・開発はほぼ止まっているように見えます。

例えば今後(Surface Phoneのような)新機種が出る、RS3 に向けて新機能が載る、という話は…もう無いのだろうなというのが以上を踏まえての私の感想です。
ただ最初に書いたように、即停止する事は無く、RS3 に向けた更新は続くのだろうとも思います(Build Numberからすると、Coreから外してBranch切ったようにも見えますが…)。Elite x3のような機種もある以上、せめてContinuum for Phone の拡張くらいはやってほしいなとは思いますが。People は…どうでしょうか。


🍙🍙🍙


MSさん側で止めていても、こちらがApp を作り続けるのは勝手ではあります。例えば、別に今Sliverlight で何か書いても咎められることは無いわけです。使ってくれる人の数を脇に置けば。
脇に置けない場合、作り続けるのが困難であるのもまた自明であろうと思われます。
…個人的には2016年半ばくらいまではまだ作る気あったのですが…上に挙げたような外的な状況、加えてWin10M 自体の機能、実装等、またリリース済みアプリの使用状況・ユーザー数も含めて考えると、なかなか難しいかな…というのが現在の所です。


(2017年6月…Astoria と Xamarin の件を追記しました。なんで忘れてたのか… 個人的にあーこれはもうダメかなと思ったのがこの時でした。)


2017年3月19日日曜日

自分のUWP App の広告を AdDuplex に出してみた話

UWP App で使える広告プロバイダ「AdDuplex」 をご存知でしょうか。
普通の広告プロバイダは
  • 「広告を出したい企業等から使用料を貰い、広告を表示する 表示したアプリはその一部を頂く」
形式ですが、こちらは
  • 「AdDuplex を使っているアプリ『の』広告をお互いのアプリに表示する」
というサービスです。基本無料ですが、お金を払って広告の表示枠を買うこともできます。

※ AdDuplex については以前このBlogでも記事にしていますのでご参照下さい。
AdDuplex とは何か
http://ddlgjp.blogspot.jp/2013/09/adduplex.html

今回、AdDuplex で100USD分の広告表示権を頂いたので、画像掲示板ブラウザ F10 の広告に使ってみた!という記事です。

※ 以前 Microsoft が運営していた技術学習支援サイト TechRewards で頂いたものです。
TechRewards で糊口を凌ぐ
http://ddlgjp.blogspot.jp/2016/01/techrewards.html


広告の作成


AdDuplex Dashboard でアカウントを作ります。アカウント作成にはお金はかかりません。

AdDuplex
https://www.adduplex.com/

AdDuplex 管理画面に入ったら、画面上部の「Buy Ads」から広告作成画面に移ります。
以下の項目を入力し、広告を作成します。

  • ストア上のURL
  • 広告画像 または文字列
  • 広告を表示する国と地域
  • 広告を表示するアプリカテゴリ

今回の広告では、以下のような自作のバナー画像を使っています。
文字列の場合、4種類の文字列が順に表示されます。また、言語別に設定することも可能です(画像の場合は言語に関わらず一種類のみ)。

F10 の広告バナー
768x128

広告表示に使うお金も設定する必要があります。
広告表示期間と、1日に使うお金を設定します。料金はクレジットカード払いか、今回使っているようなクーポンを使うことができます。


いざ広告表示…その結果


必要な項目を全て入力し作成を完了すると、広告の審査フェーズに入ります。おかしなものを表示していないかどうか確認しているようです。
2,3日経つと審査が終わり、広告の表示が始まります。

以下は、「1日10USD設定で三日間広告を出した」場合のAdDuplex 側の統計です。


AdDuplex 上の統計

ざっくり平均を出すと、
1日10USDで70,000Impression, 200Click
くらいでしょうか。
ただこの「Click」が曲者というか…意味が分からないです。詳しくは以下に。

次に、これを受けた Microsoft Dashboard 側の統計を見てみます。
今回のような広告キャンペーンを張った場合、DashboardではAnalysis→Channels & Conversions から、
  • 各広告から発生したストアのPV数
  • アプリのダウンロード数(「Conversions」)
を確認できます。

なお、以下Dashboard 側のデータは二日間分のみ表示されています(集計に時間がかかる)。





…アルェー AdDuplex 側の「Click」とはずいぶん違いますね。平均7PV / day 。
そして、ここからどれくらいアプリDLまで到達したかというと…






二日間で4件!と。つまり、結果的には10USDでDL数を2件買った計算になります。

2017年3月19日現在、10USD = 1127円です。1000円ちょいでDL2件…割に合わん!というのが正直な感想になります。赤字だよぅ…

勿論、この結果は「このアプリ(F10)」の広告での話なので、同じPVでもアプリや広告が魅力的ならばDLごんごん増える場合もあるでしょう。
あくまでも「このアプリの場合の」目安と受け取っていただければと思います。

それにしても…こういう広告、しかも広告を出す側となると全く素人なので、うまくいってるのか行ってないのか判断がつきかねます。



※広告データの開示ですが、実はMicrosoft Ad の場合は公開しちゃダメよという規則があるのであまり具体的な話はできません。
AdDuplex は、Terms of service に特に記述がないのでこのような記事にしています。
https://www.adduplex.com/terms-of-service
怒られたら勿論引っ込めます :)


2017年2月27日月曜日

F10 Recent updates / F10 最近の変更 - NSFW Switch, Pull to refresh

F10 image bbs browser, 最近の変更 サマリーです。
現時点での最新版は 2月27日リリースの ver 1.3.360 になります。
追記: 3月6日リリース ver 1.3.364 (ふたばもNSFWスイッチサポート)の記述を追加しました。

F10 image bbs browser


画像表示ウィンドウ・モバイル表示 でのボタン配置変更

(Ver 1.3.364)
フィードバックで要望のあった、画像表示ウィンドウ・モバイル表示でのボタン配置を変更しました。



新しい配置
保存ボタンが一番右に来ます。


画像表示ウィンドウのクローズに失敗していた件修正

(Ver 1.3.364)
1.3.360 で仕込んでしまったバグなのですが、画像表示ウィンドウを閉じる際、内部でリソースを開放していないままになる問題がありました。
  • 画像ウィンドウ側のスレ更新が効かない
  • 長時間放置しているとF10が反応しない
等の症状がありました。Ver 364で修正しました。




引っ張って更新 / Pull to refresh




(Ver1.3.360)
  • スレ画面 … スレ下端で上に引っ張るとスレ更新
  • カタログ画面 … カタログ上端で下に引っ張るとカタログ更新

です。

Pull To Refresh についてはこちらの実装を使っています。

PullToRefreshXaml
https://github.com/JustinXinLiu/PullToRefreshUWP_WindowsComposition


NSFW スイッチ

(Ver1.3.360, 364)
4chan・ふたば の板追加UIを以下のように変更しました。


NSFW オンの場合
ここでは例えば"Random"がNSFWに当たります

初期状態では、SFW…Suitable for work なタイプの板が選択可能です。
右上の「NSFW表示」トグルスイッチをオンにすると、確認画面の後でNSFW...Not suitable for work  なタイプの板も含めて全て選択可能になります。

* SFW / NSFW - (Not) Suitable for Work, 仕事中に見ても大丈夫・大丈夫じゃない板
4chan では各板にSFW/NSFWのフラグが設定されており、それを参照しています。
ふたばについては、独断で決めています。

    これまでは板名を手動入力(SFWは入力補完あり、NSFWは補完無し)だったものです。

    前身のfuta8 の頃は、4chanは既定の板を登録していると(Food & Cooking 等比較的大人しい所でも)審査に通らなかったのですが、最近は同種のブラウザアプリでこのような既定で登録済みスタイルでストアに載っている物が増えてきていたため、後追いした形です。理由は想像しか出来ないのですが、IARC の導入でレーティングが明確になったからかもしれません。

    なお、ふたばの板追加については変更ありません。これまで通り、
    • 既定はねこと甘味のみ表示
    • それ以外は板名を手入力(補完あり)
    • 全板表示したい場合は"All"と入れる
    です。