Windows 10 TP環境でVagrantと自作Hyper-V boxの扱いにハマっていた

先に結論を知りたい人のために書くと

Windows 10 TPとHyper-Vの組み合わせで既存のVagrant boxを使うことはできる。 が、現状Windows 10 TP上で自分で作ったboxは使うことができない。

エラー環境

自作のHyper-V向けVagrant boxを作っていたら vagrant upでエラーが出ていたから色々調査した。 最初はCore OSのboxの作りが悪いのかと思っていたら、既存のboxをカスタマイズ後エクスポートしてもエラーが出ていたので怪しいと踏んだ。

Vagrantのエラーメッセージ

$ vagrant up
Bringing machine 'default' up with 'hyperv' provider...
==> default: Verifying Hyper-V is enabled...
c:/HashiCorp/Vagrant/embedded/gems/gems/i18n-0.6.11/lib/i18n/config.rb:83:in `block in missing_interpolation_argument_handler': missing interpolation argument :name in "The box you're using with the Hyper-V provider ('%{name}')\nis invalid. A Hyper-V box should contain both a\n\"Virtual Machines\" and a \"Virtual Hard Disks\" folder that are\ncreated as part of exporting a Hyper-V machine.\n\nWithin these directories, Vagrant expects to find the\nvirtual machine configuration as well as the root hard disk.\n\nThe box you're attempting to use is missing one or both of\nthese directories or does not contain the files expected. Verify\nthat you added the correct box. If this problem persists,\nplease contact the creator of the box for assistance." ({:_key=>:box_invalid, :_namespace=>"vagrant_hyperv.errors"} given) (I18n::MissingInterpolationArgument)
        from c:/HashiCorp/Vagrant/embedded/gems/gems/i18n-0.6.11/lib/i18n/interpolate/ruby.rb:29:in `call'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/i18n-0.6.11/lib/i18n/interpolate/ruby.rb:29:in `block in interpolate_hash'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/i18n-0.6.11/lib/i18n/interpolate/ruby.rb:21:in `gsub'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/i18n-0.6.11/lib/i18n/interpolate/ruby.rb:21:in `interpolate_hash'

        from c:/HashiCorp/Vagrant/embedded/gems/gems/i18n-0.6.11/lib/i18n/interpolate/ruby.rb:17:in `interpolate'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/i18n-0.6.11/lib/i18n/backend/base.rb:153:in `interpolate'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/i18n-0.6.11/lib/i18n/backend/base.rb:41:in `translate'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/i18n-0.6.11/lib/i18n.rb:157:in `block in translate'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/i18n-0.6.11/lib/i18n.rb:153:in `catch'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/i18n-0.6.11/lib/i18n.rb:153:in `translate'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/errors.rb:103:in `translate_error'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/errors.rb:72:in `initialize'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/plugins/providers/hyperv/action/import.rb:41:in `exception'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/plugins/providers/hyperv/action/import.rb:41:in `raise'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/plugins/providers/hyperv/action/import.rb:41:in `call'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/warden.rb:34:in `call'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/warden.rb:95:in `block in finalize_action'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/warden.rb:34:in `call'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/warden.rb:34:in `call'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/builder.rb:116:in `call'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/runner.rb:66:in `block in run'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/util/busy.rb:19:in `busy'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/runner.rb:66:in `run'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/builtin/call.rb:53:in `call'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/warden.rb:34:in `call'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/builtin/config_validate.rb:25:in `call'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/warden.rb:34:in `call'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/builtin/handle_box.rb:56:in `call'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/warden.rb:34:in `call'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/plugins/providers/hyperv/action/check_enabled.rb:18:in `call'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/warden.rb:34:in `call'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/builder.rb:116:in `call'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/runner.rb:66:in `block in run'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/util/busy.rb:19:in `busy'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/action/runner.rb:66:in `run'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/machine.rb:214:in `action_raw'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/machine.rb:191:in `block in action'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/environment.rb:516:in `lock'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/machine.rb:178:in `call'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/machine.rb:178:in `action'
        from c:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.7.2/lib/vagrant/batch_action.rb:82:in `block (2 levels) in run'

調査

  • Windows 8.1ではどうか
    • 既存のboxカスタマイズは問題なく動作

なので違う部分が何かあるということ。

boxのディレクトリ構造

hashicorp/precise64

/path/to/hashicorp-VAGRANTSLASH-precise64/1.1.0/hyperv
|--Vagrantfile
|--Virtual Hard Disks
|  |--precise64.vhdx
|--Virtual Machines
|  |--6C85D451-6B8B-410B-927C-8DE28E84DAD6.XML
|--metadata.json

自作box

/path/to/my-VAGRANTSLASH-trusty64/0/hyperv
|--Virtual Hard Disks
|  |--trusty64.vhdx
|--Virtual Machines
|  |--E8B4D4CB-B77A-40C9-8AEF-C2D72A92B807.VMRS
|  |--E8B4D4CB-B77A-40C9-8AEF-C2D72A92B807.vmcx
|--metadata.json

OSをアップデートしたとか仮想マシン名が違うということを除くと、違いは Virtual Machines 内の構成が変わっていること。

Windows 10でのHyper-Vの変更点

What's New in Hyper-V in Technical Preview

Virtual machines now have a new configuration file format which is designed to increase the efficiency of reading and writing virtual machine configuration data. It is also designed to reduce the potential for data corruption in the event of a storage failure. The new configuration files use the .VMCX extension for virtual machine configuration data and the .VMRS extension for runtime state data. 

The .VMCX file is a binary format, directly editing the .VMCX or .VMRS file is not supported.

Technical PreviewではHyper-Vの設定データが入っているファイルフォーマットを変更したようです。 VMCXファイルが仮想マシンの設定で、VMRSファイルが実行時の状態のデータフォーマットになっているみたいですね。

推測

VagrantではHyper-Vのboxファイルを登録する際にチェックしているのはVirtual Hard Disks、Virtual Machinesのディレクトリとmetadata.jsonがあるかのみ。 vagrant up時に現状ではXMLファイルを読みだして仮想マシンを設定していると思われる。 で、Windows 10 TPではファイルはopenしたけどバイナリだから必要なキーを読めずにエラーを出してるという感じかな。

まとめ

今のところWindows 10 TPでHyper-V用のbox作るのは無理な気がする。 どうしてもWindows 10 TP環境なんだけど自作のHyper-Vのboxを使いたいならWindows 8.1で作ってくること。 もしくはHyper-Vを諦めて、VirtualBoxとかにする。

VMCX, VMRSファイルの直接編集はサポートしてないとあるが読み出しはできるのだろうか。 Issue投げるのが良さそう。

#Galaxyアンバサダー Galaxy S5 Activeをお借りしています。 その3 アプリ

たぶんこういう記事は2回目あたりに書くものじゃないかなと思いつつ、Galaxy S5 Activeの初期アプリと、この機種の特徴であるActivity Zoneについて見ていきましょう。

初期アプリ

sc1 sc2 sc3 sc4

初期アプリは3ページ+いくつかといったところで、今回お借りしたものがドコモのものなので3ページ目のほとんどがドコモのアプリで埋まっていますね。 なのでGalaxy S5 Activeのアプリとしては3ページほど、ドコモで追加されたものが1ページ分といったところでしょうか。

GalaxyシリーズはGalaxy Nexusしか持ったことがないのですが、思ったほど独自のアプリはなく素の状態でもスマホを活かせるアプリが揃っているのではないかと思います。 ところでTwitterは入っているのにFacebookがないのが気になりますね...

Activity Zone

そしてGalaxy S5 ActiveならではといったアプリがこちらのActivity Zoneアプリ。 sc5 主にアウトドアで使いそうな機能が揃っております。

気圧計

sc6

気圧計はiPhone 6/6 Plusでも搭載されていますが、天気の変化やヘルスケアなどにも利用されています。 一応Activity ZoneアプリではAccuWeatherへのリンクがあることから、アウトドア中の天気のチェックに利用されるのでしょう。

またS Healthというヘルスケアアプリにも気圧計自体は利用されるのではないかと思います。

コンパス

sc7

コンパスもアウトドアでよく利用されそうな機能です。 モバイルネットワークもしくはWi-Fiが掴めた場合には住所も表示されますが、ネットワークがなくてもコンパスとしての機能は利用できます。

これで遭難しても大丈夫!

トーチライト

sc8

トーチライトの機能を提供しているアプリは様々ありますが、Activity Zoneに統合されているのはいいですね。 点滅速度や明るさを変えられるので夜でも安心です。 ただちょっとスライダーが使いづらいかなという感じ。

ストップウオッチ

sc9

これについてはコメントは要らないですね...

メニュー

sc10

気圧計、コンパス、トーチライト、ストップウオッチはスワイプで切り替えられますが、メニューから直接アクセスもできます。 またヘルスケアや省電力モードや、防災アプリへのショートカットが初期状態であるのも良いですし、自分で他のアプリを追加できるのもアウトドア向けともいえるかもしれません。

まとめ

タフネススマホを触ったことがなかったため、アウトドアを意識したActivity Zoneは面白いアプリでした。 他の機種でもこのようなアプリがあるのでしょうか、気になります。

時間がなく気圧計とS Healthの連携を見られなかったのは残念ですが、Galaxy S5 Activeを借りれたのはとても良かったと思います。

#Galaxyアンバサダー Galaxy S5 Activeをお借りしています。 その2 アウトドアでのカメラ性能

2月21日(土)に日帰りでスキーに行ったついでにGalaxy S5 Activeを持って撮影してきました。 eyecatch

撮影場所は 新潟県南魚沼郡湯沢町岩原スキー場です。 東京駅から新幹線で90分の越後湯沢で下車し、駅前のシャトルバスで15分程度という好立地です。 付近には宿も多く、ナイターも営業しているため一日中滑りたいという人にはお勧めかもしれません。

Galaxy S5 Activeでの撮影写真

写真はすべて初期設定のオートのままで撮影しています。 縦で撮影した画像が横向きになっているのは気にしないでほしいです。。。

ちなみにこの日は快晴かつ気温も高めだったせいで、手袋越しの物理キー活用せずに素手で撮っていました。

1 2 3 4 5 6 7 8 9 10

同時にCanon Poowershot S95でRAW撮影して現像したものと比べましたが、Galaxy S5 Activeもちょっと青みがある絵になるものの結構自然な感じの絵が撮れていると個人的には思いました。 ただちょっと空の色は弱く、せっかくの晴天が表現できていないかなと思います。

ただそこはデジカメとスマホのカメラの比較なので、比べすぎは良くないかなと思います。 オートではなくもう少し調整して撮影するといいかもしれないです。

若干シャッタースピードが落ちましたが、ナイターが始まりライトがついたあたりでも結構撮れているのも良いですね。

まとめ

アウトドアでも活躍できるGalaxy S5 Activeは快晴のスキー場でも写真で活躍してくれました。 皆さんももう少しでシーズンが終わりそうなウインタースポーツはどうでしょうか。

#Galaxyアンバサダー Galaxy S5 Activeをお借りしています。 その1 ファーストインプレッション

TwitterのタイムラインでGalaxyアンバサダーなる面白いものがあることを知り、ブログを書くきっかけにもなるし、端末も長めに借りられて試せる!良い!と思って申し込んだらGalaxy S5 Activeをお借りすることができました。 もう返す直前になりつつありますが、使った印象を書いてみようと思います。

本体各部

1 2 3 4 5 6

Galaxy S5 Activeは公式サイトの製品詳細でもこのように耐久性・堅牢性をうたっているスマートフォンです。 sc1

そのため「最近のアプリ」「ホーム」「戻る」の3つのキーが最近の普通のスマホでは見かけない物理キー仕様となっています。 実際その2の記事でも書きますが、スキーやスノボといったウインタースポーツをしながらも操作ができるためなかなか快適です。 またグリップ感があり、あまり滑らない握りの良さが良いです。

また3枚目の画像にある見慣れない物理キーは「アクティブキー」と呼ばれるもので、設定から下の画像のように短押しと長押し時に起動するアプリを設定することができます。 sc2 sc3 ところでなぜ「アクティブキーでキャプチャ」の文言だけ、カタカナが半角なんですかね...

写真を撮り忘れましたが、SIMカードスロットは背面カバーを外したところにあります。 ピンなしで交換できます。

ロック画面

7

デフォルトでは天気と気温の表示、ならびにカメラへのショートカットが置かれています。 個人的に有機ELはきついかなと思う場面もあるのですが発色の良さは結構好きなので好印象です。

サイズ比較

8

とりあえず部屋にあったiPhone 5siPhone 6を並べて撮影してみました。 縦はさすがにiPhone 5sに比べたら差があります。 iPhone 6と比べると少し縦が大きいという感じでしょうか。

まとめ

Galaxyシリーズらしさがありつつも、耐久性が求められる場を考えたこの端末は個人的には悪くない感じです。 次回はスキー場でオート撮影した画像を使ってカメラの性能を見ていこうと思います。

話題のFx0を購入した

話題のau LGL25ことFx0を購入しました。 発売日25日の10時ちょっとすぎににau SHINJUKUに行ったところ「在庫切れです」と言われていたものの、 夕方に復活したらしいものの25日中の受け取りは厳しい、ということで日付が変わりましたが本日受け取ってきました。

詳細な画像とかそういうのはいいカメラ持ってて撮るのが上手い人に任せます。

画像

箱が結構高級感あります。 ちなみに説明書だけで、イヤホンすら入っていないシンプルな内容物でした。

雑感

手持ちのKEONと比べるのはFx0に申し訳ないくらい快適に動いています。 ローエンドしかなかった端末に突如現れたSnapdragon 400のプロセッサとauLTEはとても良いです。

そこまで何に使うのかわかりませんが、最新のハイエンドプロセッサしか許せないような人も居るでしょう。 コンテンツが拡充され、今のRequirementsでは満たせないときにそういうデバイスがでるのかなとも思いますが、 「すべての人をWebへ」というFirefox OSの思想ではそういうものが出ることはないのかなと。 AndroidiOSもあるので「選択する」自由ですよ。

まとめ

もちろんアプリが増えてほしいとは思いますが、個人的にはこれ(Firefox OS 2.0)をメインで使えって言われても困らないかなという感じです。 Office 365(Exchange)のサポートはどうなってるんだとかもあります。

デバイスの完成度に満足したところで今度はFraminやPCでエディタを立ち上げて、アプリを作ってみるところに挑戦ですね。

今年買ったガジェットとかとかとか

この記事は ガジェ獣 Advent Calendar 2014 20日目の記事です。 unsolublesugarさんのカレンダーの埋め具合に感謝しております。

これを書いているということは、年が明けるまであと少しなわけです。 なので今年買ったガジェットを大体の価格とともに振り返って「良い買い物だった...」と思うなり「失敗だった...」と心のなかで思うなりして、来年のガジェットに備えたいと思います。

※ 締め切り間際、駆け足で書いているので画像はアドベントカレンダー公開後に差し込めるものは差し込んでいこうと思います。。。 ※ 準備不足でごめんなさい

買ったもの

HTC J One(HTL22) 0円

これは2月頃MNP祭をやってたときに購入しました。 HTC速報Devさんの記事を参考に、ドコモSIM刺せるようにして遊んだりと良い端末だったよ...あいつは...

5月頃に落として画面バッキバキに割れて、保障入ってなかったのでどうしよう...という状態が続いてます。 安く修理済みませんかね...

Surface Pro 2 約15万円

Surface Proから進化して良いものになった!でもずっと品切れだ!」と思ってる時に、3月頃手に入れたものです。 Surface Pro 3はスペック変わってないからこっちだな、と思って買ったらPro 3の使い勝手が向上していてもにょもにょしてますが、次のPro 4を待つんです!!

Xperia Z1f(ライム) 約5万円

小型でかつおサイフケータイがついてる端末が欲しくなって、ヤフオクで中古美品を入手。 サイズ感もスペックも申し分なくて、これでしばらくいいんじゃないかと思ってます。 思うだけなのでZ4 Compactが出たら欲しくなるんでしょうね。

SIMを認識するためのピンを折って、一度修理に出したので新品になりました。

Lumia 820 DevPhone + Toshiba Dynabook Tab VT484 10万円(参加費)

この2つは5月に参加した日本Microsoftのカンファレンスイベントde:codeで頂いたものです。 DevPhoneは眠りについてますが、タブレットのほうはPDFの電子書籍端末として活躍しています。

iPhone 5s 約5.5万円

ずっと使っていたメインのガラケー端末をスマホに変えようと思って、ドコモ機変かつ月サポが多く付いてそこまで高くない物を選択した結果がこれ。 SIMカードXperia Z1fに入れられてサブのSIMが入っています。

それにしてもTouch IDは便利ですね。 最近登録した指がどれでも認識してもらえないので悲しいです。

Misfit Shine 1.3万円

1個のボタン電池で動き、防水の運動量計。 あまり運動量計に見えないデザインでとても気に入っています。 若干残念なのは腕に付ける場合に泳いでいたり、腕に引っかかった場合に本体が落ちやすいということでしょうか。

って書いてる時に落とした疑惑出てきて(;´∀`)

Xbox One + Kinect(Day Oneエディション) 5.5万円

遅れて発売されたXbox Oneです。 ゲームがまだ多くないこととXbox Live Goldが切れているのでテレビ専用機になりつつありますが、これもMicrosoftの戦略...だった気がする。

Tern Link N8 7万円

Ingress熱が冷えた頃に街乗り用として購入した折りたたみ自転車です。 普段は玄関で折りたたんだ状態で、休日に近場に行くときに乗る感じです。 折りたたみとはいえ乗り心地は良く、10km程度なら苦もなく行けるのでいい感じなのですが如何せん最近寒いですね...

来年以降欲しい物

まとめ

今年使ったガジェットの類はだいたい50万前後となりました。 来年も色々と買って、簡単なレビューでもいいから増やしたいですね。 そして沼に一人でも多く...

最後に

12月20日は私の誕生日ですので、とりあえずウイッシュリスト貼っておきますね

なぜOffice 365を使い始めたか

本記事は Office 365 Advent Calendar 20日目の投稿です。

Office 365 Advent Calendar 2014 - Adventar

Office 365を2年ほど個人で利用していて、なぜ個人で使おうと思ったかについて書いていこうと思います。

きっかけ

Office 365を使うきっかけになったのは、Google Appsの無料プランでした。 大学院生だった自分は「独自ドメインってなんかカッコいいし、早速取ってGoogle Appsが無料だからメール運用してみっか」と2011年の冬あたりからやってみました。

しばらくは問題なかったように見えてたのですが、内定先の企業から「nana4gontaさんの登録しているメールアドレスは正しいものでしょうか?存在しないアドレスとして返ってきます」という連絡でした。 その前にも結果的に見れば広告メールとはいえ滞ったことがあり、自分の中でGoogle Appsの株が落ちていきました。 急いで内定先の企業との連絡用にはlive.jpのメールを使って、Google Appsはどうするかな、という気持ちになってました。*1 *2 そんなときに知人から「Office 365いいよいいよー」という話を聞いて、導入したのがきっかけです。

利用プラン

Office 365を使ってます、とは言ったものの現在の契約は「Exchange Online Plan 1」です。 Webサイトは考えずメールをGoogle Appsより安定して使いたいと思ったのでこれを契約しました。 先の知人からもメールだけならこれでいいんじゃない?と言われたことと、そのときの他の利用とかを鑑みた結果です。

ただ昨年、やっぱりOfficeアプリも使いたいということで「Office 365 Pro Plus」を追加しました。 ただこれだとあまりE3とほとんど料金的にも変わらないのに劣っている状態であること、同アドベントカレンダーの3日目の 星空は撫子色 | Office 365 のプランについておさらいしてみましょう を見て「Business Premium」が自分の用途に一番合ってるんじゃないかなと思い始めてます。

まとめ

短い内容でしたし、Googleをdisっているわけではないのですがメールだけなら330円/月で安心を得られたので、Office 365はとても良い選択だったと思います。 そして Office 365 Advent Calendar 2014 - Adventar としては異色だったかなと思いつつ締めたいと思います。

*1:気を利かせて連絡していただいた人事に感謝しています

*2:そしてこれが就活真っ只中でメールが届かないということにならなくてほっとしています