2017年12月11日月曜日

Minecraft PC 版のキャラスキンを変更してみた

概要

Minecraft の PC 版はキャラのスキンを自分で作成することができます
今回は NovaSkin というサービスを使って作成したスキンを設定するところまでやってみました

環境

  • macOS X 10.13.2
  • Minecraft 1.12.2

NovaSkin で独自のスキンを作成する

NovaSkin というサイトで一から独自のスキンを作成することができます
操作方法は参考サイトに記載のページがわかりやすいです

今回は Gallery からすでに作成済みのスキンを取得して設定してみます
適当に検索して好きなスキンを見つけて選択しましょう
novaskin1.png
とりあえず今回はピカチュウのスキンを選択しました

好きなスキン選択もしくは作成できたら右上の「Apply」を選択しましょう
すると以下のような画面になるので「Click here to open minecraft.net ant apply your skin」を選択しましょう
novaskin2.png

スキンを設定する

すると Minecraft の公式ページに飛ぶので自分の Minecraft アカウントでログインしましょう
するとスキンを変更する画面に飛んでくれるのでここで「Change」を選択します
novaskin3.png

すると以下のような感じでスキンの変更が完了します
novaskin4.png

ちなみに png データを直接ダウンロードして Minecraft launcher から png ファイルを設定することも可能です
novaskin6.png

動作確認

実際に Minecraft を起動してスキンが変更されているか確認してみましょう
マシンがネットに接続されている状態であれば問題なくスキンがカスタマイズできていると思います
novaskin5.png

最後に

Minecraft PC 版のスキンを変更する方法を紹介しました
今回は NovaSkin というサービスを使ってスキンを変更しました
元のデータは png 情報なので頑張って自分で png 情報を作成しても OK です
が、いろいろ面倒なのでそういったジェネレート系のサービスを活用することをおすすめします

参考サイト

2017年12月10日日曜日

Minecraft に Raspberry Jam Mod をインストールしてプログラミングしてみる

概要

前回 Minecraft 上に Forge という mod を管理するための mod をインストールしました
今回は更に Raspberry Jam Mod をインストールしてプログラムで Minecraft を操作してみたいと思います

環境

  • macOS X 10.13.2
  • Minecraft 1.12.2
  • Forge 1.12.2 - 14.23.1.2555
  • Raspberry Jam 0.93
  • Ruby 2.4.1p111
  • minecraft-pi-ruby 0.0.1

Raspberry Jam Mod のインストール

まずは Github 上にある zip ファイルをダウンロードしましょう
install_raspberry_jam1.png

mods.zip をダウンロードすれば OK です
ダウンロードできたら解凍しましょう
すると Minecraft のバージョンごとに Jar ファイルが展開できます
これを Forge の mods ディレクトリ配下にコピーします( zip ファイルを直接置いてもいいよみたいな紹介記事がありますが Jar に展開しないとダメでした)

  • cp ~/Downloads/1.12.2/RaspberryJamMod.jar ~/Library/Application\ Support/minecraft/mods/

これで OK です
Forge プロファイルで Minecraft を起動しましょう
Mods の一覧を確認すると Raspberry Jam Mod がちゃんとインストールされているのを確認できると思います
install_raspberry_jam2.png

新規でワールドを作成する

テスト用のワールドを作成しましょう
ワールドはクリエイティブモードで作成することをオススメします
が、サバイバルでもハードコアでも OK です

Ruby スクリプトを作成する

ではプログラミングしていきましょう

  • bundle init
  • vim Gemfile
gem "minecraft-pi-ruby"
  • bundle install --path vendor
  • vim test.rb
require 'minecraft-pi-ruby'

mc = Minecraft.new
mc.say 'Ruby Test!'
  • bundle exec ruby test.rb

ワールドは開いた状態にしておきましょう
F3 + P で非アクティブになったときにポーズしないようにするとデバッグしやすいと思います
実行して成功すると以下のようにゲーム側にメッセージが表示されます
install_raspberry_jam4.gif

ちなみに get_player_position というメソッドが使いたい場合は Gemfile に

gem "minecraft-pi-ruby", github: "eaglestone/minecraft-pi-ruby"

と書いてから bundle install してください

最後に

Raspberry Jam Mod を使ってマイクラの世界を Ruby から操作できるようにしてみました
mod とは違いカスタマイズできるものではありませんが人の行動やブロックの生成など自動化したりすることができます

詳しい API ドキュメントはここなど Web を探せばいろいろサンプルも出てきます

既存のワードでも動かすことができるので自分の自慢のワールドをこれでガンガン自動化していきましょう

2017年12月9日土曜日

Minecraft 1.12 で Forge をインストールする方法

概要

Minecraft で mod を使うための下準備編となります
Minecraft 自体の購入方法はインストールについては前回の記事を参考にしてください

環境

  • macOS X 10.13.2
  • Minecraft 1.12.2
  • Forge 1.12.2 - 14.23.1.2555
    • Optifine 1.12.2_HD_U_C7

インストーラをダウンロードする

公式からダウンロードしましょう
今回は Recommended からダウンロードします
Windows の場合はインストーラが用意されていますが Mac の場合は Minecraft 本体と同じで Jar ファイルをダウンロードします
「Installer」のボタンからダウンロードしましょう
install_mc_forge1.png

今回は forge-1.12.2-14.23.1.2555-installer.jar という名前の Jar ファイルがダウンロードできました

Forge のインストール

ダウンロードした Jar ファイルをダブルクリックすれば OK です
セキュリティの警告が出てダブルクリックで開けない場合は右クリックから開くで開きましょう

開くと以下のような画面になるので OK を選択します
今回はデフォルトの設定のまま進みます
install_mc_forge2.png

ダウンロードがいろいろと始まります
install_mc_forge3.png

Complete 画面になればインストール完了です
指定したパスに Forge がインストールされています

local:~ hawksnowlog$ ls -ltr ~/Library/Application\ Support/minecraft/
total 1592
-rw-r--r--   1 hawksnowlog  staff   71984 11 25 17:40 nativeUpdaterLog.txt
drwxr-xr-x   5 hawksnowlog  staff     160 11 25 17:48 assets
drwxr-xr-x   2 hawksnowlog  staff      64 11 25 17:53 resourcepacks
-rw-r--r--   1 hawksnowlog  staff     118 11 25 17:53 realms_persistence.json
drwxr-xr-x   3 hawksnowlog  staff      96 11 25 20:56 saves
-rw-r--r--   1 hawksnowlog  staff     111 12  7 22:50 usercache.json
-rw-r--r--   1 hawksnowlog  staff     714 12  8 09:53 nativelog.txt
drwxr-xr-x  37 hawksnowlog  staff    1184 12  8 09:54 logs
-rw-r--r--   1 hawksnowlog  staff    2044 12  8 09:55 options.txt
-rw-r--r--   1 hawksnowlog  staff  595886 12  8 09:55 launcher_log.txt
drwxr-xr-x   4 hawksnowlog  staff     128 12  8 10:03 versions
drwxr-xr-x  13 hawksnowlog  staff     416 12  8 10:03 libraries
-rw-r--r--   1 hawksnowlog  staff    1111 12  8 10:04 launcher_profiles.json
local:~ hawksnowlog$ ls -ltr ~/Library/Application\ Support/minecraft/versions/
total 0
drwxr-xr-x  4 hawksnowlog  staff  128 12  8 09:54 1.12.2
drwxr-xr-x  3 hawksnowlog  staff   96 12  8 10:04 1.12.2-forge1.12.2-14.23.1.2555

Forge のインストールを確認する

インストール後 Minecraft Launcher を起動しましょう
するとプレイの選択一覧に Forge が選択できるようになっています
変更して起動してみましょう
install_mc_forge4.png

Forge で起動すると以下のような画面になります
install_mc_forge5.png
「Mod」のボタンが増えているのがわかると思います

試しに mod を追加してみる

何がいいかなーと思ったのですが「Optifine」という mod をインストールすることにしました
あまりゲームには影響しない支援系の mod でマイクラ自体を軽量化するための mod です

まず Optifine の公式サイトにアクセスしましょう
そして自分のマイクラのバージョンにあった mod をダウンロードします
今回は「OptiFine 1.12.2 HD U C7」から「OptiFine_1.12.2_HD_U_C7.jar」をダウンロードしました
install_mc_forge6.png

Jar がダウンロードできたら Forge が mod を管理するの指定のディレクトリに Jar を配置しましょう

  • cp ~/Downloads/OptiFine_1.12.2_HD_U_C7.jar ~/Library/Application\ Support/minecraft/mods/

これだけで Forge 上に Optifine mod がインストールされます
再度 Minecraft を Forge プロファイルで開きましょう
そして、ビデオ設定に進むと以下のように Optifine が有効になった状態だと言うことがわかります
install_mc_forge9.png

が何故かここで疑問だったのですが、Forge プロファイルで起動した際のトップ画面にある Mod の一覧には Optifine が含まれていません
どういう条件でこの一覧に含まれるかは不明ですが Optifine は出てきませんでした
それでもビデオ設定行くと Optifine が適用された状態になっていました

おまけ Optifine 個別でインストールする方法

実は Forge がなくても Optifine をインストールすることができます
Forge をインストールしたときに新規でプロファイルが作成されましたがそれと同様に Optifine 用のプロファイルを作成することで Optifine mod のみが動作する環境も作れます

Jar をダブルクリックして開きましょう
すると Optifine のインストール画面が起動するのでそのままインストールを進めましょう
このとき先ほど Forge インストール時に指定した Minecraft のパスと合っているか確認してください
問題なければ「Install」を選択しましょう
install_mc_forge7.png

これで再度 Minecraft を起動してみましょう
このとき Forge のプロファイルではなく Optifine のプロファイルが追加されているのでそちらを選択します
install_mc_forge8.png

そして設定からビデオ設定を選択すると Optifine で拡張された設定項目が追加されていることが確認できると思います
install_mc_forge9.png

これで Optifine を個別プロファイルでインストールすることができました
Forge は不要で Optifine mod だけでプレイしたい場合にはこちらの方法を使ってみてください

最後に

Minecraft に Forge という mod をインストールしてみました
Forge 自体は mod をインストールしやすくする mod みたいなものなので、そこまでゲームに直接影響する mod ではないです
今後 mod を使ってプログラムするための下準備でもあるのでその方法を紹介しました

おまけで Optifine mod のインストール方法も紹介しました
指定のディレクトリに Jar を追加するだけで Forge 上に mod を追加できるので非常に簡単に mod を追加できます

次回は Raspberry Jam mod を Forge 上にインストールして Minecraft でプログラムできる環境を構築したいと思います

参考サイト

2017年12月8日金曜日

Blogger でブログカードを使う方法

概要

ブログカードとは簡単に言えばかっこいいリンクのことです
こんな感じです

環境

  • Blogger 2017/12/07 時点
  • ShareHtml も同様

ShareHtml を使う

ShareHtml というサービスを使います
ここにブログカード化したい URL を入力しましょう

すると HTML と CSS が吐かれます
まずは CSS を Blogger に登録する必要があります

CSS を登録する

Blogger の管理画面から

テーマ -> カスタマイズ

と選択します
するとテンプレートをカスタマイズできる画面になるので

上級者向け -> CSS を追加

と選択します
そこに先ほど ShareHtml から取得した CSS 情報をペーストすれば OK です
blogger_blogcard1.png

「ブログに適用」選択して戻りましょう

あとは HTML を貼り付けるだけ

新規投稿画面にそのまま HTMl を貼り付ければ OK です
ちなみに自分は StackEdit から投稿していますが、StackEdit でそのまま HTML を貼り付けて投稿してもうまく表示されなかったので、StackEdit の場合は投稿後に直接管理画面から HTML を貼り付けるしかなさそうです

最後に

ShareHtml を使って Blogger でブログカードを作成する方法を紹介しました
他にもブログカードを作れるサービスはあるのでデザインが気に食わないなら変えてみるのもいいと思います
はてなブログなどがあるみたいです

というかそもそも Blogger 自体でブログカード機能をホスティングしてほしいものです

2017年12月7日木曜日

slack-ruby-bot で作成したボットを heroku にデプロイしてみる

概要

前回まででイベント API と普通のボットの開発を行いました
これまでは localhost で動作させていましたが永続的に稼働させたい場合はサーバが必要になります
Heroku 上で動かすことができたので今回はその方法を紹介したいと思います

環境

  • macOS X 10.13.1
  • ruby 2.4.1p111
  • slack-ruby-bot 0.10.5

ボットスクリプト

前回から少し改良だけ完了しましょう
トークン情報を環境変数で設定できるように修正します

require 'slack-ruby-bot'

server = SlackRubyBot::Server.new(
  token: ENV["TOKEN"],
  hook_handlers: {
    message: [->(client, data) { puts "メッセージを受信しました" }]
  }
)
server.run

Gemfile の作成は前回通り行っておきましょう
これで OK です

heroku 上にアプリを作成する

コマンドでも画面からでも OK です
アプリを作成しましょう

  • git init
  • git commit -m "first commit"
  • heroku login
  • heroku git:remote -a test-bot

今回は test-bot というアプリを作成しました
とりあえず git リモートに heroku を追加するところまでやりましましょう

Procfile を作成する

今回の肝です
Procfile に heroku 上でボットを動作させるためのコマンドを記述します

  • vim Procfile
bot: bundle exec ruby bot.rb

作成したらコミットしましょう

  • git commit -m "add Procfile"

デプロイする

では heroku 上にコードや設定ファイルをデプロイしましょう

  • git push heroku master

で push したらトークン用の環境変数を設定します

  • heroku config set TOKEN=xoxb-111111111111-xxxxxxxxxxxxxxxxxxxxxxxx

web アプリではないので push しただけではデプロイされません
scale コマンドがあるのでそれでデプロイします

  • heroku ps:scale bot=1

これでボットが起動するはずです
チャネルに話かけて heroku 上にデプロイしたボットから返事があるか確認してみましょう

最後に

slack-ruby-bot で作成したボットを heroku 上で起動させてみました
他にもコンテナを使うなどいろいろと方法はありますが今回は Procfile を使った方法を紹介しました

2017年12月6日水曜日

slack-ruby-bot でイベント API を使う方法

概要

過去に Ruby + slack-api というライブラリを使ってリアルタイム API を試しました
それと同じことが slack-ruby-bot でもできるので試してみました
基本はイベントに応じて反応するボットを作成すれば OK です
Slack のイベント API で使えるイベントの一覧はこちらです

環境

  • macOS X 10.13.1
  • ruby 2.4.1p111
  • slack-ruby-bot 0.10.5

事前準備

前回の記事を参考にボットをチャネルに追加するところまで完了してください
今回作成するボットも同じチャネルでテストします
ちがうチャネルでボットをテストする場合はちゃんと invite してからメッセージを送ったりして試しましょう

メッセージのイベントに反応してみる

まずはメッセージ送信時にボット側のサーバに適当にロギングする処理を書いてみましょう

  • vim message_event.rb
# coding: utf-8
require 'slack-ruby-bot'

server = SlackRubyBot::Server.new(
  token: 'xoxb-111111111111-xxxxxxxxxxxxxxxxxxxxxxxx',
  hook_handlers: {
    message: [->(client, data) { puts "メッセージを受信しました" }]
  }
)
server.run

SlackRubyBot::Server クラスのインスタンスを作成します
その際に Bots インテグレーションで取得した API Token を指定します
また、hook_handlers を使って各イベント時に処理する内容を記載することもできる
今回は message イベントが発生したときにメッセージを出力しています
では実行してみましょう

  • bundle exec ruby message_event.rb

起動してボットがいるチャネルで何でもいいので発言してみましょう
するとプロンプトに puts のメッセージが表示されるのが確認できると思います

D, [2017-12-06T14:46:55.363616 #33653] DEBUG -- SlackRubyBot::Client#dispatch: channel=C1QD3RVNZ, source_team=T1QDA7KG9, team=T1QDA7KG9, text=a, ts=1512539214.000227, type=message, user=U1QDESGLS
メッセージを受信しました

イベントの反応時に独自クラスを使用する

先ほどのサンプルではイベント発生時にクロージャを使って処理を実装しました
複雑な処理をさせたいときには独自のクラスを作成してそのクラス内に処理を記載することができます

  • vim message_event.rb
# coding: utf-8
require 'slack-ruby-bot'

class Bot
  def call(client, data)
    puts data
  end
end

server = SlackRubyBot::Server.new(
  token: 'xoxb-111111111111-xxxxxxxxxxxxxxxxxxxxxxxx',
  hook_handlers: {
    message: Bot.new
  }
)
server.run

クラスを作成し call というメソッドを実装するとそれを勝手にコールバックメソッドとして実行してくれます
そしてそのクラスのインスタンスを先ほどクロージャで指定した部分に置き換えれば OK です
実行してチャネルにメッセージを送信する以下のようにメッセージのデバッグ情報が出力されると思います

channel=C1QD3RVNZ, source_team=T1QDA7KG9, team=T1QDA7KG9, text=b, ts=1512539887.000130, type=message, user=U1QDESGLS

ボットにチャネルへ返信させる

今度は puts デバッグではなくオウム返しでメッセージを返信させたいと思います

vim message_event.rb

# coding: utf-8
require 'slack-ruby-bot'
SlackRubyBot::Client.logger.level = Logger::WARN

class Bot
  def call(client, data)
    client.say(text: data.text, channel: data.channel)
  end
end

server = SlackRubyBot::Server.new(
  token: 'xoxb-111111111111-xxxxxxxxxxxxxxxxxxxxxxxx',
  hook_handlers: {
    message: Bot.new
  }
)
server.run

client.say を使います
引数に送信するメッセージとメッセージを送信するチャネル情報を設定します
ちなみに data は Slack::Messages::Message というクラスのオブジェクトになっています
text フィールドにメッセージが入っているのでそれを使ってオウム返しします

これで実行してメッセージを送ってみると送ったメッセージがそのまま返ってくるようになると思います
slack_ruby_bot_rtm1.png

最後に

slack-ruby-bot を使ってイベント API を使って見ました
SlackRubyBot::Server を使うのがポイントかなと思います
他にもいろんなイベントがあるので自分がやりたいことに合わせてイベントを選択してください

2017年12月5日火曜日

Ruby で Slack の bot を作成してみた

概要

Slack で Bot を開発するのは Hubot が有名ですが Ruby を使って Bot を作成することも可能です
設定から簡単な使い方まで紹介したいと思います

環境

  • CentOS 7.3.1611
  • ruby 2.3.3p222
  • gem 2.6.11
  • slack-ruby-bot 0.10.5

Bots のインテグレーションを追加する

まずはインテグレーションを追加しましょう
Bots を登録するページに移動して「Add Configuration」を選択します
slack_with_ruby_bot1.jpg

Bot の名前を設定する画面になるので好きなボット名を設定し「Add bot integration」を選択します
slack_with_ruby_bot2.jpg

これで Bots インテグレーションの追加が完了です
表示されている API Token をあとで使うのでメモしておきましょう
slack_with_ruby_bot3.jpg

slack-ruby-bot を使って Bot を作成する

今回は Ruby で Bot を作成します
公式が出しているライブラリがあるので素直に使いましょう

  • bundle init
  • vim Gemfile
gem "slack-ruby-bot"
gem "celluloid-io"
  • bundle install --path vendor

でライブラリのインストールは完了です

Bot を作成する

まずは簡単なピンポンを行うだけの Bot を作成しましょう

  • vim bot.rb
require 'slack-ruby-bot'

class PongBot < SlackRubyBot::Bot
  command 'ping' do |client, data, match|
    client.say(text: 'pong', channel: data.channel)
  end
end

PongBot.run

こんな感じです
command 関数の引数で Bot が反応するコマンドと実際に Bot が処理する内容をブロック内で実装するだけです
Bot が返事をするときは client.say を使います
返事の内容と返事をするチャネルを指定します

ではサーバ上で実行までしてみましょう
先程取得した API Token はここで使います

  • export SLACK_API_TOKEN=”xoxb-111111111111-xxxxxxxxxxxxxxxxxxxxxxxx”
  • bundle exec ruby bot.rb

ずらずらーっとログが流れると思います
エラーが出なければ OK です
起動したら動作確認してみましょう
Bot を追加したいチャネルに invite して話かけてみましょう

slack_with_ruby_bot4.jpg
こんな感じで動作すると思います

画像を投稿するように修正してみる

以下のような感じに修正してみましょう
画像は自分の Twitter のアイコンなので好きな画像の URL に変更してください

  • vim bot.rb
require 'slack-ruby-bot'

class PongBot < SlackRubyBot::Bot
  command 'ping' do |client, data, match|
    client.say(text: 'pong', channel: data.channel)
  end
  command 'logo' do |client, data, match|
    url = 'https://pbs.twimg.com/profile_images/712848447569661952/ayfI9-77.jpg'
    client.say(text: url, channel: data.channel)
  end
end

PongBot.run

一旦停止して再度 Bot を起動しましょう
今後は「logo」というコマンドが通るようになります
slack_with_ruby_bot5.jpg

最後に

Slack の Bot を Ruby で作成してみました
かなり簡単に作成することができました

今回は Getting Started 的な内容しか紹介していません
他にもエイリアスを張ったりオペレータオーバライド的なことをして計算機などを作ったりもできるようなので興味があれば以下のサイトを見てください

Slack で Bot を作るのは Hubot が有名ですが Ruby でも簡単に作成できるので今後は Ruby で Bot を作成しようかなと思います

参考サイト