2014年4月5日土曜日

Universal App に備えたい(なるべくお金をかけずに)

(追記 2014/10/25 ... Nokia RDA が2014年8月に終了した件を追記しました)

build 2014 で発表されたuniversal Windows app。
Windows Phone 8.1でWinRT API が動くようになることから、Windows 8.1、 Windows Phone 8.1、 将来的にはXbox ONE でも同じストアアプリを展開することが可能になります。



ただ勿論、同じXAMLのUI 部品にしてもWin8とWPでは中身が違う部分が多いので、UIレイヤについては別コードとなる部分が多いです。別バイナリを1パッケージにまとめて出す感じ。

細かい文句はありつつ全体としては超Welcomeなので、是非やってみたい。のですが、一つ障壁がありまして、

開発に必要なWindows Phone 8.1 エミュレータを動かすには、割と最近のCPUが必要

仮想化を使っているため、Corei3,5,7あたり以降のCPUが必要です。
我が家のCore2Duoは基本×、ダメ、動作しません。酷い。

じゃあ開発マシンをリプレースすればいいじゃない、とマリーアントワネットみたいな事を言える環境には居ないので、どうしようか、というのが以下の話です。

1. WP8の実機を買う


これが実は結構安いです。Amazon.comだとLumia520 が$59で売ってます。開発マシンリプレースより安い。
ただし、この$59のLumia, GSM Onlyなので日本で安いSIM挿して使う、事は出来ないです。完全に開発検証専用ですね。

安!!
これについてはストアアプリ 2ch Sankaを作っているIkuさんに教えて頂きました。有難う。
日本でも使える…W-CDMAなんかが使えるモノについてはExpansysあたりで売ってますが、そこそこのお値段なので今回は除外。
それと、今売っているのは「まだ」Windows Phone 8です。Windows Phone 8.1へのUpdateはもう少し先になります。


2. Nokia RDA - Remote Device Access を使う


※Nokia RDA は2014年8月に終了しました。
端末のカメラを起動するとラボ内の様子が写ったりして、面白いサービスだったのですが。
以降はサービスが運用されていた頃の話です。

――――――――

Nokiaが開発者向けに行っているサービスです。
Nokia社内のラボに設置してある多数のNokia端末に、JavaのRemote Access Appを介して接続できる、という物です。無料。

Nokia RDA
http://developer.nokia.com/resources/remote-device-access

Nokia RDA で端末にリモート接続している様子

左のブラウザに沢山表示されているのが、ラボ内で接続Readyになっている端末。Lumia以外にもAndroidのNokia X等が数十台あります。
JavaのClientで接続し、端末に自分のアプリをインストールして動作を確認する、という感じです。

VS2012 for WP8でビルドしたアプリを、
リモートのLumiaにインストール・実行している様子

ただ、リモート故、パフォーマンスはそれほど良いものではありません。
これ「だけ」で開発を行うのは正直かなり厳しいと思います。
上に挙げた安Lumiaでごりごり開発しつつ、こちらで様々な端末での動作を確認する、という使い方になるでしょうか。

また、こちらもまだWP8.1機は入っていないようです。


2014年4月1日火曜日

従量制接続設定の勧め

この記事のまとめ
  • モバイルルータ+Win8 タブで運用している人は、接続を「従量制接続」に設定しておくと転送量を抑えられるのでお勧め
  • 転送量の多いアプリを作っている人は少し気を付けてあげるといいかも

Win8.1では、ネットワーク接続毎(無線LANならばSSID毎)に、この接続が「従量制」か「定額制」かを設定できます。

  • 「定額制」では、通信量を特に気にしない普通のネットワークの動作をします。
  • 「従量制」では、OS・アプリは「なるべく転送量を減らす」方向でその動作を変えます。

例を挙げると、以下の様な感じです。

定額制
従量制
Windows Update
ごっそり
「必要なものだけ」
デバイスドライバの自動ダウンロード
行う
行わない
ストアアプリの自動更新
行う
行わない
Futa8のカタログ画面
大きいサムネイルをダウンロード
小さいサムネイルをダウンロード

さて、この「従量制」「定額制」ですが、例えば・・・モバイルルータに接続すると、OSがそれを見分けて自動で従量制にしてくれる…所まで親切では無いです。

以下が既定の設定です。


既定値

有線LAN
(定額制固定)
変更不可
無線LAN (宅内無線LAN、モバイルルータや携帯への無線LAN接続等)
定額制接続
変更可
WWAN(PC内蔵の3G/LTE Modem)
従量制接続
変更可

つまり、何が言いたいのかというと…
3GLTE, WiMax なモバイルルータに既定の設定のまま無線LAN接続していると、Windows Update やストアアプリの更新を裏でごっそりやられて転送量的に泣きを見る可能性が高い
というお話です。


ストアアプリの更新をごっそりやられている様子
4月1日にどかんと来ましたね…


接続を従量制に変更するには

設定変更は簡単で、
設定チャーム→ネットワーク→接続 を開き、

設定チャーム→ネットワーク→接続


設定を行う接続をクリックし、「従量制課金接続として設定する」をオンにします。

接続→「従量制課金接続として設定する」
 また、「ネットワーク一覧に概算データ使用量を表示する」設定もオンにしておくのがお勧めです。
設定によってどれくらい転送量を減らせたかがなんとなく分かります。

アプリを従量制対応にする

※ 2014年4月 現在のストアアプリの規約では、従量制対応はNice to have で, 以前のようなmandatoryでは無くなっています。

ネットワークのコスト設定は適宜変わるので、変更のイベントハンドラを作っておき、それをアプリローカルに持っておいて適宜参照、的な感じになるかと思います。
以下は futa8 で使っているコードです。
MSさんのSDKのサンプルコードを改変して使っています。
取得できるconnectionCost を、UsageModel的には3タイプ…OptIn / Conservative / Normal に読みかえて動作を変える、というのが期待値のようです。

  //どこぞの初期化コードで
      // ネットワーク状態変更イベントハンドラの登録
                NetworkInformation.NetworkStatusChanged += OnNetworkStatusChange;
                // 初期状態を一発取得しておく
                OnNetworkStatusChange(null);

  .....

        void OnNetworkStatusChange(object sender)
        {
            try
            {
                string connectionProfileInfo = string.Empty;

                // 今使ってる接続プロファイルを取得
                ConnectionProfile InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile();

                if (null == InternetConnectionProfile)
                {
                    return;
                }

                // 接続コストを取得
                var connectionCost = InternetConnectionProfile.GetConnectionCost();

                if (null == connectionCost)
                {
                    return;
                }

                // connectionCost を 3種類…OptIn / Conservative / Normal に読みかえる
                // SDKにあった解釈のパクリ
                
                if (connectionCost.Roaming || connectionCost.OverDataLimit)
                {
                    // Roaming 又は 使用量超過 の場合
                    // OptIn - ユーザーの許可が必要
                    // futa8では未実装 (Conservativeと同じ動作)
                    futaDataView.futaDataSource.NetCost = DataModel.FutaDataSource.FutaNetworkCostType.OptIn;
                }
                else if (connectionCost.NetworkCostType == NetworkCostType.Fixed
                    || connectionCost.NetworkCostType == NetworkCostType.Variable)
                {
                    // 転送量に上限あり 又は 従量制接続 の場合
                    // Conservative - 保守的
                    // 転送量をなるべく抑える方向
                    // futa8ではカタログ画面でつかうサムネイルのダウンロードサイズを減らす
                    futaDataView.futaDataSource.NetCost = DataModel.FutaDataSource.FutaNetworkCostType.Conservative;
                }
                else
                {
                    // その他 == 無制限
                    // Normal
                    // ノーリミットなアクセス
                    futaDataView.futaDataSource.NetCost = DataModel.FutaDataSource.FutaNetworkCostType.Normal;
                }

            }
            catch (Exception e)
            {
                e.GetType();
                // 特にやる事無い
            }
        }






2014年3月31日月曜日

futa8 Release 24

futa8 Release 24 が Windows ストアからインストール出来るようになりました。
既にインストール済みの場合、順次自動的に更新されます。

http://apps.microsoft.com/windows/app/futa8/17a26f04-9d9d-4614-ae0f-f807f4938ee9
クリックでストアに移動

 インストールに成功すると、futa8 のバージョンは 1.1.0.136 になります( チャーム→ 設定→アクセス許可、で確認できます)。
Note - English description available at the bottom of this post.

変更点

  • 見た目の小さな変更 スレッド画面の枠線、タイルのグラデーション等
  • マウス操作での応答性向上
  • 設定ウィンドウで必要無い時にソフトウェア キーボードが出てしまう不具合の修正

「明るい色」テーマ
横方向に薄いグラデーションが入っています 微妙に
また全体に枠線を細くしています

「暗い色」テーマ
縦方向に薄いグラデーションが入っています 微妙に


Changes

  • Change - Some UI appearances are changed.
  • Change - Improve mouse-operation response at catalog view.

2014年3月27日木曜日

WiFiSD8 からの写真の共有について

この記事のまとめ:
  • WiFiSD8 での写真の共有方法
  • 写真の共有が出来るアプリ・出来ないアプリがあります

ストアアプリ版 FlashAir クライアント WiFiSD8 では、写真の共有に対応しています。
共有を行うには、WiFiSD8 で写真が表示されている状態で 画面右側のチャームにある「共有」ボタンを押します。
画面の右端から内側に向けてスワイプ or マウスカーソルを画面の右端に移動
で表示されるチャームメニュー、の「共有」をクリック
すると、「写真の共有に対応している」アプリの一覧が表示されます。アプリをクリックすることで、そのアプリに写真を送ることができます(この記事の後半で、この一覧に表示されていても、実際には写真の共有に対応していないアプリがあることをお話します)
「写真の共有に対応している」アプリ一覧
…ですが実際には対応してないのも多いのです(後述)
なお、以下のように「現在共有できるものはありません」と表示される場合があります。これはWiFiSD8 側の問題で、共有データのセットが間に合っていないためです。お手数ですが、もう一度チャーム→共有、と押していただくと上のアプリリストが表示されます。
「共有できるものはありません」そんなことはありません…
バグなのですが中々直せずにいます。申し訳無いです。
対応しているアプリを選択すると、そのアプリの共有画面が表示されます。以下の例はTwitter クライアント「Mevy」を選択した様子です。
Mevy で画像を共有し、画像付きTweetとしてTwitterに投稿している様子


さて、
上でも触れましたが、アプリ一覧に表示されていても、実際には写真の共有に対応していないアプリ…一覧から選択するとエラーになる、写真のファイル名のみ共有されるが写真そのものは共有されない、一見共有されているように見えるが実際には受信できていない…が幾つか存在します。
以下は、私が知っている範囲での対応・非対応リストです。

(2014年3月現在)

Twitter

対応アプリ

非対応アプリ

  • Twitter(Twitter社公式アプリ)

Facebook

非対応アプリ

  • Facebook(Facebook社公式アプリ)

その他

対応アプリ

  • メール(Win8.1標準アプリ)
  • Modern File Explorer
  • PuzzleTouch

非対応アプリ

  • OneNote


簡単な技術的背景


共有には幾つかのタイプがありますが、WiFiSD8では以下三種類のデータをOSを介して共有受け側アプリに送信します。
  • 写真のBitmap画像 (1024pxにリサイズ済み)
  • 写真のJPEGファイル(1024pxにリサイズ済み)
  • 写真の解説テキスト
共有受け側アプリは、上三つのデータに対応していればOSに「自分そのデータ扱えます!」と宣言し、その結果共有メニューにアプリが表示される、という仕組みです。

しかし、残念ながら…2014年3月現在、Bitmap画像・ファイルの共有受信が実際には動作しないアプリも幾つかあります。
こういった「非対応」アプリは、OSには「対応してます」と答えるので共有メニューには表示されるのですが、実際やってみると延々待機、エラーが出る等で動作しません。



2014年3月22日土曜日

futa8 Release 23

futa8 Release 23 が Windows ストアからインストール出来るようになりました。
既にインストール済みの場合、順次自動的に更新されます。

http://apps.microsoft.com/windows/app/futa8/17a26f04-9d9d-4614-ae0f-f807f4938ee9
クリックでストアに移動

 インストールに成功すると、futa8 のバージョンは 1.1.0.135 になります( チャーム→ 設定→アクセス許可、で確認できます)。
Note - English description available at the bottom of this post.


変更点

  • アプリバー上のボタンが重なって表示される場合がある不具合の修正
  • Application Insights, AdDuplex SDKの更新

Changes

  • Fix - Some appbar buttons are overlapped.
  • SDKs are updated: Microsoft Application Insights, AdDuplex

2014年3月18日火曜日

futa8 Release 22

futa8 Release 22 が Windows ストアからインストール出来るようになりました。


http://apps.microsoft.com/windows/app/futa8/17a26f04-9d9d-4614-ae0f-f807f4938ee9
クリックでストアに移動

 インストールに成功すると、futa8 のバージョンは 1.1.0.133 になります( チャーム→ 設定→アクセス許可、で確認できます)。
Note - English description available at the bottom of this post.

変更点

添付画像のコピー&ペースト対応を追加

画像レス・スレ立ての際、添付する画像をコピー&ペーストで貼り付けられるようになりました。

対応しているのは以下三種類です。

  • 画像ファイル - jpg, png, gif ファイル
  • ビットマップ - ペイントブラシやブラウザ等でコピーした画像
  • URL - jpg, png, gif ファイルの置いてあるURLテキスト (http://foobar.org/...)

URLについては、その画像をfuta8 がダウンロードして貼り付けます。
また、サイズが板の制限(例:ふたばmayなら2MB)を超えている場合、自動的にリサイズします。

レスするのに手持ちの画像が無いから画像検索で拾ってきたのを使いたい、時に、いちいちWebブラウザで画像保存して、futa8 からFilePicker でその画像探して…という手間が省けるので結構便利です。

また、ファイル・ビットマップも貼り付けられるので、

  • Desktopのエクスプローラーで検索した画像ファイルを貼り付け
  • ペイントブラシ・Fresh Paint等でざざっと描いた手書き画像を貼り付け

等にお使い頂けます。

OSのbing 画像検索で探した画像のリンクをコピー → futa8 に貼り付け → futa8がその画像をダウンロードして添付、している様子

4chan catalogPageで、スレ立て画面にreCaptcha UIが表示されなくなっていた不具合の修正


Changes

Support 'Copy&Paste' to attach image file


Following types are supported:


  • Files - jpg, png, gif are supported.
  • Bitmap
  • URL  - jpg, png and gif are supported. futa8 automatically download the image, then attach.


Fix - 4chan - reCaptcha UI is not shown at catalog page


2014年3月11日火曜日

WiFiSD8 Release 5

ストアアプリ版 FlashAir Client WiFiSD8 Release 5 を公開しました。Windows ストア からダウンロードできます。
既にインストール済みの場合、順次自動的に更新されます。
Note - English description available at the bottom of this post.
Click で ダウンロード

追記 2014/03/27: WiFiSD8 は 「共有」メニューから写真を他のアプリに送ることが出来ますが、2014年3月現在、公式のTwitter アプリ等、幾つかのアプリは写真を受信することが出来ません。共有の方法と、写真の共有に対応しているアプリの一覧を別記事にまとめました。
WiFiSD8 からの写真の共有について
http://ddlgjp.blogspot.jp/2014/03/wifisd8.html

変更点


自動ダウンロード機能の追加

この機能がONになっている場合、以下の動作をします。

WiFi 接続中にカメラで撮影を行った場合

追加された画像を自動的にダウンロードします。ダウンロードされた写真は、設定された保存先フォルダに日付毎に保存されます。

WiFi 非接続中にカメラで撮影を行った場合

追加された画像は、WiFiSD8 を起動・再接続した際に自動的にダウンロード リストに追加されます。

前者は、主に室内等固定環境で撮影する場合、撮ったらその時点で転送までしたい、という場合に使う事を想定しています。

後者は、基本撮ったものは全部転送したい…が、一々全部転送すると時間がかかる事も多い(一度に数百枚撮る人も多いですし)ため、Eye-Fi の様な黙って全部転送は避けたほうが便利と考えこのようなワンクッションを挟んだデザインになっています。

なお、既定ではこの機能はOFFになっています。機能を使用するには、設定チャーム→WiFiSD8 設定を開き、「写真を自動でダウンロードする」をONに設定してください。

自動ダウンロード設定
設定チャーム→WiFiSD8 設定

撮影画像の自動表示

WiFi 接続中 且つ 「当日の」全画面表示中 にカメラで撮影を行った場合、自動的にその画像にスクロール・DLして表示を行います。

「当日」と言うのは…
例えば今日が2月10日ならば、2月10日 グループの写真を全画面表示している間にカメラで撮影を行うと、その撮影画像に自動スクロールして表示するという意味です。
分かりにくいでしょうか…(言葉で伝えられている自信が少しありません)

自動ダウンロード同様、室内などで撮影を続ける場合、撮影すると、PC・タブレットに手を触れずに自動で画像が全画面表示されるため、撮影画像の確認等に便利にお使い頂けると思います。下の動画、2分00秒あたりからが自動表示のデモです。



また、上の「自動ダウンロード」機能と異なる点は、「当日の」「全画面表示中」のみ有効である点です。
この機能については特に設定項目はありません。

接続インジケータの追加

FlashAir カードからの応答が取れている場合、アプリ画面右上に「接続中」表示を行います。
応答が無い場合、「切断」表示になります。

画面右上の接続インジケータ


市場の追加

Windows ストア の対応する全市場でダウンロード・インストールが出来るよう変更しました。
…一応書き出すと、
 米国, 日本, インド, ドイツ, フランス, オーストラリア, オーストリア, ベルギー, ブラジル, カナダ, 中国, 香港, アイルランド, 韓国, ルクセンブルグ, メキシコ, ニュージーランド, ロシア, シンガポール, 南アフリカ, スペイン, スウェーデン, スイス, 台湾, 英国, アルジェリア, アルゼンチン, バーレーン, ブルガリア, チリ, コロンビア, コスタリカ, クロアチア, キプロス, チェコ共和国, デンマーク, エジプト, エストニア, フィンランド, ギリシャ, ハンガリー, インドネシア, イスラエル, イタリア, ヨルダン, カザフスタン, クウェート, ラトビア, レバノン, リビア, リトアニア, マレーシア, マルタ, モロッコ, オランダ, ノルウェー, オマーン, パキスタン, ペルー, フィリピン, ポーランド, ポルトガル, カタール, ルーマニア, サウジアラビア, セルビア, スロバキア, スロベニア, スリランカ, タイ, トリニダード・トバゴ, チュニジア, トルコ, ウクライナ, アラブ首長国連邦, ウルグアイ, ベネズエラ, ベトナム, イラク
です(UI上の表示言語は英語or日本語です)。


Changes

Automatic Download feature is added.


  • Download images automatically when the system is connected with camera via WiFi.
  • If it is added while not connected, and adds to the download list when connected. 

To use this feature, turn on it from Settings Panel.

Automatic Scrolling feature is added.

You can use this feature when "WiFi Connected" && "You've opened the 'Today's group and show the images by full screen".
When you take the picture by camera, WiFiSD8 will scroll automatically to show the picture.

hmm... It's hard to describe this feature ;(
 Please refer the demo movie above.
There are no settings item for this feature.

Connection indicator is added.


Available markets are increased!

ALL supported markets are available:
United States, Japan, India, Germany, France, Australia, Austria, Belgium, Brazil, Canada, China, Hong Kong SAR, Ireland, Korea, Luxembourg, Mexico, New Zealand, Russia, Singapore, South Africa, Spain, Sweden, Switzerland, Taiwan, United Kingdom, Algeria, Argentina, Bahrain, Bulgaria, Chile, Colombia, Costa Rica, Croatia, Cyprus, Czech Republic, Denmark, Egypt, Estonia, Finland, Greece, Hungary, Indonesia, Israel, Italy, Jordan, Kazakhstan, Kuwait, Latvia, Lebanon, Libya, Lithuania, Malaysia, Malta, Morocco, Netherlands, Norway, Oman, Pakistan, Peru, Philippines, Poland, Portugal, Qatar, Romania, Saudi Arabia, Serbia, Slovakia, Slovenia, Sri Lanka, Thailand, Trinidad and Tobago, Tunisia, Turkey, Ukraine, United Arab Emirates, Uruguay, Venezuela, Vietnam, Iraq.
Note - Available UI languages are: US-English and Japanese.