Neutral Scent このページをアンテナに追加 RSSフィード Twitter

2016-08-28

[][][]個人輸入したMicrosoft Band 2を修理の旅へ送り出した話

f:id:kaorun:20160803105101j:image:w240

Microsoft Band 2使ってますか? いいですよねコレ。日本語も使えるようになったし!
え、そんなの使っていない? まぁ、そうですよね。

…というわけで、日本でもたぶん二桁人数ぐらいしか使っている人がいないのではないかというマイナーデバイスを個人輸入して使っているわけですが、海外のショップから購入した商品が壊れてしまって、さてどうしよう? という話です。

まぁ、輸入製品の現地修理となれば、海外在住の知人に頼む、知人や自分の海外旅行のついでに修理に持ち込んでもらうなどの対応策も考えられますが、なかなかそういうわけにもいかず、たいていはきっぱりあきらめる場合がほとんどでしょう。

自分も無理を言えばお願いできる知人のあてがないではないのですが、これまでも常々自分で修理依頼をかけることはできないのか? と思っていたので、今回動作不能になったMicrosoft Band 2を修理に出してみました。
結果として、無事新品に交換してもらうことができたので、一連の流れをまとめてみました。

ただし、コピペで使えるテンプレを用意しているわけではありません。英作文は自分でがんばれ。

修理に至る経緯:

さて、時は一か月ほど前、7月にさかのぼります。
ある日、外出先で気が付いたらMSBand2の画面が真っ暗でした。
細かい詳細は省きますが、まーようするにリストバンド部分にある電源ラインが断線しているらしく、充電ケーブルをつないでも0%のまま、リストバンドを動かすと電源が入ったり切れたりする、という状態で明らかな故障でした。
f:id:kaorun:20160724213646j:image:w240

で、そもそもMSBand2自体、リストバンド部の強度に問題があり(それを言うとMSBand1もリストバンドがウィークポイントでした、ほんとにもう全く...)、米国でも店頭から姿を消している、というニュースは目にしていたので、あーこれか、というわけです。

幸い、発売されてから1年たっておらず、補償期間内です。ぐらばくさんの米国版Surface Bookの修理騒動も目にしていたので、これは自分で直接米国での修理依頼に挑戦してみるしかない、と思いました。

前提条件として、Microsoft Band 2は米国と一部諸国のみで販売されており、販売国以外での修理は受け付けていません。なので、今回の件でMSKKは最初から考慮の対象外。

また、米国のMSBand2のサポートサイトで修理受付ができるのですが、そもそも居住地選択で日本が選べないため、米国の公式窓口から修理依頼をかけるの難しそうだ、という状況でした。
米国のサポート窓口に電話して直接依頼をねじ込むこともできるかもしれませんが、あいにく英作文はなんとかできても英会話は苦手です。
自分の周りでも日本でMSBand2壊れたという話をちらりほらりと耳に入っており、某社内の人などは渡米してMicrosoft Storeの店舗に持ち込んだら交換してくれた、という話も目にしていました。

それから、過去に個人輸入で 違うモデル の腕時計が届いて送り返す(しかも2回続けて違うモノを送ってきた) 、という経験をしたことがあったので、腕時計を米国まで送り付けるのは通常の荷物より追加の書類が必要で面倒だけど、やり方自体はわかっている、という状態でした。

なので、作戦として、公式サポート窓口ではなく、リテールのMicrosoft Store店舗に直接送り付けたら修理を受け付けてもらえるのではないか? というのが今回の目論見です。

作戦概要:

作戦の要点をまとめると、

1. 小包で米国のMicrosoft Store店舗に修理品を送り付ける
2. 日本在住で修理できない旨、故障状況、返送方法の選択肢。連絡先などをまとめたお手紙を付ける
3. 吉報を待つ

という段取りです。

時計型デバイスのFedExでの発送方法:

1.の送付方法ですが、とりあえず定番、過去に利用経験もありということでFedExで送付することにしました。

時計やリチウムイオン電池などを含む家電製品の場合、航空便で発送するのはかなり面倒で、既定のフォームの書類をいくつか用意しなくてはいけません。

今回の場合、具体的には、

1-a. 通常のコマーシャルインボイス (記入例)
1-b. 時計を送付するための添付文書Watch Worksheet
1-c. 送り状
1-d. Microsoft Storeへのお手紙(パッケージに同梱)
1-e. 送付パッケージ

を用意することになりました。

1-b. のWorksheetが必要なのは過去の経験からわかっていたので、Webからダウンロードして記入、パッケージとともにFedEx半蔵門ワールドサービスセンターに持ち込みました。部品の申告価格など不明な点は記入方法にある配分で分割した価格を書けばOKです。ムーブメントの原産国などは適当にChinaとかで埋めておきます。

色々記入する書類も多いので、ある程度必要な書類がわかっていればあらかじめWebで事前登録した方が楽かもしれませんね。

FedExでの発送は、街のキンコーズなどでも受け付けていたのですが(今確認したら、キンコーズでの集荷は既に受付を終了していました) 、時計やバッテリー内蔵製品となると上記のような書類が必要になるので、FedExの窓口へ直接出向いた方が色々と話が速いと思います。

f:id:kaorun:20160803105556j:image:w180f:id:kaorun:20160803105211j:image:w320

半蔵門のワールドサービスセンターは、名前と裏腹にオフィスビルの一角の小さな受付なので、行ってみるとちょっと驚きますが、受付のお姉さんに状況を説明すれば必要な書類の書き方などはだいたい教えていただけるので、海外への発送で困ったときにはおすすめです。

あて先は色々考えたのですが、やはりMicrosoftのお膝元のシアトルで、ある程度集客力があって対応に手慣れていそうなMicrosoft Store Bellevue Square Mall店を選びました。

発送にあたって、持参したパッケージをFedExのMedium Boxパッケージに入れて発送する形になり、送料は9千と数百円程、製品の箱のサイズの割に予想していたよりちょっと高くなってしまい、もうちょっとで新品が買える値段になってしまいましたが、勉強代と思ってそのまま依頼しました。

このあたりの発送方法に関してはもっといろいろ改善の余地があると思うので、これからチャレンジする人は他の手段も検討してみてください。

修理依頼として添えたお手紙の内容:

次に、2. のお手紙のですが、まぁ低レベルな英作文で恥ずかしい、というのと、そのまま原文を掲載してしまうとテンプレ化して先方にご迷惑をかけるかもしれないので、英文の原文の掲載は自粛します。

ざっくり何を書いたかを日本語で説明すると、

2-a. 現在の状況「俺のMSBand2が壊れてしまった、リストバンドで断線してるみたいで充電もできないよ」
2-b. 居住地が日本で、公式サポート地域外に住んでいること、当面渡米する予定もないので持ち込みもできず、ダメもとで送付しているよ、という事情
2-c. 修理か交換をして送り返してくれると嬉しい
2-d. 修理と発送に関して...
  2-d-1. もし直接返送可能であれば以下の住所に送付してほしい
  2-d-2. もし米国外への発送が難しければ、以下の転送業者へ発送してメールで連絡してほしい
  2-d-3. 修理費用が掛かる場合はメールで連絡してほしい
  2-d-4. もし修理も返送も難しければ、超悲しいけど、そのまま処分してほしい
2-e. 送付先(自宅住所とスピアネットに登録済の転送用住所)、および連絡先メールアドレス
2-f. このMSBand2は発売日にMicrosoft Store Onlineで注文したものでまだ保証期間内だと思う
2-g. 具体的な故障の症状とこれまでの使用状況
2-h. 海の向こうから米国のニュースを眺めていてもMSBand2が壊れる問題が多発してるらしいじゃないか
2-i. というわけで、このMSBand2を修理もしくは交換して返送してもらえたらとてもうれしい
2-j. ところで、自分はMSBand1もMSBand2も発売日に注文して毎日愛用してるし、使い勝手もすごい気に入ってる、MSBand大好きだ
2-k. ただ、MSBand1もそうだったけど、外装やストラップの強度・品質には正直問題があると思う
2-l. よろしくね

という感じで、A4の紙1.5枚分ぐらいの分量です。

ちなみに、英文での手紙は、Wordで行間を調整してフォントをArial 12ptぐらいにすれば、あとはだいたい規定値でいい感じに英文レターっぽくなります。そもそもが英文ワープロですからね。

結果とまとめ:

というわけで、発送すればあとは結果を寝て待つというわけです。

- 発送の荷物はだいたい1週間弱で無事先方に到着
- その日の晩にはメールが来て
「荷物が届いたよ、修理は難しいので交換になるけど、今交換品の在庫がないのでしばらく待ってくれ、返送は直接うちではできないんだけど、できそうな業者があるからそっちに依頼できると思うよ」
という内容で、この時点でもう、ひゃはー! って感じ。
- もちろんOkで在庫が入るまで喜んで待つよ、と返事
- そこから在庫が入って実際に発送されるまでに2週間ほど待ち時間があったのですが
- 在庫が入って、交換手続きが完了、ショップの受付伝票メールも到着
- 無事発送、DHLの追跡コードが届き
- 商品到着 !

という流れ。故障から一週間ほどどうするかしばらく迷ったりしてから発送して受け取りまででトータルでほぼ一カ月でした。
f:id:kaorun:20160823222431j:image:w180f:id:kaorun:20160823222643j:image:w180

不躾に店舗へ送り付けたにもかかわらず、終始丁寧な対応メールをいただき(いちおうそれぞれ返事は書いた)、交換費用や送料もかからず無事修理(交換)に成功、というわけで、チャレンジしてみてよかったとしみじみ思いました。

今回は、たまたま製品自体に問題があり交換が多発している製品だったことや、先方で受け付けてくれた担当者の方が良心的な方で親切に対応してもらえただけでこのやり方がMicrosoft Storeの店舗でいつでもどこでも通用するとは限りません、が、きちんと状況を説明するお手紙を付けるなど、やってみければきちんと修理してもらえることもあるよ、ということで、ガジェットに限らず様々な製品を個人輸入して楽しんでいる皆さんの今後の参考になれば幸いです。

2016-04-13

[][]Microsoftカンファレンスのセッション動画をまとめてDownloadする(Build 2016対応版)

f:id:kaorun:20160413135818p:image

以前、こんなエントリーを書きました、

Microsoftカンファレンスのセッション動画をまとめてDownloadするSession Downloader - Neutral Scent
http://d.hatena.ne.jp/kaorun/20150503/1430647159

そしてBuild 2016から一週間ほど待ってみたのですがここで取り上げたSession Downloaderが実は2015年で更新が止まっていたので更新版を...。

一言でいえば、これです。

Session Downloader Reloaded | Frank's World
http://www.franksworld.com/2015/10/07/session-downloader-reloaded/

Reloaded!

…というだけでも十分な気はしますが、もう少しだけ。
現状、Session Downloader Reloadedはバイナリを配布していないようなので、Githubからクローンしてきてビルドして実行です。

GitHub - FrankLaVigne/SessionDownloader: Simple session downloader for Build 2016 and other events on Channel9.
https://github.com/FrankLaVigne/SessionDownloader

手元で試した範囲ではVS2015以降が必要のようです。

でもって、コマンドラインから

C:\> SessionDownloader.exe [ダウンロード先ディレクトリ] https://s.ch9.ms/Events/Build/2016/RSS
f:id:kaorun:20160413135304p:image

ですね。

規定値は低解像度版なので、高解像度版なら、

C:\> SessionDownloader.exe [ダウンロード先ディレクトリ] https://s.ch9.ms/Events/Build/2016/RSS hi

PowerPointのスライドは、

C:\> SessionDownloader.exe [ダウンロード先ディレクトリ] https://s.ch9.ms/Events/Build/2016/RSS slide

Buildだけでなく、Microsoft Edge Web Summit 2016なら、

C:\> SessionDownloader.exe [ダウンロード先ディレクトリ] https://s.ch9.ms/Events/WebPlatformSummit/edgesummit2016/RSS

でしょうか。

あとは「入り口までは案内するが扉は君自身で開けろ」ってわけで。

2015-12-19

[]今、あらためて確認するWindows Installer(MSI)の基本

f:id:kaorun:20151219152544p:image

この記事は、Windows & Microsoft技術 基礎 Advent Calendar 2015 12月19日分のエントリーです。

MSIとは何か?:

デスクトップWindows用のアプリを新しく導入するためのインストーラーを作成する場合、現在、最もフォーマルなアプローチがWindows Installer形式の*.msiファイルによるインストーラーを利用する方法です。

Windows Installer自体の詳細については既にWikipediaMSDNなど様々な解説がなされているので必要に応じてご参照ください。

Microsoft Windows Installer - Wikipedia
https://ja.wikipedia.org/wiki/Microsoft_Windows_Installer
Windows Installer (Windows)
https://msdn.microsoft.com/en-us/library/cc185688

MSIファイルというけれど、最近は*.exeファイル単体で実行形式になってるインストーラーが多いんじゃ? と思われるかもしれません。
また、*.zipファイルで圧縮されたSetup.exeと*.msiファイルのセットになっているインストーラーパッケージを見かけられることも多いかもしれません。
今回のエントリーではそのあたりのMSI事情を駆け足でまとめてみたいと思います。

インストーラーのパッケージの構造:

まずは、インストーラーのパッケージ形態から考えてみましょう。

MSIを利用する場合、小型のインストールランチャーを取得してからインストーラー自体がダウンロード処理を行ういわゆるWebインストーラー形式はサポートされません。
MSIで一般的な形態は、

  1. *.msiファイル単体の配布
  2. Setup.exeと*.msiファイルの配布
  3. Setup.exeと*,msiファイルをパッキングして、実行可能な*.exeとした単一実行ファイル形式
  4. Setup.exe、*.msiに加え、インストール元ファイル群を伴いisoファイル形式などによるCD/DVDイメージ
  5. 同じく、インストール元ファイルをCab形式などでパッキングしたFD分割形式

元々、Windows Installerが登場した当時は5の形式で、多数のFDを順次読み込んで実行・インストールを行うことが、インストーラーの最も重要な役割だったのですが、現在では、4の形式もVisual Studioなどごく一部の大型アプリのみとなり、1〜3の形式や、MSIを使用しないWebインストーラーが主流になっています。
.msi以外に、.mstや.msuなどのモジュールも各種ありますが、そのあたりは使う人が知っていればいい内容なので割愛します。

SetupとMSI:

さて、ここまで何度も出てきている、Setup.exeと*,msiファイルの切り分けとはなんでしょう?

なぜ最初から単体の*.exeになっていないのか、という謎ですが、現在流通している多くのインストーラーの場合、Setup.exeはそのアプリの実行に必要となる.NET Frameworkや一部のデータアクセスライブラリなどの事前要求コンポーネントをインストールし、完了後に対になった*.msiファイルを起動するという構造になっています。

このSetup.exeの役割をセットアップ・ブートストラッパー(Setup Bootstrapper)と呼びます。

f:id:kaorun:20151219152546p:image

.msiファイルのインストールプロセス中で.NET Frameworkを利用する場合などもあり、事前に必要なコンポーネントをインストールしておこう、という仕組みです。なので、単体のMSIファイルだけを配布して、.NET Frameworkなどの環境整備は自分でやってね、という形式のアプリケーションも多くみられます。
Windows 7以降であれば、.NET 4.0程度まではOS標準でインストールされていますので、これで十分、というケースも多いでしょう。

また、歴史的経緯からみると、Windows Installerが登場した当時のWindows 95時代には、そもそもWindows Installer自体がOSに付属しておらず、インストールするためのコンポーネントをSetup.exeで組み込む、というような動作が行われていました。

MSIの単一exeパッケージ化:

とはいえ、.NET 4.6が必要である場合、とか、それぐらい勝手にやってくれるのが気が利いたインストーラーですし、いちいちZipファイルを展開して実行するのも面倒です、このため、昨今では、ブートストラッパー自体が高機能化し、.NETのインストールはもちろん、*.msiファイルや他のコンポーネントもSetup.exeのペイロードとしてパッキングしてしまい、いわゆる自己解凍形式のインストーラーとしてMSIファイルをインストールするインストーラーも多くなっています。

また、もうどうせそこまでやるなら、とUI自体もブートストラッパーに内蔵し、古典的なWindows Installerのウィザード形式のUIを利用せず、*.msiをサイレントモードでインストールする手法なども登場しています。

f:id:kaorun:20151219152545p:image

もちろん、そのような高度な手法を採用し、GUIさえも独自実装してしまうのならば、MSIなど使わずにより高機能で独自形式のインストーラーを開発したほうがいいのでは? という考え方もあり、実際にそのようなインストーラー開発キットも多く流通していますが、アプリケーションのシステムへの組み込み、というデリケートな問題を扱う点や、将来サポートの継続性なども考慮すると、依然としてMSIを応用した形式のインストーラーを使用するメリットは十分にあるといっていいのではないかと思います。

Project Centennieal:

また、直近では、Windows 10のリリースとともに、Project Centennialという新しい形式のパッケージ技術がマイクロソフトから予告されており、この形式では、古典的なWin32や.NETを利用したWindowsデスクトップアプリケーションを、アプリケーション仮想化技術を応用したコンポーネント化し、隔離したサンドボックス内で実行することで、安全な配置・実行を可能にし、これによってWidows Storeからデスクトップアプリケーションを配布・販売することを実現することが謳われています。

f:id:kaorun:20151219152547p:image

このProject Centennial上で実行されるアプリケーションパッケージの作成においてもMSIインストーラーの使用が推奨されています。MSI形式のインストーラーを持つデスクトップアプリであれば、容易にWidnwos Storeへ登録が可能になるかもしれないよ、という状況も生まれつつあるわけです。

まとめ:

以上、昨今のWindows Installer事情をざっくりとまとめてみました。
各種インストーラー開発ツールの利用方法などについては、様々なエントリーが書かれていると思いますので、各自ググってみてください。(このエントリーもだいぶやっつけなので、後日更新するかもしれません)

2015年にもなって、インストーラーをゴリゴリ書くことになるとは思っていませんでしたが、2-in1のWindowsタブレットの普及も進み、Windows用のクリエイティブ デスクトップアプリを作ってみるのも、意外と面白いかもしれませんよ。それでは、今年も残り少なくなってまいりましたが、良いWindowsライフをお過ごしください。

続く...

[]めとべや東京 #10で「今風なデスクトップアプリの モダンインストーラー開発」について発表しました

...というわけで、本日開催された「めとべや東京 #10」でイマドキなモダンUIを利用したWindows Installer開発について登壇させていただきました。
会場では少々グダグダなデモになってしまい参加者の方々には申し訳ありませんでした。スライドの方は資料として使いやすいギョーミーな箇条書きにまとめさせていただいております。

正直、今年後半はこのあたりのインストーラー周りに追いまくられて全力でバックダッシしていた感があるのですが、Project Centennialなど今後の展開も期待できますので、資料としてご活用いただければ幸いです。

また、あわせて、より基礎的なMSIの話をWindows & Microsoft技術 基礎 Advent Calendar 2015向けのエントリーとしてまとめましたので、合わせてご参照ください。

今、あらためて確認するWindows Installer(MSI)の基本
http://d.hatena.ne.jp/kaorun/20151219/1450511313

2015-08-12

[][]Windows 10でUSB接続のLANやオーディオデバイスが正常に動作しないときは(DisplayLink編)

DisplayLink製チップを搭載したUSB接続のマルチファンクションデバイス(ディスプレイ、ネットワーク、オーディオ等)がWindows 10でうまく認識されない場合の対策。
現在市販されているUSBディスプレイアダプタやUSBポートリプリケーターのチップは大概DisplayLink製です。

で、これらのデバイスをWindows 10で使う場合、現時点(10240)ではドライバの認識に失敗することがあるようです。いずれはWindows Updateでスムースに入るようになると思うのですが…。
というわけで、公式サイトによる対処方法をざっくりと日本語でまとめ。

まずは、DisplayLinkのドライバをクリーンナップしWindows 10対応ドライバを再インストールします。

それでも治らない場合

  1. デバイスマネージャーを開きます
  2. 「その他のデバイス」「ネットワークアダプター」「オーディオの入力および出力」などで認識していないデバイスを選択
  3. 右クリックして「ドライバーソフトウェアの更新」を選択
  4. 「コンピューターを参照してドライバーソフトウェアを検索します」を選択
  5. 「次の場所でドライバー ソフトウェアを探索します:」に C:\Program Files\DisplayLink Core Software を入力して「次へ」

ざっとこんな感じです。

via:
Troubleshooting software installation / upgrade – DisplayLink Support
http://support.displaylink.com/knowledgebase/articles/679177-troubleshooting-software-installation-upgrade

2015-06-18

[]今だから入れたい! おすすめ Windows Phoneアプリ (2015夏)

f:id:kaorun:20150525232553p:image:w240

やー、色々ありましたが、ほんと色々ありましたが、もーね...、というわけでようやく日本のWindows Phone 8端末事情にも遅すぎた春がやってきつつあるようです。マウスコンピューターさんMADOSMA発売おめでとうございます。
さて、みなさま、新しいWP端末を手に入れることができたでしょうか? このエントリーを見ている時点でもう手に入れられているのではないか、と...、手に入れましたよね? (しつこい)

そんなわけで、以前まとめた頃から時が経ち、国内外で新作がいくつも登場し、KrileWPが公開終了になるなど、WPアプリ界隈にも多少の変化がありました。
なので、前回のまとめに追加する形で、初めてWPを手に入れた方々への紹介も含めて、今ならコレというオススメなアプリをいくつかご紹介。

f:id:kaorun:20150525232612p:imageMapFan
相変わらず、「Windows Phoneといえば残念な地図」でおなじみのHERE Mapsの酷い地図を補ってくれる形でインクリメントPがやってくれました、Windows 8.x/Windows Phone 8.x対応のユニバーサルアプリとしてMapFanがリリースされました!
機能的には、時層地図的な古地図やドラクエ風のRPG地図など面白機能がある反面、実用的な機能はまだまだ控えめでこれからに期待、という感じですが、これで無料アプリですし、なにしろユニバーサルアプリとしてリリースしてくれただけでも感謝感激なのです。
f:id:kaorun:20150525232813p:image:w160f:id:kaorun:20150525232811p:image:w160f:id:kaorun:20150525232809p:image:w160f:id:kaorun:20150525232807p:image:w160
f:id:kaorun:20150525232944p:image
f:id:kaorun:20150525233122p:image
ジョルダン乗換案内 (新) (旧)
ジョルダンも乗換案内アプリをリニューアルしてくれました! ...が、正直使い勝手的には古い方がいいかな...? 検索条件により時々落ちるし?
なぜか新しい方に死にbug放置されてるので早く治してください〜!
f:id:kaorun:20150525233127p:image:w160f:id:kaorun:20150525233126p:image:w160f:id:kaorun:20150525233125p:image:w160
f:id:kaorun:20150525233124p:image:w160f:id:kaorun:20150525233123p:image:w160
f:id:kaorun:20150525233507p:image乗換NAVITIME
乗換アプリといえばジョルダンと双璧なのがNAVITIMEですね。このあたりは使い勝手のお好みで。
f:id:kaorun:20150525233532p:image:w160f:id:kaorun:20150525233531p:image:w160
f:id:kaorun:20150525233557p:image:mediumMSN天気
前回紹介したAccuWeatherのロック画面がお天気画像からストック画像に切り替わってしまい、個人的に気に入っていたAmazing Weather HDのデータ更新が謎のエラーになってしまったので、現時点でのおすすめお天気ロックスクリーンアプリは純正のMSN天気です。
インストールするまでもなく標準で入っている気がしますが、アプリを起動してやればロックスクリーン設定が出ると思います。ロックスクリーンの選択は 設定/ロック画面 で。
f:id:kaorun:20150525233637p:image:w160
f:id:kaorun:20150525234519p:image2Day
クラウド同期可能なタスク・ToDoアプリの2DayはユニバーサルアプリでWindowsストア版とのデータ同期も可能なのが素敵です。
見た目もよく、タスクアプリ的な設定も一通りそろっていて過不足なく使えるクラウドタスクアプリといったところ。
f:id:kaorun:20150525234615p:image:w160f:id:kaorun:20150525234614p:image:w160f:id:kaorun:20150525234612p:image:w160f:id:kaorun:20150525234610p:image:w160
f:id:kaorun:20150525234743p:imagePictures Lab
正直、WPでも写真編集アプリは沢山あるのです、あるのですが、なんかこー突き抜けないというか一長一短で、これという大定番がありません。
ただ、その中でも、そこそこ使い勝手が良くて気に入っているのはPictures Labです。とりあえず、写真画像の編集なに使ったらいいん? という時点ではこれをおすすめしてます。
f:id:kaorun:20150525234819p:image:w160f:id:kaorun:20150525234817p:image:w160
f:id:kaorun:20150525234939p:imagePushile
この一年で、個人的に最大のヒットだったWebサービスPushBulletです。複数端末持ちのガジェオタ的にはこれなしにはもう暮らせない感じですね。
で、デスクトップWindows向けには公式アプリがあるのですが、WP版はリリースされておらず、非公式アプリが沢山出ています。Pushileはその中でも公認非公式アプリの一つ。
このあたりは、使い勝手と見た目の問題なので、Windows Phone Storeから検索してみてお好みで。
もちろん、Windows Phoneの共有コントラクトにも対応してますので、NextGenReaderやTweetiumからリンクをPCや他の端末にプッシュするのも簡単になります。
f:id:kaorun:20150525234954p:image:w160f:id:kaorun:20150525234952p:image:w160
f:id:kaorun:20150525235102p:imageTweetium
Krile WP亡き後、個人的に最強のTwitterクライアントだと思っているのはTweetiumです。
高機能かつ、着々と更新されていて、TwitterとWPの最新機能に着実に対応してくれているのがうれしいところ。
Windowsストア版もありますが、こちらはフローレイアウト表示で好みの分かれるところ。
f:id:kaorun:20150525235058p:image:w160f:id:kaorun:20150525235100p:image:w160
f:id:kaorun:20150618222730p:imageAristea
WP用国産Twitterクライアントの筆頭Amelloidesの作者つもりんによるユニバーサルアプリ版TwitterクライアントがAristea、柔軟なフィルタ式とマルチアカウントでヘビーユーザー御用達な使い勝手も健在です。ユニバーサルアプリとして購入すれば合わせて利用できるWindowsストアアプリ版の完成度も高く、こちらはマルチカラムで使いやすいのでお試しあれ。
f:id:kaorun:20150618222728p:image:w160f:id:kaorun:20150618222726p:image:w160f:id:kaorun:20150618222725p:image:w160f:id:kaorun:20150618222724p:image:w160
f:id:kaorun:20150525235205p:imageHyperlapse Mobile
昨年、気持ち悪いぐらいなめらかなタイムラプス動画とともに公開されたHyperlapse技術のアプリ版です。
正直、昨年公開されたビデオほどなめらかにはならないのですが、手軽に使えるスタンドアロンのタイムラプスアプリとして。Android版も公開されてますね。
f:id:kaorun:20150525235202p:image:w240
f:id:kaorun:20150525235340p:imageMicrosoft How-Old
これはもう、Twitterで見かけた方にはおわかりですね。例のアレのアプリ版です。
画像ファイルやカメラで撮影した顔写真から年齢を推定する、ただそれだけのネタアプリです。ブラウザ版ならどこでも使えますが、アプリ版はWPエクスクルーシブ(笑)。
ただそれだけのことに画像認識や機械学習など高度な技術が投入された、まさに技術の無駄遣いですね。
f:id:kaorun:20150525235338p:image:w160
f:id:kaorun:20150525235451p:imageMS-DOS Mobile
そして、シメもネタアプリ。
今年のApril Foolに公開された、Microsoft純正のMS-DOS for Windows Phoneです。
なにができる、ってものでもありませんが、細かい作りこみや仕込みネタが沢山あるので、往年のMS-DOSコマンドが今頭をよぎった方々はれっつチャレンジ、思ったよりもちゃんとDOSです(笑)。
f:id:kaorun:20150525235450p:image:w160f:id:kaorun:20150525235448p:image:w160

例によってざっと駆け足で、雑なまとめですいません。スクリーンショットぐらいストアから持ってこずに自分で撮れよ、って感じですよね。いや、ほんと暇がなくて...、自分でもガツガツアプリを書きたい気持ちはあるのですが...。
...と、それはともかく、ユニバーサルアプリのおかげで、個性派アプリも徐々に増え、Windows 10Windows 10 Mobileのリリースが楽しみになってまいりました。

初めての方も、お久しぶりの方も、色々と過剰な期待は禁物ですが、独特な快適さを持つ今どきのWindows Phoneの世界を感じる一助になれば幸いです。

関連:
Windows Phone 8 とりあえず入れておきたいオススメ定番アプリ25選 (2014年夏) - Neutral Scent
http://d.hatena.ne.jp/kaorun/20140801/1406872071

2015-05-19

[][]IE11のアクセラレーターにGoogle検索プロバイダーが追加できない問題

原因はよくわからないのですが、最新Windows Updateが適用された環境でIE11に検索プロバイダーのアクセラレーターを追加できない状況が発生しているようです。IE Galleryのアクセラレーターの追加ページでインストールボタンを押しても何も起きません。
直近で会社のPCを入れ替えているのですが、GoogleWikipediaの検索プロバイダを追加できずに困りました。

で、調べて分かったのはこれ、

IE11 patch KB 3038314 blocks search engines and may fail with error 80092004 | InfoWorld
http://www.infoworld.com/article/2911704/microsoft-windows/ie-11-patch-kb-3038314-blocks-adding-search-providers-install-may-fail-with-error-80092004.html

ようするにKB3038314が適用されると、検索プロバイダの追加が無効になってしまうようなのです...。これは廉価版「Windows 8.1 with Bing」がらみの仕様なのでしょうか?

まぁ、それはともかくアドレスバーからGoogleで検索できないのは猛烈に不便なので(Bingは日本語じゃねぇ...)、どうにからないのか? KBを削除してアクセラレーターを追加して戻せなどと解説されていますがメンドクサイ...、と件の記事のコメント欄まで読んでみたところ、レジストリに直書きしてしまえばOkよ、といってる人がいたので試してみたら成功しました。件のコメントではgoogle.co.ukに行ってしまうので、他のPCから同じregエントリーを引っ張ってきてgoogle.comへ飛ばします。

具体的には、
ie_google_search_provider.reg 直

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\SearchScopes\{CA052273-9E19-4525-A22B-8CC4BA5AD5C1}]
"DisplayName"="Google"
"URL"="http://www.google.com/search?q={searchTerms}&sourceid=ie7&rls=com.microsoft:{language}:{referrer:source}&ie={inputEncoding?}&oe={outputEncoding?}"
"ShowSearchSuggestions"=dword:00000001
"SuggestionsURL"="http://clients5.google.com/complete/search?hl={language}&q={searchTerms}&client=ie8&inputencoding={inputEncoding}&outputencoding={outputEncoding}"
"OSDFileURL"="http://www.iegallery.com/en-US/AddOns/DownloadAddOn?resourceId=813"
"FaviconURL"="http://www.google.com/favicon.ico"
"SuggestionsURLFallback"="http://clients5.google.com/complete/search?hl={language}&q={searchTerms}&client=ie8&inputencoding={inputEncoding}&outputencoding={outputEncoding}"
"FaviconURLFallback"="http://www.google.com/favicon.ico"
"ShowTopResult"=dword:00000001
"SortIndex"=dword:00000005

ほかの検索プロバイダも、
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\SearchScopes\
から下で探してきてエクスポートすればOkの様子。faviconのキャッシュはC:\Users\<username>\AppData\LocalLow\Microsoft\Internet Explorer\Servicesの下にありますが、regから削れば勝手に取得してきてくれるかもしれません。

新規インストールのPCなどでお困りなら試してみてください。

2015-05-13

[][][][]WPFでマウスで選択した範囲をスクリーンキャプチャーする

f:id:kaorun:20150513155325p:image

どうも、クラスのprivateメンバー変数はlowerCamelCaseで、_は付けない派 id:kaorunです。
最近は間違った事を書いて質問に答えてもらうメソッドが巷で流行っているらしいですが、それはともかく、今回はWPFでさらっとスクリーンキャプチャをするためのサンプルを作ってみました。

まぁ、なんとなくそんな難しくないよね、と思っていたのですが、そういえばRxでマウスイベントの処理を自分で書いたことないんだよね、と、そのあたりを調べつつ試しに書いてみたらちょっと手こずりまして、助言をいただいたりもしてそれなりな感じになったのでエントリーにしておきます。

サンプルプロジェクトのダウンロードはこちら。
https://github.com/kaorun/kaorun_samples/archive/master.zip

問題のキャプチャー部分のコードはこんな感じです。
https://github.com/kaorun/kaorun_samples/blob/master/WpfScreenCaptureTest/WpfScreenCaptureTest/CaptureWindow.xaml.cs

using System;
using System.Reactive.Linq;
using System.Windows;
using System.Windows.Input;
using System.Windows.Media.Imaging;
using System.Drawing;
using System.Windows.Interop;

namespace kaorun.samples
{
    /// <summary>
    /// Screen capture window class by selecting rectangle by Mouse with Rx event handling
    /// </summary>
    public partial class CaptureWindow : Window
    {
        public CaptureWindow()
        {
            InitializeComponent();
            
            Cursor = Cursors.Cross;
            var origin = new System.Windows.Point();
            
            var mouseDown = Observable.FromEventPattern<MouseEventArgs>(this, "MouseLeftButtonDown");
            var mouseMove = Observable.FromEventPattern<MouseEventArgs>(this, "MouseMove");
            var mouseUp = Observable.FromEventPattern<MouseEventArgs>(this, "MouseLeftButtonUp");

            mouseDown
                .Do(e => { origin = e.EventArgs.GetPosition(LayoutRoot); })
                .SelectMany(mouseMove)
                .TakeUntil(mouseUp)
                .Do(e =>
                {
                    var rect = BoundsRect(origin.X, origin.Y, e.EventArgs.GetPosition(LayoutRoot).X, e.EventArgs.GetPosition(LayoutRoot).Y);
                    selectionRect.Margin = new Thickness(rect.Left, rect.Top, this.Width - rect.Right, this.Height - rect.Bottom);
                    selectionRect.Width = rect.Width;
                    selectionRect.Height = rect.Height;
                })
                .LastAsync()
                .Subscribe(e =>
                {
                    this.Hide();

                    // Offsetting selection boundery, because transpalent WPF window shifted few pixel from screen coordinats
                    MainWindow.Captured = CaptureScreen(Rect.Offset(BoundsRect(origin.X, origin.Y, e.EventArgs.GetPosition(LayoutRoot).X, e.EventArgs.GetPosition(LayoutRoot).Y), this.Left, this.Top));
                    
                    Cursor = Cursors.Arrow;
                    this.Close();
                });
        }

        private static Rect BoundsRect(double left, double top, double right, double bottom)
        {
            return new Rect(Math.Min(left, right), Math.Min(top, bottom), Math.Abs(right - left), Math.Abs(bottom - top));
        }

        public static BitmapSource CaptureScreen(Rect rect)
        {
            using (var screenBmp = new Bitmap((int)rect.Width, (int)rect.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb))
            {
                using (var bmpGraphics = Graphics.FromImage(screenBmp))
                {
                    bmpGraphics.CopyFromScreen((int)rect.X, (int)rect.Y, 0, 0, screenBmp.Size);
                    return Imaging.CreateBitmapSourceFromHBitmap(screenBmp.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
                }
            }
        }
    }
}

今回は、ほぼ透明な全面ウインドウを張ってマウスイベントを取得し、選択後ウインドウを隠してからスクリーンショットを撮る、というアプローチで実装してみました。
Rxの練り方はもう一声エクセレントな書き方がありそうな気がしますが、今日はこれで精いっぱい。よりエレガントなRxの書き方は随時募集中です。
Rxを使わずにイベントハンドラでやった方が黒魔術っぽくなくてサンプルとしてわかりやすい気もしますが、習作もかねているのでこんなもんで。
細かい飾りとか、画像の保存もなにもしていないし、やっつけ実装で、タスクスイッチなど異常系の処理やマルチdpi・マルチスクリーン・DirectXなどは特にケアしていないので、ちゃんと実装するならもっと頑張った方がいい気がします。

まぁ、C#でざっくり書いて68行ですかね(何がだ)。上にも書いたようにもっとケアしないといけないことが沢山あるわけですが、細かい要請に答えたり挙動を調整していけるのがネイティブアプリの肝であり醍醐味でもあります。

ところで、Windows 10ではデスクトップアプリもAppX化することでWindows Storeに登録できるようになるようです。この手のちょっとしたツールアプリでもストアで販売できるようになると思うと楽しみですね。

Special thanks emomonさん!

2015-05-03

[]Microsoftカンファレンスのセッション動画をまとめてDownloadするSession Downloader

f:id:kaorun:20150503185001p:image

どうも、ご無沙汰しております。id:kaorunです。
日々の生活に押し流されている毎日で、久々のエントリー更新です。

今年もBuild2015が幕を閉じましたね!
現地で参加された遠征組も、2日連続で夜半に3時間以上のキーノートに挑んだ半徹組も本当にお疲れさまでした。
Windows 10にHoloLensにAzureにと盛りだくさんな当たり年だったのではないでしょうか?

さて、例によって、いつものごとく、カンファレンスが終われば、大量のセッション資料と動画が放出されるのが昨今のマイクロソフトの習わし、ということで、Channel9には開催当日からザクザクと資料がUploadされています。
とはいえ、こんなんいちいち仕事中に観ていられんわ、ということで、ちまちまダウンロードしてスマフォやタブレットに詰め込んで持ち歩いたりするわけですが、今年のように目新しい情報山盛りの年はダウンロードだけでも難儀です。

というわけで、前置きが長くなりましたが、Buildや続いて開催されるIgniteなど、マイクロソフトのカンファレンス資料をまとめてガツンとダウンロードできるツールをご紹介。Tim Nilimaa氏のリリースしているその名もずばりSession Downloaderです。

Session Downloader  Infoworks
http://infoworks.tv/session-downloader/

ClickOnceアプリなので、Windowsマシンでリンクをクリックして開くだけ。
使い方もシンプルです。

プルダウンのリストからイベント名を選び、

f:id:kaorun:20150503185000p:image

ダウンロードしたいフォーマットを選びます。

f:id:kaorun:20150503184959p:image

で、Refreshボタンを押せば...

f:id:kaorun:20150503184957p:image

サムネール付きの一覧がずらっとでるので、あとは、選択してDownloadするだけ。

f:id:kaorun:20150503184955p:image

f:id:kaorun:20150503184954p:image

ちなみに、Filterでインクリメンタルサーチできると思うのですが、手元の環境ではキー入力するとばきっと死にます。また、ちまちま沢山選択してDownload実行しても死んだりします(Select AllだとOkでした)。W10TPだからか日本語だからか...。とりあえず、そのあたりはお試ししながら確認してみてください

ちまちまブラウザでやってるときりがない作業を、ストレージ容量さえあれば大人げなくSelect AllしてすべてDownloadしてしまうことさえも可能です。

さぁさぁ、次世代のMicrosoftテクノロジーの数々が無料で見放題。動画をがつがつ落としてもよし、PowerPointのスライドをまるっと取得して検索しても良し、です。
まぁ、たいがいまるっと落としてきても全部は観きれないんですけどね。