135yshr’s blog

仙台でプログラマーとてご飯を食べながら、CoderDojoを開催しております。

Minecraft から SIM を操作できたらおもしろそうだった

この記事は、SORACOMのSoftware Design誌巻頭特集記念リレーブログ 5/12分の記事です。

今回は、Go と Scratch と仙台がとても大好きな砂金(いさご)が書かせていただきます。
記事の内容は、ソラコム小熊さんが仙台にいらっしゃるということで思いつきで作ったので、SIMの情報を表示する機能しか実装されておりません。

そもそもどんなものかというと、Minecraft から SIM を有効にしたり、無効にしたり、破棄したりできたらおもしろそうだなぁと思い、作り始めたものでした。
このアイディアのベースになっているのは、MinecraftからDocker コンテナを操作するツールdockercraft です。
詳しくは紹介記事やREADMEがあるので、参考にしていただければと思います。 なお、前提条件として、ご使用になるOSでコンソール(コマンドラインなど)を使って、コマンドを実行してファイルを操作したり、情報を得たりする程度のスキルはあるものとします。

概要

使い方の前に作成したツールの概要から、名前をSlackraft(当初、SlackとDockerを組み合わせるツールとして作成していたため)といいます。
Docker上でCuberiteのサーバーが動作しており、CuberiteのプラグインからSORACOM APIプロキシ経由でSoracomプラットフォームの情報と連携しています。
Cuberite プラグインは、Mincraftが起動したときやステータスが変更されたときにSORACOM APIプロキシにステータス変更の情報を送り、SORACOM API を使ってSIMを操作します。
SORACOM API プロキシは、Dockerコンテナ内でローカルサーバーとして動作しており、データが送られるたびにSoracom API を使って、Soracomプラットフォームをやり取りします。

使い方

  1. Minecraftをインストールします
  2. Dockerをインストールします
  3. GitHubからslackraftのリポジトリを取得します
  4. Dockerコンテナを起動します
  5. MinecraftにMultiplayer用のサーバーを追加します

Minecraftのインストール

公式サイト からMinecraftを購入し、インストールしてください。

Dockerのインストール

公式サイトから使用するOSのDockerをダウンロードし、インストールしてください。 詳細なインストール手順は、Get Started with Docker for MacGet Started with Docker for WIndowsなどを参考におねがいします。

Slackraftリポジトリの取得

Git インストール済みの場合

Git をインストール済みの場合は、以下のコマンドを順に実行することでリポジトリを取得することができます。

$ git clone https://github.com/135yshr/slackcraft.git
$ cd slackraft    
$ git checkout -b sora1.1 refs/tags/sora1.1
$ docker build -t 135yshr/slackraft .

Git をインストールしていない場合

Git がインストールされていない場合は、ここからZIPファイルを取得して任意のディレクトリに展開してください。

  1. Slackraft の Githubにアクセスします
  2. Download ZIP ボタンをクリックして、リポジトリをダウンロードします
  3. ダウンロードしたZipファイルを任意のディレクトリに展開します

Docker コンテナの起動

以下のコマンドを実行して、Slackraft のコンテナを起動します。 SORACOM_EMAILSORACOM_PASSWORDには、SORACOM ユーザーコンソールで使用するメールアドレスとパスワードを設定してください。

$ docker run -t -i -d -p 25565:25565 \
    -e SORACOM_EMAIL=xxxx@example.com \
    -e SORACOM_PASSWORD=xxxxx \
    135yshr/slackraft

Multiplayer用サーバーの追加

いよいよ、MinecraftとSlackraftを連携させます。開始前の注意点としては、使用するMinecraft のバージョンを 1.8.x にすることです。1.9 以降のバージョンだとプロトコルが変更になっているため、Slackraft サーバーを見つけることができません。

  1. Minecraftを起動し、Multiplayer を選択してください。 f:id:yshr135:20160511174800p:plain

  2. Add server を選択します f:id:yshr135:20160511175208p:plain

  3. Server Address にdocker machine のIPアドレスを入力し、Doneを選択します

    docker-machine ip defaultで "default" という名前のdocker machine のIPアドレスを調べることができます f:id:yshr135:20160511175315p:plain

  4. 3.で追加したMultiplayer サーバーを選択します f:id:yshr135:20160511175923p:plain

成功すると…

SIM の数だけ蔵(コンテナ)が表示されます f:id:yshr135:20160511184918p:plain

ただただSIMの情報を見るだけの機能のみなので、おもしろみにかけますが、実際にSIMを破棄できるところまでは、おいおい実装していこうと思います。(お手伝いいただける方がおりましたら、Twitterや、Githubを通してご連絡いただけるとうれしいです。)

他の方々のようにコアな情報は載せていないのですが、お楽しみいただけましたでしょうか? 全く別の宣伝になってしまいますが、今週の土曜日(2016年5月14日)に東北大学カタールサイエンスキャンパスをお借りして、年に一度の Scratch 祭り Scratch Day 2016 in Sendai を開催します。近くの方がいらっしゃればぜひとも遊びにきてください。Scratch の体験会だけでなく、littleBits や 3DプリンタLEGO MINDSTORMS で遊ぶブースも用意しておきます。

f:id:yshr135:20160511192251j:plain