ども私です。今朝方、「私のパソコンからインターネットがなくなりました」というメールをいただきました。すごく大変ですね。どう突っ込めば良いのか10分ほど悩みました。
さて、今日はElite Dangerousの外部ツールのTradeDangerousについて書こうかと思います。
前回のエントリーで紹介したツール類は、外部のサービスですが、今回紹介するのは、python3で書かれたプログラムになります。さらにコマンドラインで使うツールなので、ブラウザでアクセスして簡単に使うという事は出来ず、動かすまでにわりと敷居が高いツールになります。
今回はTradeDangerousのインストールから、簡単な動作チェックまでを行いたいと思います。
TradeDangerousとは
公式サイト?: https://bitbucket.org/kfsone/tradedangerous/wiki/Home
TradeDangerousは、Elite Dangerousの交易を強力に最適化するパワフルな交易ツールだ!って書いてあります。確かにパワフルではあるんですがね。
python3が動く環境を用意する
まずTradeDangerousはpython3が動けば、OSは問わないようなので、python3が動く環境を用意するところから始めます。
- Windows: https://www.python.org/downloads/ ここからダウンロード。64bit版を強く推奨されてる。
- Mac OSX: OSXに標準で入っているpythonは2系なのでpython 3系をインストールする必要があります。homebrewなんかで入れると良いと思います。MacPortsでインストールしようとしましたが、MacPortsが動かなかったので、私は断念。
- Linux: yumなりapt-getなり好きにしてください。私はubuntu 16.04 serverを用意しましたが、標準でpython3が入ってました。
TradeDangerousをインストールする
インストールする方法は2つ。
- 最新版をスナップショットからダウンロードする
- gitリポジトリをcloneして持ってくる
gitの意味がわからなかったら、素直に最新版をスナップショットからダウンロードしてきましょう。ダウンロードしたら、適当なディレクトリに展開します。
git から持ってくる場合は、以下のとおり。
$ git clone <a href="https://bitbucket.org/kfsone/tradedangerous.git">https://bitbucket.org/kfsone/tradedangerous.git</a> Cloning into 'tradedangerous'... remote: Counting objects: 10142, done. remote: Compressing objects: 100% (4061/4061), done. remote: Total 10142 (delta 7036), reused 8935 (delta 6066) Receiving objects: 100% (10142/10142), 10.02 MiB | 2.16 MiB/s, done. Resolving deltas: 100% (7036/7036), done. Checking connectivity... done.
tradedangerousというディレクトリが出来るはずなので、そちらへ移動します。
$ cd tradedangerous
データを用意する
ローカルで動くプログラムなので、検索に使うデータを自前で用意しないといけません。とは言え、0から自分でデータをかき集めるというのは無理な話なので、公開されているデータを使うことにします。tradedangerous用にデータを公開している、maddavoさんのところからデータを持ってくるようにします。
$ python3 trade.py import --plug=maddavo --opt=systems --opt=stations
結構時間かかります。初回実行時は、300MBぐらいデータを持ってきていました。
上記のコマンドで、system、station、そして交易のデータがひとまず揃いました。これで準備は完了ですが、上記のコマンドは頻繁に実行数ものではありません。サーバに対して、負荷が強いです。なので、せめて1日1回程度にとどめておくべきだと思います。
自前でデータを更新することも可能です。その時に使えるのが、E:D Market Connectorで、ローカルにTradeDangerous用のデータを出力することが可能です。TradeDangerousから利用する場合は、TradeDangerousにデータをインポートする必要があります。
しかし、わりと面倒だし、そこまでElite Dangerousのサーバデータは頻繁に更新されないので、ローカルデータの自前での反映はしなくてもいいかなと思います。
動作チェックと実行例
wikiに書いてあるコマンドを試してみます。
$ python3 trade.py run --from "Mokosh/Bethe Station" --credits 20000 --capacity 16 --ly-per 8.56 MOKOSH/Bethe Station -> ANAPOS/Remek Platform MOKOSH/Bethe Station: 16 x Power Generators, BD+23 3151/Bamford Ring: 16 x Tea, ANAPOS/Remek Platform +15,280cr (477/ton)
1行目がそのコマンド。予算20,000Crで、cargo sizeが16、MokoshのBethe Stationから8.56の距離でトレードした場合の、ルートを検索しています。
2行目がスタート地点と、ゴール地点。3行目、4行目が何を売買するかですね。5行目は、ゴール地点と利益を表示しています。
評価
さてこのプログラムなのですが、pythonで書かれているためか、かなり遅いです。またコマンド実行に必要なオプションが、結構多いので、wrapperプログラムなどを自前で用意しないと辛いと思います。
TradeDangerous用のGUIフロントエンドがあるらしいのですが、X.orgが動かない、ubuntu serverで環境を用意したため、私は試していません。
コマンドラインで実行可能なのが、素敵なところなので、コマンドラインに抵抗がなく、いろいろデータを調査したい、もっと複雑な検索がしたいなどの要求を持っている人にはオススメします。それ以外の人は、素直に外部のサービスを使いましょう。
と言ったところで、今日はここまで。