LoginSignup
26
26

More than 5 years have passed since last update.

modern.IEのダウンロードから起動までを自動で行うツール

Last updated at Posted at 2014-07-07

どんなツールか

modern.IEの仮想マシン (virtual machine, 以下VMと略) のダウンロードから起動までを自動で行うツールをGoで書いてみました。macのVirtualBox用です。

ソースは hnakamur/moderniedownloader にあります。
バイナリはReleases · hnakamur/moderniedownloaderにあります。

セットアップ

上記のバイナリのリンクからダウンロードして、以下のコマンドで実行パーミションをつけるだけです。

chmod +x moderniedownloader

使い方

使用可能なmodern.IE の種類の一覧を表示

$ ./moderniedownloader -L
IE6 - WinXP
IE8 - WinXP
IE7 - Vista
IE8 - Win7
IE9 - Win7
IE10 - Win7
IE11 - Win7
IE10 - Win8
IE11 - Win8.1

ダウンロードと起動

例えばIE11入りのWindows7のVMを起動したい場合は以下のようにします。

$ ./moderniedownloader "IE11 - Win7"

初回はVMの分割ファイルをダウンロード、ファイル結合、VM登録、VM起動を行うので時間がかかります。2回め以降は単に起動するだけなので早いです。

詳細な処理内容

  • VMタイプと同名のVMが登録されていなかったら
    • VMタイプと同名の*.ovaファイルが存在しなかったら
      • VMの分割ファイル (.sfxと.rar)をダウンロードして結合し.ovaファイルを作成します。(その後.sfxと*.rarは削除します)
        • .sfxと.rarは既に存在するファイルはスキップします。途中終了したりして不完全なファイルがある場合は、消してから再実行してください。
    • *.ovaファイルをインポートしてVMを作成します。
    • VMのDVDストレージにVirtualBox GuestAdditionsのDVDイメージをマウントします。
    • "Snapshot 1"という名前でスナップショットを作成します。
  • VMを起動します。
  • VMのクリップボード連携を双方向に設定します。

登録済みのVMの起動

例えばIE11入りのWindows7のVMを起動したい場合は以下のようにします。

$ ./moderniedownloader "IE11 - Win7"

つまり、ダウンロードして起動する場合と同じです。

登録済みのVMの一覧表示

$ ./moderniedownloader -l
IE11 - Win7

pecoで選択して起動

$ ./moderniedownloader "`./moderniedownloader -l | peco`"

Goで書いた経緯と感想

なぜGoで書きなおしたのか

バイナリ1つで配布できて便利なのと、Goの勉強を兼ねてという2つです。

modern.IEのOSX上のVirtualBox VMのダウンロードから起動までを自動化するスクリプト - Qiitaにも書きましたが、最初はbash scriptで実装し、その後Node.jsで実装しなおしました。でも、ヘッドレスブラウザでJavaScriptを解釈するのはページ内のJavaScriptエラーに弱いという欠点が見つかりました。

そこでHTMLファイル内のscriptタグからJSONの部分を正規表現で切り出して取得するようにしました。ただ、この方式ならNode.jsでなくても良いので、勉強を兼ねてGoで書きなおしてみたというわけです。

Goで書いてみた感想

Node.jsで書いた時はコールバックやPromiseを使って実装したのですが、やはりGoのほうが書きやすかったです。

分割ファイルをダウンロードする処理の並列化には、以下のページを参考にしました。ありがとうございます!

26
26
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
26