Splathon#8 開催報告するぞっ

開催から少々間が空いてしまいましたが、Splathon#8の開催報告をします。

2018年5月4日 世間は GW 真っ只中でありますが、150名近くのイカたちが集まりました。

中には親子連れもチラホラ。

会場

Splathon#7 までは 株式会社Speee で行ってきましたが、Splathon#8 は Speee を飛び出して、合同会社DMM.comさんのイベントスペースで開催しました。

f:id:kawakubox:20180604124947j:plainf:id:kawakubox:20180604124956j:plain

広い、広い

150人入ってもまだまだ十分な余裕があります。

参加企業/チーム

前回と同じ 24 企業/チーム のエントリー。

チーム名 社名  参加回数
【値下げ交渉可】赤ザップ *****
Ajitoon 株式会社VOYAGE GROUP 2
bizreaca 株式会社ビズリーチ 5
DMM.ika 合同会社DMM GAMES
KLaken KLab株式会社
OK はやぶさ(返事がない) ***** 6
アマイイカ 株式会社Donuts 2
イカクロ 株式会社オズ 3
イカツキ 株式会社アカツキ
がん☆あつ *****
しくみ&セガ連合かっこかり しくみ製作所株式会社&セガグループ 8
すげーイカ 株式会社アドウェイズ 2
セルシスイカ部(仮) 株式会社セルシス
チームPicApp ピックアップ株式会社 3
デカLINE LINE株式会社 2
ミランドラproject ***** 8
雲丹亭 ユニティ・テクノロジーズ・ジャパン合同会社
国民健康保険 フリーランス -
住まイカんぱにー 株式会社リクルート住まいカンパニー
都立道玄坂高校タコ部(仮) 株式会社CyberAgent 6
倒れる様にマンメンミ ピクシブ株式会社 7
頭文字D *****
株式会社ドワンゴ 8
あわさんにおんぶにだっこ 会場内即席チーム -

初参加の企業/チームが8つもあり、Splathonの広がりを感じます。

注目は、決勝トーナメント常連の 都立道玄坂高校タコ部(仮) 、それに募集時点でのウデマエが高かった しくみ&セガ連合かっこかり あたりです。

企業対抗戦

f:id:kawakubox:20180604131852j:plain

開会式

より大会感を出すために、今回から開会式を設けました

開会式コンテンツ

  • 前回優勝チームからのトロフィー返還
  • 参加企業/チームの自己紹介
  • 選手宣誓

選手宣誓は第1回から参加してくれているしくみ製作所の えびですぷりぷりー さんにお願いしました。

予選

レギュレーション

過去のSplathonと変わりはありません

  • ブキ、ギアは当日までにリリースされているもの全て利用可能
  • ルール、ステージの制限もなし
  • ギアはメイン、サブ含めて自由
  • 先攻がルールを決めて、後攻がステージを決める 2試合目は先攻後攻を入れ替えての実施
  • 2戦終えての勝ち点制
    • 勝ち : 3pt, 分け : 1pt, 負け : 0pt

予選4ラウンドを終えての結果はこちら。

f:id:kawakubox:20180604133740p:plain

  • Splathon最多優勝をねらう
  • こんどこその悲願の優勝を 都立道玄坂高校タコ部(仮)
  • 初出場で大健闘、今回のダークホース がん☆あつ
  • ウデマエの高さは伊達じゃない しくみ&セガ連合かっこかり

以上4チームが決勝進出 👏

決勝トーナメント

レギュレーション

予選と基本同じすが、以下の2点だけ違いがあります

  • 準決勝は2試合終えて引き分けの場合は、ルール:ナワバリ、ステージ:おまかせ

  • 決勝は3本先取

勝戦

vs しくみ&セガ連合かっこかり

初戦 は得意の ガチヤグラ で先勝、 1 - 0 とします。

2戦目、しくみ&セガ連合かっこかり は、 ナワバリ を選択し、きっちりスコアを 1 - 1 のイーブンに。

3戦目、 は得意の ガチヤグラ を指定するも 1pt 差で落としてしまい 1 - 2 と勝ち星を先行され王手をかけられる。

4戦目、しくみ&セガ連合かっこかり は、 ナワバリ を選択。 対する は、 バッテラストリート を選択。

2戦目と同じルール・ステージになりました。

目まぐるしく変わる試合展開、ラスト15秒時点では 有利に見えましたが、そこから しくみ&セガ連合かっこかり の巻き返しが始まるっ!!

ホイッスルが鳴り、旗は、、、、、コジャッジくんだぁ〜〜〜〜。

シャープマーカーネオ を持った えびです ぷりぷりー 選手の 1,402pt の塗りが光ります✨

3戦目の相手得意ルールの ガチヤグラ を取ったのが大きかったですね。

優勝おめでとうございまっす 🎉

懇親会

メシ

Splathon の楽しみの一つにもなっている懇親会メシ。

今回もケータリングで温かいメニューも用意してます。

LT

有志によるLTは3本ありました。

15 さんによる「ノヴァブラスターのキル動画集」

発表スライド

docs.google.com

キル集

www.youtube.com

おまけ:デス集

www.youtube.com

ミランドラさんによる「A帯だけど機械学習YouTubeを駆使して最短でウデマエを上げてみなイカ?」

www.slideshare.net

あわさんによる「S+200が質問答えます」

全ルールカンストでもある あわ さんが答える Q&A コーナー。

「ためしうち」での練習法などを会場で披露してくれました。

エキシビジョンマッチ

参加者でもある @ さん作成のアプリ、 イカすロット2 をつかってのプラベ

イカすロットは、イカすなブキ抽選アプリです。 プライベートマッチでブキ縛りをするもよし、今日のガチマッチ使用ブキを決めるもよし。 イカすロットでスプラトゥーンをもっと楽しもう!

イカすロット for Splatoon2

イカすロット for Splatoon2

  • shinya saiho
  • Utilities
  • Free

play.google.com

@ さんの声かけで、 ウデマエS以上お断りenjoyプラベ なども開催されました。

運営

今回のチャレンジ

クリエイティブに力入れた

Splathon ロゴ作成

Splathon コミュニティー内のデザイナさんが作ってくれました。

f:id:kawakubox:20180604171532p:plain

会場内POP

こちらも、Splathon コミュニティー内のデザイナさんが作ってくれました。

f:id:kawakubox:20180604172347j:plain

エンドロール

前日設営のときに、エンドロール欲しいねって言ったらスタッフが作ってくれた。

f:id:kawakubox:20180604172603p:plain

創造主の部分にまさか自分の名前が仕込んであるの知らなくてウルッときました😂(前日の確認段階では入ってなかった)

インタビュースペースの装飾

インタビューの背景によくある格子模様のあれです。

これも前日設営のときに急遽作ろうという流れになりました。

f:id:kawakubox:20180604173236j:plain

今回はプリントアウトして格子状に配置した簡素なものだったので、次回はキチンとバナースタンド作りたいです。

並列数の増強

3並列 + 試遊卓 → 4並列 + 試遊卓 にしました。

このおかげで前回より余裕を持って進行でき、かつ決勝トーナメントも復活させることができました。

f:id:kawakubox:20180604164152p:plain

Live配信チャネル追加

ニコニコ生放送に加えて、 OPENREC でのライブ放送も行いました。

全試合録画

配信卓だけではなく、全卓でキャプチャボード用意して録画する環境を用意しました。

一部試合の欠損もあったりしますが、ほぼ全試合アーカイブできました。

OPENREC ユーザであれば、以下から視聴することができます。

www.openrec.tv

虐殺マッチを減らす

予選はスイスドロー形式なので、ラウンドを進めていくと対戦チーム同士のレベルは似通ってきます。

これまでは初戦から完全ランダムにマッチングさせていたので、瞬殺されるケースもそれなりにありました。

プレイヤー目線、実況目線、視聴者目線からも近しいレベルでの試合のほうが面白いし、満足感も高かろうという仮定のもと、予選1, 2回戦に限りチームのウデマエを考慮したマッチングを行いました。

最後まで全体告知するかどうか考えましたが、あえてこの事実は伏せて行うことにしました。

これについてはご意見、批判あるかと思いますがご了承ください。

当日発生したトラブル

イカッチャプラベのバグを踏み抜く

https://support.nintendo.co.jp/app/answers/detail/a_id/34680

イカッチャのプライベートマッチで、装備しているギアを変更したとき、ゲームが強制終了してしまうことがある問題を修正しました。

イベント後数日でバグフィックスされた。 アップデートがもう少し早ければ、、、。

ネットワークつながらない端末

会場のネットワークが DHCP 環境下で IP固定の設定だったことが原因でした。

今後の予定

今秋の三連休のどっかでやろうくらいしか決まっていないです。

次回は別会場での開催にはなりますが、会場のメドが立っていません。

どこか会場貸せますという方いらっしゃいましたら @ or @ まで連絡お願いします

さいごに

Splathon Online League

前回のSplathon#7が終わってすぐに、コミュニティ内で Splathon Online League(SOL) というイベントが行われていました。

コミュニティー内の参加者を募りチームを組んで、週1回対抗戦を行い順位を競うというものです。

チームは、代表者によるドラフト形式でメンバーを構成しました。

この企画でこれまであまりやり取りなかったイカたちとプライベートで飲みにいったりと交流が深まる副次的な効果がありました。

そういった SOL による交流もあり、 Splathon#8 はオフ会なノリも各所で見受けられました。

第2回SOL もぼちぼち開催されるので、Splathon#9 に繋げられるように盛り上げていきたいです。

Splathon を振り返って

Splathon を始めたころは、「Splatoon企業対抗戦」というイベント場でした。

そこからイベント連絡などを目的に Slack を用意してコミュニケーションできるようになりました。

Splathon というイベントが前面で、コミュニティーが後付けだったんですね。

でも今は、 Slack でのコミュニティーがメインにあって、 Splathon はオフ会のような場になっていて、イベントとコミュニティーの主従が逆転した形になっています。

このような設計をしていたわけではないですが、コミュニティーが成長してイベントを重ねていったら自然と今の形に落ち着きました。

やりたいことや、洗練させたい箇所もまだあるので、参加者満足度を損なわないようにやっていきたいです。

謝辞

過去最大規模で開催できたのもDMMさんのおかげですっ。

デザイン協力してくれた方々へもこの場を借りて感謝申し上げます。

本当にありがとうございましたっ。

マンメンミっ。


当日の様子

togetter.com

過去記事

Splathon関連の過去記事

tech.speee.jp tech.speee.jp tech.speee.jp tech.speee.jp tech.speee.jp tech.speee.jp

Heroku で Webpacker での assets:precompile が動かなかったのを解決した

Heroku で Rails アプリケーションを稼働している。

このたび、 JS, CSS まわりを Sprockets から Webpacker へ乗り換えたが、Heroku へのデプロイの際に assets:precompile が延々と実行されない事象に陥った。

原因

Heroku のドキュメントを漁っていたら、以下に解決にいたりそうな記述を見つけた。

devcenter.heroku.com

Rake task defined, and don’t have a public/assets/manifest-*.json file.

public/assetsmanifest-*.json にないことが、 assets:precompile が実行される条件のようだ。

今回は、 public/assets/.sprockets-manifest-*.json というファイルがリポジトリに残っていた。

対応

public/assets/.sprockets-manifest-*.jsonリポジトリから削除した。

結果

〜〜略〜〜
Webpacker is installed 🎉 🍰
Using /tmp/build_154d9ad0359fd2fa6b43b8e446707f52/config/webpacker.yml file for setting up webpack paths
Compiling…
Compiled all packs in /tmp/build_154d9ad0359fd2fa6b43b8e446707f52/public/packs
Asset precompilation completed (47.88s)
Cleaning assets
Running: rake assets:clean
〜〜略〜〜

これで、 assets:precompile が実行され、アプリケーションで assets が読み込めるようになった。

capistrano 2日目

capistrano 復習の記録

kawakubox.hatenablog.com

capistrano/bundler

gem, rake, rails コマンドに bundle exec プレフィクスを付けて実行するようになる。

GitHub - capistrano/bundler: Bundler support for Capistrano 3.x

READMEを見るに、デフォルト設定でおおむね問題なさそう。

デプロイ先のサーバー次第では :bundle_jobs は CPU core 数にあわせて設定したいところ。

capistrano/rails

capistrano/rails/assets, capistrano/rails/migrations を内包する。

set :rails_env でSTAGEを指定できるが、基本は cap production deploy のように指定したSTAGEを使うと思われる。

capistrano/rails/assets

assets:precompile を担当する。

set :assets_roles 実行する role を指定する。デフォルトは :web

set :assets_prefix assets ディレクトリの prefix。ほとんどの場合 assets のはずなので、無指定でOK。

set :rails_assets_groups, :assets

RAILS_GROUPS が関係しそうなところはここらへんのようだが、なにに影響するかはまだ理解できていない。

set :normalize_asset_timestamps assets パス以外の静的ファイルにタイムスタンプ付与する場合は対象となるディレクトリを指定するようにみえる

set :keep_assets 過去のデプロイで作られた assets リソースを何世代残すかの設定。デフォルトは nil

capistrano 1日目

capistrano による rails アプリケーションのデプロイの復習。

install

Gemfile に追記して、 bundle install

# Gemfile
group :development do
  gem 'capistrano-rails'
end
$ bundle install

$ bundle exec cap -h
See full documentation at http://capistranorb.com/.

Install capistrano in a project:
    bundle exec cap install [STAGES=qa,staging,production,...]

    .
    .
    .

設定ファイルの生成

$ be cap install STAGES=production

STAGES は必要に応じてカンマ区切りで列挙する。

Ex) STAGES=qa,staging,production

上記コマンドの場合、以下のファイルが作成される。

  • Capfile
  • config/deploy.rb
  • config/deploy/production.rb

Git から引っ張ってくる

application, repo_url を適宜設定。

# config/deploy.rb
set :application, 'my_app_name'
set :repo_url, 'git@example.com:me/my_repo.git'

環境別のファイルに server もしくは role に deploy 先サーバを記載。

my-instance.ssh/config に定義済みとする。

# config/deploy/production.rb
# server based syntax の場合
server 'my-instance', roles: %w[app]

# role based syntax の場合
# role :app, %w[my-instance]
$ bundle exec cap production deploy

これだけ指定したサーバに revision 管理されて配置されるようになる。

※デフォルトは /var/www/

$ ls -l /var/www/my_app_name/releases
total 12
drwxr-xr-x 12 kawakubox kawakubox 4096 Dec 22 18:44 20171222184454
drwxr-xr-x 12 kawakubox kawakubox 4096 Dec 23 14:58 20171223145839
drwxr-xr-x 12 kawakubox kawakubox 4096 Dec 24 23:17 20171224231710

capistrano/rbenv

rbenv に関する設定をいくつか記述する。

今回 rbenvanyenv を介して、 home directory に入れたので、 rbenv_custom_path を設定。

# config/deploy.rb
set :rbenv_type, :user
set :rbenv_ruby, '2.4.2'
set :rbenv_custom_path, '/home/kawakubox/.anyenv/envs/rbenv'

---

今日はここまで。

🏇予想のモデルを考える

この記事は Speee Advent Calendar の2日目になります。

昨日は id:nisshiee の 『AWS Batchを本番導入するにあたって考えたことアレコレ』 でした。


弊社で年に2回ほどある Speee Kaigi というイベントで『競馬×機械学習』というテーマで発表しました。

発表時点では予想モデルといえるようなものはできておらず、トークの勢いで押し切っただけでした。

なのでしっかり要素として切り出せるものを色々と盛り込んで見ようと思い立ちました。

結論

この記事で予想モデルが完結しているものではなく、机上の空論な状態です。

こんな風にして組み立てていくのかなという思考ログに相当するようなものです。

前提

  • できる限り容易に取得できる情報を利用する

具体的には、 netkeibayahoo競馬 とかで見ることのできる出馬表などのアクセスしやすい情報で予想しようというものです。

なので、競馬新聞に掲載されている調教師や厩務員コメント、調教タイムといった要素は省いています。

出馬表の見方

まずは、出馬表の読み方からです。

先日行われたのジャパンカップ(G1)に出走した キタサンブラック 号の netkeiba ページを例に取り上げます。

f:id:kawakubox:20171202020701p:plain

左から

  • 枠番
    • 1 ~ 8
  • 馬番
    • 1 ~ 18
  • 予想欄×4

次のセルからは情報量が多いので切り出して説明します。

f:id:kawakubox:20171202021842p:plain

上から

  • 馬名
  • 父馬
  • 母馬
  • 母父馬
  • 調教師所属, 調教師名
  • 脚質(逃げ、先行、差し、追い込み)
  • 馬体重(前走との差)

f:id:kawakubox:20171202023302p:plain

上から

  • 性別, 年齢, 毛の色
  • 斤量*1
  • 騎手名

f:id:kawakubox:20171202023327p:plain

f:id:kawakubox:20171202023128p:plain

  • 過去の出走レース ※左から1走前、2走前 ... 5走前
    • 開催日, 競馬場名, 着順
    • レース名, クラス(=グレード)
    • コース, 距離, タイム, 馬場状態
    • 出走頭数, 馬番, 人気, 騎手名, 斤量
    • コーナー通過順, 上がり3Fタイム*2, 馬体重, 馬体重の増減
    • 勝ち馬or2着馬, 勝ち馬とのタイム差

拾える情報はこのくらいでしょうか。

予想式

競馬には『馬七人三』という格言があります。 これは競馬の勝敗は馬の能力だけではなく、人も関係しており、その比率は7:3であるという意味です。

この具体的な比率が適切かはさておき、以下のような関係式が起こせそうです。

{ \displaystyle
y = H + Px
}

※Hは馬(horse)、Pは人(person)

人については、さらに騎手と調教師に要素分解して考える事もできそうです。

{ \displaystyle
y = H + Jx_1 + Tx_2
}

※Jは騎手(jockey)、Tは調教師(trainer)

騎手

騎手は勝率、連対率*3複勝*4のような数値がweb上で取得できるので、この辺の値がこのまま使えそうです。

突き詰めるとコース、距離の傾向も取れますが入手しやすい情報かと言われると 🤔 となります。

調教師

調教師も騎手と同様にwebから取得できます。

馬は過去の出走成績が手がかりになります。

netkeiba ですと、無料で5走前、有料で9走前までページ内に表示されます。

直近n走前までの結果の平均とみなすと以下のようになりそうです。

{ \displaystyle
H = \frac{1}{n} \sum _{i=1} ^n R_i
}

もしくは、最近のレースをより評価するのであれば

{ \displaystyle
H = \frac{1}{n} \sum _{i=1} ^n (R_i w_i)
}

※Rはレース結果(Result)

とも置けそうです。

レース結果

ここの数値化が一番キモですが、騎手や調教師のデータとは異なり一筋縄にはいかない部分になります。

出馬表で得られる数値情報はいくつかありますが、どれも単項目では評価しづらいです。

  • レースタイムは、クラス、コース、距離、馬場状態、展開といった要素に大きく左右される

    • 東京コースはホームストレッチが長い
    • 京都コースはホームストレッチに坂がない
    • 馬場状態が良と不良ではレースタイムに5〜10秒近くの影響が出ることもある
  • 馬体重(増減含む)は、良い状態をベースに±αを考慮しないと意味がない

  • 上がり3Fタイムも脚質、展開によって変わる

    • 前半がゆったり流れると当然タイム速くなる、逆も然り

要はレース単体での数値を取り上げたところで意味はなく、他のレースと比較できる状態にあることが求められるわけです。

レースの比較をする

取っ掛かりして、クラス、コース、距離、馬場状態といったセグメント毎の平均レースタイム(基準タイム)を知っていると仮定します。

この基準タイムと実際のタイムとの偏差を求めることで、同一セグメント内での優劣が取れそうです。

{ \displaystyle
\sigma = B - A
}

※ Bは基準タイム(Base TIme), Aは実際のタイム(Actual Time)

この偏差にはいくつかの係数を掛ける必要があると思われます。

なぜならば、今予想してるレースと偏差求めたレースのセグメントが同じとは限らないからです。

  • 今回予想するレースと同じ条件であればより評価したい
  • 勝ち上がってクラスが上がったことで過去レースの偏差からは割り引いて評価したい

といったことが考えられられます。

{ \displaystyle
\sigma = (B - A)k
}

まとめてみる

これを先の馬個体の式に代入して

{ \displaystyle
H = \frac{1}{n} \sum _{i=1} ^n ((B - A)k w_i)
}

馬、騎手、調教師の式に代入して

{ \displaystyle
y = \frac{1}{n} \sum _{i=1} ^n ((B - A)k w_i) + Jx_1 + Tx_2
}

こんな感じまで持ってこれました。

実際のレースには最大18頭まで出走することができるので、

{ \displaystyle
m \times n
} 行列として書き起こせるような気もしてます。

※mは最大18、nは過去レース結果を5レースとすると7

教師データ

教師データをどう用意するかですが、中央競馬1年間で3,000を超えるレース数があるので、数年間分集めればそこそこの数を用意できそうです。

ただ、レース条件のバラつきがあるので、どういった切り口で用意するかは TRY & ERROR でやる必要がありそうです。

今考えているものは以下のようなものです。

レースの配当別に教師データを用意する

馬連の配当に着目し、

  • 順当(払戻金 〜1,999円)
  • 小波乱(払戻金 2,000円〜9,999円)
  • 大波乱(払戻金 10,000円〜)

といった分類で集めて学習を行い。

順当ケース、小波乱ケース、大波乱ケースのそれぞれの予想モデルを作ろうというものです。

順当で決まるレースが最も多いので、これらを分けず学習してしまうと、学習結果のモデルは順当な結果を返すものになってしまうのではないかと危惧しております。

ほかの案

  • 距離別に切り出す
  • クラス別に切り出す
  • コース×距離別に切り出す

など他にもたくさん考えられそうですね。

最後に

ここまでとりとめもなく書いてきましたが、なんらかの機械学習フレームワークに突っ込んだわけでもないので、机上の空論ではあります。

高校レベルの数学がやっとな中で機械学習なぞに手を出してしまい、手探りで進めている感じではあります。

もともと興味のあった競馬という題材は僕の中で身近なものだったので、そういったものを軸に徐々に理解を深めていけばいいのかなと思っております。


明日は yukihisamatsu より『bandit周りのまとめ、もしくは趣味でやってる懸賞でやってみたデータ分析のまとめ』になります。

お楽しみにっ

*1:騎手の重量

*2:*ラスト600mにかかった秒数

*3:2着までに入る確率

*4:3着までに入る確率

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