ReactivePropertyをUWPの共有コントラクトで使う時の注意
共有コントラクト
UWPではWindows8, 8.1時代と同様の方法で共有コントラクトを実装することが可能です。
ただ、UWPでは共有コントラクトと普通にアプリを起動した時の画面のUIスレッドが異なるにも関わらず、 同時に起動しても一つのインスタンスしか参照しないため、 メインのアプリを起動した状態で共有コントラクトを開きReactivePropertyで通知を行おうとすると、 メインの画面側のUIスレッドで通知を行なってしまうため例外が発生します。 (おそらくWin8.1等でも)
幸いReactivePropertyでは通知するスレッドを明示的に指定できるので、以下の様なコードを書けば問題なく使えるようになります。
var uiThreadScheduler = new SynchronizationContextScheduler(SynchronizationContext.Current); var prop = new ReactiveProperty<string>(uiThreadScheduler); var prop2 = this.Model.Properties.ToReadOnlyReactiveCollection(x => new PropModel(x), uiThreadScheduler);
UWP向けにPixivビューアを作った話
忙しさが有り余って気付いたらTwitterクライアント(Flantter)ではなくPixivビューアを作っていたというお話。
Pixivビューア 「Pixitle」
主な機能として以下が備わっています。
- みんなの新着画像の確認
- ランキングの確認
- 自分がブックマークした画像の確認
- 自分がフォローしている人のフィードの確認
- 検索機能
使用するためにPixivのユーザー名とパスワードが必要です。
ダウンロードはこちらよりどうぞ
作った理由など
ちゃんとしたPixivビューアがUWP向けになかったというのと、 個人的に画像漁るのにブラウザ使うのがめんどかったとか、理由は様々です。 (本当はダウンローダを作りたかったのだが、UWPには向かないというのと、流石に怒られそうなのでやめておいた)
その他
R-18画像は見れないの?
ごにょごにょすることで見れます。 具体的には設定画面のテキストボックスにそれっぽい文字列をカンマ区切りで入れることで可能です。
UWPなのでデフォルトで表示したり、表示できる設定を付けてたりすれば、認定時にエロリジェクトされます。
怒られないの?
すいません許してください!何でもしますから!
技術的なお話
Pixitleの技術的なお話についてですが、どのようにして画像取得しているかとかは一応伏せておきます。 が、ググればそのへんはすぐ出てくるので(pythonのライブラリとか)そこら辺を参考にしています。
アプリの見た目はよくある感じに仕上げました。 SplitViewを全体に配置し、ContentとしてFrameを入れてメニューのボタンを押すたびにNavigateするような形です。 それ以外の部分に関しては現在作成中のFlantterより流用した部分が多いので(画像ビューアとか)そちらを参照すれば似たようなコードが見れます。
https://github.com/cucmberium/Flantter.MilkyWay
Pixitleのソースはストアから消えるときに公開します。
UWPで初めて広告をつけようと思ったのですが例外等多発したせいでまともに表示されない可能性があります。 ユーザー側には関係ないお話ですが。
感想
突貫作業で作成したアプリなので、まだ付けたい機能とかあります。(共有機能とか) ただ、ストアのポリシー的にも、Pixivさん側的にも怖いので、そこまでこだわって作ろうとは思ってないです。
このクライアントを作っていて、結構腐女子の方々の勢いがすごいなー と思いました。 ランキングも結構おそ松さん関係が多くて驚いています(初めて知っただけ)
その他
UWPでアプリをストアに公開するのは初めてでしたが、意外と以前と変わらない感じでした。 次はGW終わりまでにFlantterを公開したい・・・
あともう少し時間を作ってこのブログも定期的に更新出来たらいいなと思ってます。
BMS Playerを作ってみた(ほんとに再生するだけ)
学校が死ぬほど忙しかったり、メインで使ってるPCが壊れたりして全然時間が作れないので、 Flantter.MilkyWay(Ver.3)の開発は当分おあずけです。
なんでBMSPlayer作ってるんだっていうのは、あくまで気分転換です。
BMSって
某Beatmaniaに似たゲームです。 詳しくはぐぐって
BMSPlayerって
BMSというフォーマットの何かを再生するソフトです。 現在(2015.05.24)の主流は主にLR2でしょうか。
BMSの再生がどれだけ大変なのか気になったので試しに作ってみました。
ライブラリにBoost先生を使っています。Boost先生は非常に便利です。 ちなみに音を再生するだけのソフトです。 BPMの変化やストップモーションについていけません。(BPMの変化だけならちょっと再生部を書き換えるだけだと思う) あとWAVの読み込みしかできません。 サウンドの再生部分についてはほとんどがhttp://www.charatsoft.com/develop/otogema/index.htmにあるもののパクリです。
感想
2日で作ったゴミですが、なんとか再生できるのは再生できます。(XhroriaとかBloomingとか) 再生した後にエラー落ちします。直せたら治したいです。
感想ですが、BMSプレイヤーを作るのはこんなに難しかったんだなと思いました。 再生するだけでこれなので、実際にプレーできるくらいのソフトになると死ぬほど大変でしょう。 LR2などのプレイヤーは神だと思いました。
気が向いたら今後もいじるかもしれません。
超参考(ここだけ見て作った)
http://www.charatsoft.com/develop/otogema/index.htm http://hitkey.nekokan.dyndns.info/cmdsJP.htm
Twitterの検索APIについて
消えないSettingsFlyoutを考える
設定関連のUI要素を載せるものとして便利なSettingsFlyoutですが、 ツイッタークライアントなどでユーザーの情報を表示するようなコントロールとして考えると ウィンドウサイズの変更などで消えてしまい若干不便です。
適当にゴニョゴニョしたところ構造が案外簡単だったので作りました。 デフォルトのStyle.xamlから必要なところを引っ張ってきていじるだけです。
わざわざStyle.xamlから持ってこないでSettingsFlyoutを継承してもできると思います。 今回はWindows10のために今後いじりやすいようにコピペして使ってます。
コード自体はながったらしいので続きから
続きを読むWindowsストアアプリの認定作業で社員にエロ動画をリツイートされた話
Microsoftの社員にエロ動画をリツイートされました(おそらく)
なんで?
Windowsストアアプリというのは、アプリをストアに掲載してもらう際にマイクロソフト社員からアプリをチェックしてもらう必要があります。
ここの要件の一つに次のようなものがあります。
- 一般にわいせつまたは露骨な性描写であると感じるコンテンツをアプリに含めたり、アプリで表示してはならない
この要件を確認するためにエロ動画にアクセスできるかどうかを調べる必要はあったのかもしれません。 しかし、エロ動画までリツイートされると正直・・・
しかもその後のメールでアプリが認定されるというオチ。 (まあリジェクトされたら当然Twitter公式アプリもリジェクトされるべきですけど)
マイクロソフト社員は普段からこんななんでしょうかね? 正直頭に来ましたし、なんか、がっかりしてしまいました。
注
このアカウントは Flantterのサポートアカウント 兼 アプリ認定用提出アカウント であるため, アカウントのパスワードを知っているのはMicrosoftと私(@cucmberium)以外にいません。
今後はアプリ認定用にいらないサブ垢を作る予定です。
追記:
ユーザー名とパスワードの提供はサービスへのログインが必要になる場合必須です。
画像
- 問題の画像(該当リツイートはすでにこちらですでに削除)
- 何故かNHKとエロ動画ボットが社員にフォローされている