Splatoon2 試射会をちょっと力入れてやってみた

これは、わずか1時間の試射会のために、ちょっと力を入れてイベントやってみた記録である。

発端

発端は、悪ノリである。

Splathonコミュニティの面々に

「Speeeラウンジで Switch 持ち寄って試射会やりません??」

と募ってみた結果、14名11台の Switch が集まった。

スケジュール

当日の段取りはこんな感じ。

  • 11:00 集合
  • 11:00 ~ 11:50 設営&自由時間
  • 12:00 ~ 13:00 試射会
  • 13:00 ~ 16:30 ご飯食べながら ボンバーマンやぷよテト
  • 17:00 片付け→撤収

用意したもの

用意したのはイカ

  • 会場
  • モニター
  • プロジェクター
  • 各種ケーブル (電源タップ、HDMI、LANケーブル)
  • 飲食物 (🍕 、オードブル、🎂 、アルコール、☕ )

設営の様子

射会

みんなもくもくとプレイ。

なかには配信機材持ち込んでプレイするイカたちも!!

その他コンテンツ

想像以上に盛り上がったのが、ボンバーマン8人対戦とぷよテト4人対戦

ボンバーマンはオンラインだとラグるということだが、今回は1台のSwitchに8つのJoy-Con繋いでの対戦なので問題なし。

全プレイヤーを同じカラーに設定して、スタート位置をランダムにしたルールは中々にカオスなので、ぜひとも体験してみてもらいたい。

射会やってみて

過去の Splathon では、ネットワーク不良が度々発生したので、有線LANも用意したけどもゲスト用Wifiだけで問題なく乗り切れた。

WiiU はチャンネル数の関係から、8台も集めると簡単に混線したりしたんだけど、Switch はまったくその気配はなかった。

今後の Splathon にむけての混線確認を兼ねてたので、11台程度では混線がまったくなかったのは一安心。

あと、地味に大きいのが電源問題。

WiiU だと、ディスプレイ、WiiU本題、ゲームパッド充電で3口*1必要だったけど、Switchなら2口で済む。

混線問題と電源問題。これらが解消されると会場レイアウトに幅が持たせられるし、同時開催試合数も増やせたりといいことづくめだ。(運営のツラミはいったん置いとく)

発売までに1, 2回くらい試射会やるのでは?? と睨んでるので、また需要があるようならやってみたい。

Splathon 関連の過去記事

*1:こういった商品もあるけども

itamae 生活 5日目

前回 itamae-plugin-recipe-rbenv に Pull Request 出して終わった。

今日はその後どうなったかを


当初

EC2(Amazon Linux) の環境下で itamae 実行したときに dependency.rbelse 節の3つしか install されてなかったので、 node[:platform] に値の設定が必要なのでは?

と考えていた。

なので、 node.ymlplatform: redhat を追記することで対処していた。

んで、 README に追記するような Pull Request を出した。

github.com

k0kubun さんからレス

https://github.com/k0kubun/itamae-plugin-recipe-rbenv/pull/16#issuecomment-267210349

レシピのバグで、AmazonLinux 使った際に node[:platform] = amazon という値が入ってくるのだけど、 case when の判定の漏れてるという内容。

修正コミット→マージ

この修正 を加えて手元で試したところ、無事 install されたので Pull Request の内容を修正して Push して無事マージされた。


itamae-pluglin を使った rbenv の install は、環境変数などの設定含めてこんな感じにしてみた。

include_recipe 'rbenv::system'

file '/home/ec2-user/.bashrc' do
  action :create
end

file '/home/ec2-user/.bashrc' do
  action :edit
  block do |content|
    next if content.match %r{export RBENV_ROOT=/usr/local/rbenv}
    appendix = <<~EOS
      # rbenv
      export RBENV_ROOT=/usr/local/rbenv
      export PATH="${RBENV_ROOT}/bin:${PATH}"
      eval "$(rbenv init -)"
    EOS
    content << appendix
  end
end

itamae 生活 4日目

itamae 生活4日目

前回 謎エラーの暫定対処ができたので、本線に戻る。

Today's Goal

  • rbenv で ruby を入れる

bundler 環境に切り替える

ここまで itamae はグローバルな gem に入れていたが、 rbenv は plugin で入れようを思うので、この際 bundler 環境に移行する。

itamae init で Gemfile も併せて作られているので、そちらに前回のエラー暫定対処を踏まえて thor のバージョンを v 0.19.1 を上限に指定する。

source 'https://rubygems.org'

gem 'itamae'
gem 'itamae-plugin-recipe-rbenv'
gem 'thor', '<= 0.19.1'

んで、 bundle install お好みで --path オプションもどーぞ

rails ロール作成

今回は rails という role を作った

$ bundle exec itamae g role rails
      create
      create  default.rb
      create  files/.keep
      create  templates/.keep

roles/rails/default.rb

まずは、 roles/rails/default.rb に以下1行だけ

include_recipe 'rbenv::system'

node.yml

どこに置くのが適切か判断つかなかったので、 roles/rails/node.yml とした

README にはオプション設定含めつらつらと書いてあるが、Ruby v2.3.3 を入れる最小は以下なのかな。

scheme も default git になるので削れそうではある

rbenv:
  global:
    2.3.3
  versions:
    - 2.3.3

  scheme: https

Execution

しかしエラー...

$ bundle exec itamae ssh -h xx.xx.xx.xx -i ~/.ssh/hogepiyo.pem -u ec2-user -y roles/rails/node.yml roles/rails/default.rb

 INFO : Starting Itamae...
 INFO : Loading node data from /Users/kawakubox/Workspace/generic-recipe/roles/rails/node.yml...
 INFO : Recipe: /Users/kawakubox/Workspace/generic-recipe/roles/rails/default.rb
 INFO :   Recipe: /Users/kawakubox/Workspace/generic-recipe/vendor/bundle/ruby/2.3.0/gems/itamae-plugin-recipe-rbenv-0.6.3/lib/itamae/plugin/recipe/rbenv/system.rb
 INFO :     Recipe: /Users/kawakubox/Workspace/generic-recipe/vendor/bundle/ruby/2.3.0/gems/itamae-plugin-recipe-rbenv-0.6.3/lib/itamae/plugin/recipe/rbenv/install.rb
 INFO :       Recipe: /Users/kawakubox/Workspace/generic-recipe/vendor/bundle/ruby/2.3.0/gems/itamae-plugin-recipe-rbenv-0.6.3/lib/itamae/plugin/recipe/rbenv/dependency.rb
 INFO :       execute[rbenv install 2.3.3] executed will change from 'false' to 'true'
ERROR :         stdout | Installing ruby-2.3.3...
ERROR :         stdout |
ERROR :         stdout | [1mBUILD FAILED[m (Amazon Linux AMI 2016.09 using ruby-build 20161121-14-gd799bdd)
ERROR :         stdout |
ERROR :         stdout | Inspect or clean up the working tree at /tmp/ruby-build.20161214144733.28704
ERROR :         stdout | [33mResults logged to /tmp/ruby-build.20161214144733.28704.log[m
ERROR :         stdout |
ERROR :         stdout | Last 10 log lines:
ERROR :         stdout | config.sub already exists
ERROR :         stdout | checking build system type... x86_64-pc-linux-gnu
ERROR :         stdout | checking host system type... x86_64-pc-linux-gnu
ERROR :         stdout | checking target system type... x86_64-pc-linux-gnu
ERROR :         stdout | checking for gcc... no
ERROR :         stdout | checking for cc... no
ERROR :         stdout | checking for cl.exe... no
ERROR :         stdout | configure: error: in `/tmp/ruby-build.20161214144733.28704/ruby-2.3.3':
ERROR :         stdout | configure: error: no acceptable C compiler found in $PATH
ERROR :         stdout | See `config.log' for more details
ERROR :         Command `  export RBENV_ROOT=/usr/local/rbenv
  export PATH="/usr/local/rbenv/bin:${PATH}"
  eval "$(rbenv init --no-rehash -)"
  rbenv install 2.3.3` failed. (exit status: 1)
ERROR :       execute[rbenv install 2.3.3] Failed.

README をまるっとコピペしても動かなかったので、うんうん唸ってたんですが rbenv::dipendency を眺めていてハッと思いついた。

platform: redhat   # <-- 追記

rbenv:
  global:
    2.3.3
  versions:
    - 2.3.3

  scheme: https

再度実行

$ bundle exec itamae ssh -h xx.xx.xx.xx -i ~/.ssh/hogepiyo.pem -u ec2-user -y roles/rails/node.yml roles/rails/default.rb

 INFO : Starting Itamae...
 INFO : Loading node data from /Users/kawakubox/Workspace/generic-recipe/roles/rails/node.yml...
 INFO : Recipe: /Users/kawakubox/Workspace/generic-recipe/roles/rails/default.rb
 INFO :   Recipe: /Users/kawakubox/Workspace/generic-recipe/vendor/bundle/ruby/2.3.0/gems/itamae-plugin-recipe-rbenv-0.6.3/lib/itamae/plugin/recipe/rbenv/system.rb
 INFO :     Recipe: /Users/kawakubox/Workspace/generic-recipe/vendor/bundle/ruby/2.3.0/gems/itamae-plugin-recipe-rbenv-0.6.3/lib/itamae/plugin/recipe/rbenv/install.rb
 INFO :       Recipe: /Users/kawakubox/Workspace/generic-recipe/vendor/bundle/ruby/2.3.0/gems/itamae-plugin-recipe-rbenv-0.6.3/lib/itamae/plugin/recipe/rbenv/dependency.rb
 INFO :         package[gcc] installed will change from 'false' to 'true'
 INFO :         package[gdbm-devel] installed will change from 'false' to 'true'
 INFO :         package[libyaml-devel] installed will change from 'false' to 'true'
 INFO :       execute[rbenv install 2.3.3] executed will change from 'false' to 'true'
 INFO :       execute[rbenv global 2.3.3] executed will change from 'false' to 'true'

やったね♪


同じミスが減るように README にプルリク投げてみた。 どうなるかな〜

github.com

itamae 生活3日目

引き続き itamae です。

kawakubox.hatenablog.com

kawakubox.hatenablog.com

Today's Goal

前回は眠さに負けたので、 Rails環境構築までを目指す。

Result

突然 itamae の help コマンドが動かなくなるという状況に陥り、2日ほど進展せず。

itamae が依存する gem を疑い始め、エラーログにも出てる thor あたりから追いかけ始める

bundler: failed to load command: itamae (/Users/kawakubox/Workspace/generic-recipe/vendor/bundle/ruby/2.3.0/bin/itamae)
NoMethodError: undefined method `upcase' for nil:NilClass
  /Users/kawakubox/Workspace/generic-recipe/vndor/bundle/ruby/2.3.0/gems/itamae-1.9.10/lib/itamae/cli.rb:15:in `initialize'
  /Users/kawakubox/Workspace/generic-recipe/vendor/bundle/ruby/2.3.0/gems/thor-0.19.4/lib/thor.rb:365:in `new'
  /Users/kawakubox/Workspace/generic-recipe/vendor/bundle/ruby/2.3.0/gems/thor-0.19.4/lib/thor.rb:365:in `dispatch'
  /Users/kawakubox/Workspace/generic-recipe/vendor/bundle/ruby/2.3.0/gems/thor-0.19.4/lib/thor/base.rb:444:in `start'
  /Users/kawakubox/Workspace/generic-recipe/vendor/bundle/ruby/2.3.0/gems/itamae-1.9.10/bin/itamae:4:in `<top (required)>'
  /Users/kawakubox/Workspace/generic-recipe/vendor/bundle/ruby/2.3.0/bin/itamae:22:in `load'
  /Users/kawakubox/Workspace/generic-recipe/vendor/bundle/ruby/2.3.0/bin/itamae:22:in `<top (required)>'

pry などで、ブレークポイント打ちつつ見てみると、 log_level のオプションの値が空っぽでコケてる様子。

この時点で使っている thor は 0.19.4。

順繰りに version を戻していったところ 0.19.1 でエラーが出なくなった。

CHANGELOG を見てると、それっぽいものが見つかった。

Fix support for subcommand-specific "help"s

関連する PR はこれっぽい

github.com


ひとまず、 thor のバージョン下げれば動くことはわかったので、 itamae に issue 作ったところで今日は打ち止め。 ねむねむ。

github.com

itamae 生活 2日目

昨日 に引き続き今日も itamae

Today's Goal

  • itamae の BestPractice の沿った構成で Nginx x Unicorn x Rails の構成を作る
  • Ruby は rbenv 環境下で入れたい

Premise

  • itamae が global に install されている

Let's Try

BestPractice をみながらディレクトリ構築

ディレクトリ構成

ココ にある通り

.
├── cookbooks
│   └── nginx
│       ├── default.rb
│       ├── files
│       │   └── etc
│       │       └── nginx
│       │           └── conf.d
│       │               └── static.conf
│       └── templates
│           └── etc
│               └── nginx
│                   └── conf.d
│                       └── dynamic.conf
└── roles
    └── web.rb

手でペチペチ作るのもなんだなぁと思ってたら、それっぽいのがあった

itamae help

$ itamae -h
Commands:
  itamae destroy [cookbook|role] [NAME]   # Undo role or cookbook (short-cut alias: "d")
  itamae docker RECIPE [RECIPE...]        # Create Docker image
  itamae generate [cookbook|role] [NAME]  # Initialize role or cookbook (short-cut alias: "g")
  itamae help [COMMAND]                   # Describe available commands or one specific command
  itamae init NAME                        # Create a new project
  itamae local RECIPE [RECIPE...]         # Run Itamae locally
  itamae ssh RECIPE [RECIPE...]           # Run Itamae via ssh
  itamae version                          # Print version

itamae inititamae gemenate が使えそう

itamae init

$ itamae init itamae-labo
      create
      create  Gemfile
      create  cookbooks/.keep
      create  roles/.keep
         run  bundle install from "."
Could not locate Gemfile or .bundle/ directory

$ cd itamae-labo
$ ls -la
total 8
drwxr-xr-x   5 kawakubox  staff   170 12 10 00:51 .
drwxr-xr-x  47 kawakubox  staff  1598 12 10 00:51 ..
-rw-r--r--   1 kawakubox  staff    63 12 10 00:51 Gemfile
drwxr-xr-x   3 kawakubox  staff   102 12 10 00:51 cookbooks
drwxr-xr-x   3 kawakubox  staff   102 12 10 00:51 roles

ルートディレクトリと Gemfile, 空ディレクトリ(cookbook, roles)作ってくれる。

cookbook

ミドルウェアやライブラリを取り回しやすい単位でまとめたもの

role

cookbook の利用者。 アプリサーバ、DBサーバなどで構成がガラッと変わるのでそれぞれ app, db といった role を用意してあげる

itamae generate

create cookbook

nginx の cookbook 作ってみる

$ itamae g cookbook nginx
      create
      create  default.rb
      create  files/.keep
      create  templates/.keep

g は generate のエイリアスrails っぽい

create role

続いて role を作る

$ itamae g role web
      create
      create  default.rb
      create  files/.keep
      create  templates/.keep

Recipe for nginx

昨日のまんまなので省略

Role for web

include_recipe '../../cookbooks/nginx/default.rb'

Execution

$ itamae ssh -i ~/.ssh/hogepiyo.pem -h xx.xx.xx.xx -u ec2-user roles/web/default.rb

 INFO : Starting Itamae...
 INFO : Recipe: /../itamae-labo/roles/web/default.rb
 INFO :   Recipe: /../itamae-labo/cookbooks/nginx/default.rb
 INFO :     package[nginx] installed will change from 'false' to 'true'
 INFO :     service[nginx] enabled will change from 'false' to 'true'
 INFO :     service[nginx] running will change from 'false' to 'true'

※動かす前に既に入っていた nginx を削除してから実行した


眠くなったので今日はここまで

Summary

BesstPractice の構成に則って作るには、 itamae init, itamae generate を使うのがよい

itamae はじめました

itamae はじめました

Today's Goal

ローカルの recipe.rb を使って、 EC2 インスタンスに Nginx 立てる

Install into local machine

まず itamae をローカルマシンにインストール

$ gem install itamae

bundler なんかは使わず、 global に入れてしまうのがよいのかな。

Create recipe

てきとうな場所に recipe.rb を作る

package 'nginx' do
  action :install
end

DSLは、操作したいパッケージの block に書いていく。

action メソッドに symbol を渡すという書式。

Execution

ローカルの recipe を使って EC2 インスタンスに対して dry-run で実行してみる。

$ itamae ssh -u ec2-user -i ~/.ssh/your_keypari.pem -h xx.xx.xx.xx -n recipe.rb
 INFO : Starting Itamae...
 INFO : Recipe: /~~/recipe.rb
 INFO :   package[nginx] installed will change from 'false' to 'true'

nginx のインストール状態は false → true になるよって言われる。

-n を取って実際に動かしてみる。

   ・    ・    ・

EC2 インスタンスに接続して確認。

$ ssh -i ~/.ssh/your_keypair.pem ec2-user@xx.xx.xx.xx

$ which nginx
/usr/sbin/nginx

この時点でサービスとして登録されていない。

service 'nginx' do
  action [:enable, :start]
end
$ itamae ssh -u ec2-user -i ~/.ssh/your_keypair.pem -h xx.xx.xx.xx recipe.rb
 INFO : Starting Itamae...
 INFO : Recipe: /xx/recipe.rb
 INFO :   service[nginx] enabled will change from 'false' to 'true'
 INFO :   service[nginx] running will change from 'false' to 'true'

すでに package 'nginx' は済んでるので実行されていない。

$ ps aux | grep nginx
root     23685  0.0  0.0  58084  1016 ?        Ss   15:46   0:00 nginx: master process /usr/sbin
/nginx -c /etc/nginx/nginx.conf
nginx    23687  0.0  0.3  58456  3924 ?        S    15:46   0:00 nginx: worker process

プロセスもしっかり立ってる

f:id:kawakubox:20161209005955p:plain


Wiki みると、 BestPractice ってのがあるので、もう少し触ったら BestPractice に沿って書いてみよう。

社内でぷちLT大会があったので、Neo4jの話をしてきた

2016年8月17日に、社内でソニックガーデンさんを招いてのぷちLT大会があったので、エントリーしました。

最近、Neo4j がお気に入りで業務でも社内向けツールに導入を図るなどをしたので、今回のLTでもNeo4jをテーマにしたものを用意しました

スライドの最後にもありますが、サービスへの本格導入などをするに向けて、クラスタ構成やHA構成なんかを抑えておくと強力な説得材料になるので、触れていこうと思います。