日々精進

aikoと旅行とプログラミング

JXAとpandasで音楽再生履歴を集計してみたらだいたいaikoだった話

普段,WindowsでもMacでも基本的にiTunes or Musicアプリを使用して音楽を聞いている.使用している携帯もiPhoneだったりiPadも使っていたりと基本的にAppleのサービスを使用している.以前

muttan1203.hatenablog.com

みたいなことをしたのだが,今回は自分の再生履歴なんかを見てみたいと思ったので,JXAを使って集計を行ってみた.

qiita.com

実行環境

  • macOS Catalina 10.15.1
  • pyenv 1.2.15
  • pipenv, version 2018.11.26

ちなみに今回のネタは,以下のQiitaの内容を大いに参考にさせていただきました.もはや参考というよりそのまま使用しています.大変参考になりました🙇‍♂️ qiita.com

Musicアプリから楽曲情報を取得する

先程の記事中ではiTunesとなっていましたが,iTunesの音楽再生機能はCatalinaからMusicというアプリケーションに変更となりました.

support.apple.com

そこで,1行目のApplication('iTunes')の箇所はApplication('Music')となります.

function run(){
    const musicApp = Application('Music');
    const music    = musicApp.playlists[1];
    const tracks   = music.tracks.properties();
    return JSON.stringify(tracks);
}

それ以外は全部一緒.このスクリプトgetTracks.jsとして保存し,

$ sascript -l JavaScript getTracks.js > tracks.json

とすると,全ての情報がtracks.jsonに吐き出されます.

集計してみる

再生回数上位10曲

すべての楽曲を対象として,再生回数が上位10曲を抽出.

df.groupby('name') \
    .apply(lambda df: pd.Series([df.albumArtist.iloc[0], sum(df.playedCount)], index=['artist', 'playedCount'])) \
    .sort_values('playedCount', ascending=False) \
    .head(10) \
    .reset_index()

これはaikoランキングかな?

f:id:bath_poo:20191219010821p:plain

aiko以外も入ってるんですが,aikoが圧倒的すぎて他が入ってこなかった.

アーティストごとの再生回数

今度はアーティスト別に再生回数を集計し,上位10人を抽出.

df.groupby('artist')['playedCount'].sum() \
    .drop('') \
    .drop('VARIOUS ARTISTS') \
    .sort_values(ascending=True) \
    .tail(10) \
    .to_frame() \
    .plot(kind='barh')

やっぱaikoなんだよな.2位のSHISHAMOと桁が2つ違っている. f:id:bath_poo:20191219011246p:plain SHISHAMOそんなに聞いてたのか…となったし,伊藤美来さんに関しては今年聞いたばっかりなんだよな.不思議.

最近髭男すごい人気ですよね.YouTuberでのMV再生数もすごいことになってる.髭男を知ったきっかけはaikoがラジオでおすすめしていたからなのだけど,実際すごく良くて今でもたまに聞いている.好きな楽曲は「ラブとピースは君の中」というアルバムに入っているSWEET TWEETなので聞いてみて欲しい.

2019年にアツかった楽曲

2019年に追加された曲に絞って,よく聞いたもの上位10曲を抽出.

df[df.dateAdded > '2019'] \
    .groupby('albumArtist')['playedCount'].sum() \
    .sort_values(ascending=False) \
    .head(10) \
    .to_frame() \
    .plot(kind='bar')

もはや何も驚かなくなった.あ,伊藤美来さんの最新アルバムPopSkipはおすすめです.

f:id:bath_poo:20191219011421p:plain

aikoのアルバムランキング

ここまで来るとaikoのアルバムの内訳が気になってくるので集計.

df[df.albumArtist == "aiko"] \
    .groupby('album')['playedCount'].sum() \
    .sort_values(ascending=True) \
    .tail(10) \
    .plot(kind='barh')

なんとまとめを抑えて時のシルエットが1位になっていた.

f:id:bath_poo:20191219013536p:plain

普段から時のシルエット激推しの私ですが,

その通りの結果になりましたね.

music.apple.com

May Dreamは初めて発売日にかったaikoのアルバムで結構きいたなーと思っていたんですが,時のシルエットのほうが聞いていたのか…

まとめ

こいついつもaiko聞いてんな.試してみたい方は以下からどうぞ.

github.com

aiko Live Tour Love Like Rock Vol.9 Zepp Osaka Bayside(12/6, 12/7)に参加してきた

f:id:bath_poo:20191208004114j:plain

※ネタバレがあるのでご注意ください

aikoのライブにいってきたよ

 最近全然aikoを聞いていなくて(聞けていなくて?)ひたすらKMNZばっかり聞いていた私ですが,12月の楽しみ,というか2019年最後の楽しみなのだけど,aikoのライブに参加してきた.12/6,7の二日連続である.オールスタンディングで2日連続だいじょうぶか?

 前回行ったライブはLLP21@大阪城ホールだったので,大体11ヶ月ぶりぐらいになるだろうか.え,もうそんなにaikoにあってないんですか?ドン引きですね………あっ44歳おめでとうございます.え?44歳?

は?かわいい

というわけで今回の良かったぽいイントだけかいつまんで.以下セットリストの画像が出てくるので注意です.

12/6(金)

f:id:bath_poo:20191207231238j:plain

信号

 May Dreamに収録されている信号.May Dreamが発売されてからもう3年以上たつらしい.時間が経つのが早すぎる.May Dreamは自分がaikoを好きになってから出たアルバムという思い出付き. それまでは既に発売されている曲を聞いているだけだったので,新譜を聞ける楽しみってこういうことなのか…となっていた.

 これだけずっと恋愛ソングを歌い続けてるaikoですら

愛なんて知らない
君の本当もわからない

って言っているのに,一般人の我々が愛について理解できるわけがないんだよなあ,って曲を聞くたびに思っている.愛ってなんだ…

シャッター

 シャッターを聞くたびに「前髪を切りすぎた全人類のアンセム」という言葉を思い出す.

前髪を切りすぎた全人類のアンセムこと、名曲「シャッター」

aikoの言葉にはリアルが詰まっている 〜LLR vol.08 Zepp Tokyo公演を経て〜 - was neues

ライブ終わったあとに改めて歌詞を見ながら曲を聞いてみると,ここにでてくる素直になれない,なかなか踏み出せないあたしは私では? という気持ちになり,やはり私はaikoだった.カラオケでシャッター歌ってる女の子いたら速攻好きになってしまうぐらいにはシャッターが好きです.

メロンソーダ

 2019年のFM802春のキャンペーン「FM802 × TSUTAYA ACCESS!」で使用されたメロンソーダnatalie.mu 先日YouTuberでのMVの公開が終わってしまいもう聞けないのかーと思っていたら,今回のライブで聞けるなんて. 今回は事前にセットリストを見ずに行ったので,当日聞いたときは衝撃だった.aikoだけのメロンソーダを聞きたいなとずっと思っていたので,これが 年末のこのタイミングでくるなんて.

 コーラスをバンドメンバーがやっていてほっこり.aikoにとってラジオってすごい大事な存在だろうから,この仕事が来たとき嬉しかったと同時にすごい プレッシャーだったんだろうなと勝手に思っていた.「おやすみとおはようが重なる」って歌詞はすごくaikoっぽいなあと.朝方にaikoのツイートあると 「あ,今から寝るんだな」ってみんな思うよね.

beat/ヒカリ

 私の記憶が間違っていなければ,初めて聞いたaikoのアルバムはBABYである.偶然友だちが持っていたアルバムで,貸してもらったのをきっかけにaikoを聞き始めたら いつのまにか「まとめⅠ」と「まとめⅡ」が手元にあり,更に気づいたら他のアルバムとシングルを集めライブに行き始めていた.気がついたらaikoジャンキーになっていたのである.こわいね.

 そういう面でBABYというアルバムは思い出深いものなんだけど,今回のセットリストに入っていたこの2曲は好きなBABY収録曲ランキングで上位に来る2曲だったので大変よかった. beatはBABYの1発目の曲.イントロのピアノの音が本当に好きで,1回聞いただけで虜になってしまった.耳から,頭から離れないのである.呪いか何かの類でしょう(これは褒めています) あとはMVがすごい可愛いので全人類見てほしい.今すぐウタウイヌを買うんだ.ライブ会場で買うと,3000円ごとにポスターとスタッフTシャツがもらえる抽選券ももらえるぞ!!!! 実質タダ!!!ほら!!!今すぐ購入!!!

ストロー

私「私aikoすきなんですよー」
相手「あ,そうなんだ!カブトムシっしょ?(笑)」 or 「あ,そうなんだ!テトラポットっしょ?(笑)」
私「は?(そうなんですよ〜)」

という会話が生まれがちなaikoジャンキーのみなさん.aikoって言うとやっぱり「カブトムシ」とか「ボーイフレンド」 をよく聞きがちなので,そう言われることが多い.実際自分は他のアーティストとかそういう感じなので何も文句はいえないのだが….

 そんな中,去年発売された「ストロー」は比較的知っている人が多い楽曲になったのではないだろうか.そう,土曜お昼にやっている 「王様のブランチ」のテーマ曲として使用されていたからである.歌い出しが「君にいいことがあるように〜」から始まるあの曲だ. 思わず口ずさみたくなるキャッチーな歌い出しで多くの人の心を掴んでいる.ちなみにストローのMVはaikoと一緒に生活している感を 感じられるMVとなっているので,全人類見てほしい.aikoに寝癖直してもらいたすぎるだろ.

Loveletter

ライブに行く前の私

先週の私へ.聞けるぞ.良かったな.

ところでラブレターじゃないけど,出したレター(aikoへじゃないよ!)への返信がきませんでした.悲しいですね.強く生きていこう.

キスの息

泡のような愛だった」に収録されているこの楽曲.「泡のような愛だった」といえば

aiko「あ〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜つーいっていうかこの部屋には思い出が多すぎる」
私「(っていうか…?)」

の明日の歌が好きなんですが,私の友人はこのキスの息が好きらしく,底きっかけでよく聞くようになった.aikoの楽曲はスルメソングだなんて言われることが結構あるけども,実際あんまり聞いてなかった曲もあとから聞いてみるとすごく良かったりする.

下唇痛いほど噛んで覚えておこう
あなたに触れたときは心の擦り傷のよう

aikoはあなたとの思い出を体に刻みがち.彼の落書きとかね.(彼の落書きは,aikoの噛み癖からできたっぽいが) 本来は人間にとって苦痛である痛み,でもあなたとの思い出を忘れないようにそれを唇に刻む.歌詞見ながら聞くと,aiko節全開で「うわ〜〜〜〜」となる.あとは

手帳に書いた名前を上から黒く塗りつぶした
けれど指でなぞるたびにあたしの心の中にあなたが入ってく

ここも大好き.あなたにこころもってかれがち.いやわかる,この歌詞もわりとわかってしまう……….最近は塗りつぶすってより電子データとかかもれないけど.そういうのを考えると,歌詞も時代によって随分と移り変わるんだろうなあ.電話とか手紙とかそういうのも減っていきそう.

12/7(土)

f:id:bath_poo:20191207231212j:plain

秘密からのポニーテールとか正気か?

 秘密といえば,私の中の好きなaikoの曲ランキングで上位に食い込んでくる楽曲だ.秘密がどんな曲であるかは,上田啓太さんの 記事を参照されたい. diary.uedakeita.net この記事の以下の部分を生で聞けた.しかもセンターステージ(?)で歌うaikoを見ながら.このまま死ぬんか?と思った.

こ~~れ~~い~~じょ~~お~~~ おもぉ~~いぃ~~が~~~ つ〜〜のぉ~~~~~(余談:ここの高音気持ちいい)ったら~~~~

aikoが「好きだけじゃ済まなくなりそう」と言い出した時の、まだ変身を残していたのか感について - 真顔日記

秘密で昇天しかけていたのだが,その後に流れてきたのがポニーテールである.頭がおかしくなったって心が空っぽになったって あなたのことだけは忘れないポニーテールですか?!!!?!!?好きすぎる2曲が続いてしまったおかげで,次のキラキラが心ここにあらずになってしまった.

隣の人に泣いてたのバレたかな.すまんな.ライブのときだけは許して.

頭がおかしくなったって
心が空っぽになったって
あなたのことだけは忘れないよ

あなたへの好きという感情は,何が起こっても最後まで消えないという強い意志が垣間見える.普通に普段聞いているときもすごい歌詞だと思っていたが,いざ生でこの曲を聞いてみるとその歌詞の破壊力には圧倒される.これが21年目の重みか….

結んだ髪の毛 はしゃいで出来た後れ毛も
あなたに見て欲しいのこのポニーテール
戸惑うなら明日もあさっても結ぶわ
だからいつもできるだけ近くにいてね

ただのポニーテールだけではないんですよ.はしゃいでできたおくれ毛も全部あなたにみてほしい.そして最後にダメ押しの「だからいつもできるだけ近くにいてね」である.ポニーテールで一番好きな歌詞はここで,生で聞けたのでもう2019年終わりって感じです.

ちなみに私はショートヘアのaikoのほうが好きです.長いのもいいけどな!

二日目のセットリスト好きすぎる問題

 このセットリストの中で,自分的に「二人」から「キスが巡る」までの流れが激アツすぎた.しかし,上に書いたとおりポニーテール以降で一旦思考が停止してしまった時間があったのが残念.キラキラが犠牲になったんや……

ライブ後の感想

明日からどうやって生きていこう.あ,よかったらTwitterフォローしてください.

一緒にいってくれた方々,ありがとうございました.すいません隣がおっさんで…また一緒に行きましょう.

関係者のツイート

たらちゃんおめでとう

余談

そろそろaikoのライブに何回いったかわからなくなってきた

自分が参加したaikoのライブを管理するツールが求められている気がする.一覧でずらーっと見れたらアンケートのとき便利だよねぐらいのモチベーション.修論終わったら作ろうか.フロントエンドわからない…

セットリストのデータセットがほしい

おそらくセットリストのデータを公開しているサイトはたくさんあると思うのだが,ある特定の曲が何回歌われたのかとかがちょっと欲しいな…と思ってしまった.aiko driven development(ADD)が求められている.

Zeppのドリンクホルダーが変わっていた

前行ったとき(2年前?)は普通のリングだったのに,今回はギターのカタチになっていた.いつ変わったんだろう.

新曲作ってるみたい

今年の誕生日にこんなふざけた記事を書いたんですけど(aikoさんすいません) muttan1203.hatenablog.com

どうやらちゃんと本家が新曲を作ってくれているらしい.「100通りあるゴメンナサイの言葉が うわっと飛んでく砂」とかはなさそうなので楽しみに待っていよう.

Twitterのアカウント名はまともなやつにしておいたほうが良い

今は多分かわっているとおもうんだけど,ライブ翌日にやっていたNHKのラジオ「うたことば」のaiko特集で

みたいな感想をツイートしたら向井さんに読み上げられたのだけど,アカウント名が「感情」になったので「感情さんのツイート」って読ませてしまったという事件が

あんまりアカウント名をコロコロ変えない方が良いという知見が得られた.

そろそろaikoさんの新曲が聞きたいのでマルコフ連鎖で歌詞を生成してみた

はじめに

aikoとは,日本の女性シンガーソングライターである.代表的な曲に

  • 甘い匂いに誘われる「カブトムシ」
  • テトラポットに登る「ボーイフレンド」
  • 夏の星座にぶら下がる「花火」
  • シルバーリングが黒くなる「キラキラ」
  • 君にいいことがあるように赤いストローをさす「ストロー」

と挙げていったらキリがないのだが,とにかく数多くの名曲を世に送り出しているアーティストである.あとかわいい.

aikoがリリースした最新のシングルは,2019年3月18日に配信された「愛した日」である 1.このシングルは配信限定となっており,シングルカット(ここでは物理的なディスクで販売されたものを指す)されたシングルとしては2018年5月2日の「ストロー」以来新曲は発表されていない.

そこで今回は,これまでaikoが発表したシングル曲の歌詞とマルコフ連鎖を用いて「aikoっぽい歌詞を生成する」ことを試みる.そろそろaikoの新曲が聞きたいので,無いのなら生成してみればいいのである.

方法

文章を生成する方法として,LSTMなどを用いたもの2について積極的に研究されているようだが,今回はもっと単純にマルコフ連鎖を用いた文章生成を行う.

マルコフ連鎖とは,


P(X_{t+1} | X_{t}, X_{t-1},\cdots, X_1) = P(X_{t+1} | X_{t})

となるような確率変数{X_t}の一連の列を言います3'4.式を見れば分かる通り,t+1番目に遷移する確率は,t番目の確率変数にのみ依存することになります.

実装方法

以下のツールを用いて歌詞の生成を試みる

各種ソフトのインストール

$ brew install mecab mecab-ipadic swig
$ pip install mecab-python3
$ pip install markovify

今回はpipenvを使用した.使いやすくて最高.あとは予め保存した歌詞を

text_model = markovify.NewlineText(parsed_text)
for i in range(0, 5):
    print(text_model.make_sentence().replace(" ", ""))

という感じでmarkovifyに投げれば文ができている.最高

結果

生成例1

涙が止まらないでいた
嘘はつかない
ばっとあなたの背中
痛いくらい抱きしめてくれますよに
そして必ず一緒に焼き付けたい
虚しい夜は陰の心が
ここにあなたとあたしは
あなたの声
耳を置いて時々開けるの
あなたの指と腕があるように
何でも話せる友達だよ
ドアを開けて
背伸びで口元奪った
「うん。幸せかも...」
あなたにいくつ言えるかな

開始から涙が止まらないでいたaikoさんになってしまった.痛いぐらい抱きしめてくれますよにとか一緒に焼き付けたいというなんとなく言っていそうな単語が出てきて面白い.

「うん。幸せかも...」

言いそう

生成例2

ずっと痛くて苦しくて
悲しい夜になってる
気が付いた少し気になってる事は
今何を思っていたいの
今日は強いから
そんな言い訳でいいと
思えたりする事も
きっと今頃前見てるの

今日は強いからと強がるaiko.歌詞によく出てくる"あなた"との関係がたまらなく辛くなって苦しいけど,あなたには伝えられない系の歌詞になっていそう.

生成例3

今朝は向かいの家に映る
二人を繋ぐために
今日の自由スイッチを
少しだけ見える日々はある程良い
あなたも持って帰ってこない
優しかったり
何も知らなかった

排水溝に吐き出して
その大きな道を行こうと
お願いだから
時々不安になる口の中で
見かけたよ虚しい夜は
いつか終わる
悲しい傷も必ず癒える
強いだけの瞬間
1人で開けてみよう
奥の潜む意味に気がした事
儚くて愛しくて
1秒過去には戻れない

始まりに変わる
出会えた事はこんなにも
胸が苦しいほど痛むよ
100通りあるゴメンナサイの言葉が
うわっと飛んでく砂
一人歩いた知りたいひたすらに進む
だから遠回しすぎるよ
あなたの笑った顔だけ

うーん,あまりうまく行かなかった例.

虚しい夜はいつか終わる悲しい傷も必ず癒える

これ,やけにうまく出来てるなあと思ったらカケラを残すの歌詞そのまんまになっている.これ形態素解析失敗してるのかなァ…

でも,

だから遠回しすぎるよ あなたの笑った顔だけ

とかちょっとすき.あと

100通りあるゴメンナサイの言葉が うわっと飛んでく砂

って歌詞は大変おもしろい.100通りもゴメンナサイの言葉があるのに砂と一緒にうわっと飛んでってるやんけ.

生成例4

あなたがあたしの
意志を超えて揺れる 
何度も何度も
上げられない様に
切ない溜息

aikoといえば「あなた」ということで,「あなた」を起点に生成してみた.ちなみにスタートの 単語を指定したい場合は,

text_model = markovify.NewlineText(parsed_text)
for i in range(0, 5):
    print(text_model.make_sentence_with_start(beginning='あなた').replace(" ", ""))

みたいな感じにするとよさそう.

今回はついに「あなた」が「あたし」の意思を超えて揺れてしまったらしい.

「あなた」に一体何があったんだ………なんで揺れちゃったんだ……しかも最後ため息出ちゃってますよ.

その他の例

あなたのかかと気になっている季節は秋桜

かかと気になっちゃったかー

あなたとあたしは前を向きひたすらに進むだから早く受け止めてね

マルコフ連鎖で生成するとaiko前向きがち

あなたがあたしの
内の秘めたる気持ち
あの子と一緒にいようと思っては
風を迎えてくれる
あなたはいつも
最後の日に決められない様に
瞬きが出来やしないや

瞬きはしてほしい

あなたのうぶ毛も閉じなくて困った
幸せは怖いものだから
もっと一緒に捨ててやりました
あなたにも触れて知るの
あなたに言われた気持ちを
氷で閉じてがんばれ歌姫

歌姫へのエール.あなたの産毛の処理に困ってたのかな?

まとめ

  • 今回はaikoの歌詞とマルコフ連鎖を用いて,aikoっぽい歌詞を生成することを試みた
  • それっぽくはなるものの,とても歌詞とは程遠い何かができた
  • 一方で,単語単位で抜き出せば良さげな表現もあった
  • aikoさん誕生日おめでとうございます
  • 新曲もお待ちしています

muttan1203.hatenablog.com

参考文献

builderscon tokyo 2019に参加してきた #builderscon

先日開催された,builderscon tokyo 2019へ参加してきた.

builderscon.io

buildersconは

buildersconは「知らなかった、を聞く」をテーマとした技術を愛する全てのギーク達のお祭りです。buildersconではトークに関して技術的な制約はありません、特定のプログラミング言語や技術スタックによるくくりも設けません。

(引用:https://builderscon.io

と書かれているように,特定の言語やフレームワーク等に縛られないテックカンファレンスです.縛りがないので,開催する二日間で様々なジャンルの話を聞くことができ,まさに「知らなかった,を聞く」というテーマにピッタリのカンファレンスとなっている.

以下,参加して気になったセッションの内容と簡単な感想を述べたいと思う.

ランチセッション「キーボードは好きですか?」

speakerdeck.com

自作キーボード,最近よく聞くようになりましたね.秋葉原には遊舎工房というお店もできたぐらい.

yushakobo.jp

今回は,我々が普段使っているキーボードから自作のコアな話まで50分間たっぷり聞くことができた.日本語でこれだけまとまっている資料が他にあるだろうか. ちょうど最近USキーボードに移行しようとしており,新しいキーボードをめちゃくちゃ迷ってるタイミングでの発表だったので,非常にタイムリーだった. 正直キーボードのスイッチがあんなに深いものだとは思っておらず…軸の名前(赤軸とか)は聞いたことあったけども,こんなに種類や特性があるんだなという学びを得た.

で,発表していたのが以前インターンしていたときに隣の席だった id:foostan だった.というのも,このセッションはfreeeがスポンサードしており,freeeで自作キーボードといえばfoostanなのである.

muttan1203.hatenablog.com

↓の記事が面白いのでぜひ

developers.freee.co.jp

コンパイラをつくってみよう

speakerdeck.com

DQNEOさんの発表.なんと,ライブコーディングで簡単なコンパイラを作成するというもの.

  • Go言語を使う
  • 加減算を行い,評価した値でexitする
  • アセンブリを標準出力に吐き出すことで実現

というものだった.この発表はすごく良くて,1ステップずつ出来上がる過程をみることができるし,機能が追加される毎に会場では拍手が起こり,ワイワイしながら発表が進んでいった. 途中実行がエラー担った際は,客席から間違った部分の指摘が飛んできており,実質ボディビルの掛け声だった.エラーが起こっている行数を教えていた人,人間コンパイラだった.

DQNEOさんが学んだ教材は,有名なruiさんの8ccらしい.

github.com

今だとchibiccというものがよさげかも

github.com

コンパイラ作成は長い道のりになりがちで,モチベーションをどう保つのかという質問もあった.確かに難しすぎると途中で心が折れてしまいそうである.その点,chibiccは

この本では、コンパイラの説明の難易度が急に上がりすぎないように、様々なトピックを本書全体を通じて次第に掘り下げていくという形で説明することにしました。その理由は次のとおりです。

と書いてあるように,これまでのものよりはとっつきやすいのかもしれない.

www.sigbus.info

非同期処理の歴史から見たコンピューティングの進化

speakerdeck.com

ついつい避けがちな非同期処理の話題.正直自分も正しく答えられるかというと,自身がまったくない. 今回は,歴史的経緯も踏まえつつ,どのように非同期処理が進化してきたかという内容だった.最初の方に出てきたRunnableによる非同期,昔Androidアプリを 書いたときに使っていたなあなどと思いだして懐かしくなっていた.

もちろん文法レベルでどうやって書けば非同期処理が実現できるかがわかるのも大事であるが,それ以上にどのようにしてソフトウェアが動作しているかを意識しなければ ならないと感じた.最近書いているものは正直そのあたりを意識して書けていない(本当は意識しないといけないのだけども)ところもあり反省点である.すごい情報量の資料 なので,もう一度読み返したい.

Optimizing Ruby with JIT - 最速の言語を目指して

speakerdeck.com

Ruby 2.6.0から導入されたJIT(Just In Time)コンパイラ.この発表では,JITコンパイラによる高速化をどのようなアプローチで進めていったのかといったことを聞くことができた. 正直,RubyJITコンパイラが入りますよと言われたときはそこまで関心がなかったのだが,今回この発表を聞くとその見方も大きく変わってくる. 様々なアプローチをコードの例を提示しながらステップバイステップで最適化されていく様子は見ていてとてもワクワクした.

今回の資料ではないが,こんなものもある

speakerdeck.com

レガシーサーバーを現代の技術で再構築する

speakerdeck.com

社内で使用されてきた機能モリモリのレガシーなLinuxサーバを,現代の技術を使って再構築していく話.fujiwaraさんはISUCONの方で何度も 見ている人で,実際の発表を見るのは初めてだった.

Redmine, SVN, Git, IRC, Gyazoなどのサービスが1台のLinuxサーバに構築されており,そのシステムは4年周期ぐらいで手が加えられて行ったそう. 今回がちょうどその周期になっており,実際に一つ一つ改善していった点が紹介されていた.

ついついやらなければいけないことから考えがちであるが,まずは「やらないこと」というのを明確に定義したあとにやっていくことを決めて 行ったのが印象的だった.ついついいろいろなことに手を付けがちなものだが,原状を正しく把握してやることを整理できる力というのはかなり 大切であるように感じた.

それにしてもサーバが1台しか存在しなくて,それが結構な頻度で使われておりあまり落としたくないという状況下の移行は大変そう…というお気持ちに. いかにうまく移行するかがエンジニアが頑張るポイントで,更にコスト計算等も考えられるようになりたいねと思った.

入門サービスメッシュ

speakerdeck.com

マイクロサービスやその周辺の技術に疎い自分ですら最近良く見かけるサービスメッシュというワード.サービスメッシュのサの字もわからないので,これを機に 入門しようということで聴講.小さなアプリケーション同士が連携し合うことでサービスを提供するマイクロサービスアーキテクチャを採用した際に生まれる

  • Service Discovery
  • Fault Isolation
  • Observability
  • Authentication
  • Access Control

あたりの処理をいい感じにやってくれるソフトウェアぐらいは掴むことができた.そしてそれを実現するために,EnvoyであったりIstioが存在しておりどのように使用 されているのかも雰囲気を感じることができた.しかし,周辺知識が不足しすぎていたので,途中からだんだんわからなくなって来ており勉強不足を痛感した.

そもそもサービスメッシュの話をする前に,マイクロサービスだと何が辛いねんみたいなところがしっかりわかっていなかったところがある.でも今回自分で調べて 見たりして少しずつつかめてきたのでよしとしたい.

まとめ

テックカンファレンスはなにか特定の言語やフレームワークに限定されたものは多く開催されているが、Buildersconでは普段自分が聞かないような分野やコミュニティの 人の発表を聞くことができて、非常に充実した二日間であった。

特にDQNEOさんのセッションが印象に残っていて、あそこまで会場に一体感のある発表というのは初めてだった。すごいスピードでコンパイラが出来上がっていく過程というものを 体験することができたし、機能が追加されていく面白さみたいなものを感じることができた。

楽しかったと同時に、自分が何も知らないということを痛感した。「知らなかった、を聞く」なのである意味狙い通りとも言えるが、この先エンジニアとしてやっていく と考えると、もう少し色々考えて動かなければならないなとも感じた。でも楽しいと思えたからいいでしょう。来年から社会人、がんばっていきたいですね。

なお,本イベントに参加するにあたって,Classi株式会社のスカラシップに採用していただき,移動費と宿泊費を負担していただいた.

classi-scholarship.connpass.com

Classiは、教育におけるICT活用の重要性と今後の一層の高まりを見据え、 ベネッセとソフトバンクの強みを生かして、学校教育、家庭学習の両方の領域で、 最新のテクノロジーも活用しながら、未来を生きる子供たちに よりよい学びを提供できるよう新たな教材・サービスの開発に取り組んでまいります。

https://classi.jp/corporate/より引用)

とあるように,新しい教育の姿をテクノロジーとの掛け算で追求している.教育系×テクノロジーという組み合わせにピンときたかたは, 直接アポイントをとってみたり逆求人等を利用することでより詳しい話が聞けるだろう.今後も学生向けのスカラシップは実施していくとの ことだったので,要チェック.

スカラシップ制度,地方に住んでいて金銭的にも都心に出るのが辛い学生にとっては本当にありがたい制度である.buildersconは去年から行きたいと思っていた イベントだったので,今回その夢を実現させることができてよかった.重ねてお礼申し上げます.

PyCon Kyushu 2019 Okinawa 参加記

f:id:bath_poo:20190522231337j:plain

5/18(土)に開催されたPyCon Kyushu in Okinawa 2019に参加してきた。 kyushu.pycon.jp Pythonめちゃくちゃ書く人かというとそうではないが、最近身近にPythonの機運が高まりつつあったり、Python2あたりで止まっている自分の知識のアップデートも兼ねて参加することに。 普段福井にいる学生が沖縄まで行くのは辛いのでは?という話だが、ありがたいことに遠方支援という制度があり、そのおかげで参加することができた。ありがとうございます。

以下聞いたもののメモです。

Python Webフレームワーク比較

Python超初心者の私は、聞いたことがあったフレームワークDjango, Flask, Zopeぐらいなものだった。この3つも含めて全部で9個のフレームワークを比較するというセッション。Webフレームワークに求められる機能は非常に多岐にわたり、フレームワークによってその実装度合いもまちまちである。求められる要件に応じて、適切にフレームワークを選択する必要がある。

もちろん求めている機能が実装されていることは非常に大事だが、そのフレームワークを使っていく上で、それに関する知識やノウハウといったものがどの程度蓄積されているか、周囲の知識レベルなども非常に大切な要素であると感じた。

Pythonにおける並列処理プログラミング

slideship.com Pythonで並列/並行プログラミングをする話。毎度並列と並行がごっちゃになる人間なので、セッションが始まる前にちょっと復習した記憶。 Python(正確にはCPython)にはGlobal Interpreter Lock(GIL)の制限があるため、複数のスレッドを生成しても実際に実行できるスレッドは1つに限られている。

Pythonでの開発を効率的に進めるためのツール設定

Pythonを使った開発を便利にするためのツールの紹介。ここで聞いたツールたちを後々の発表で聞くこともあった。手元の環境(例えばエディタであったりjediなどのコード補完)もそうだが、linterやformatterなどを使うことでチームでのPython開発をより良いものにしようという強い意志を感じた。「クオリティは人力であげるものではなく、機会に頼っていこう」というところに強く共感した。

ところで、import文をソートするという概念に初めて出会った。importを入れ替えて動かなくなった場合、そこに依存関係が発生しているからどうにかしたほうが良いというお話のようだった。

試行錯誤のための Docker 活用術

Dockerについての最低限の知識を持った状態で聞いていたので、流石に最初の方はわかる、となっていた。DockerはJavaという強い言葉をきいた。

データアナリスト側としては、

  • 様々な方法(ツール)を簡単に試行できること
  • 環境の再現が容易であること

のような環境があるととても嬉しくて、そういう要件にコンテナがとっても良いよというお話。環境の再現性やポータビリティといったものに関してはDockerを始めとするコンテナは非常に有用である。今nvidia-dockerとかあるんだなー、という気持ちになった。MLOpsに対する興味が湧いてきた。

開発環境の垣根を超えるLanguage Server Protocol入門

最近聞くことが増えたLanguage Server Protocolのお話。エディタとかの補完を実現するために使われているとかとか。エディタとLanguage Server間をJSON-RPCで通信することでその機能を実現しているとのこと。Pythonはもちろん、他にも70種類ほどの言語で実装されているらしい。

LSPってマイクロソフトが関わってたのをここで初めて知った。 microsoft.github.io

Pythonと型ヒントとその使い方

Type Hintsは関数の戻り値の型や引数の型といったものに対して型注釈(アノテーション?)することができる機能である。あくまでアノテーションであって、型の検査等はされない。主に静的解析用途と考えたほうが良さそう。適切な補完を出すためにも書いておくと良いし、この話はPythonでの開発を効率的に進めるためのツール設定でmypy話をしていたときにも出てきていた。ただ開発者陣は「あくまでPythonは動的型付け言語であり、Type Hintsは必須の機能にする気はない」とのこと。

Type Hints登場時から歴史をたどって(PEPをみながら)進んでいってとてもわかりやすかった。

まとめ

Pythonに関する勉強会やコミュニティといったものに初めて触れましたが、1日楽しくまた大変勉強になる知見をたくさん得ることができました。Pythonといえば今Machine Learningの分野で多く使われておりそちらよりの発表が多いのかと思いきや、Web寄りの内容も多く楽しむことができました。今後Pythonを使用する際に参考にさせていただきたいと思います。スタッフの皆さん、参加者のみなさんお疲れ様でした!

余談

PyConも楽しみましたが、人生初の沖縄も少し楽しむことができました。海綺麗すぎませんかね? f:id:bath_poo:20190522230951j:plain 三枚肉そばも f:id:bath_poo:20190522231056j:plain

MSPJマイグレーションコンペティション2019 winter 参加記 #mspj

f:id:bath_poo:20190120225016j:plain

2019年になってから一発目のイベント、MSPJマイグレーションコンテスト2019に参加してきた。

マイグレーションコンペティションとは

そもそもマイグレーションコンペティションって何?という方のほうが多い気がする。

mspj.jp

日本MSP協会(MSPJ: Managed Service Provider's Association Japan)が開催しているコンペティションで、すごく簡単に言ってしまうとシステムをマイグレーションする(移行する)コンテストなのである。タイトルそのままなので説明になっていない気もするが…。

このコンペティションにはある特徴があって、参加するにあたって「開催当日に30歳以下であること」が必須の条件とされていることである。募集ページの言葉を引用させていただくと、

日本MSP協会コンペティショングループは、運用技術を競うコンペティションを開催し、 次代を担う若手運用技術者同士の交流・競争を通して日本のMSP事業者における運用技術の向上を目指します。

ということで、比較的若いエンジニアがターゲットとなっていることが挙げられる。私もまだ比較的若いので(?)参加してみようということに。

このコンペティションの面白いところとして、システムマイグレーションだけではなく顧客とのやり取りや報告書の作成等も含まれるところである。完全に移行し、かつ顧客とスムーズにやり取りする力、資料作成まで見込んだスケジューリング感なども求められるコンペティションになっている。

前日まで

お題については事前に公表されており、

connpass.com

非常にざっくりとではあるもののどのようなシステムを移行する必要があるのかを感じ取ることはできる。お題は

お題:いま動いている文書システムを新しい環境に移行して欲しい

とのこと。システムに関しては、

  • Amazon Web Servicesで動いていそう
  • バージョンが古めのCentOS
  • ミドルウェアApachePythonGitが含まれていること
  • 移行先がMicrosoft Azure

程度の状況はわかっている。バージョン古めのCentOSはどうせCentOS6.xだろうなーとか、 AzureやったことないしVM立てるぐらいはやっておかないとなーと思っていたら、イベントの1週間前ぐらいからひどい風邪を引いてしまいずっと倒れていた。つまり、コンペ当日まで何もできていなかったのである。こういうのは付け焼き刃の知識では良くないので、もっと計画的に前から作戦を練ろうという気持ちになった(来年への課題です)

当日

今回(も?)会場は品川にある日本マイクロソフトだった。品川駅を降りて港南口からでて右折までは成功したものの、その後さまよい続けて結果10分ほどロスをするはめになった。ビル沿いに並んでるのかと思いきや、少しマイクロソフトのビルだけ入り口が奥にあったので気づかずにスルー(伝われ)

f:id:bath_poo:20190120224934j:plain
いい景色

10:00から開会式と聞いていたが、前に書いた通り迷子になっていたので到着が9:50ぐらいになった。すでに会場にはそれなりに人がいて、皆様結構到着が早めなのね…などと思っていた。知り合いがひとり来るのは知っていたがまだ来ていなかったようなのでコミュ障地蔵になって椅子に座っていた。

開会式

開会式が始まる。みんな静か。めっちゃ静か。自分も静かだったので申し訳ない。もうちょっと反応したほうが絶対いいよねって思いました、自分も含め。でもみんなお金が欲しいことだけはすごくわかりました(自分もそう)

今回のお題が発表される。Gitで管理してる文書サイトをAWSからAzureに移行しましょう!というお話だった。また、文書のビルドにはJenkinsを使っているとのことだった。このときJenkinsを使ったことがない、というかCIツールを使ったことがない私は(これやばいんじゃない…?)という気持ちでいっぱいだった。他にも顧客からの要望が来ていて、

  • 今の環境を新しい環境に完全移行して欲しいです。
  • 実施した内容と結果については報告が欲しいです。
  • システムを止めるときは利用者に告知が必要なので連絡が欲しいです。
  • 昔から使っている古い環境なので、バージョンアップして欲しいです。
  • できれば利用者に影響を出さないように切り替えたいです。
  • できればサーバに関する資料があるとありがたいです。
  • できればバックアップを取れるようにしたいです
  • できれば今後は利用者が増えるのでシステムを冗長化したいです。
  • できれば引継ぎするために必要な情報がまとまっていると嬉しいです。
  • 体制変更で、システムが分かる人がいなくなってしまいました。
  • いいタイミングなのでリフレッシュしたいなと思っています。
  • 商売は続いているので、できるだけ利用者さんに影響が少ないと嬉しいです。
  • 本当はいろいろとナウっぽいこともしていい感じにしていきたいんですよ。

と大変盛りだくさん。完全に移行ができた上で、この要件を満たせると+ALPHAの加点となるようだった。

そして最後にチーム分け。今回は実務経験年数が4年以上とそれ未満で分け、4年以上の人たちが各チームに一人以上はいるようにチーム分けが行われた。このコンテスト、参加者がほぼ社会人なので、実務経験が0年の私はとにかくチームメンバーの足を引っ張らないかどうかが心配で胃に穴が開きそうだった。1列に並んで、前から1〜9の番号を読み上げていきまた1〜9まで読み上げるという小学生ぶりのチーム分けを行い、Team5(Tさん(社会人), Oさん(社会人), 私(学生))ということになった。いよいよ10:30から開始である。

コンペティション最中のお話

10:30〜11:30

ここからはTさんのまとめた資料をもとに書いていく。資料をちゃんと書いていると、コンテスト後の参加記が書きやすくなります(そういう用途ではない)

まずは、顧客の要求を「やらなければいけないこと(MUST)」と「やるべきこと(SHOULD)」に分けるところから始まる。上に載せたもののうち、

  • 今の環境を新しい環境に完全移行して欲しいです。
  • 実施した内容と結果については報告が欲しいです。
  • システムを止めるときは利用者に告知が必要なので連絡が欲しいです。
  • 昔から使っている古い環境なので、バージョンアップして欲しいです。

については必ず実施しなければいけない。これが完了した上で、残りの項目を達成できるように行うべきであるという認識を一致させた。これについてはTさんがGoogleSpreadsheetにすべてまとめてくれており、最後までこれを見失わずに進むことができたと思う。

やらなければいけないことがわかった上で、それぞれのスキルや経験等をもとに役割分担を行った。リーダーのTさんは、顧客に提出する資料を書きつつ残りチームの舵取り役、Oさんは移行先環境(Azure)のセットアップ、残る私は現在の環境について調査を行うことになった。

調査をしていくと、

  • 今回は配信しているものに関しては静的コンテンツしかない
    • PHPMySQL等は存在しない
  • OSはCentOS6.9
  • WebサーバはApache
  • GitPythonは予告どおり
  • Apache, Gitリポジトリ, Jenkinsなどがすべて1台のインスタンスで稼働している
  • コンテンツはmkdocsを使ってビルドされている

ことがわかった。これらを調べているうちに、横でOさんがVMを立て終えていて(社会人のお二人手際良すぎでは…)と思うなどしていた。

また、副次的にわかったこととして、

  • Jenkinsのログを見ていると、大量のWARNINGがでている
  • Jenkinsで走っているジョブの動作
    • /var/lib/jenkins/mkdocs/docsへ移動
    • git pullで変更をとってくる
    • /var/lib/jenkins/mkdocs/へ移動
    • mkdocs build
    • ビルドされた/var/lib/jenkins/mkdocs/site//var/www/html/rsync

ということがわかった。どうもmkdocs buildするときに、Markdownファイル内に含まれる外字を表す画像を格納したディレクトリ(以下、外字ディレクトリ)が存在しないのでは?という警告だった。しかしページ自体は普通に表示されているので、とりあえず問題ないとして次に進んだ。

まだ午前中&チームを組んですぐだったので、めっちゃビクビクしながら話しかけていた。

11:30〜12:30

ここまでの状況を一度お互いに報告し、このあとの方向性を決めた。Tさんは現在やっている作業を継続、Oさんはバックアップの設定、私はデータの移行を行うことになった。

旧環境から新環境へは以下のファイルを移行させる必要があった。

  • コンテンツのリポジトリ
  • httpd.confやmkstyle.ymlといったコンフィグファイル
  • Jenkinsの設定ファイル

基本的にインスタンス関連のオペレーションは私とOさんがやっていたので、Oさんと相談しつつ「とりあえず全部rsyncを使って全部コピーしよう」という方針で決まった。Jenkinsの移行は、/var/lib/jenkinsをまるごとコピーした。1[GB]ぐらいあった。

このあたりで、リポジトリの奇妙な点に気づく。先程Jenkinsのログで大量のワーニングが出ていた事に気づいていたが、その原因が「.mdが参照している外字ディレクトリがリポジトリに含まれていないため」であることがわかった。その外字ディレクトリはどこにあるかというと、Apacheのドキュメントルート/var/www/htmlに置かれていた。つまり、人力で旧環境から新環境へ外字ディレクトリをコピーしない限り、いくら新環境でビルドしても外字がNot Foundになってしまうという罠があった。

画像ファイルが含まれていないことにこの段階で気づいたので, /var/www/htmlに関しても新環境にそのまま移行した. ここでこれに気づいていたのはラッキーだったと思う。

12:30〜13:30

ごはんもぐもぐ。ここになってやっとお互いの話を落ち着いてできるようになる。やはりランチ会っていいですね。出身の話をしたりとか、普段どんなことをしているのか、どんな会社なのかいろいろ聞きつつ楽しい時間を過ごすことができた。

13:30〜14:30

とりあえず移行が終わったはずなので、新環境でページが見れるかを確認した。午前の段階で、旧環境の/var/www/htmlの中身をコピーしてあるので, 正しく設定されていれば見れるはずである。結果、正しく表示されていた。このとりあえず動くというのはメンタル的にも大事であると今まで嫌というほど学んできたので、新環境で動いた瞬間を見たときは正直ホッとした。

この段階で,

  • とりあえずVMは稼働している
  • 22, 80ポートの疎通ができる
  • Apacheも動いている
  • 表示も正しそう(画像の欠損がないか、など)

は確認できていた。そして次取り組んだのはJenkinsの設定。まずコンソールを見ようと思って<host>:8080に何もでなかったので,

$ systemctl status jenkins
● jenkins.service - LSB: Jenkins Automation Server
   Loaded: loaded (/etc/rc.d/init.d/jenkins; bad; vendor preset: disabled)
   Active: failed (Result: exit-code) since 土 2019-01-19 02:26:14 UTC; 1h 37min ago
     Docs: man:systemd-sysv-generator(8)
  Process: 864 ExecStart=/etc/rc.d/init.d/jenkins start (code=exited, status=1/FAILURE)

エーン。journalctlでみた結果、Javaが入ってないというだけだった。ログを見て速攻Oさんが気づき爆速でjdkインストールをしてくれた。今回思ったんだけど、私の曖昧な詰まり報告をきいて爆速で課題解決してくれるOさんがめちゃくちゃ頼もしかった。

そんな感じでJenkinsが復活した。旧環境から環境をまるごとコピーしたので、前の環境と同じようにログインし、もともとあったジョブを走らせたらコケてしまった。どうもjenkinsユーザーがssh失敗してるようだった。これは、

$ su -s /bin/bash jenkins
$ ssh admin@localhost

という感じでknown_hostsに突っ込むことで解決した(ビルド実行ユーザーはadminだったのでこんな感じになった)。この日初めて問題解決をし、多少役に立てたかな、という気持ちになった。

次は、mkdocs buildがコケるようになった。どうも使っているテーマ(見た目)がインストールされていないらしい。これまたOさんが爆速でpip installを決めてくれたおかげでビルドも通るようになった🎉

14:30〜15:30

JenkinsのログにBUILD: SUCCESSとでていた私たちは大喜びしていたが、冷静になってみるとその上にエラーが表示されている事に気づいた。どうもメール送信に失敗したらしい…

その後もう一度ジョブを走らせると、そのエラーが表示されなくなった。何だこれは…?と思ったが、とりあえず一度でもメール送信失敗したことは事実なので調査を行うことに。そこでOさんとTさんが「たしかAzureって25番ポートで他のメールアドレスに直接メール送信できなかった気がする」という話が出る。どうもAWSは25番、つまりSMTPサーバへの通信ができるが, GCPAzureはできないとのことだった。これOP25B(Outbound Port 25 Blocking)って言うんですね。だから前の環境ではこれで動いていたのか…となる。

これの解決策としてパッと思いつくのはSendGridを使うことなので、そちらの方針に切り替える。顧客に事情説明とSendGridを使う旨を伝え、移行作業に取り掛かった。またこちらもOさんが爆速でSendGridの環境を整えてくださり、私はJenkinsのConfig画面にユーザーとキーとSMTPサーバのアドレスを書くだけになった。

設定したものの何故かうまくいかない。結果としてはポートが25のままだった。他のポートに変更したら無事にメールが届いたため、メールの設定も無事に終了した🎉

同時に冗長化どうする?というお話にもなった。

15:30〜16:30

冗長化をどうしようかという議論が前の時間から続いていた。可用性セットとか可用性ゾーン、LBWAFとか?という話をしていたが結果どれも断念。LBの下に何台かインスタンスをぶら下げたとき、どうやってコンテンツ類を同期しようかという話になって、残りの時間を考えたときにこの変更は難しいということになって断念した。

また、CDNを入れてサーバの負荷低減や冗長化というところまでやったが、Jenkinsも同一サーバにいるためこちらも断念ということに。

これに加えて、セキュリティ的な対策も考えた。まず、DDoS等の不正アクセスを検知するためにAzure Monitorをつかってモニタリングを行った。5分間の平均CPU使用率が80%を超えるようなときにアラートが飛ぶようになった。この設定はOさんがやってくれていた。

あとこれが対策になるかはわからないものの、Apacheの基本的な設定を行った。どんなものかわからなかったので、とりあえず二人に相談し、「いいんじゃない?やってみよう。」とのことだったので進める。割とよくあるバージョンを隠そうねとかそんなやつなので、

  • ServerTokens ProductOnlyを追記し, レスポンスヘッダーに含まれるApacheのバージョンを非表示に変更
  • ServerSignature Offを追記し, エラー(NotFound)時にシステムの詳細が書かれたフッターを表示しないように変更
  • のOptionsからIndexesを削除し, <URL>にアクセスした際にファイル一覧を表示しないように変更

という感じをやった。これも一応報告書にも載せてもらえた。

このあたりで、顧客に対してDNSの切り替え要請を行った。

  • 16:30頃に切り替えて欲しい 
  • ページがダウンする可能性があるので、ユーザーへの通知を行って欲しい

の2点をお願いした。主にこのあたりのやり取りはTさん中心にOさんも行ってくれて本当に本当に助けられた。特にTさんは、VMいじってる二人がやっていることも気にかけつつ、必要と思われるコミュニケーションはどんどんとっていてありがたかった。

16:30〜17:00

いよいよDNSが切り替わる。見たところ正常に動作してるっぽい。とりあえず移行はできたことが確認された。

そして残りは納品資料の作成。と言ってもこの段階で9割ぐらいはできていて、あとは手直しやtypoの修正というぐらいだった。Tさん有能過ぎでは。

そして1分前ぐらいに提出して終了。こう見るとギリギリだったけど、やっている側としてはそんなに焦ってやってはいなかったので良かったかな。3人共やりきったという感じでした。

懇親会

今回懇親会画像全然撮ってない。大量のアルコールがDeployされましたが、私は病み上がりなので緑茶を無限に決めていた。オードブルとかもでてきていい感じ。懇親会2hあって結構長いなーって思っていたら、その裏でジャッジが行われていたらしい。通りで運営チームの人を見かけないわけである。

一番最初に話しかけてくださった方が、いきなり私のTwitterの話し始めたの本当に面白かった(嫌ではない)。共通のフォロワーが何人かいたからね、しょうがないね。その流れで、その社から来ている方々ともいろいろお話させていただいた。今度ご飯食べいこうねというお話もした。

29人中27人が社会人の方だったので、自分より年上だったりする方がおおかったりした。就活中なんすよ〜〜(ヘラヘラ)というムーブもした。自分も興味があったりする会社の人もいたりしたのでその方ともお話をした。

コミュ力トークスキルが低いので、懇親会は難しい。当日で一番難しかった。

結果発表

いよいよドキドキの結果発表。なぜならば、このイベントは入賞者に賞金が贈られるのである。今回から大幅に増額&受賞者が増えたということでみんなワクワクしていた。具体的に書くと1位が60万, 2位が30万, 3位が10万である。

3位から順に発表された。3位はなんと該当者なし。会場が???となる。まあもしかしたら同率2位とかそういうね、と思う。そして2位。2位もいない。更に???????となる。つまり今回移設成功していたのが1チームしかなかったのである。

この自体にレギュレーションが変更される。なんと1位が100万円全部もっていくことになった。会場がざわざわする。まさか100万円になるとは誰も思っていなかったんだろうね。

そしていよいよ1位の発表である。1位はなんと

f:id:bath_poo:20190120225107j:plain
まさかの
でした。というわけで優勝しました🎉

やはり移行が完全にうまくいっていたところはTeam5だけだったらしい。自分は「多分入っていても3位ぐらいでは」と思っていたので、3位が該当なしの時点ですでにあきらめムードだった。そんな中名前を呼ばれたので、最初は脳が混乱していた。

隣のTeam6は惜しくて移行まで行っていたけど、外字ディレクトリの移行にミスっていたため駄目だったらしい。結構シビアだなあと思うなどした。

感想

MUSTとSHOULDの話

今回は、資料もあまりないシステムが与えられてそれを別のパブリッククラウドに移し替えるというものだった。それに加えて、顧客からの要求もきており、そちらもできる限り実現して欲しいというものだった。

最初にも書いたが、やらなければいけないMUSTなことと、やってほしいSHOULDなことをしっかりと見極め、それをブレずに実践することの大切さを感じた。今回の課題に関しては、旧環境が新環境で完全に再現されている必要があった。これはMUSTな条件である。ナウいシステム構成にするのもいいが、それよりもまず満たすべきところをしっかりと満たせたのが我々の良かったところだと思う。チームメンバーの3人とも、同じ方向を向いて取り組めていたところも大変よかったと思う。

チームでうまいことやるのって難しい

f:id:bath_poo:20190120230531p:plain 今回は時間も結構限られていた。6h30mぐらいの中で、求められていることを確実にこなして資料まで作り上げなければならない。意外と時間があるようでなかったりするので、そのあたりのスケジュール感が適切でないと最後移行失敗ということになってしまいそうだなと思った。

自分はそのあたりが正直全然わからなくて、完全にTさんとOさんに任せっきりという感じだった。次出るときがあったら意見できるぐらいにはなりたいですね。

まとめ

10:30〜17:00という非常に短い時間で移行を行うのは、自分が想像していた以上に難しいものでした。しかし、それによって得られた学びも大きかったように感じられます。実務経験0の私には、得られるものが非常に大きなイベントでした。

あとははじめてのJenkins, はじめてのAzureって感じで。慣れないながらも試行錯誤できたかな、と。まだまだ精進が必要ですね。

まだ全然U30なので、来年以降も積極的に参加していきたいと思います。チームメンバーのお二方、運営のみなさん、そして参加されたみなさん、ありがとうございました。

2018年を振り返る

2018年も終わりですね

何でもかんでも「平成最後の」ってつければいいというものでもないですよ。2018年、前半のスカスカ具合に対して後半のイベントつまり具合が半端ない年だった。前半全然かくことないもんね。

1月

  • 1/1といえばaikoさんのnew year CMですね!!!!

  • 今年は福井県で初詣をする

    • 毛谷黒龍神社に行った
  • 当たり前ですが外は雪&雪
  • なにか例年と違う…そう降雪量がおかしい
  • 温泉に行く予定が延期になるレベルでドカ雪が降る
  • もりもり寿しは神
    f:id:bath_poo:20181223224504j:plain
    最高のエクスペリエンス

2月

  • 今年は卒論を書かないといけないというのに、雪がひどすぎる
    f:id:bath_poo:20181223225745j:plain
    雪がひどすぎるんじゃあ
  • 交通網が麻痺し、8号線が足止め状態となる

www.asahi.com

  • 同じ研究室のやつも、学校までたどり着けない状態になる
  • スーパーから物が消える
  • 道路も雪で埋まってしまう
  • 無事に卒論発表&提出を終える
  • ピクシブインターンシップをする

3月

  • クックパッドの1dayイベントに参加
  • 研究室紹介があったりとか
  • LLP20の開催が決定し一人で喜んでいる

4月

  • 研究室に後輩が入ってくるぐらいしか書くことがないぞ

5月

  • GWにかるめりに会ったきがする
  • 研究室の扉にDashボタンを付けて呼び出すボタンをつくる
  • 妻籠宿へいく
    f:id:bath_poo:20181223230034j:plain
    すごくいい感じ
  • 食中毒(カンピロバクター)になる
  • 名古屋でImageFluxのイベントに参加

6月

  • このあたりからサマーインターンとかの面接やらテストが始まる
  • 人生初の逆求人イベントへの参加
  • aikoが渋谷をジャック
    f:id:bath_poo:20181223230110j:plain
    道玄坂aiko
    • そこらじゅうaikoで最高だった
    • 道玄坂でストローがね
  • 6月ぐらいから渋谷にいく頻度が上がる
  • ギークフェスタに行った

7月

  • 人生初freee
    f:id:bath_poo:20181223230219j:plain
    しゃれおつ
  • LLP20 浜松公演に参加
  • そのライブの前に盲腸になる
    • ライブの2h前ぐらいまで点滴を打っていた
  • 結局翌週手術する。人生初手術
  • 逆求人参加(2回目)
  • LLP20 京都公演参加
  • SHISHAMO NO 夏MATSURIに行くために東京へ向かうも台風で中止\(^o^)/
    • 関東まで行って友達と飲むだけになってしまった

8月

  • ISUCON勢で温泉行って合宿
    f:id:bath_poo:20181223230746j:plain
    お部屋がきれい
  • 夏を感じる
    f:id:bath_poo:20181223230804j:plain
  • 日本酒がうまい
    f:id:bath_poo:20181223230822j:plain
    推しの酒造(松浦酒造)です
  • ダッカソン参加
  • かるめりと「デザインあ展」に行った
    f:id:bath_poo:20181223230252j:plain
    ア…ドモ…
    • 子供に混じって回転するかるめり

9月

muttan1203.hatenablog.com

  • git challenge参加

muttan1203.hatenablog.com

  • アドテクコンペ参加
  • これが生まれた
  • ISUCON

    f:id:bath_poo:20181223230319j:plain
    さわやか

  • 研究室合宿的なもの

    f:id:bath_poo:20181223230359j:plain
    メェェ

  • Google Cloud Nextに行く

    f:id:bath_poo:20181223230704j:plain
    会場がでかい

  • くまの会合が初開催

    f:id:bath_poo:20181223232556j:plain
    牛タンシチュー、美味しいに決まっている

10月

  • AbemaTV Developer Conference参加
  • 人生初はぴおしゃをする
  • LLP20 滋賀公演
    f:id:bath_poo:20181223230603j:plain
    外観が好き
  • 久しぶりに京都を観光するも人が多すぎてキレた
    f:id:bath_poo:20181223230620j:plain
    渡月橋で写真をとると高確率でカップルが映り込む
  • 新卒採用が本格化する

11月

  • LLP20 大阪公演
    f:id:bath_poo:20181223230544j:plain
    例の階段
  • 夜行バスは俺には無理だと悟る
  • 面談or面接の嵐
  • また逆求人に出る
  • Bug Shooting Challengeに参加

muttan1203.hatenablog.com

  • AWS Loftに行く実績を解除
  • 今年もまた恵比寿でぼっちイルミネーションをする
    f:id:bath_poo:20181223230524j:plain
    すごくきれい

12月

muttan1203.hatenablog.com

所感

大雪本当に許さんからな

今年は雪が降った。いや、毎年雪は降っているのだけど今年は異常だった。上にも書いたけど、久しぶりに豪雪という感じだった。かつて56豪雪というのがあったのだけど、それ以来だろうか。おかげで道路は全然通れないし、車はスタックしてしまうし、ものが届かないからスーパーから商品が消えるし。そういえばガソリンスタンドも大変なことになってました。

www.asahi.com

 時期が時期だったので、卒論シーズンだった。卒論を書かなければ行けないと言うよりも、豪雪で学校にすら行けなくて練習とかもできないという感じで悲惨だった。実際、自分の研究室の友人は家から数時間かけて徒歩で学校まで来ていた。ちょうど大学のテストだったのだけど、1週間延期となった。卒論もそうだけど、食べるものも確保しないといけないしで気持ちも大変だったなと言うかんじ。もういやですね、あの量の雪は。見たくない。

www.pref.fukui.lg.jp

aikoさんのライブ行きすぎじゃない?

 と親に言われた。そんなに行ってなくない?4回だよ4回って思ったけど、冷静になるとそれなりに行っている気がしてきた。本当は夏のSHISHAMO@等々力競技場というのがあったけど、台風で吹っ飛んでしまった。前日明らかにできねえだろ…って思ってたら、主催者がまさかの決行発言をしたのでとりあえず当日東京に行ったところ中止という連絡が。今更これについてはとやかく言わないけども、ちょっと残念な思い出になってしまった。原宿でクッキーを食べて帰りました。

 で、本題のaikoさんなんですが、今年20周年イヤーということですごい公演数だし本人も気合入ってましたね。前回のツアーでは骨折しながらもずっと続けてたaikoさん、今回は特に何もなくずっと続くかと思いきや神戸公演で喉の調子が悪くなり振替公演をする事態に。聞いたところセットリストは全部やりきったらしい、プロ根性凄まじい…。終わったあと、声が出なくなったことよりもaikoさんの気持ちの方を心配する書き込みが多く見受けられて非常に温かい気持ちになりました。主催者側の対応も非常に早くて、こういうところが好きなところなのかもなあと思ったり。とにかくその後振替公演もちゃんとやれて無事に完走ということになりました。

 今回は参加レポートとか書いてない(書く元気がなかった)のだけど、いろいろとあったなと。まず浜松公演は盲腸の診断を受けたが強行でライブに参加。連番してくれた人ははじめまして(会うの初めてだし、aikoのライブも初めて)だったのだけど、まさか盲腸引きずった野郎が来るとも思わなかったでしょう、これは申し訳なかったな。結局そのあと手術しました。次の京都公演も、退院して2週間とかだったのでわりと病み上がりという感じだった。LLP20前半戦はずっと体調がよくなかったな、と。アンケートに「元気ですか?」みたいな欄があったけど、そこが今までで一番埋まったライブになりました(嬉しくない)

 後半戦は特に何もなく、純粋に楽しむことができた。初公演の滋賀にいったのだけど、びわ湖ホールいいですね。すごくよく見えました。めちゃくちゃでかいわけでもないし、横の席だったのだけど、1列目で前を遮るものなく楽しむことができました。例の琵琶湖に向かってカブトムシを歌う謎企画の話もありましたね(笑)フェスティバルホールについては文句なしという感じで、お客さんもさすが大阪という感じで楽しめました。個人的にやりたかった551のコールアンドレスポンスができたので大満足ですね。

 そういえば、今年は渋谷の街をaikoがジャックするなんてこともあった。そこらじゅうでaikoを見かけた。大型ビジョンで湿った夏の始まり

のCMが流れてたり。上にも貼ったようにいろんなところにaikoがいた。シアワセかよ。あとは各種CDショップでも結構推されていてすごく嬉しかった。

f:id:bath_poo:20181223231153j:plain
タワレコ
f:id:bath_poo:20181223231205j:plain
タワレコの入り口
f:id:bath_poo:20181223231230j:plain
これはTSUTAYAの店内かな。Sexy Zoneの圧を感じる
 来年はアリーナツアーも控えているので楽しみですね。私も大阪公演両日行けることになったので、思いっきり楽しみたいと思います。もう来月なんですけどね。

インターンシップに行った

 自分がB2とかB3の頃って、別にインターンシップ行かなくてもいいかなって思っていた。特に就職したい方向性がはっきりと定まっているわけでもなかったので。でもぼちぼち決まってきた中で、2月に運良くインターンシップに行くことができた。ありがとうピクシブさん。あ、pixivのpは小文字ですからね。

 ピクシブで過ごした1週間は本当に刺激的だった。大学にいるときでは考えられないぐらい技術の話をすることができるし、社員さんはもちろん同世代ですごく頑張っているand技術力の高い人達に会うことができた。ビクビクしながら成果発表とかやったなあという感じ。ピクシブで一緒だった人とは未だに結構遊んだりする。かるめり率が高い。

デザイン「あ」展がいちばんおもしろかったな。

 その後も、ちょこちょこインターンシップとかイベントとかに参加する機会があった。例えばコロプラとか、freeeとか。ほかはsanozi.comをみてくれ。どこもわりと気になっていたところだったし、そういうところに行くことができたのは幸運だったと思う。もちろん面談を重ねていけばいろいろわかるけども、働いてみたりするともっと分かるような気がしている。個人的な感想だけども。

逆求人にいった

 逆求人な、聞いたことはあるという感じでぜんぜん興味はなかったのだけど、インターンシップに行ったあとにいろいろ企業知りたいなあという気持ちになって参加した。逆求人やってる会社はいくつかあると思うのだけど、4回行って全部違う会社が主催するものに行った。なので4社分経験したことになる。それぞれ違っていて、特に交通費的なところと参加企業の違いはあるなあと感じた。交通費は出るほうがいいですよね、特に地方だと。自分も地方なので、多くでてくれるところのほうが助かったりしていた。企業に関しては、メガベンチャーとか大企業が多いところもあれば、小さめのベンチャーがいたところもあって様々だなと。あとこれだけ行くと、どんどん企業がかぶってくるのでたくさん行くものではないなと思った。

 自分は逆求人というものがいいとか悪いとかいう議論には全く興味が無いのでパス。1日で結構な会社とのつながりを作ることができる場だと考えればいいんじゃないかと思っている。少なくとも自分はそう思っているタイプ。そこでつながりを作って、その後やり取りするかとかは自分次第だと思っている派なので、そういう機会だと割り切って参加していた。逆求人の好きじゃないところは、単純に疲れるということぐらいかな。ほかは企業だけじゃなくて、学生同士でも繋がりとか作っておくと後々便利かもしれませんね。

 こういうところで色々繋がりができたりして、今の就活にもそれなりに役立っているような気がしている。結構大きいなと思うのは、面接というか自己分析と言うか、その練習にもなっていたんじゃないかと今になって思っている。今まさに20卒の採用面接とかをしてもらっている立場なのだけど、採用面接で喋る内容は今まで色んな会社の人事の方とかと話した内容がベースになっているので。志望動機とかいろいろ考えるのも大事だけど、実際に話をしてみて気づくこととか指摘されることもあるので、人と話す(聞いてもらう)ことがいかに大切かというのを感じた。逆求人系のサイトに登録すると誰か担当者がつくはずなので、その方に相談するのもありじゃないだろうか。  

まとめ

2018年、振り返ってみるとそれなりに濃かった。たくさんの出会いがあった。今までで一番ぐらいかもしれない。いろいろ遊んでくれたりご飯行ってくれた方々、来年も何卒。
結構体調とか崩したりもしたので、2019年は健康に生きたい。あとお寿司いっぱい食べたい。来年もどうぞよろしくお願いいたします。