横濱地図

/ Windows 8

image

しばらく間が空いてしまいましたが、今年初のエントリもまた新作アプリの紹介。
横濱地図」というタイトルで、横浜市の公的施設などの情報を地図上に表示するWindowsストアアプリです。
現在開催中の「オープンデータ・アプリコンテスト」に応募する目的で作成しました。
昨年の「流行語アプリ選手権」(残念ながら落選 orz)のユルい感じとは異なり、総務省主催ということでお堅い印象のコンテスト。
文字通り「オープンデータを利用したアプリのコンテスト」なのですが、対象のアプリ種別がWeb、iOS、Android、Windowsストアアプリ、と幅広いのが特徴です。

オープンデータ自体、今回初めて触ったニワカだったので、アプリそのものよりもデータのハンドリングのほうに難儀しました。
今回コンテスト用に提供されたのはRDF形式というXML/JSONデータだったのですが、これを扱うためのSPARQLという言語がなかなかの曲者で、名前からしてSQLと似ていて実際に構文も似ていてどことなく馴染みやすさはあるものの、なにせ人様がデザインした分散データを使ってクエリを書く必要があるうえに仕様書にあたるものが項目一覧と簡易ER図のようなグラフしか提供されていないので、ニワカ者には敷居高し。
見よう見まねでデータを取り出してみるも、必ずしもデータがきれいに揃っているわけでもなく、ところどころ歯抜けていたり、同じプロパティなのに値違いのものが混ざっていたり、あるいは重複レコードとして返ってきたり、とてもそのままでは使いものにならない状態。
もちろんクエリの書き方で回避できる部分もあるのでしょうが、コンテスト期間が妙に短め(実質1ヶ月程度)ということもあり、SPARQLのお勉強はほどほどに、とりあえずアプリを完成形に持っていくことを優先した次第。

いまのところデータの提供は期間限定のようで来月下旬にはクローズするらしいので、データ提供が止まるようならばアプリの提供も終了せざるをえませんが、実際問題、今回使用したサーバはAzureを使っていましたし、まともに課金されてたら馬鹿にならない請求がきてもおかしくないので、納税者としては納得の措置ではあります。
オープンデータの普及に向けてデータの質を高めたりボリュームを増やしていくことはもちろん重要ですが、データ管理や転送など運用に伴うコストとのバランスをとるのはすごく難しそうです。
そもそもデータの価値をどのようにして計るのか、という話もあるでしょうし、データを活かすも殺すもソフトウェア次第という側面もあると思うので、データのみで事前にそろばんを弾くのは不可能な気も…
コンテスト参加という少々不純なキッカケではありますが、今後は少し関心を持ってオープンデータの行く末を見ていきたいと思います。


SettingsFlyout

/ C#, Windows 8

Windowsストアアプリのオプション設定は通常「設定チャーム」の中にあります。
Windows 8の画面右端をスライド(マウスの場合は右下or右上にカーソル移動)するとニョキっと出てくるアレがチャームで、その中の「設定」と書かれたボタンをタップすると設定チャームが開いて、アクティブになっているアプリ固有の設定などを行うことができます。

アプリは「フライアウト」と呼ばれるポップアップに各種設定項目を詰め込むわけですが、このフライアウト、以前は自前でXAMLとコードを用意しなくてはならず面倒だったのですが、VS2013では「ポップアップの設定」なるテンプレートが付属してくるようになり、少しだけラクになりました。
XAMLはともかく、設定チャームとして登録するためのコードは相変わらず必要なので、リファレンスを参考に試しに触ってみたところ、以前の形とほぼ変わらず普通に使うことができるようです。

が、以前のものも新しいテンプレもひとつ問題が…。
それは、フライアウトからファイルピッカーなどを呼び出すと、ピッカーから戻ってきた時にフライアウトが閉じてしまう、というもの。
拙作「こよみプリント」や「Simple Rec」には設定チャーム内に画像ファイルを選択するためのボタンが配置してあり、押すとファイルピッカーが開くのですが、こういった作りの場合、普通にやるとファイルピッカーが閉じた時点でチャームも閉じてしまいます。

というわけで、ちょっと力技ですが、この問題を回避する方法をば。
簡単に言うと、フライアウトが閉じたときにTagプロパティを見て何か設定されていればフライアウトを再度開くだけ、です。
以下、Windows 8.1のSettingsFlyoutを使った場合のサンプルコードです。
グダグダ書かれてますが、各々ハイライト部分に相当する記述を追加してあげればOK。
ちなみに、SettingsPaneへのイベント登録はApp.xaml.csのOnWindowCreatedをオーバーライドするのがセオリーっぽいのでご注意あれ。


こよみプリント

/ Windows 8

image

プライベートでカレンダーを作りたいという話が持ち上がったので、はたしてどんなツールを使って作るか探してみたものの、必須要件である「六曜」の入ったものが意外に見つからず。
調べてみると六曜算出のロジック自体はネットに転がっていたので、体裁はともかくとして、ひとまずカレンダー本体を印刷できるものをストアアプリとして作ってみたのが、先日リリースした「こよみプリント」。

機能的には固定デザインのカレンダーを印刷できるだけなのですが、巷でよく見かけるタイプのシンプルなデザインなので、市販のカレンダー専用紙にでも印刷すればそれっぽい感じに仕上がるかと思われ。
ちょっとした装飾用にアクセント画像が入れられるようにしてありますが、かなり小さめのスケールになっているので、使いどころが難しいかもしれず。
横長のライン系イラストなどを入れると少し華やかになるのでお試しあれ。
現在提供されているリリース2ではカレンダー内に透かし風に画像を配置できる機能も追加。
透過度とストレッチの調整を行えるようにしてありますが、狙った位置に表示させるのが少々難しいので画像自体にうまく余白を入れるなどして位置調整してもらえれば、と思います。
また、縦向き指定時はカレンダーが下半分に印刷されるようにしてあり、上半分には画像を設定することができます。
腕に覚えがある方は別途他のアプリなどを使って空いたスペースに画像印刷していただくことをオススメしますが、「小難しいことはやりたくない」といった方はこの機能を使っていただければ、まあまあ程良い具合にスケーリングしてカレンダーと共に印刷してくれます。
出力用紙は基本的にはどのサイズでもOKで、横向きの場合は用紙全面、縦向きの場合は用紙の下半分のサイズにスケーリングされてカレンダーが印刷されます。
ただし、はがきサイズなどの小さい用紙の場合、印刷対象年月によっては文字がはみ出て崩れてしまう場合がありますので、印刷時には印刷プレビューで実際の印刷イメージを確認するようにしてください。
A4サイズ以上であれば、基本的には問題なく印刷できると思います。
また、今のところ余白のサイズを調節する機能がないので、プリンタによってはマージン不足で欠けてしまったりするかもしれませんが、まぁ、いまどきの家庭用プリンタであれば大丈夫だと思います。

今回はプライベート利用が主目的だったこともあり、久々の「無料アプリ」です。広告もありません。
その代わりというわけではありませんが、@ITの「2013流行語アプリ選手権&総選挙」コンテストに応募してみました。
今回のコンテストは選挙形式ということでWeb投票ができるようなので、我らが「こよみプリント」にもぜひ投票してやってくださいませ m(__)m


AdDuplex

/ Windows 8, Windows Phone

先日、AdDuplexという広告サービスの会社から招待メールを受信。
「WindowsPhoneアプリ、Windowsストアアプリの売上を増やしませんか」といった内容で一見怪しげなものの、露骨なスパムではなくて名指しで送られてきたうえに出稿用のクーポンコードまで記載されている意外にまともなメール。
とはいえ、現状広告を貼っているアプリはWin8用の国内向けアプリ「電力使用率」くらいしかないため放置を決め込んでいたのですが、数日経ってまたもや同じ人物(セールスリーダーさん)からメールが。
「メール届いてますかー?、返事お待ちしております」みたいな催促が来てしまったので半ば仕方なく登録してみることに。
なにやら、いま登録するとSurface2やLumia1520が当たるキャンペーンを張っていたりもするので、どうやらユーザ獲得に必死になっている雰囲気。

アカウント自体の登録はごく簡単なものですが、広告を掲載するためのアプリへの仕込みは当然必要。
といっても、専用の広告コントロールをNuGet経由で取得してプロジェクトに組み込み、あとはXAMLに貼り付けて表示制御するだけなので、それほど難しいものではありません。
「電力使用率」はMicrosoft Advertisingの広告を貼っているのですが、いかんせん広告表示率が低いので、「広告無し」となった場合の代替表示にAdDuplexの広告を表示する形に変更してみました。
固定位置に広告コントロールをベタ貼りしているだけなので、表示切り替えも簡単…のはず。
単純にMS Adから「NoAdAvailable」のエラーコードが返ってきたらAdDuplex側を表示するようにしただけなのですが、テストしていてもMS側のAdがなかなか表示してくれないので、はたしてちゃんと実装されているか不安だったりw

また、このAdDuplexというサービスは広告表示エリアでアプリを相互に宣伝する機能を持っているらしく、自アプリの広告を登録する必要があります。
もちろん広告素材として画像を使うこともできるのですが、サイズ種別が多いため各サイズをマトモに作り込んで用意するのはかなり大変。
そんな理由からか、テキストを4行分用意するとテキストベースのシンプルな広告を自動的に作ってくれます。
ただひとつ、素朴な疑問。このサービス、アプリではなく普通の広告は出るのかな…?

ちなみに、メールに付いてきたクーポンコードは20,000imps、60ドル分のクレジットだったわけですが、今のところ表立って宣伝するようなアプリもなく、広告素材を用意する気力もないので、当面寝かせておくしかない状態。
もったいないので、何かアプリを作れ、という天の声なのかもしれませんw

[追記]
どうやら少し勘違いしていたようで、このAdDuplexというサービスはそれ単体で直接的な収益が得られるものではなく、アプリの露出を増やすことによって間接的に収益アップに繋げることを目的としているようです。
そういうことなので、アプリ以外の通常の広告が表示されることはありません。
当然クリックしたからといってどこかにお金が入るものでもないので、あくまでアプリ開発者の互助会みたいなものですね。


Windows 8.1 RTM

/ Windows 8


当初の話から一転、TechNet/MSDNユーザ向けに先行提供されたWindows 8.1 RTMをインストールしてみました。
ターゲットはWin8アプリのテストマシンとして利用しているDell Latitude 10
デジタイザペンも使えるAtomなWindows 8タブレットです。

インストール自体はDLしてきたISOファイルをマウントしてセットアップを実行するだけ。
途中プロダクトキーを要求されるのですが、正規のWindows 8をアップグレードするために新たにプロダクトキーが必要になるのはちょっと解せない感じ。
一般向けの提供はストア経由とかいう話もあったと思うのでこの辺りどうなるのか謎。

無事インストールできたので、ざっと確認してみたところ、なぜかスリープができない。
タブレットの電源ボタンを押しても反応なし、シャットダウンメニューにもスリープの項目が出てこない状況。
色々と設定をいじってみたものの変わりないので仕方なく回復メニューからリフレッシュしてみることに。
設定は根こそぎ初期化されてしまいましたが、無事に再セットアップが完了。
スリープもできるようになったのですが、DELLサイトからDLしたネットワークドライバ(Dell WLAN/Bluetooth Driver 2013/06/11版)を入れたらば、またもやスリープ不可状態に…。
DELLのドライバを入れなくてもWi-Fi/Bluetooth接続はできるので、今のところLatitude 10に関してはWin8.1付属のドライバのまま使うのが良さげです。
また、その他のドライバ類が足りないせいか、電源の入ったドックに挿すとスリープ周りの挙動が怪しくなってしまうという問題も出ていますが、今のところ致命的ではないのでしばらく様子見です。

そんなこんなで無事インストールされたWin8.1ですが、Win8のブラッシュアップという意味では良い感じです。
スタート画面の操作性も良くなったし、タイルサイズの選択肢が広がったのも嬉しい変更。
メトロ側のコンパネ項目がやたら増えていて若干ややこしい印象はありますが、デスクトップなコンパネを使うシーンが減るのはタブレットユーザのことを考えれば必然なのでしょう。
なによりもアプリ開発者として嬉しいのはストアの表示内容が改善されたこと。
現行のストアはあまりにもひどくて、同じ作者のアプリ一覧が簡単には見られず、関連アプリのような表示もないので、一度ランキングから外れるともはや完全に相手にされなくなる世界だったのですが、これが少しはマシな形になります。
Web上のストアは少し前から表示形式が変わったので、どのように変わるかはこちらでイメージが掴めると思います。

Windows 8.1の一般提供は10/18ということで1ヶ月ほど先ですが、バルマー社長の退任話やNokia買収など、今後の展開に影響を与えそうなトピックも出ていて目が離せません。