2017年11月18日土曜日

Microsoft Docs を寄ってたかって直す

UWP App を開発していると、UWP やWinRT API のドキュメントをMicrosoft のWebから検索し調べるのは必須の作業になります。そのドキュメントが腐っていてつい舌打ちしてしまう事は無いでしょうか?チッ……僕は良くあります。

しかし今では、名も知らぬ誰かを呪う前に有効な選択肢があります。GitHub でPull Requestを送り、自分でドキュメントを修正する事が可能になってきています。
最近この修正を行う機会があり、案外ラクにできたので…その手順を簡単に説明する事で、Microsoft Docs を直す人が増えるとイイナーという趣旨の記事です。


はじめに


Microsoft Docs へのContribution についてのドキュメントは
https://docs.microsoft.com/ja-jp/contribute/
に完備されています。判らない事は全部こちらに載っているはずです。ただ完全過ぎて全部読むのも大変なので、適度に端折っているのが今回の記事になります。


  • 最初に、GitHub のアカウントが必要です。
  • やり取りは英語になります。


※この記事、以降GitHub に慣れている人には今更な話が多いです。


Microsoft Docs の文書を表示する


この1年程で、これまでMSDN Documents として整備されていた文書の大部分は新サイト Microsoft Docs に移行しています。


Microsoft Docs トップページ


コンテンツ自体はMarkdown(のGitHub拡張)で記述されており、GitHubで管理されています。そして、一部の文書についてはユーザーがPull Request(以降PR、変更要求)を送ることが可能になっています。

そういった文書は、画面の右カラムに「Edit」ボタンがついています。文書によっては右カラムでは無く、真ん中のコンテンツエリアのセクション毎に「Edit」ボタンがついている物もあります。

このEdit ボタンをクリックすると、GitHub上の当該コンテンツのページに飛びます(ボタンの名前に反して、この時点では表示だけで編集は始まりません。気軽にポチっていいです)。このボタンが表示されていない場合、現在の所その文書にPRを送ることはできません。後で触れます。


Edit ボタンが右カラムに表示されている例
ちなみにウィンドウをもう少し狭くすると左上に移動します
Acrylic material


セクション毎にEdit ボタンが表示される例
Windows.ApplicationModel.Core.CoreApplication



GitHub 上での作業


ソースの表示


Microsoft Docs 上の文書に対応する、GitHub 上のソースが表示されます。


GitHub 上の Acrylic ソース


編集


編集を始めるには、右上の鉛筆アイコンをクリックします。
GitHubのMarkdown エディタが表示され、編集が可能になります。
画面上部に説明が出ているように、この編集作業は作業者(あなた)のリポジトリの中に作成されるブランチ(この画像の例ではMicrosoft/windows-uwp)に対して行われます。
プレビューで確認しつつポチポチ書きましょう。


Markdown エディタ
タブ切り替えでプレビューを表示できます



編集が終わったら画面の一番下までスクロールします。
Propose file change のフォームに変更のタイトルと説明を書きます。ボタンをクリックすると、Create Pull Request の画面に飛びます。

ファイル変更の提案
簡潔なタイトルと内容の説明を書きます



Pull Request の作成


先ほど行った編集前・後の比較が表示されます。諸々確認の上で覚悟が出来たらCreate Pull Request ボタンを押して作成です。
このタイミングで、

  • 自動的に自分のリポジトリ内にブランチが作成(フォーク)され、
  • そこで編集が反映され、
  • その差分がPull RequestとしてMicrosoft側に送信

と物事が一気に進みます。今迄は基本自分の中だけでの作業でしたが、ここでポチっとした以降は担当者に通知が飛び、他の人との共同作業になります。

なお、簡単な編集・修正では、基本的にはこのリポジトリ上での自動フォークを使ってほしいようです。普通にローカルにブランチ作って編集してSyncして…というのはまだあんまりのようです。


Pull Request作成画面



Pull Request の処理


以降は、処理が進む様子をPull Request のページで確認します。

基本的には、


  • 共通のレビュー担当者がPRの書式等をざっくり確認し、
  • 次にそのドキュメントの担当が中身を確認し、
  • OKならマージされて完了!

という流れです。大体数日から1週間~10日くらいで終わる感じです。また、マージされてから実際のMicrosoft Docs のWeb側に反映されるにはさらに数時間掛かります。


PRの処理フロー
これは以前に私が上げた、Acrylicのページのカラーブラシの名前間違ってるから直したよというPRです



編集できる文書・できない文書


上でも触れましたが、Edit ボタンが表示されていない文書にPR を送ることはできません。
2017年11月現在では、UWP App、WinRT APIについてはen-us 、英語ページはほぼ全てEdit ボタンがあり、PRを送ることができます。しかし日本語ページは全て未対応です。

これは文書のジャンルによって状況が違います。例えば .NET や Outlook では、日本語に対する修正も可能になっています。


Outlook では日本語直してキャンペーン中だそうです。
https://www.facebook.com/MVPAwardProgram.JP/posts/1476999755669677

日本語のちゃんとした説明もあります。人力翻訳には温かみがある…
https://github.com/OfficeDev/outlook-dev-docs.ja-jp/blob/live/CONTRIBUTING.md


なお、編集できる・できないについて特にまとまったディレクトリ等があるわけでは無く、その文書にEdit ボタンがあるかどうかで判断して下さい、という事のようです。





2017年11月14日火曜日

F10 updates for Win10 Fall Creators Update

F10 image bbs browser を更新しました。
現時点での最新版は 11月12日リリースの ver 1.5.400 / 1.4.400 になります。

F10 image bbs browser
https://www.microsoft.com/store/apps/9nblggh1ntrd

なお、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)
  • F10 v1.5.x - Win10 1709 (Fall Creators Update)

コマンドライン起動のサポート / Support Command-Line Activation


コマンドライン・又は「名前を指定して実行(Win+R)」からF10 を直接起動できます。


  • F10 <enter> - launch F10
  • F10 2chan/img - launch F10 and open img
  • F10 futaba/may - launch F10 and open may
  • F10 4chan/a - launch F10 and open /a/


To open the board by parameter, the board should be added as favorites at first.
パラメータで指定できるのは、お気に入りに登録している板です。
既にF10 が起動している場合はここで指定したカタログ表示に切り替わります。

なお、FCU でのコマンドライン起動サポートについては当ブログで記事にしています。

Fall CU - コマンドライン・Win+Rからの UWP App起動
https://ddlgjp.blogspot.jp/2017/11/fall-cu-uwp-app.html





起動の高速化 / Speed up startup time


以下の変更により、起動が少し早くなりました。ただv1.4 - Creators Update だと最後の効果が無いため、良く判らないかもしれません。





メールアドレスの表示 / Showing mail address at posts view


レスにメールアドレスが設定してあった場合、表示します。
何で今まで入れていなかったのか今となっては定かではないです。

Fluent Design のサポート


v1.5 はFCUのAPIを使った上品な実装です。
v1.4 は今まで通り、直接Visual Layerをいじる実装です。


Wheel World Clock updates for Win10 Fall Creators Update

世界時計アプリ Wheel World Clock を Windows 10 Fall Creators Update(以下FCU) に合わせて更新しました。
Wheel World Clock は以下のシステムでお使い頂けます。今回はWin10 FCU用のみの更新です。


  • Windows 8.1
  • Windows Phone 8.1
  • Windows 10 PC, Mobile, HoloLens, etc
  • Android 5.0 以上



Wheel World Clock for Windows
http://apps.microsoft.com/windows/app/wheel-world-clock/1e591002-4ffa-4d49-b8e7-4d82f1211d16

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


コマンドライン起動のサポート / Support Command-Line Activation


コマンドライン・又は「名前を指定して実行(Win+R)」で「WWC」<Enter>で起動します。


実はAcrylicも有効なのですが透明度が低いので
言われてもよくわからない



2017年11月5日日曜日

Fall CU - スプラッシュスクリーンをすっとばして起動速度を上げる

意識低めのFall Creators Update ガイド二つ目です。
FCUから、スプラッシュスクリーンの表示設定にAttirbute「optional」が追加になりました。

Windows Platform Uservoice の意見が採用された(貴重な)例でもあります。

Splash screen for UWP apps should be optional
https://wpdev.uservoice.com/forums/110705-universal-windows-platform/suggestions/9333255-splash-screen-for-uwp-apps-should-be-optional

使い方はとても簡単で、Package.appxmanifest のスプラッシュスクリーン定義でOptional="true"とするだけです。
参考のために、Package.appxmanifest の例を下に示します。24行目がそれです。

丁寧に言うと、

  1. AppのMinVersion を 16299(FCU)以降に設定する
  2. Package.appxmanifest のPackage Element にネームスペース xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5" を追加する
  3. エレメント uap:SplashScreen に 属性 Optional="true" を追加する

です。

Optional="true" の効果


注意したいのは、これは「スプラッシュスクリーンをOFFにする」機能では無いことです。スプラッシュスクリーンを「Optional に」するよ!という機能です。
どういうことかというと…
アプリケーションの初期化が終わった時点でスプラッシュスクリーンが即閉じる、という動作になります(なのでスプラッシュスクリーンは「オプショナルな」動作だという事なのでしょう)。
このため、optional="true"であっても…アプリの初期化自体がモタモタしていると結局スプラッシュスクリーンはたっぷり表示されてしまいます。

「初期化」とはどのフェーズを言うのか…経験的には、「このスプラッシュスクリーンの扱いに関しては」App.xaml.csのアプリケーションクラスを抜けてページ表示に行った所で終わり、という感じに見えます(仕様で出ているかもしれませんが調べきれていないです、すみません)。一旦ページ表示まで行くと、例えばPage の OnNavigatedTo で幾ら時間がかかったところで今回のスプラッシュスクリーン表示には影響しません。

実例を動画で示します。


このアプリはVisual Studio 2017 のUWP Blankテンプレートほぼそのままです。
左から

  1. UWP App 既定(optional=false)
  2. optional=true
  3. optional=true, ただしApp.xaml.cs のOnLaunchedでディレイ1秒追加

です。
1) 一番左は、おそらくWindows 標準の電卓と同じ動作に見えます。Blank テンプレートそのままで初期化に時間大してかかっていないので、この状態でもスプラッシュスクリーン表示は一瞬で終わります。
2) は今回のoptional=true の場合です。即App画面に行っているのが分かります。
3) はtrueだけどウェイト1秒入っている場合です。この場合スプラッシュスクリーンはきっちりその分表示され続けるため、optional=trueの意味が全く無いという悲しい結果になっています。


※ 動画は TechSmith Camtasia で作っています。Microsoft MVP 特典として使わせてもらっています。こういった説明、チュートリアル用のスクリーンキャプチャからの動画作成には超便利です。アリガトウ(*´▽`*)




Fall CU - コマンドライン・Win+R からのUWP App 起動

Windows 10 Fall Creators Update (以下FCU)から、UWP App 側に少し変更を入れることでコンソールからUWP App の起動が可能になりました。
Package.appxmanifest で定義するエイリアス名での起動、またパラメータ・カレントディレクトリのパスの取得ができます。




コンソールから起動と言われても…そんなに使わないんじゃん?僕らヤングはGUI世代じゃん?と思われるかもですが、実は「ファイル名を指定して実行」でも使う事が可能です。
Win+R、で名前入れればApp一発起動!というのは割と魅力と思うのですがどうでしょう?
あそこは履歴も残るので個人的にはスタートメニュー本体より使用頻度が高いです。


みんな大好きWin+R
ちなみにdevmgmt.mscはデバイスマネージャ、
appwiz.cplはアプリケーションの追加と削除



使い方

ここでは、 Visual Studio 2017 でUWP App をBlank テンプレートから作り始めた想定でコンソールからの起動を追加してみます。

1 プロジェクトのMinVersion を16299以上に設定する





 今回の機能はFall CU以降のみで使える機能です。MinVersionをFCU, 16299 に設定する必要があります。

2 Package.appxmanifest でアプリケーションのエイリアス名・エントリポイントを設定する



※今回の内容はVisual Studio のマニフェスト デザイナからは設定できません。ソリューション エクスプローラー上で Pacakge.appxmanifest を右クリック → 「コードを表示」 からXML を直で編集します。

Package.appxmanifest を全部貼りました。一部切り出されてもエレメントの関係が分かりづらいので。
まず、一番上のPacakge エレメントにネームスペースuap5 を追加します。 xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5" です。
次、下の方のApplication エレメント を探します。この子要素にExtensions を追加し、その中に今回のuap5:Extension Category="windows.appExecutionAlias" を追加します。26~37行です。

  • Executable は、このアプリの実行ファイル名…普通はプロジェクトのアセンブリ名です。
  • EntryPoint は、このアプリのアプリケーションクラス名です。テンプレそのままだと大体「アプリ名.app」ですね。
  • uap5:AppExecutionAlias Alias は エイリアス名です。ここで「App1.exe」とすると、Win+Rやコンソールでは「App1」で起動します。また、このエイリアス名はuap:AppExecutionAlias の中で複数指定できます。


3 App.xaml.cs にコマンドライン起動の受けを追加



ここまでで、「起動」はするようになります。ただ、スプラッシュスクリーンで止まってしまいます。
これは、まだコンソール起動時のハンドラを書いていないためです。



App.xaml.cs に、この OnActivated を追加します。
UWP App ではApp起動時 OnLaunched にまず飛んでくるのはご存知と思います。ただこれは「通常起動」…スタートメニューからポチっと起動した場合の話です。

そうでは無い各種起動はOnActivated で扱います。今回のCommandlineやCortanaのVoiceCommandのような別口…裏口?起動は全部こちらに書きます。

上のコードにあるように、

  • Arguments ... 起動時に渡されたパラメータ文字列
  • CurrentDirectoryPath ... 起動時のカレントディレクトリ(後述)
  • ExitCode ... 呼び側に渡す終了コード

等を使用・設定できます。
Arguments は、そのとおりパラメータなのですが…一つ注意として、おしりに必ずスペースが一つ入ります。"abc" と渡すと、Argumentsに入ってくるのは"abc "です。
ExitCode は呼び側に即返ります。以下のスクリーンキャプチャは、上のExitCodeのコメントを外した上で.cmd から起動し、ErrorLevelを表示している例です。

最後に、渡されたパラメータを表示するためにMain.Xaml と Main.xaml.cs をちょっと弄りましょう。


これで完成です(*´▽`*)!
コマンドラインやWin+Rから起動してみてください。
また、すでに起動している所にもう一度実行しても表示が更新されるはずです。OnActivated は起動・アクティベートどちらでも通り、どちらもOnNavigatedToを通すのでこうなっています。



古の%ErrorLevel%とかそういう世界



「カレントディレクトリ」?


少し気を付けたいのは、取得できる「カレントディレクトリ」のパス名です。
例えばコンソールでc:\hogehoge に居る場合にアプリを起動すると「c:\hogehoge」が返ります。
じゃあそのディレクトリ内のファイルをFindFirstで列挙して云々、とついやりたくなるのが人情ですが…
UWP App の場合、それは基本出来ません。

UWP App の場合、Appがアクセスできるのは
  • App固有のフォルダ
  • ユーザーがFolderPickerで指定したフォルダ
  • その他Manifestで指定された特定のフォルダ

のみである!という鉄の掟があります。App Container のサンドボックスですね。
このため、文字列でフォルダの名前を渡されてもあんまり使いどころがありません。
他のWin32 Appにパススルーで渡すとかその程度でしょうか。





2017年10月23日月曜日

F10 今後の Windows 10 Mobile への対応について

(2017年11月追記…後で気づいたのですが、16299向けのビルドはそもそも15xxxで止まっているWin10Mには入りませんでした。結果は変わりませんが、実は選択肢があるわけでも無かったという話でした。)

F10 v1.5.x (Fall Creators Update 向け) から、Windows 10 Mobile への展開を終了する事にしました。
今後は以下のようになります。


F10 のバージョン
Win10 のバージョン
展開対象の Win10 デバイスファミリ *1
更新する?
1.5 (11月頃リリース予定)
Fall Creators Update (Fall CU)or later
PC, Xbox
更新
1.4 *2
Creators Update (CU)
PC, Mobile, Xbox
更新
1.3
Anniversary Update (AU)
PC, Mobile, Xbox
更新停止
1.2
November Update
PC, Mobile
更新停止
1.1
(Win10 GM)
PC, Mobile
更新停止


*1) その他HoloLens, Surface Hub等でも動きますが省略
*2) 1.5がストアに載るまでは 1.4が Fall CUでも使われます


F10では、おおよそ「現行+ひとつ前」の二バージョンを維持する形で更新しています。これまでの経験上、Win10 の新しいバージョンが出た時点で「そのひとつ前」の使用率が9割を超えていることが判っているためです。例えば今回の場合、使用率はCUが既に9割を超えています。残りがFall CU、次がAUで数%です。

この二つの内、新しいほうのv1.5, Fall CU向けF10からWin10 Mobile への展開を外します。
理由は大きく分けて二つあります。


1. Win10 Mobile の Fall CU は、F10がアプリとして対応する意味があまり無い


CU の頃から顕著になっているのですが、Win10 Mobile に対しては OS Core の更新は行われるものの、機能・UI等ユーザーの目に触れる部分での新機能は展開されない・されても実質あまり意味が無いことが多くなっています*3。このため、アプリ側でも改めて「対応」する意味が薄くなっています。

「対応する意味が無い」とはどういう事なのか、F10 での例で説明します。今回のFall CU に対して F10 に入れる予定の変更は主に以下二つです。

  1. Fluent Design 対応
  2. App Model の更新 - Commandline Support, その他

Fluent Design 自体はWin10 Mobile でも使う事ができます。
しかし、Mobile がタッチ操作であるのに対し、Fluent Designの要素であるReveal Effect はマウス操作が前提として作られているため、Mobileでは使いようがありません。また、Acrylic Effect、半透明のアクリル板のような効果も、アプリの裏に背景画像の無いMobile では効果がありません(アプリ内で透かすことは出来るにしても)。
コマンドライン もMobileでは用がありません。

つまり、「 Fall CU向けF10」をWin10 Mobile で動かしたとしても、その機能・操作感は現行の「CU向けF10」とほぼそのまま変わらないという事になります。そして今後Win10 Mobile 自体に大きな更新が望めない以上、この傾向は変わらないでしょう。

これらの事から、Win10 Mobile に対しては既に存在する「CU向けF10」で充分であると考えています。

*3) Coreの部分では.NET Standard 2.0対応等大規模な更新がMobileでも行われています。ただF10では特に使う予定が無いです。


2. 自分でWin10 Mobile 機を使っていない事による弊害


そうは言っても、現在のコードベースでもリリースすればWin10 Mobileでおそらく動くことは動くはずです。UWP ですから。今迄通りWin10 Mobile 向けにリリースを続けるという選択肢もあります。

ただ個人的には既にWin10 Mobile 機の普段使いを止めているので…テストは以前に比べどうしても甘くなっています。動かないものをうっかりMobile向けにお出ししてしまう可能性は急激に上がっています。
現在の「動作実績のある」CU向けF10 を使っていただいた方が安全です。


2017年7月24日月曜日

WiFiSD8 の公開を終了しました / The distribution of WiFiSD8 was ended.

首記の通り、WiFi SDカードクライアントアプリ WiFiSD8 の公開を終了しました。

  • Windows 10 Creators Update で多数の不具合報告がある事
  • しかし既に問題再現・修正に必要な機器類(FlashAirカード等)を所持していない事

これらが終了の主たる理由になります。
これまでのご利用有難うございました。

We ended the distribution and development of the WiFi SD Card client app 'WiFiSD8'.
Here is a mainly reason of discontinuation:
  • There are some critical issues on WiFiSD8 with Windows 10 Creators updates.
  • We already have no devices to reproduce and fix the issues - FlashAir cards, etc.
Thank you for using WiFiSD8.

2017年7月20日木曜日

UWP App 開発で頼りになるコミュニティ・サービス一覧

UWP App 等、Microsoft のプラットフォーム上で開発する上で助かる・頼りになるのが各種オンライン フォーラム・コミュニティです。
ただ、Microsoft はご存知の通り太陽系で最大のソフト屋さんですので…こういうフォーラム・窓口もやたら多いですし、目的・使い方もまた色々です。

そこで、私が出入りしている所を中心に「役割別に」整理してみようというのがこの記事です。基本MSのものですが、一部MSとは関係の無い運営主体も含んでいます。

  • 質問…こういうコード書いたけど動かないです助けて、と的を絞った質問
  • 相談…こういう機能を実現するにはどうしたもんだろう、どんなライブラリがいいだろう的なふんわりした相談
  • 報告…こんな問題があります、これが動いていません、と責任者(MS)に伝える
  • 提案…こんな機能、APIが欲しいです、と伝える

質問
質問・相談
質問・相談
提案
報告
提案(一般)・報告(開発)


※なお、今回の記事は基本的にUWP App 開発 を行う上での対象である

  • UWP(WinRT) API
  • OS
  • Visual Studio

に主眼を置いています。その他の分野…Xamarin, Desktop App, Azure, Office, また一般向けサイト(Microsoft Answers) 等は考慮に入れていません。
また今回のカテゴリ分けは基本私が今迄見てきたベースで勝手にやっているので、運営者の意図とは異なる部分もあるかと思います。ご了承下さい。


StackOverflow

https://stackoverflow.com/questions/tagged/uwp

運営
StackOverflow
対象
よろず UWPの場合はタグ「UWP」が使われます
カテゴリ
質問
レポート形式
Markdown形式 コード貼り付け・画像添付可能 ファイル添付不可
通知
有り
言語
英語 日本語版のja.StackOverflow もあります(UWPの話題は少ないです)

  • Responseはここが一番早いかもしれないです。
  • MSの人が数名面倒見ているようでマメに回答しています。
  • ふわっとした相談、挨拶、自己紹介、その他質問と関係のないものは基本歓迎されません。他のフォーラムでも基本同じですが、SOの場合はHi, Hello, best regardsだの書くと自動的にその部分だけ削除されるという徹底ぶりです。
  • どんなライブラリがお勧め?とかも実はSOでは御法度なのでDownvote不可避です。
  • 聞きたいことを絞って、具体的なソースを貼って聞くのがコツです。
  • UWPの質問に、WPFやWinForm時代の知識で答えちゃう人がわりといるのが残念。


MSDN forum

英語
https://social.msdn.microsoft.com/Forums/windowsapps/en-US/home?forum=wpdevelop
日本語
https://social.msdn.microsoft.com/Forums/ja-JP/home?forum=winstoreapp

運営
Microsoft
対象
Microsoft 製品・サービス一般
カテゴリ
質問・相談
レポート形式
リッチテキスト コード貼り付け・画像添付可能 ファイル添付不可コードサンプルを上げたい場合はZipを自分のOneDriveに置いて公開設定にする人が多いようです
通知
有り 投稿時に「アラートを送信する」チェックボックスをオンにすると、投稿にコメントがつく・評価される等のタイミングでメールが来る
言語
英語・日本語別にフォーラムが設置されています


  • Moderatorがおり、ジャンル違いの質問については適切なForumに移動されます。
  • やりとりの過程でOSの不具合だねとなった場合は開発に回してくれる(こともある)又はFeedback Hubに送れと言われる(こともある)
  • MS側・ユーザー側回答者共に層は厚いです。
  • 放置気味のForumもあるので注意が必要です。返答0の質問が多数放置されている所は用心したほうがいいです。


Reddit - Windows Platform Development

https://www.reddit.com/r/WPDev/

運営
Reddit
対象
UWP App 開発の話題が中心
カテゴリ
質問・相談
レポート形式
Markdown形式  コード貼り付け可能 画像・ファイル添付不可
通知
有り
言語
英語のみ



  • 単に仕様やAPI に詳しい人というよりは、実際にStore にApp 出している人が多い気がします。例えばStackOverflow だと、UWP Appの質問にWinFormやWPF時代の知識で答えてしまっている人をそこそこ見かけるのですが、Reddit WPDevではまずありません。そういう意味で専門性はSOより高い印象があります。
  • 流量は比較的少なめ…週に数通程度ですが、Postがあると反応は早いです。
  • SOでは聞きづらいライブラリ話等も許容されるので、実は貴重な場所かもしれません。
  • 質問・相談以外にも、自分のBlogにこんな技術系Postを書いたよという通知記事もあります。面白い。



Windows Developer Feedback

https://wpdev.uservoice.com/

運営
Microsoft
対象
Edge, UWP, Dev Center, Windows Store
カテゴリ
提案
レポート形式
プレーンテキストのみ 画像貼り付け・コード添付等は無し 画像を貼りたい人は各自imgur等の画像アップロードサービスを使う場合が多いようです
通知
有り
言語
メインは英語 日本語はたまに見かける程度 ただやり取りは回っているようなので自動翻訳等使っているのかもしれません
その他
仕組み自体はUservoice社のサービスを使用




  • 開発者から製品・API等への機能追加等の提案・要望を出すのはこちら、とガイドされています。
  • 製品・サービスについてここで要望を聞き、選択・プライオリティ付け、プランニングの参考にするという位置づけのようです。ここで提案されたものが最終的に製品に反映されることもありますし、投票を多数集めても全く一顧だにされない事もまた多いです。
  • 参加者には投票権が与えられ、「自分もそう思う」という提案については賛成票を投じることができるUservoiceのシステムです。
  • Windows 以外にも、VisualStudio等他のMS製品でも同様のUservoiceを使ったフィードバックサイトが存在しています。



Developer Community

https://developercommunity.visualstudio.com/spaces/8/index.html

運営
Microsoft
対象
Visual Studio, Visual Studio for Mac, Team Foundation Server, Team Services 
カテゴリ
報告
レポート形式
リッチテキスト コード貼り付け・画像添付可能 ファイル添付可能 公開範囲を指定可能(レポートは全員、ファイルはMSのみ等)
投稿後の編集可能
通知
有り 既定の設定で、投稿した問題にコメントが付いた・トリアージされた等のタイミングでメールが来る
言語
メインは英語 日本語はたまに見かける程度 ただやり取りは回っているようなので自動翻訳等使っているのかもしれません
その他
トリアージ(問題の重要性の評価)・同じ問題のグルーピング等は管理側でマメに行われている



  • VSのインストールが途中で止まる、IDEが固まる、コンパイラのオプションおかしくねえか、ライブラリ変、Store向けbuildの度に毎回毎回ObjDirectoryを手動削除しないとエラーが出て死にたくなる、MobileにDeploy出来ない、Win10 IP何某で動きが変、その他諸々VS開発環境系の話は全てここです。
  • 逆に、OSやAPIのような「VSの外」の世界はお門違いになります。
  • 開発系でねっとりと濃い為、詳しいユーザーさんが回避策を教えてくれる事も多いです。
  • 最近のVisual Studio では必ずウィンドウ右上についている Feedback Buttonを押すと飛ばされるのがここです。
  • Triage等のTag付け、Duplicate処理等はMS側でかなり手間をかけて運用されているようで、システム・運用共にこの記事で紹介している中では一番良く出来ていると思います。…次に紹介するフィードバックHubがこのシステムだったらいいのになと思う事しばしばです。
  • 開発系の問題報告サービスとしては、長い間使われている「Microsoft Connect」というサービスもあります。性格はこちらと似ているのですが、特にどちらかに一本化という訳でもないようでConnect 側もまだ活発に問題がPostされています。(2018年2月追記:2018年を以ってConnect は正式に閉鎖されたようです。 アクセスすると以下のクッションページに飛ばされます。 Microsoft Connect Has Been Retired  )


Feedback Hub

Windows 10 アプリ 「Win+F」で起動します

運営
Microsoft
対象
Windows
カテゴリ
提案・報告(一般)、報告(開発)
レポート形式
プレーンテキストのみ 画像・フィードバックHubアプリが取得するデバッグ情報の添付は可能だが、閲覧できるのはMSの人のみ
投稿後の編集不可
通知
無し
言語
OSの設定言語
その他
Webブラウザでの閲覧は不可能 専用のフィードバックHub アプリでのみ投稿・閲覧可能  またWin10 Mobileでの問題はWin10 MobileのフィードバックHub アプリで報告する必要がある



(一般向けの「フィードバック」機能、アプリ開発者が自アプリ向けのフィードバックを受け付ける機能については本稿では省き、問題報告についてのみ述べます)

  • OSの機能に問題があるのでMSに伝えたい (ここバグってません?等)
  • Insider Previewを入れたらここが動かなくなったのでMSに伝えたい (IPビルド何某にあげたら今迄動いてたAPI の動作が変!等)

等がこちらになります。カテゴリの「開発者向けプラットフォーム」を選びます。


現状、OSの機能についての問題報告窓口はここだけであるようです。
窓口自体はMSDN Forum、VisualStudioCommunity、またMicrosoft Support 等ありますが、各所で「これはOSの問題だね」となったところで「じゃあFeedback Hubに入れてね」という扱いになる事が多いです(そういう共通運用がされているように見えます)。

使い方のコツ


問題報告はできるのですが、それを受けて問題が直ったかどうか教えてくれる…という事は開発者向けプラットフォーム カテゴリでは少ないです。基本意味のある返答は無いと思ったほうがいいようです。やりがいの無い場ではあります。
ただ、ここで報告しないことには何も始まらないのもまた事実です。
ここは堪えて問題を粛々と報告しましょう。

書き方ですが、


  • タイトルには問題を簡潔に1行で 個人的には、フィードバックハブのユーザーに伝わりやすいようにIPの場合はビルド番号を入れるようにしています。ただ、MS側にはOSのバージョン情報等はデータとして送信された物が見えるので、そこまで詳しく書かなくてもいいようです。
  • 再現手順を箇条書きで順に示す こつは、読む相手が「Windowsの事はすべて知っているが、あなたのアプリ・問題は全く知らない人」と仮定し、その人が「こう順に手を動かせば何が見え、そして最後にあなたの見ている問題が現れる」ように書くことです。ここが一番重要です。一般に、開発側で再現できない問題は直らないです。
  • どれが問題なのかを明確にする 「この返り値が問題」「この表示が問題」と明示します。
  • その問題があなたのアプリに及ぼす影響を明確にする 先ほど仮定したように、相手はあなたのアプリを全く知らないので、この問題があなたのアプリに与える影響が全く分かりません。説明が必要です。全く起動しない?アプリの価値にかかわる重要な機能が動作しない?それほどではない?回避策がある?無い?
  • 機械翻訳されるので、難しい言い回しは使わない あれを何したらどうなった、これが動かないのが問題、式の子供のような文章を心がけると翻訳の通りが良くなります。仮定、時制の変化、比喩、感想、その他諸々は翻訳の品質を下げます。

📱📱📱


一般に…社内開発等のバグ報告のプロセスですと、開発側が報告を読み、分からないところがあればテスト側…PA Group等に問い合わせる、意味を聞く等が可能です。

ですが、このFeedback Hubはそういう優しいプロセスがほぼ無いです。一発勝負のプレゼンみたいなものです。相手は他にも見るべきFeedback Itemを山ほど抱えています。簡潔に必要な事だけを並べ、あなたの問題が修正されるべき重要なものである事を納得してもらうために出来る事をする必要があるでしょう。
問題への投票数も重要な要素です。あなたの問題が一般的、他のアプリにも関わる問題でしたら、Twitter等で短縮URLを貼って共有するのも充分に意味があります。

逆に…Feedbackのコメント中でグチる、不愉快さを表明する、怒る、同じフィードバックを何度も提出するなどは…それをMSの担当者が見たところで…問題が取り上げられる助けになるとは考えにくいですよね。

ただ、こういった不毛なコメントはシステム・運用上のこなれていない部分があるが故の裏返しなのかもしれません。この記事でフィードバックHubだけ記述量が多いのも、それだけ使う側が気にしないといけない部分が多いという事でもあります。ここまで各種コミュニティサービスを並べてきましたが、このフィードバックHubはマイルドに言ってもシステム・運用共に問題が多いと感じます。US本社でのReddit AMA、日本支社でのInsiders Meeting 開催等、改善への取り組みは始まっているようなので今後に期待したいです。


今回紹介していない所


  • Teratail あまり見れていないです。
  • 2ch ウチのプロバイダから書き込みできないので見てないです。コメントできない掲示板ほど空しいものも無いので。
  • Microsoft Support   コミュニティ要素が一切無いので今回紹介していませんが、Dashboard でのアプリ公開にまつわるトラブル等、明らかにMS側の問題であり、対応してくれないとどうにもならないものも多いです。この場合はオンラインコミュニティで相談するよりはさっさとサポートに連絡して直してもらったほうが話が早いです。ダッシュボード 右上の「?」アイコンから手続きに進みます。
  • GitHub  最近はProject RomeWindows Template Studio のように、開発中のプロダクトもGitHub上で全公開で進められるものが増えています。この場合、GitHub のissue で問題や要望について直で送ることが可能で、話がとても早いです。






2017年7月18日火曜日

フィードバックHub Reddit AMA

Reddit のAMA .. Ask Me Anything「何でも聞いて?」企画について、MS担当氏がフィードバックHub への質問に答えるAMA が7月18日にありました。


I'm Devin from the Feedback Hub app! Ask me anything about the Feedback Hub! 
https://www.reddit.com/r/Windows10/comments/6nvsja/

Redditのフローティングスレッド形式で
質問と回答がばんばん続いていく形です
答える方も体力が要る(一人でやってる訳でも無いとは思いますが)

大変興味深い内容でしたので、(ものすごく雑に)まとめたのがこの記事です。

(実際の所、今後の改善予定についてAMA中に確約できるという物でもないので…当たり障りのないというか、そうですね頑張りますね今後検討しますね、位の解答が多くなってしまうのは仕方のない所だろうと思います。どちらかというと要望を吸い上げるのが目的という面もあるかもしれません。)

※ フィードバックHubについては、このBlogのこちらの記事でも詳しく触れています。

UWP App 開発で頼りになるコミュニティ・サービス一覧
https://ddlgjp.blogspot.jp/2017/07/community-serivices-for-uwp-dev.html



🍙🍙🍙


Q 他言語のフィードバックの内容をユーザー側でも見たい、特に英語のフィードバックを見たい(同じ質問が多い)
A 翻訳はされているのでエンジニア側は全言語のを読んでいる ただユーザー側が見たいという要望はわかっているので今後検討

Q 本当にMSはフィードバック見てるの?反応が全然無いんだけど どうなってんの?あ?(多い)
A 答えたいけどもFeedbackは量多いから全部に反応はしづらい ごめん DuplicateのCleanupもまだ完全ではない

Q なしてWebから見られないの Android、iOSのような携帯端末から見られないのが面倒(多い)
A 現状はWindows 優先 予定は未定

Q 検索フィルタを強化してほしい 解けた問題、AppVersion, 色々の条件でリスティングしたい(多い)
A そうだね

Q モバイルのフィードバックをPCからポストしたい モバイルでフィードバックの文字入力は面倒(複数)
A ポスト時にシステムの診断データを同時に送信するので、Mobile上での処理が必要になっている

Q 遅い!!!(複数)
A そうだね、がんばる

Q ロードマップ的なのがあればいいのに このフィードバックはバージョン何までに処理、みたいな (複数)
A そうだね

Q コレクションの管理が良くない 自分でコレクションから外すとかやりたい(複数)
A そうだね

Q いちいち「このビルドをお勧めする?」って聞いてくるのうざくね?
A 毎回の更新で聞かないようなロジックは入ってるんだけども Insiderの場合は更新の回数自体が多いから…

Q 恐竜サイズのNinjaCat一匹とNinjaCatサイズの恐竜百匹、襲われるならどっち?
A 恐竜サイズのNinjaCatとハグしたいですな

Q Feedback見てる時何飲んでるの?
A ドクペ


(僕の感想)
「遅い」はピンと来ない 速くは無いけど、使っててイラつく遅さは経験したことが無いですね。
その他は全くその通りと思います。


2017年6月30日金曜日

Microsoft MVP for Windows Development を受賞しました

Microsoft MVP for Windows Development を頂きました(*´▽`*)ウラー
2017年6月1日付でした。


頂けるガラスのトロフィー
その他認定証、シール等がもらえます




 Microsoft MVPって何? 何か良い事あるの?といった話は… Alan Mendelevich さんが最近書かれたBlog記事が大変良くまとまっているのでそちらをご参照頂くのが良いです。

Why would I want to be a Microsoft MVP and how do I become one? Part 1.
https://blog.ailon.org/why-would-i-want-to-be-a-microsoft-mvp-and-how-do-i-become-one-part-1-529d34123117

…とリンク貼るだけも何なので、その記事を真似て自分の場合どうだったかを書いてみようと思います。


1. Microsoft MVPとは



日本MSのMVP 紹介からそのまま引用しますと、
https://www.microsoft.com/ja-jp/communities/mvp/


「マイクロソフトの製品やテクノロジーに関する豊富な知識と経験を持ち、オンラインまたはオフラインのコミュニティや、メディアなどを通して、その優れた能力を幅広いユーザーと共有している個人を表彰するものです。」


受賞カテゴリはMSのサービス・製品に対応した以下10種類です。

Azure, Windows, Office, Visual Studio and Development Technologies, Data Platform, Cloud and Datacenter, Enterprise Mobility, Windows and Device for IT, Office Servers and Services, Business Solution

 …もう少し生っぽい話をしますと、自薦又は他薦で地域会社(ここでは日本マイクロソフト)に申請します。申請書類には、上の説明にあるような「コミュニティへの貢献活動」を書きます。活動は以下のカテゴリに分けられています。

オンライン活動・イベント等での講演・出版・イベントの運営・オンラインフォーラムのモデレート・ソーシャルメディアでの活動・ポッドキャスト・サンプルの公開…

 それぞれのカテゴリでの活動は、PV幾ら稼いだか・本なら何部・講演なら聴衆何人…など評価可能な数字込みで記載します。…別に全部やってないとダメという話ではないです。後でまた触れます。
ここは日本人の慎みを一旦忘れ、ポジティブなアメリカじんに成り切って、嘘の無い範囲で自分をアピールします。雰囲気的には…外資の会社に出す職務経歴書のノリに近いです。
これら申請を上に挙げたサービス・製品の(US本社の)プロダクトグループが審査し、Youいいね!となったら合格、という流れであるようです。正確なところはわからない部分も多いですが。

 このように、MCSA, MCSEMCP のような「試験」を伴う「資格」とは根本的に別のものです。受験料のようなものもありません。

 審査は2017年2月より「毎月審査」に変更になっています。私は以前、年4回の頃には書類出そうと思っていてもまだ大分先だな…でもまぁ騒ぐほどでもないか…と毎回出しそびれていました。
なお今回、私は応募書類を2017年3月に提出し、審査の結果は5月1日に連絡されますという話だったのですが、期日を過ぎても受賞・落選どちらの連絡も無く、アルェー…これが今話題のサイレント…と忘れかけていた所6月1日に受賞Mailが届き大変驚いたという経緯がありました。こういうこともあるようです。



2. 得られる便益


即物的なもの


 まず分かりやすい所では、Visual Studio Enterprise Subscription 相当のものが一年間使えます。Visual Studio, Office 365, その他MS製品、Azure 月15,000円相当の使用権など。普通に買うと3,000USD/Yearです。
加えて、Partner企業の開発製品等が使えるOfferもあります。

大きな声で言う事でも無い動機としては、以前別件で頂いたbizSpark の権利が今年で切れるため、後釜としてMSDN Subscription タダで使える手は何かないかしら…という下心がありました。


コミュニティサービス


 MVP Distribution List 、いわゆるMailing Listやその他コミュニティサービスが用意されています。 NDAなので内容はご紹介できないのですが…

私はUWP App を中心に活動していますが、日本・それ以外でも活発なコミュニティというのをあまり見たことが無く(フォーラムやSO等は別にして)、詳しい人の寄り合いみたいなものがあれば参加したいと思っていました。MVP DL は、そういう私にはかなり嬉しいサービスで満足度は高いです。結構な流量のMLを毎日読んだりたまに書いたりしています。
まだ参加できてはいないのですが日本でのイベント、またMSの本社シアトルでの Global Summit等もあるようです。後者はおぜぜ、お足的に厳しい部分もあるのですが…ウウ


3 どうやってなるのん


 受賞された方のお話をBlog 等で読むと、開発者イベントや勉強会等で活動していると地域のCoordinatorに応募してみないかと誘われた、知人のMVPに推薦された的な話が多いようです。

私の場合で言うと、特に地域会社の方々と御縁があるわけでもなく、イベントや勉強会にも殆ど出ていませんし講演経験もありません。このため、上の1で列挙した「活動」のカテゴリで見ると…講演・コミュニティ等の対人活動的な点数はおそらく極小、0だったろうと思われます。

このため稼げた(であろう)部分は専らオンライン方面で、

 Stack OverflowやMSDN Forum については、投稿数こそ多くは無いのですが、質問者の助けになりそうな部分を重めに…こってり書いてきたとは思っています。サンプルのUWP App をストアに載せたりソースをOneDriveやGithubに置いたりと。

Dev Center Insiderですが、Dashboard には言いたいことが色々あったためBuild2016でInsider Programがアナウンスされた時に即応募し、Feedback・ProblemReport・Suggestion等結構送っていました。

Blog については、F10 や WWC の開発中に新規技術を試し実装した記事…Windows Hello、UI.Composition、Xbox One への展開、Project Rome対応…が多かったため、そこをアピールしました。APIをDocument通りに入れてソース貼ってハイ動きましたね、というのも寂しいので、なるべく「実際にリリースしているAppで使ってみてわかった」話を中心に書いてきました。PVは大したこと無いのですが、ネタ的に扱う人が少ないので検索順は割と上に行きやすいのがポイントだったかもしれません。

この辺りを実績として搔き集めれば通るのでは?通るといいな…通った!という所です。



もしMVPになったら…?という大変頭の悪い動画
かなり昔のやつです

2017年6月14日水曜日

F10 recent updates - High contrast color support, PCL profile111

画像掲示板ブラウザ F10、以下二つのバージョンをリリースしました。Win10 Creators Update, 又は Anniversary Update 上で F10 をお使いの場合、自動的に更新されます。
なお、今回の更新は「段階的に」行うため、更新が行きわたるのに普段より時間が掛かる見込みです。

F10 image bbs browser
https://www.microsoft.com/store/apps/9nblggh1ntrd

  • F10 ver 1.4.386 - Windows 10 1703 (Creators Update)
  • F10 ver 1.3.386 - Windows 10 1607 (Anniversary Update)

(6月30日追記: 以下の変更を入れた 1.4.388 がストアに載りました。)

  • Narrator 対応…Narratorでレス内容を簡単に読み上げできるよう変更
  • スタートメニュー用タイルにアプリの文字列表示を追加 ハイコントラスト設定の場合、タイルの画像が見えなくなりアプリを識別できなくなるため


変更点


F10 1.3 / 1.4 共通: ハイコントラスト カラー対応


ハイ コントラスト表示



今回の更新で、OSの設定でハイコントラスト カラーを使用している場合、F10内の配色もそれに準拠したものに変更されます。
OSの設定は、設定→簡単操作→ハイ コントラスト で変更できます。

※これまでも適用自体は可能でしたが、一部の表示がハイ コントラストに適した配色になっていませんでした。


F10 1.4 のみ: コア機能の PCL Profile を 32 から 111 に変更


こちらの項目については、後日別の記事で詳しく書く予定です。


段階的ロールアウトについて


今回の更新には「段階的なパッケージのロールアウト」(Gradual package roll out) 機能を使用しています。

※お使いのユーザー様側から見ると普段の更新と同じで、特に作業等は必要ありません。

段階的なパッケージのロールアウト
https://docs.microsoft.com/ja-jp/windows/uwp/publish/gradual-package-rollout

以下のような流れで更新が行われます。


  1. ランダムに選択されたユーザー(今回は全ユーザーの20%)に対し、更新版が配布されます。
  2. こちらで動作データを確認します。
  3. 動作データに問題が無ければ、全ユーザーに対して更新を配布します。更新上の問題が見つかった場合、更新を中止します。


今回の変更の2番目…PCL profile の変更はテスト済みではあるのですが…アプリケーションの動作全てに関わる部分でもあるので、大事を取って「様子を見ながら」更新することにしました。


Dashboard 上の表示
このような感じでじわっと適用範囲を調整できます。





2017年5月20日土曜日

Build2017 Session視聴メモ その2

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

Build2017 Session視聴メモ その1
http://ddlgjp.blogspot.jp/2017/05/build-2017-session.html


P4086 Beyond App Containers: Gaining privileged access to hardware inside your Windows app using custom capabilities
P4102 UWP Apps file access improvements
B8012 Tip, tricks, and secrets: Building a great UWP app for PC
B8100 What's new and coming for Windows UI: XAML and composition
P4173 Tips and tricks for creating performant UI in UWP


P4086 Beyond App Containers: Gaining privileged access to hardware inside your Windows app using custom capabilities

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

Creators Update ではUWP で Device Apps が作りやすくなりました!という話

Hardware App を例にして考える


デバイス屋さんが自分のハードウェアとセットで売るアプリの話 HWの設定、初期化、ドライバ、色々…
大抵はWin32で作るもの
問題

Win32であるがゆえに…



  • Desktopでしか使えない(Win32だからね)
  • アプリ更新の仕組みが無い(自前でやるの結構大変)


じゃあUWPなら、というと、これはこれでApp Container の制限があり作りづらいところがあった このあたりをCUで変えたよ!という話

ここでUWP App のおさらい


UWP Appとは何でしたっけ?
Windows10 では複数のDeviceFamily …PC、Mobile、Hololens、等があるけども、それらの最小公倍数、どのファミリも共通に持つApplicationの基盤が「Universal Windows Platform」、UWP
この上で動くのがUWP App だからUWP Appの最大の特徴「Windows 10なら基本どこでも動く」が成立する

UWP 他の特徴…
Isolatedで、システムに影響を与えづらいApp ContainerのSandbox

今迄のDevice App…Windows 8時代のWSDA、Windows Store Device Appsを考える


幾つか問題があった

  • Desktopでしか動かない(UWP前だから当たり前だが)
  • 作るの面倒(たしかMSとお話して権限貰う必要があった)
  • デバイスのメタデータをMSの鯖にUploadする必要があった HardwareIDと紐づくから
  • NTサービスを触れなかった(ドライバは触れた 一応UWP・StoreAppにもIoctl触るAPIはあるので)



(感想 これ、Win8出たころにプリンタ屋さんとかのベンダー向けに色々説明あったんですけど 覚えてる? あんまり流行らなかった印象あります)

このように使いづらい部分があったので、Win10 CUで変えました!

Custom Capability のご紹介



  • uap4!!!
  • 今迄のSpecial・Restricted Capability の扱いと似ている
  • AppxManifestの中で宣言してサービス・ドライバ・ハードウェアへのアクセスを許す


実際どうやってるのん?



  • UWP AppからNTサービスへはRPC で繋げる (なので多分サービス側にもRPCの口を開ける必要アリ)(もちろん普通のUWPはRPCでNTサービスに繋げるとか無理で、このCustom Capability をManifestで宣言しているアプリのみが使える)
  • ドライバへはWindows.Devices.Custom を使う


(感想 極めて個人的な思い出になるんですが…15年くらい前にPC用のユーティリティソフトを作っていたころ、まさにこの構造を採用していました NTサービスに管理者権限の必要な機能を全部集めて、UserModeのWin32 ApplicationからRPCでそれらを呼ぶという あーあの構造やっぱ正しかったわ、と今になって安心しました)

具体的には…ドライバ


  • .INFでCapabilityのIDコミのプロパティエントリを作る ,又は
  • ドライバにプロパティアクセスの口を開ける


具体的には…NTサービス


  • RPCの口を開ける

誰でも使えるの?…NO!承認されたAppのみ



DevCenter経由でSCCDを請求

承認を得たAppはSCCDをPackageに含める
OSはSCCDをチェックしてOKなら動かす

Hardware access for Universal Windows Platform apps


P4102 UWP Apps file access improvements

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

(感想 これPre-recorded な短いセッションなんだけど、UWP App のFileAccessに関するSandbox知ってた人にとっては結構びっくりする話だと思います)

(右の眼鏡の人の声がヨーダみたい)

Next version of windows ではUWP App でもDesktop AppみたいにFileAccessが出来るようになるんだぜ という話

FindFirstFile, CreateFile2, PathIO...


Demo おお使えてるわ まじか

Enumerationするには…



  • FindFirstFile and FindNextFile .. ディレクトリのファイルを全舐めするとき、CreateFile2やPathIOを使ってファイルにアクセスするとき、DesktopAppのCodeをUWPに持ってくるとき にお勧め
  • StorageItem .. プロパティアクセス、サムネイルアクセス、共有コントラクト にお勧め


(感想 プロパティとサムネイルはWindows.Storage はかなり良く出来ているのでNative APIを使う理由は無い んが、それ以外…いわゆるFileAccess は上側のNative使った方がそりゃ早いよねという)

CreateFile2 / PathIO Demo

CreateFile2は…アプリのローカルストレージ(LocalFolder, tempFolderなど例のフォルダ)だけでなく、アクセス可能な全てのフォルダに対して使用可能(!!

FALやMRUなどでアクセス履歴管理するあたりは今迄と同じ

(感想 これは結構びっくりで 今迄は、アプリローカルストレージ以外は基本Broker Process 経由のAccessになるのでこういうNative APIは使えなかったんですが 今度から使えるよ!という話)
(感想 とは言いつつ…全く初めての話でも無くて 前にStackoverflowでMSの人がある程度AUでも出来るよ?と言っていて驚いたことがありました https://stackoverflow.com/questions/42799235/  )

Demo ファイルアクセスの書き方だいぶスッキリしそう


B8012 Tip, tricks, and secrets: Building a great UWP app for PC

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

Building great UWP app for PC

次にPCにAppを作るならUWP Appでしょう!というUWPをがんがん推すSession


  • MultiWindow
  • Enterprise Controls
  • D&D
  • Modern Deployment like as differential update,etc 


ひとくさりWin32 AppをDisるSpeaker

Deployment、Uninstall、Privileges, etc

UWPで今出来ない事…色々言われてきましたよね、ええ ここ面白いので全部書いておこう

「UWPはモバイルのためのもの」「UWPはデータのブラウズにはいいけど作るものではないよね」「MSだってUWP使ってないのになぜ俺が!?」「UWPは.NET に比べると普通サイズアプリのパフォーマンスが充分じゃないよ」「UWPでは現実世界のLOB Appでやりたいことが出来ないんだ」「UWP AppはWebAppに比べるとインストールと更新が難しいよね」「UWPを始めるのは難しいな・・」「LOB Appで必要なデータビューの部品が足りてないよ」「UWPで出来るのはおもちゃ…ゲーム、デモ、トイアプリくらいだね!」「UWPはタッチ操作には便利だけど僕の顧客が必要なのはキーボード・マウス操作なんだ」

(感想 良く集めた)

まず最初「MSだってUWP使ってないのになぜ俺が!?」


→ Win10 同梱のAppは大体UWP Appです Paint3D, OneNote, Adobe Xd, ..

今日はUWPで出来る事色々を紹介しよう



  • Jumplists
  • Multiple Windows Instances
  • Overlay views
  • Long running operations

Demo


毎度おなじみNorthwind DBを使ったデモ


  • ToolTip付きのHotkey ... このあたりはCUから入ってる
  • MultiWindow and Drag'n Drop, PinP .. PinPを動画でなく、入力用の常駐フォーム用に使ってる この使い方は面白い
  • Windows Form Appから UWP App へのDrag'nDrop (88888)
  • MS Wallet の呼び出し


このDemoのおねえちゃん(マダム)のアプリはMultiWindowの使い方上手だね

DataGridはTerelikの奴かな

使い方デモ


Hotkey

  • MultiWindow CoreApplication から直でWindow作ってるね これ前からあったっけか?
  • ApplicationViewSwitcher これも偉いあっさり使ってる F10で頑張ってやってた頃に比べるとえらいスッキリしている
  • Drag'nDrop
  • "SqlBridge" ... このデモで使ってるSqlClient AppService経由?これどうやってんだろう?よくわからない


「UWPを始めるのは難しい」

→ Windows Template Studio のご紹介 デモ


  • VSからTemplate Selectorでベースを選ぶとコード生成
  • VSのTaskListにこれからやることリストがもう入ってる
  • TerelikのDataGrid使えばそれっぽいAppがすぐできますよねーーーー


今迄の説明であったのは全部Creators Updateで出来るんですよ!

「UWPはまだ完全じゃない」


これからも改善していきます

「UWPはおもちゃだぜ」


UWP App コマンドラインサポートだってできる パラメータにファイルとオプションを渡すデモ


  • UWP App、インスタンス二つ実行してる!!えーーーーー びっくり 電卓はMultiViewだけど
  • !!!AppxManifestの中でAppExecutionAlias を作って中でuap5:ExecutionAlias Alias="tpsviewer.exe'    なーに楽しそうな事をしているのか・・・
  • uap5は色々楽しそうなの入ってるね…
  • uap5:Extension Category="windows.startupTask" これも楽しそう つまりUWP Appでスタートアップに設定しようという 必要なやつ
  • MultiInstance=True をApplication Element で設定してる これはFallCUから?CUから?

※ 追記 この辺りのAppxManifestの拡張は Fall CUから、Insiderで順次入るそうです (コメント欄で聞きました)


UWPを拡張する


デモ
今度はSqlClientを.NET Standard 2.0 直で使う キャーーーーー awesome!(拍手)
よかったね!セッション中にライブでUservoiceのStateを「Complete」に変更するおじさん

UWPは未来

UWPのアドバンテージ (DesktopAppに対して、という事だろう)

  • Best User Confidence
  • Trustworthy app deployment and management
  • Sufrace Hub & Windows 10 S
  • Expanded Store monetization models
  • Engaging, intuitive experiences
  • Fluent, Ink and Cortana
  • Project Rome
  • Windows Hello & Goodbye

今日からUWP App書こうぜ!
終わり

Q&A

PinPはMobileで使える? → Desktopだけ
demo前半のAppSerivceどうやってんの?→謎い CommandLineAppをFullTrustでキックしてるみたいだけど
MultiWindowはいいけど…MultiMonitorで表示するMonitor選べる?→Uservoiceへ

(感想 MSさんはUWPこれからどうすんのかな…と若干不安要素はあるんだけど やる気はありますよ!というアピールと受け取りました ただ個人的にはまだまだ直してほしいところはある いわゆる常駐アプリが作れないのはUWP App Modelの弱点ですし、他にも色々 改善していって欲しい)


B8100 What's new and coming for Windows UI: XAML and composition

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

XAML親分、Tim Heuer のSession

We love great experience


Fluent Design のデモムービー

(感想 ほかのFluent Designセッションでも思ったが…動画デモで提示されるリッチなExperienceと、Fall CU で実現できるWave1との落差がでかすぎてつらい なんでも一歩ずつとはいえ)

Craftsmanship & Polish, Personal,Confidence, Fluid  このあたりのキーワードはTimさんのPresentationには必ず出てくる そういう意味では一貫してる

Windows UIの3 Layer - Framework Layer, Visual Layer, DirectX このあたりは今迄のUI.Composition の話でお馴染みのやつ


CU, Fall CU and Beyond
Fluent demoで目を引くDepth UIはFallの先、という話
また、ModernUI in Win32とかも書いてありますね なんでしょう

今日のテーマ4つ




  1. Real-world UI
  2. Natural Motion
  3. UI Controls
  4. Scale: Up and Out


Real-world UI

Lighting (reveal)
Userの注意を惹き、ガイドとなる
「フォーカス」…四角い枠付け表示に代わるもの、という見方もできる 
コンシュマーだけでなく、Enterpriseでも役に立つ
Fall CU では大体のControlに入る

Lightingのデモ

(感想 App WindowがDeactivateすると半透明処理がOffになる・・これはCUのなんちゃってAcrylicと同じだ)

Materials and Effects

Acrylic
基本的にはアクリリックブラシをXamlでセットするだけ 超楽
アクリリック以外にもXamlCompositionBaseBrush を作ってもいいのよ?画像ベースとか
VisualLayer 詳細Session B8037 Explore the next generation of innovative UI in the Visual Layer

デモ Materials and Effects
アクリリックブラシのカスタマイズ

  • アプリケーション内の背景ベースと
  • デスクトップの背景ベース、

二種類のアクリルブラシを見せる BackgroundSourceがHostBackdropと、Backdropになってる FallbackColorは(多分)Deactivateで色のみ表示の時の色

ぬこかわいい

Shapes

SVG Support お前らがくれくれというので入れてやった!(888888)
ただしCUのはStatic
この先ではAnimatable Vector Graphics をサポートしますよ!!!(88888)(多分SVGで)
これが上のほうで言ってた「Micro-Animations
Adobe xDで作れるにょ ほかのツールもサポートしたい

Natural Motion


正しい反応のアニメーションでUserConfidenceを増そうぜという

Seamless transitions

Demo... Page遷移でキーとなるビジュアルが表示されたままアニメーションして遷移するうやつ 最近よくある
例としては…音楽アプリでジャケットを一覧表示→クリックすると、そのジャケット画像をアニメーションさせながら拡大してそのジャケットのCDの再生画面に移行、みたいなやつ

(感想 この「Connected Animation」、AUのころからVisual Layerのデモでは必ずあった奴)
(感想 でもこれ、MultiViewと食い合わせ悪いんだよね…どうしようF10)

Coreographed ui ... connected animationだけじゃないよ!

(停滞するデモ そんなに時間かけるところでは無いと思う)

このVisual Layerなアニメーション、全部OS側にAnimation処理をOffloadできるのが今までのXAMLのAnimationと全く違う所 一度セットすると以降App側のCPU Timeを使わない なので上手に使えばぬるぬるしたカッコいいUIになる

(感想 このあたり、もっと楽に…吊るしで動く仕組みが要る気がする Nice to have な機能にリソースを割く順番は低い)

Dynamic Motion
Pull to refresh, parallax, Conscious Headers, ... insider buildにもうすぐで入ります
Future: Integrating Physics engines ...
(感想 Havok神がUIに)

Semantic animations

UI Contorls

Fall CU で出てくるUI Contorls総ざらえ
  • ParallaxView
  • Pull to refresh - RefreshContainer / RefreshVisualizer (やっと・・ついに・・・・)
  • SwipeContainer (ListViewのItemを左右ににゅるっとSwipeするやつ)
  • TreeView
  • ContentDialog
  • ContextFlyout
  • AccessKey (あれ、ToolTipも描いてくれる?のかな???今迄はお前ら各自で描きなさいと言われていたが)
  • Rating
  • ColorPicker
  • Repeater (よくわからなかった)


Performance as great UX


Respect animations
Limit background UI
Get to content fast .. Extended splashscreen "Optional=true" 新属性
Power Conditions
Optimize UI Creation Code
遅いXAML書いてる奴は手を上げて? おいおい全員上げれや、俺はTelemetryで君らのXAMLのスピード分かってるんだが!!!(笑い)
x:Load でロードを遅らせる あのコントロールの後にこれをロード、的な
詳しくはSession P4173 Tips and tricks for creating performant UI in UWP

Modern UI in Win32 apps

今迄説明してきたようなModern UIをWin32・WPF Worldに持ち込みたい

デモ 丸出しのWin32 C++ であるところの7zipを弄る
Opensourceなので弄るのにちょうどよかった?
Aclyric Brushの上にWin32のDialogがAnimationで表示されている 笑える




詳しくはB8110 Modernize Windows Forms and WPF apps へ!

Mobile

Mobile App はもちろん.NET なXamarinを使うよね!(あっハイ)
XAML Standard 1.0 ちらっと紹介

Wrap-up


その他諸々あるのでInsiderになってFeedbackすれや!!!!




終わり

(感想 やはりというか 2015・2016年で多かったAdaptive UIへの言及は消えていた XAML UIの版図からMobileが実質無くなってしまった影響がここにも感じられる… 最後にわざわざMobile=Xamarinって言うくらいだしね まぁそれはそれとして まだまだUIを改善する気満々なのが良く分かって安心はできた SVG Animation なんて結構いい感じになりそうです ただ、Fluent Designについてはまだまだ海の物とも山の物とも・・・Wave2からが本番な気がします それよりも、Fall CU に向けてContorlの新規追加・改良が期待できる点、こっちは恩恵大きいはずです)



P4173 Tips and tricks for creating performant UI in UWP

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



  • x:Load 
  • Image Loading Optimization
  • LoadedImageSurface


x:Load


AUからのx:DeferLoadStrategy を置き換える奴 x:Load はこれのSuperset

https://docs.microsoft.com/en-us/windows/uwp/xaml-platform/x-deferloadstrategy-attribute
https://docs.microsoft.com/en-us/windows/uwp/xaml-platform/x-load-attribute

x:Load で Elementのロードタイミングを指定できる あのコントロールの次、みたいに 「あのコントロール」はBindingで設定できる

このため、画面一発出す時点で全部作る…のを避けられる 表示するときにロード、という作り方が可能になる

x:Loadとx:DeferLoadStragegy の一番の違いはUnload もできるところ Wao!!


Image Loading Optimizations


Image Practices refreshed


  • SVGの使用で各種サイズのImage Assetを減らせる (CUからSVGサポート)
  • BitmapをロードするときはDecode PixelWidth / Height をセットすれ(もう百万回言われてる奴だが)
  • ListViewBaseではx:Phase使えよな


この三つは今迄も口酸っぱく言ってきたところであるが!(ハイ)

デモ VisualLayerで使うImagesurfaceの話

Image LoadとSurfaceの生成がだいぶ楽になってる
今迄Visual LayerにBitmapをロードしてSurface作って…みたいのは結構コード量多かった  Suspendでのリソース管理も自前であった AU時代のVisual Layerはこのあたり全部手動だったんだよね・・・
それが!CUでは1行で済むんですよお客さん!!!
var _loadedImageSurface = LoadedImageSurface.StartLoadFromUri(IMAGE_URI);
8888888

(感想 これは超便利)

Adaptive Lights and Effects


新しいEffects, Lights
使いすぎ注意 Less is more
Power Management API

デモ Connected / Disconnected

Brushをコードで作るときにOnConnected / OnDisconnected ハンドラを付け、その中でcompositionCapabilitiesをチェック エフェクトサポートしてる?エフェクトファースト?とか
これでダメならEffectBrushでなくて、SolidColorBrushを使うなどする
また、ここでPowerManager.EnergySaverStaus をチェックする事も可能 


Visual Layer: Relative Sizing and Offset


Visual の中でのサイジングの話 Parentに対してRelativeという事みたい
(感想 これ、いわゆるVisual LayerでXAML UI Contorlの描画を弄るみたいな使い方ではあまり意識しないんだけど Visual Layerの中で独自の物を描きたい場合に意味がある)


(感想 x:Load はXamlのPerformance Tuningにはかなり役に立ちそう)