平常運転

アニソンが好き

過去記事とかは記事一覧で見れます

バンドリ!夏の大発表会 2019 にユーザーレポーターとして行ってきた

7/17 にバンドリのコンテンツ展開の発表会があった。

bang-dream.com

いつもどおり(?)発表会の様子は YouTube Live などで生配信されていたのだけど、今回はユーザーレポーターの募集があり、おもしろ半分*1で申し込んだところ当選したのではるばる秋葉原まで行ってきた。

実際我々が「ユーザーレポーター」として観覧していた発表会の様子はインターネットでも配信されておりなんならアーカイブもあるので特に情報量的に新しいことをお伝えできるわけではないのだけど、レポーターとして行ってきたからにはレポートしようと思う。とはいえ発表内容自体は公式ホームページなり Twitter なりでしっかりフォローされてるので雰囲気重視ということで。

www.youtube.com

あと、今回なんとユーザーレポーター向けにはレポート用に写真やスライド内容などの画像素材をいただいた。特に声優さんの写ってる写真を堂々と自分のブログに載せる機会もそうあるまいということで、この辺はユーザーレポートの役得ということでしっかり載せます。

*1:いやおもしろ全部か?

続きを読む

開発チームでプロダクトを新しく保っていくぞ、という話をしてきた

6/15 に Developers Boost KANSAI という U30 向けの技術カンファレンスがあったのだけど、ぎりぎりまだU30やで、ということもあり発表機会をいただいて、ここ半年〜1年くらい Mackerel チームで取り組んでることの話をしてきました。

event.shoeisha.jp

発表スライドはこちらです。例によってスライドだけではあんまり伝わらない気がしますが、雰囲気を味わうのにどうぞ。

speakerdeck.com

初期開発のあと何年も継続開発なり保守運用なりを続けていくと、何も手を打たなければソフトウェア基盤 / インフラ基盤はだんだん古びていくことになります。古びていくことで徐々に身動きが取りづらくなることを避けようという側面と、そもそもソフトウェアは新しい方が良いのだからちゃんと新陳代謝させて新しくしていこうよ、というメッセージをもとに、実際にチームで継続的に更新していくために行ってる取り組みの話をしました。
ひとつは開発チーム全体のタスク管理に持ち込む前段階としてエンジニア内でタスクの整理をする試みで、もう一つは依存ライブラリの更新を安定して行うためのライブラリアップデート当番という試みです。

勿論この取り組みが全ての状況でフィットするとは限らず、チームやプロダクトの状況に応じて色々なアプローチがあると思っていますが、一つの実例紹介として受け取っていただけたなら幸いです。

劇場版 響け!ユーフォニアム~誓いのフィナーレ~ をみました

ネタバレ含めた感想書きたいのでうっかり開いてしまった人は早めに撤収して下さい。ユーフォの写真貼ってあるところまでは前説なのでネタバレ出てこないです。

続きを読む

Hatena Engineer Seminar #11 で「Mackerel をオンプレミスから AWS に移してからの1年半を振り返る」という発表をしました

1月なのでもう1ヶ月以上前の話になってしまいたいへん恐縮ですが、1/23 と 1/30 にあった Hatena Engineer Seminar #11 で Mackerel チームのエンジニアとして発表していました。

hatena.connpass.com

hatena.connpass.com

スライドはこれです。

speakerdeck.com

オンプレミスでの Xen 運用から EC2 に移ったことで仮想マシンの管理・運用が柔軟になったのは、仮想マシンより下の層が AWS によって抽象化されたといえ、 EC2 上で運用していた RDB が RDS に移行したことでインスタンスレプリケーション構築といった層の管理から解放されたのも AWS によって抽象化されたと言ってよいと思います。これらの領域では、今まで行ってきたことをクラウド活用で抽象化し、より扱いやすくなったというのが良い表現だと思います。
いっぽう、 AWS を前提として新規に開発しているコンポーネントにおいては、オンプレミス + 仮想マシンという状況では選択肢に上がらなかったマネージドサービスを活用できるようになっており、こちらは上記の「より扱いやすくなった」より一歩先を行くありがたみであると感じています。(もちろん、気合を十分に込めればオンプレミスでもマネージドサービス相当の機能を実装できたとは考えられますが、開発・運用ともに現実的ではないコンポーネントも多いです。)

ちなみにスライド中で機械学習は「開発中」となっていましたが、先日ロール内異常検知機能がベータ版としてリリースされております。こちらもあわせて是非ご利用下さい。クラウドという文脈で言うと AWS Batch などをまさに利用しています。

mackerel.io

2018年のおたくイベント振り返り

すっかりブログを書かなくなって久しい2018年だけど、年の瀬なのでこの1年でアニソン/声優系のイベントに行ったのを振り返っておこうと思う。関東には何回行ったか分からないし、海外にも3回(台北上海台北)行くなどかなりフットワーク軽く飛び回った1年だった。
ちなみに長々と感想を書くと永遠に終わらないのでサクサク書いていきます。

1月

  • 1/6, 7: THE IDOLM@STER ニューイヤーライブ‼︎ 初星宴舞
  • 1/13, 14: ガルパーティ!in東京 / ガルパライブ
  • 1/27, 28: リスアニ!LIVE 2018 (SATURDAY STAGE / SUNDAY STAGE)

astj.hatenablog.com
astj.hatenablog.com

1月から関東のイベント2デイズ*3で勢いがある。どれも楽しかったけれど、どれか一つを挙げろと言われたらやっぱり初星演舞かなあと思う。久々の765AS単独ライブは本当に良かった。

2月

astj.hatenablog.com

長崎まで飛んだハウステンボスのイベントはめちゃめちゃ楽しかった。ライブの楽曲自体もさることながら、メンバー同士の仲が良いところを沢山見られたのも幸せだったし、ライブ以外のミニイベントみたいなのもいろいろあって充実してた。ワルキューレは2ndのときよりもさらにパワーアップしていて本当に良かった。 Blu-Ray も買いました。TrySail は友達に誘われて。なんだかんだと単独は初めてだったのだけどナルホドーという感じで楽しかった。
舞台が1個混じってるけれど、これは Poppin'Party の西本りみさんが出演されてるということで見に行ったという感じ。小劇場系の舞台見るのは初めてだったので新鮮だった。
この月は関東1往復ですね。イベント行った文脈とは関係ないけど仕事でも1往復していたようだった。

3月

  • 3/3: ANIMAX MUSIX 2018 OSAKA
  • 3/25: AnimeJapan 2018 (2日目)
  • 3/25: THE THIRD(仮)1st LIVE

astj.hatenablog.com

ANIMAX MUSIX は恒例。 Poppin'Party が大阪の大舞台に!という観点でも素晴らしかったし、 Fate セレクションではガッツポーズしてしまった。
AnimeJapan はよなきに(声優ラジオ番組「夜中メイクが気になったから」)の出演者お渡し会に。AnimeJapan自体初めてだったので見て回るのおもしろかった。
そして THE THIRD(仮)1st LIVE が同日。ぜったい楽しいと思って行ったファーストライブはすごく楽しかったしエモかった。

4月

  • 4/7, 8: THE IDOLM@STER CINDERELLA GIRLS Initial Mess@ge
  • 4/19: 「第五回課外授業『ゴリラ~GORILLA~』」
  • 4/22: OBC『夜中メイクが気になったから』Presents YONAKINI THE LIVE! Passion!! (第一部)

Initial Mess@ge で台湾に行っていた。アイマスライブとしては1年ぶりの台湾単独公演。前年はライブに行って帰るだけけど、今年は旅程を長めにとってしっかり観光もした。
初期曲からアニメ曲、最近の曲までいいところを押さえていてとても充実した中身だった。2日目の流れ星キセキではまた泣いてしまったね。。
2月につづいて西本さんの出演する舞台も見に行った。たしか仕事で東京出張してたんだったと思う。

5月

astj.hatenablog.com
astj.hatenablog.com

バンドリ5thライブのあった月。ブログにも書いたけど、本当にハッピーになった1日目と、永遠に記憶に焼き付ける一瞬だった2日目だった。
5/13の空き時間にMRまで行ってきていて、正直この時点での期待値は低かったんだけどいざ行くとすごく楽しかった。
松澤さんのアルバムリリースパーティはしばらく前に偶然目について日程の都合が良かったから参加したのだけど、本質な感想はこのツイートに集約される。


6月

  • 6/1: YURIKA ENDO FINAL LIVE - Emotional Daybreak-
  • 6/2,3: THE IDOLM@STER MILLION LIVE! 5thLIVE BRAND NEW PERFORM@NCE!!!
  • 6/16: LIVEPASSION直前 ここいば歌唱楽曲大発表会
  • 6/16: FLOW 15th Anniversary TOUR 2018「アニメ縛り」大阪公演
  • 6/24: あいみあやさちゃんの ドキドキ! Girls前線成長中!
  • 6/24: THE IDOLM@STER MILLION LIVE! MILLION THE@TER GENERATION 07&08 発売記念イベント (2回目)

astj.hatenablog.com

Emotional Daybreak はブログを書いていた。ミリオン5thもブログ書けてないあたりこの辺で習慣が力尽きてることが伺える。
ミリオン5thはミリシタ開始後初の大型ライブということで、ミリシタのライブだ!というのが強く感じられた。ただまぁどうしてもソロ曲新曲が多いので選曲の自由度が低いというか新曲並べました感が出ちゃったかなぁとは思わなくもなかった。
6/16はふしぎな感じだけど、ここいばリスナーの友達が FLOW とあわせて誘ってくれたのでいってきたという感じ。ライブパートの選曲はどれも良かった。 FLOW はいわずもがなめちゃめちゃ楽しかった!

7月

  • 7/7,8: V-STATION THE LIVE! Passion!! 2018
  • 7/14: 愛美のPerfect Woman ~Perfect meeting~ (昼の部)
  • 7/17: THE THIRD(仮) 2nd LIVE
  • 7/21: BILIBILI MACRO LINK - STAR PHASE × ANISONG WORLD MATSURI 2018
  • 7/22: BILIBILI WORLD (3日目)

この辺から予定の滅茶苦茶感が増してくる。 Poppin'Party が各地のアニソンイベントに出演して回ってさながらライブツアーか、という夏が始まったのがこの7月。
LIVE! Passion!! はラジオ大阪V-STATION の番組間のつながりを感じられて連帯感のあるいいライブだった。お目当てである Poppin'Party やよなきにのステージが大満足だったのは言うまでもないけど、鈴村健一さんの SHIPS のことが強く記憶に残っている。
THE THIRD のセカンドライブはファーストライブよりさらにパワーアップしていて大満足だった。新メンバーが加入して RAISE A SUILEN という名前になるなど、セカンドライブも大きな節目という感じだったので行けて良かった。
そしてこの7月は Poppin'Party とアイマス(シンデレラとミリオン両方)を追いかけて上海のアニソンフェスまで行った。豪華な出演者で大満足だったんだけれど、ライブで一番心を打たれたのはその3者ではなく T.M.RevolutionガンダムSEED曲3連発(INVOKE => Ignited => Meteor)かもしれない。SEED 大好きだったんですよ。。。。
7/22 の BILIBILI WORLD は Poppin'Party のトークステージを見に行ったのが主なんだけど、前日のライブともども中国でのバンドリの人気っぷりを見てちょっと感動してしまった。

8月

  • 8/4,5: THE IDOLM@STER PRODUCER MEETING 2018 “What is TOP!!!!!!!!!!!!!?”
  • 8/8: コカ・コーラ SUMMER STATION 音楽LIVE 18/08/08 Poppin'Party
  • 8/19:「声優 愛美さん ブロマイドお渡し会」in ブシロードストア (第一部)
  • 8/19: 大塚紗英 ファンミーティング『SAE Vo.yage!vol.2~I’m an Egg!~』(2部)
  • 8/24,25,26: Animelo Summer Live 2018 “OK!”

astj.hatenablog.com

改めて書き出すと恐ろしいスケジュール。この月は4回関東に行っている。
7月のところにも書いた Poppin'Party のライブに関しては、この夏はシンガポールのイベント出演以外は行ったんじゃないかな。。 サマステではオルスタらしいオルスタ、ボリューム的にも大満足という内容だったし、アニサマもすごくよかった。
アイマス的にはプロミが大事なイベントだった。爆笑パートは爆笑だったんだけれどね。

9月

astj.hatenablog.com

9/2は同僚(リアル)が当てたカラオケキャンペーンの結果発表イベントというのに連れて行ってもらい、ついでに(というと言葉は悪いが)一度行ってみたかった VR ZONE のニュージェネのを見に行っていた。

SS3Aは現地は初日のみ。アイマスライブで久々にチケット取れなくてライブビューイングという形になった気がする。どういうライブなんだろうと思いながら向かった訳だけど、リアレンジやリミックスは新鮮だったし、ライブ初出しも素敵な曲/パフォーマンスが多くてすごくよかった。あとシンデレラガールズの一員としての鈴木みのりさんの歌を聴いて、やっぱこの人歌うめえなと改めて感じ入ったのもこのライブだった。
9/30 は本当はよなきにのイベントがあったのだけど台風で流れてしまって、当日にチケットを譲ってもらって鈴木みのりさんのバースデーイベントに雪崩れ込んだ。多分SS3Aがなかったら行こうと思わなかったと思う。ライブコーナーもとても良かったのだけど、ピアノ伴奏だけでの Crosswalk が特に心に刺さっている。

10月

  • 10/7: THE IDOLM@STER MR STAGE!! MUSIC♪GROOVE☆ (亜美真美主演回)
  • 10/13: バンドリーマー感謝キャラバン (大阪)
  • 10/27: 刈谷アニメcollection スーパーライブ2018

秋のMRでついに亜美真美主演回登場なのだけど10/7の1日だけ!! なんとこの日は3公演全部行った。曲もMCも、まさに亜美真美のステージで本当にめでたかったし楽しかった。
10/27の刈谷のイベントはイベント終盤しか行けなかったのだけど、 RAISE A SUILEN のステージを満喫できてすごくよかった。あと同僚が近くに住んでいたのでそのままスムーズに飲みに行けたのでおもしろかった。

11月

  • 11/05: 大塚紗英ファンミーティング『SAE Vo.yage! vol.3 ~MAGICALOGIC!~』
  • 11/07: Roselia Live「Vier」
  • 11/10,11: THE IDOLM@STER CINDERELLA GIRLS 6thLIVE MERRY-GO-ROUNDOME!!! 埼玉公演
  • 11/25: 夜中メイクが気になったから ~愛美大卒業式振替編~

シンデレラの西武ドームの直前の月曜と水曜日にイベントが出現したためまるまる1週間関東にいたおそろしい月。そのシンデレラは大きなドームを目一杯使った大満足のライブだった。しかし西武ドームは交通アクセスがね。。。と思い知らされてしまった。

12月

  • 12/01,02: THE IDOLM@STER CINDERELLA GIRLS 6thLIVE MERRY-GO-ROUNDOME!!! 愛知公演
  • 12/07,08: BanG Dream! 6th☆LIVE
  • 12/12: アニメ「BanG Dream! 2nd Season」制作発表会
  • 12/15: リスアニ!LIVE TAIWAN 2018 (SATURDAY STAGE)
  • 12/25: AIMI Birthday Christmas PARTY 2018

年の瀬も沢山イベントに行った。まさか1年で2回台湾にライブ見に行くことになるとは思うまい。海外行ったことない友達が出演者的に是非行きたいということで、じゃあ僕もいくか〜と半分付き添いみたいな気持ちで行ったのだけど、どのアーティストも良くて大満足だった。本人ソロ名義での出演だった沼倉さんがミリオンの最後の Brand New Theater! に登場したあの光景はたまらないものだった。

シンデレラ6thは4公演で春夏秋冬をテーマにする、というのはいいコンセプトだったと思う。しかしこういう明らかなコンセプトにしても季節曲でセトリに収まらない曲が出てしまうあたり、シンデレラの広がりはすごい!というのも改めて思った。全体的に満足度高かったけど、ナゴヤドームはソロ曲の選曲でぶっささるものが多くて大変よかった。あとやっぱり流れ星キセキはダメです!!!!!
バンドリは単純にぶち上げで楽しかったという話題だと金曜日の RAS がピカイチ。土曜日の Poppin'Party は1月からのアニメOPのキズナミュージック♪が既に大好きなのでライブで聞けて本当に良かった。本当に良かった。そして翌週のアニメ制作発表会に行けたのもよかった。ミニライブ楽しかったし、偶々通路側の席だったら目の前をキャストの皆さんが通っていってめっちゃドキドキしてしまった。

愛美さんのバースデーイベントに行くのは3年目。今年はライブハウスが会場ということで歌(カラオケ)が多くて去年とはまた違う印象のイベントだったけれど、イベントに参加できてお祝いできるのはめでたかったですね。

振り返り

何回東京に行ったかとか何回イベントに行ったかとかを考えるのは怖くてやめた!!!!
下半期がどんどんスケジュールに無茶をきかせるようになってきており、行きたいイベントがそこにあるから仕方ないよ〜とは思いつつ、来年も身体と財布が壊れない範囲で無理して楽しくやっていきたいですね。

Go で JSON を扱うにあたっての個人的なメモ

個人的なメモです。というのは全てにおいて予防線として扱われる。

omitempty

JSON tag につける omitempty は、 JSON の Marshal 時に参照される。 empty value だった際にそのフィールドがまるごとスキップされる。

The "omitempty" option specifies that the field should be omitted from the encoding if the field has an empty value, defined as false, 0, a nil pointer, a nil interface value, and any empty array, slice, map, or string.

https://golang.org/pkg/encoding/json/#Marshal

(なので、 UnMarshal にしか使わないような構造体の JSON tag につけても意味はない)

Unmarshal 時のフィールド名の対応

JSON のあるフィールドが JSON のどのフィールドに対応づけられるかのルール:

How does Unmarshal identify the fields in which to store the decoded data? For a given JSON key "Foo", Unmarshal will look through the destination struct's fields to find (in order of preference):

  • An exported field with a tag of "Foo" (see the Go spec for more on struct tags),
  • An exported field named "Foo", or
  • An exported field named "FOO" or "FoO" or some other case-insensitive match of "Foo".
https://blog.golang.org/json-and-go

つまり、(Unmarshal する都合においてのみ言うと)、JSON 上で hogeHoge というフィールドのものを構造体の HogeHoge や Hogehoge などにマッピングしたい場合、 JSON タグはつけなくてもマッピングされる。
逆に、この Case-Insensitive match を無効にするオプション今のところないようなので、 Case-sensitive な厳格な JSON デコーダは実現できないことになる。今触ってるコードだとこれが結構キツいんだけどどうしようか悩んでいる。諦める???

未知のフィールドを除外する

func (*Decoder) DisallowUnknownFields() を使う。

DisallowUnknownFields causes the Decoder to return an error when the destination is a struct and the input contains object keys which do not match any non-ignored, exported fields in the destination.

https://golang.org/pkg/encoding/json/#Decoder.DisallowUnknownFields

ちなみに前述したような Case-insensitive match が無効になる訳ではない。

missing key

package main

import (
	"bytes"
	"encoding/json"
	"fmt"
)

func main() {
	var data struct {
		Name      string   `json:"name"`
		Memo      string   `json:"memo"`
		Nicknames []string `json:"nicknames"`
	}
	buffer := bytes.NewBufferString("{\"name\":\"tom\"}")
	decoder := json.NewDecoder(buffer)
	if err := decoder.Decode(&data); err != nil {
		fmt.Println(err.Error())
	}
	fmt.Println(data)
}

https://play.golang.org/p/PtPrJd0TIE0

構造体の期待するフィールドが JSON 側になかったとき、デコーダは特にエラーにならずに empty value を自然と埋める。緩く扱うにはメリットだけれど、ユーザ入力をきちんとハンドリングしたい時にはちょっと困る気もする。

null as array

package main

import (
	"bytes"
	"encoding/json"
	"fmt"
)

func main() {
	var data struct {
		Name      string   `json:"name"`
		Nicknames []string `json:"nicknames"`
	}
	buffer := bytes.NewBufferString("{\"name\":\"tom\", \"nicknames\": null}")
	decoder := json.NewDecoder(buffer)
	if err := decoder.Decode(&data); err != nil {
		fmt.Println(err.Error())
	}
	fmt.Println(data)
}

https://play.golang.org/p/go69_sBuVZ1

リストっぽいところに null を渡すと空のリストになる。上記の missing key と組み合わせると、ふつうにやると以下の3つは Unmarshal された構造体からは区別できない

  • null
  • []
  • (そもそもフィールドが渡されてこなかった)

2018/09/04 01:19: 複数のフィールドが同じタグを持っている

package main

import (
	"encoding/json"
	"fmt"
)

type Single struct {
	Name1 string `json:"name"`
	Name2 string `json:"name"`
}

type Inner1 struct {
	Name1 string `json:"name"`
}

type Inner2 struct {
	Name2 string `json:"name"`
}

type Inner3 struct {
	Name3 string `json:"name3"`
}

type OuterA struct {
	*Inner1
	*Inner2
}

type OuterB struct {
	*Inner1
	*Inner3
}

func main() {
	data := &Single{}
	if err := json.Unmarshal([]byte("{\"name\":\"tom\"}"), &data); err != nil {
		fmt.Println(err.Error())
	}
	fmt.Println(data)

	dataA := &OuterA{}
	if err := json.Unmarshal([]byte("{\"name\":\"tom\"}"), &dataA); err != nil {
		fmt.Println(err.Error())
	}
	fmt.Println(dataA.Inner1, dataA.Inner2)

	dataB := &OuterB{}
	if err := json.Unmarshal([]byte("{\"name\":\"tom\"}"), &dataB); err != nil {
		fmt.Println(err.Error())
	}
	fmt.Println(dataB.Inner1, dataB.Inner3)
}

https://play.golang.org/p/2Ovn3J7ChfQ

複数のフィールドにうっかり同じタグをつけてしまった場合、どちらにも Unmarshal されない。ちなみに playground つけてないけど Marshal もされない気がする。
上記の Playground の `Single` のように単一の struct にタグが複数ついてると go vet が怒ってくれるけれど、 Outer~ のように embedding だと go vet でも気付かないので難しい。(過去にこれでミスったことがある)

THE IDOLM@STER CINDERELLA GIRLS new generations★Brilliant Party! に行ってきた

アイドルマスターのライブといえばキャストの声優さんが歌い踊る方のリアルライブを普段は指すのだけれど、最近はキャラクター達が歌い踊るバーチャルライブの試みも幾つか生まれている。そのうちの一つの、シンデレラガールズの new generations 主演のバーチャルライブを見に行ってきた。

vrzone-pic.com

f:id:astj:20180902130738j:plain

まだ期間中なので一応具体的なセトリの話はしないでおこうと思います。期間が終わったら追記するかも。

続きを読む