蛇ノ目の記

技術のことも。そうでないことも。

月刊推し活まとめ 2020年3月号

今月の推し活まとめ。

日付 目当て イベント名 会場 チケ代 チェキ枚数
03/10 sora tob sakana 定期公演~月面の遊覧船~77匹目 池袋harevutai 3000 0
03/10 nuance ワンマンツアー"osu" FINAL O-EAST PEONY O-EAST 0 0
03/14 sora tob sakana インストアイベント 池袋ハレスタ 0 3
03/15 ヤなことそっとミュート/lyrical school YSMLS Club asia 3000 0
03/20 sora tob sakana 定期公演〜月面の遊覧船~77匹目 恵比寿CreAto 2000 2
03/20 sora tob sakana ちく☆たむランド Vol.3〜キラー・クイーン〜 表参道GROUND 4500 2
03/21 sora tob sakana Z卒業式 TOKYO FM HALL 2000 1
03/22 sora tob sakana Pop'n Party Shibuya Milkyway LIVE&BAR 2000 1
03/23 sora tob sakana エクストロメ‼ROUND TRIP3 新宿LOFT 3000 2
03/26 sora tob sakana ピンチェキ発売 - 0 7
03/28 sora tob sakana 定期公演〜月面の遊覧船〜78匹目 恵比寿CreAto 2000 0
03/29 sora tob sakana 日曜の午後に、 Glad 2000 0

チェキ

3月の総チェキ数は18枚。2020年3月時点でひと月あたり最多。これは後述のピンチェキ発売の寄与が大きい。

2020年度の合計は44枚。2019年度は85枚だったので既に前年の50%に達していることになる。圧倒的成長。なお、100枚記念チェキを撮り逃すという大きなミスをしているので150枚記念は忘れないようにする。

COVID-19絶対許さない

COVID-19の影響で以下の現場が中止に。

  • 03/10 定期公演~月面の遊覧船~77匹目

  • 03/28 定期公演〜月面の遊覧船〜78匹目

  • 03/29 日曜日の午後に

COVID-19絶対許さない。4月の現場も次々と中止・延期が決定している。整理番号2番を引き当てた04/13の定期公演も中止。COVID-19絶対許さないからな。

現場の感想

(前月だけど)02/23のトークショー&アコースティックミニライブ。今後やってみたいイベントとして水族館とのコラボについて話してるとき、めっちゃ手を繋いでる愛ちゃんと夏花ちゃんが尊かった。

03/14に池袋ハレスタで開催された無銭イベは、小雨の降る気温一桁台の野外という試される現場だった(ステージはガラスの向こう。ラジオの公開収録のスタジオみたいなイメージ)。 ステージ裏・ステージ横のLEDディスプレイにニコ生配信の様子が映し出され、現地でもコメントが見れる面白い仕様だった。最前で上下する黒傘をdisるコメントは明らかに現地のオタクだよね。 ハレスタでのイベントは通行人の目にも止まるので宣伝効果ありそう。ただし人間に優しい気候のときに限る。

03/21のZ卒業式。オサカナやPANDAMICの運営がやっているアイドル研修生が今年度を持って終了ということで、その卒業イベント。各グループとのコラボもあり、オサカナは「夜空を全部」。10人以上の研修生とのダンスが壮観だった。 研修生の亀田楓華ちゃんは歌もダンスも堂々としているのできっと伸びる。陰ながら応援してます。 特典会では卒業式=学校ということで、風花ちゃんが学ラン、愛ちゃんが体育着、夏花ちゃんがジャージで登場。先生コスなのか知らんけどスーツを来たマネージャーさんに率いられて出てくる画は悪いことして怒られる生徒3人みたいな感じで面白かった。 後日、あの衣装はどうやって決めたのって風花ちゃんに聞いたところジャンケンで勝ったもの順だったそうな。風花ちゃんが一抜け、その後を聞くのは忘れてしまった。

03/23のエクストロメ。とにかくラインナップが強い。これを3000円で見れるって実質無銭では。

オサカナ、nuance、ヤナミューを一度に見れるのは熱すぎる。あと「絶対忘れるな」を初めて見たけどかっこよかった。ブクガも見たかったけど体が足りなかったので断念。 03/20から4日続いたオサカナ関連現場の締めくくりに相応しい楽しい現場だった。

03/28にはオサカナには珍しいピンチェキが発売されることとなった。オサカナ、PANDAMIC、開歌など運営が同じグループのピンチェキが03/29 23:59まで限定で販売中。1枚1000円。

そして以下を購入。

  • 風花ちゃん × 3

  • 愛ちゃん × 1

  • 夏花ちゃん × 1

  • 絆奈ちゃん(PANDAMIC) × 2

ここで今月のチェキ枚数が大幅に増えることとなった。現場が無い中、課金するコンテンツが生まれてよかった。

他現場

3月は他現場に行く機会もあった。具体的には

  • 03/10 nuance ツアーファイナル

  • 03/15 YSMLS(ヤナミュー・lyrical school)

nuanceのチケットは行きつけの居酒屋さんの常連さんから譲っていただいたもの。ありがとうございました!

ツインバンドセットの豪華ライブ。COVID-19の影響もあり、YouTubeで生配信もされていて、現在はダイジェスト版がアップされている。見るしか。

https://www.youtube.com/watch?v=cQVpTVMg2RUwww.youtube.com

新譜botänに収録されているハーバームーンがめっちゃ好きなんだけど、映像に不具合がありカットされているのがちょっと残念。

また、03/29まで限定でtipToe.との2マンライブの映像も公開中。tipToe.は第一期の活動が終了し、4月から第二期が始まるとのこと。青春感ある歌詞がよい。「星降る夜に 君とダンスを」はぶち上がる。

それぞれのグループが交互にステージに立つ見応えのあるライブなのでぜひ。

https://www.youtube.com/watch?v=i-3bGXKCxDAwww.youtube.com

YSMLSでは去年夏のTIFぶりにlyrical schoolを見ることができた。ヒップホップ×アイドルのかっこよさに惹かれてまた見たいと思ってたのでちょうどよいタイミングだった。

ほんとは02/29にオサカナも出る対バンで見れるはずだったんだけども。COVID-19絶対許さない。

www.youtube.com

ヤナミューはメジャーデビューが決まり、新シングルもリリース。しかしリリイベは尽く中止……。CO(ry

来月から始まるリリースツアーは開催されるんだろうか……。せめて7月のツアーファイナルは見たい。

www.youtube.com

Vue.jsサンプルのMarkdown Editorを読み解く

フロントエンドアレルギーを少しでも治すべく「手を動かして学ぶ!Vue.js」を片手にVue.jsに入門し始めた。

www.shoeisha.co.jp

今までの人生でほとんどJavaScriptやってきたことないマンでもわかりやすい良書。

今回はこの書籍と公式ドキュメントから学んだ内容で、Vue.js公式Webサイトのサンプルに載っているMarkdown Editorの仕組みを理解していく。

jp.vuejs.org

コード全体

え、これだけでMarkdownエディタ書けるの。Vue.jsマジやばい(語彙力

<!DOCTYPE html>
<html>
  <head>
    <title>Markdown Editor</title>
    <script src="https://unpkg.com/vue"></script>
    <script src="https://unpkg.com/marked@0.3.6"></script>
    <script src="https://unpkg.com/lodash@4.16.0"></script>
    <link rel="stylesheet" type="text/css" href="/style.css" />
  </head>
  <body>
    <div id="editor">
      <textarea :value="input" @input="update"></textarea>
      <div v-html="compiledMarkdown"></div>
    </div>

    <script>
      new Vue({
        el: "#editor",
        data: {
          input: "# hello"
        },
        computed: {
          compiledMarkdown: function() {
            return marked(this.input, { sanitize: true });
          }
        },
        methods: {
          update: _.debounce(function(e) {
            this.input = e.target.value;
          }, 300)
        }
      });
    </script>
  </body>
</html>

テンプレート

Markdownエディタを描画しているのはこの4行。

    <div id="editor">
      <textarea :value="input" @input="update"></textarea>
      <div v-html="compiledMarkdown"></div>
    </div>

「el」プロパティーで、Vueの表示をはめ込む場所=HTML要素のセレクター(id)を定義してるんですね?

Vue.jsの「el」とは? - JavaScript勉強会

とあるように、editorという名前でdivタグの内側を「Vueの表示をはめ込む場所」として定義。

textarea要素

次にtextarea要素。

<textarea :value="input" @input="update"></textarea>

:value="input"

:valuev-bind:valueの省略形。「手を動かして学ぶ!Vue.js」50ページ目には

要素の属性をデータで指定するときは、v-bind

とある。つまり、textarea要素のvalue属性にinputというデータを指定する、ということになる。

いや、でもtextarea要素にvalue属性なくね?

<textarea> - HTML: HyperText Markup Language | MDN

Vue.js公式ドキュメントでは複数行テキストに対してはv-modelを使っている。Vue.jsなにもわからない。

フォーム入力バインディング — Vue.js

試しに v-bind:inputv-modelsで書いてみた。しかしどちらも動作する。やっぱりVue.jsなにもわからない。

https://jsfiddle.net/nao_y/rj28vd7t/5/

@input="update"

@inputv-on:inputの省略形。「手を動かして学ぶ!Vue.js」50ページ目には

イベントとメソッドをつなぐときは、v-on

とある。つまり入力というイベントとupdateというメソッドを繋いでいる。入力が発生すると、updateメソッドが動く、というイメージだろうか?

div要素

<div v-html="compiledMarkdown"></div>

v-htmlはHTMLとして表示する。ここではcompiledMarkdownプロパティをHTMLとして表示する。

Vueインスタンス

      new Vue({
        el: "#editor",
        data: {
          input: "# hello"
        },
        computed: {
          compiledMarkdown: function() {
            return marked(this.input, { sanitize: true });
          }
        },
        methods: {
          update: _.debounce(function(e) {
            this.input = e.target.value;
          }, 300)
        }
      });

elオプション

elオプションは#editorとなっている。ここはHTML部分の<div id="editor">と対応していて、このdiv要素の中にVueの表示をはめ込む。

dataオプション

dataオプションのinputプロパティはtextarea要素の:value="input"と紐付いていて、inputプロパティのデータがtextarea要素に表示される。

computedオプション

computedオプション(算出プロパティ)compiledMarkdownプロパティが定義されている。このプロパティには関数が指定されている。

function() {
  return marked(this.input, { sanitize: true });
}

Marked.jsライブラリを使って、inputプロパティの内容をHTMLにパースしている。

パースしたHTMLは<div v-html="compiledMarkdown"></div> で表示される。

ところで、{ sanitize: true }となっていてHTMLのサニタイズをしているけど、Marked.jsのUsageには以下のようにある。

Warning: 🚨 Marked does not sanitize the output HTML. Please use a sanitize library, like DOMPurify (recommended), sanitize-html or insane on the output HTML! 🚨

どうやら出力するHTMLをサニタイズしないのでDOMPurifyなどを使うことが推奨されている。

DOMPurifyを使って書き直すとこんな感じになる。

function() {
  var html = marked(this.input);
  return DOMPurify.sanitize(html);
}

methodsオプション

methodsオプションでは、イベントに対して処理を行う。

methods: {
  update: _.debounce(function(e) {
    this.input = e.target.value;
  }, 300)
}

ここでは入力(@input="update")に対して、updateというメソッドが働く。

_.debounce()lodashというライブラリの関数。なんか便利関数の集まり的なライブラリらしい。

Creates a debounced function that delays invoking func until after wait milliseconds have elapsed since the last time the debounced function was invoked.

https://lodash.com/docs/4.17.15#debounce

指定された秒数(ミリ秒)待った後、関数を呼び出す、というような役割。

_.debounce()に渡される関数ではeという引数がある。これはイベントのことを指すのだろうか。Pythonしかわからないマンなのでeと言われると例外を連想してしまう。

ここでは300ミリ秒待ったあとに、this.input = e.target.value;でinputプロパティに対してイベント(入力)の値(?)を代入する。

ここで更新されたinputプロパティはcomputedオプションのcompliedMarkdownプロパティでHTMLへとパースされる。

つまり、updateメソッドの働きによってMarkdownエディタへの入力から300ミリ秒後にプレビューが更新される。

やってみた

Django Girls TutorialのブログにMarkdownエディタを実装してみた。

github.com

これがMarkdownエディタを実装した投稿画面。

f:id:Nao_Y:20200309025641p:plain

投稿画面のtemplateは以下。省略形を元の形に直したり、サニタイズをDOMPurifyにやらせたり、プレビューへの反映待ち時間を150ミリ秒に縮めたりしている。

Django Girls Tutorial with Vue.js

月刊推し活まとめ 2020年2月号

今月の推し活まとめ。

日付 目当て イベント名 会場 チケ代 チェキ枚数
2/2 sora tob sakana 天体の音楽会への招待状 恵比寿CreAto 2000 1
2/8 sora tob sakana 天体の音楽会 Vol.3 O-EAST, O-WEST, duo MUSIC EXCHANGE 6300 2
2/10 sora tob sakana Glad 10th Anniversary Glad 3000 2
2/11 sora tob sakana 定期公演~月面の遊覧船~75匹目 池袋harevutai 3000 4
2/22 sora tob sakana 定期公演~月面の遊覧船~76匹目 恵比寿CreAto 2000 1
2/23 sora tob sakana sora tob sakana スペシャトークショー&アコースティックミニライブ 渋谷 伝承ホール 3000 2
2/29 sora tob sakana Pop'n Party Vuenos - -

2/22の定期公演からはコロナウイルス対応で推しもオタクもマスク着用チェキ。

総チェキ数は12枚。

月刊推し活まとめ 2020年1月号 - 蛇ノ目の記

今月の風花ちゃんとのチェキ合計は11枚(全チェキ含む)。年始は風花ちゃんがインフルエンザのため欠席が続いたのでチェキ始めは1/12となった。

現時点での2020年チェキ総数は23枚。

本日開催予定だったPop'n Partyは中止。lyrical school見たかったなー。

3/7(土), 3/8(日)の大阪遠征も、3/10(火)の定期公演も中止になってしまった。推しに会えなくて(手が)震える。しかしこれも推しの健康のため。

オサカナを運営する会社が主催するイベントがしばらく軒並み中止になりそうな気配なので、経営とか大丈夫かなという心配をしてしまう。

ライブ復活したらチェキ撮りまくる。

みんなのPython勉強会「推し×IT」を開催した

だいぶ経ってしまったけど、2/13(木)に「みんなのPython勉強会 #54 推し×IT」を開催した。

startpython.connpass.com

  • 推しのスケジュールは俺のスケジュール。
    推し事をサポートするTwitter botを作った話
    nao_y(@NaoY_py)

  • わたしが勉強し始めたのは推しのメディア戦略のおかげ
    さくちひ(@skm070924)

  • 最愛の推しを錬成するためとあるヲタクが果て無き荒野に挑んだ件。
    どいつま(@d01tsumath)

  • 推しとデビューとYouTube ~100日間の記録~

  • 推しと始めるMIR
    てーとく(@tetoku_sakana)

さて、自分が話したのは1月末頃に作ったオサカナ スケジュールbotについて。

twitter.com

  • sora tob sakanaについて

  • 神﨑風花について

  • オサカナ スケジュールの機能

  • オサカナ スケジュールを支えるライブラリ

  • オサカナ スケジュールを支えるサービス

詳しくはスライドを見ていただけると嬉しい。まあ簡単に言うと各機能はAWS Lambdaの関数で、CloudWatch Eventで定期実行してるよ、という話。

今回は「推し×IT」開催の経緯を書いていこうと思う。てーとくさん(@tetoku_sakana)がオサカナ楽曲で音楽情報検索(MIR)をやっているのを知ったことがきっかけだった。そんな面白そうなことをやってるなら、どこかでぜひ話してほしいと頼んだら、快諾。てーとくさんマジ感謝。

そこでこんなツイートをしたら、さくちひさん(@skm070924)が興味ありげなエアリプをしてくれたので、さっそく登壇依頼。そして快諾。さくちひさんにもマジ感謝。

しかし自分を含めた3人で#stapyの2時間枠を使うのは結構大変そう、ということでさらなる登壇者を検討し始めたとき、とある勉強会でジャニーズ×YouTube APIのLTをしていた森さんを思い出し、登壇依頼。快諾。森さんもマジ感謝。

4人で2時間でもやや大変そうなので、どいつまさん(@d01tsumath)に登壇依頼。「Pythonじゃなくても問題ない?」との疑問をいただいたので、「#stapyはなんでもありなのでOK」と答えて登壇してもらえることに。どいつまさんにもマジ感謝。

そんな感じで5人が揃い、開催することとなった「推し×IT」だった。登壇者のみなさん、「推し×IT」とかいう謎企画に足を運んでくれた参加者のみなさんにはほんとに感謝しかない。ありがとうございました!!

謎企画がTwitter実況されている様子はあべんべんさん(@abenben)がまとめてくれたTogetterで垣間見ることができる。まとめありがとうございます!!

togetter.com

そしてなにやら2/16の編集部イチオシに選ばれてしまったらしい。なにかの間違いでワンチャン、オサカナ運営とかに発見されてしまうのでは(されない)。

(普段は#stapyスタッフとしての仕事してないけど)平成Pythonista会やったりするような#stapyの面白企画担当なので、年一とか年二くらいでこういうネタ企画をやっていきたい。オタクたちのネタが溜まってきたら「推し×IT」第二弾もよさそう。みんなネタ作っておいてくれよな!!

「暗号解読」を読んでるのでシーザー暗号をPythonで書いてみる

最近、サイモン・シンの「暗号解読(上)」を読んでいる。主にライブ開演待ちの時間に読む程度なのでなかなか読み終わらない。 硬いタイトルだけど、暗号理論の難しい話は無くて紀元前から始まる暗号にまつわるエピソードがメインになっている。この手の科学読み物的な本はかなり好み。 シーザー暗号やらヴィジュネル暗号、エニグマまでが今のところ登場していて、それぞれのエピソードと並んでアルゴリズムについても触れられている。というわけで今回はシーザー暗号をPythonで書いてみる。

シーザー暗号 is 何

ユリウス・カエサルが使ったことからシーザー暗号と呼ばれている。 "A" →"C", "B" → "D" というように平文のアルファベットに常にひとつのアルファベットが対応する単一換字式暗号という種類の暗号。平文に含まれるアルファベットを平アルファベット、暗号に含まれるアルファベットを暗号アルファベットと呼ぶ。

シーザー暗号では、平文を暗号化するときに各文字をアルファベット順で何文字シフトするか、というのを鍵にする。

例えば、鍵が2であるときHello world は各文字を2つシフトさせて jgnnqyqtnfとなる。

このときの平アルファベットと暗号アルファベットの対応は以下のようになる。

平アルファベット a b c d E ...
暗号アルファベット C D E F G ...

Pythonでシーザー暗号

文字をシフトさせると聞いて、初めに思いついたのがord()Unicodeコードポイントに変換、そこに鍵となる値を足し、chr()で文字列に戻すという方法だった。

>>> ord('a')
97
>>> chr(ord('a')+2)
'c'

しかし、この場合zを暗号化するとUnicodeでこれらの文字の2文字隣にコードされている文字(=|)になってしまって具合がよくない。

>>> chr(ord('z')+2)
'|'

そこで、string.ascii_lowercaseを使ってアルファベット26文字を取得。これを平アルファベットとする。 暗号アルファベットはself.plain_alphabet[self.key:] + self.plain_alphabet[:self.key] のように、平アルファベットのkey文字目移行のスライスと、key文字目までのスライスを組み合わせて作る。暗号化は平文の各文字の平アルファベット上の位置を、暗号アルファベット上の位置に置き換えることで行う。

import string

from typing import List


class Caesar:
    def __init__(self, msg: str, key: int):
        self.msg = msg
        self.key = key

    @property
    def plain_msg(self) -> str:
        return ''.join(
            [c.lower() for c in self.msg if c.lower() in self.plain_alphabet]
        )

    @property
    def plain_pos(self) -> List:
        alphabet_dict = {}
        for idx, c in enumerate(self.plain_alphabet):
            alphabet_dict[c] = idx
        return [alphabet_dict[c] for c in self.plain_msg]

    @property
    def plain_alphabet(self) -> str:
        return string.ascii_lowercase

    @property
    def encrypted_alphabet(self) -> str:
        return self.plain_alphabet[self.key:] + self.plain_alphabet[:self.key]

    def encrypt(self) -> str:
        # ここでは暗号は大文字で表す
        return ''.join(
            [self.encrypted_alphabet[pos] for pos in self.plain_pos]
        ).upper()

    def decrypt(self) -> str:
        # ここでは平文は小文字で表す
        return ''.join(
            [self.plain_alphabet[pos] for pos in self.plain_pos]
        ).lower()

アルファベット26文字すべて登場することから、暗号化がわかりやすくなるのでフォントの例文によく使われるアレを使う。こういうのをパングラムって言うらしい。

鍵は2なので t は 2文字シフトしてV に、hも同様に2文字シフトしてJに暗号化されている。、zは一周してBに、yAに暗号化されている。

>>> from caesar import Caesar
>>> msg = 'The quick brown fox jumps over the lazy dog'
>>> key = 2
>>> caesar = Caesar(msg=msg, key=key)
>>> cipher = caesar.encrypt()
>>> cipher
'VJGSWKEMDTQYPHQZLWORUQXGTVJGNCBAFQI'
>>> plain = caesar.decrypt()
>>> plain
'thequickbrownfoxjumpsoverthelazydog'

というわけでシーザー暗号をPythonで書いてみる話だった。

初心者の課題とかにもいいかも、とか思った。

月刊推し活まとめ 2020年1月号

2020年の目標を立てたりすることもなく、いきなり推し活まとめ。

今年から参加したイベント日程、会場、チケット代、チェキ枚数をまとめるということを始めたので、月刊で「推し活まとめ」やっていけそう。

日付 目当て イベント名 会場 チケ代 チェキ枚数
1/4 sora tob sakana Z新年会 フジさんのヨコ 2000 0
1/5 Maison book girl Solitude HOTEL ∞F LINE CUBE SHIBUYA 5500 0
1/12 sora tob sakana, ヤなことそっとミュート Pop'n Party 新宿LOFT 2500 神﨑風花2, なでしこ1
1/13 sora tob sakana amiinA × sora tob sakana 2MAN LIVE ‘’binary star’’ 下北沢GARDEN 3000 1
1/17 nuance cry for the moon vol.1 青山 月見ル君思フ 2500 0
1/18 sora tob sakana 照井順政生誕祭 渋谷REX 3000 全チェキ1
1/19 sora tob sakana DMM VR THEATER presents Future LIVE DMM VR THEARTER 3500 2
1/20 sora tob sakana 月面の遊覧船~74匹目 恵比寿CreAto 2000 3
1/25 sora tob sakana PERFECT MUSIC presents 20200125 代官山Unit 3000 2
1/26 sora tob sakana リリイベ タワレコ博多パルコ 0 1
1/26 sora tob sakana IDOL by...! 2nd ANNIVERSARY evoL by GRANDMIRAGE 4000 2

※ チェキ枚数が数字のみの箇所は言うまでもなく神﨑風花

今月の風花ちゃんとのチェキ合計は11枚(全チェキ含む)。年始は風花ちゃんがインフルエンザのため欠席が続いたのでチェキ始めは1/12となった。

この調子でいけば10月末には100枚に到達できそう。

1/26のIDOL by...!は博多開催だったんだけど、東京でチケット発券するの忘れてて当日の朝に福岡空港セブンイレブンで発券した。前もって発券しておこうな。あと帰りの便がオサカナちゃんと被るのワンチャンあるのでは、と思ったけどそんなことはなかった。

スプレッドシートからコピペしてもMarkdownのテーブルにならないので、スクリプトを書いて対応した。

# スプシのコピペをlist.txtとする
with open('list.txt', 'r') as f:
    for line in f:
        print('| ' + line.replace('\t', '|').strip() + ' |')

2019年を振り返る

年の瀬なので今年を振り返ってみる。という去年とまったく同じ書き出し。

ところで2019年の漢字は「推」です。

この写真はPyCon TW 2019で行った中央研究院のドア。

激推しし始めたのは今年からなので圧倒的成長。ライブ何回行ったんですかね。もうわからない。来年からはチケット整理の意味合いも含めてスプレッドシートで管理しようと思う。

ささやかな祝祭リリイベ、TIFの辺りから本気出し始めた気がする。名前認知はスタートラインとかいう謎の真理に到達したのも同じく夏頃。2020年はさらに推していくぞ。

仕事

今年は印象に残っている案件はPython3+Django 2.2+Ubutu 18.04移行。すべて同時に上げたものだから大変だった。たしかDjangoのドキュメントに推奨する上げ方が書いてあったはず。なぜ読まなかったのか。外部ライブラリの数が少なかったのはよかった。とはいえ、Djangoの振る舞いが変わったりしていて、公式ドキュメントを見たりソースコードを読んだりと結構苦戦した。なお、本番稼働はこれからなので記憶を取り戻しつつ、本番環境構築をやる仕事がそのうちある。

そして今はOracleSQLからMySQLに置き換え、それをSQLAlchemyでクエリを組み立てるということをやっている。SQLよわよわなので悲鳴を上げつつ、Oracleいろいろできすぎやろってキレたりしている。あとはRubyで書かれたAPIPythonに置き換えたりもしている。実はRubyを読むのは初めて。

他はPython研修のTAとして名古屋に行ったり、2018年から引き続きの会社さんの新人研修でもTAしたりした。

カンファレンス

PyCon mini Sapporo 2019

PyCon mini Sapporo 2019にてカンファレンス初登壇を果たした。

nao-y.hatenablog.com

このとき発表したライブラリは現在、完全に情熱が絶えており開発がストップしている。そのうちやる気出して、型アノテーション書いたりDocstring充実するなどコードをもっとよくしたり、対応できてないAPIを実装したい。どうやったらやる気出てくるんですかね。推し事に情熱注ぎすぎてなんかいっぱいいっぱいです。

ギリギリまでコードを書いたり、資料作ったりして徹夜状態で飛行機乗ったら貧血起こして死ぬかと思った。冷や汗出るし視界真っ暗になるし、ほんとやばかった。あと寒い中、小樽の運河沿いでビール飲んだ結果として風邪引いた。アホかな。

前日は有給とって準備しながら、夕方にはsiraphのライブに行き、帰宅後に徹夜したんだった。やっぱアホだった。まあライブの開演待ちの時間でアイデア浮かんだのでセーフ。

PyCon JP 2019

3年目のスタッフ参加。

nao-y.hatenablog.com

2年ぶりにオープニング・クロージングで少し喋ったり、飛び込みLTの司会をするなどしていた。LTの繋ぎってめっちゃ難しいね。

あとPyCon JPスタッフとしてgihyoさんでレポート記事を書かせていただきました。

gihyo.jp

PyCon TW 2019

PyCon TW初参加。そして海外LTデビューを果たした。

(Sapporoと同じネタで)Proposal出してたけど、厳しいレビューの前にあえなく敗退。それでもLTできたので実質海外登壇デビュー。

nao-y.hatenablog.com

blog.pyq.jp

日本勢で「Do you know PyCon JP ?」を被せていく悪ふざけをしたのは記憶に新しい。

PyCon SG 2019

去年のAPACに引き続き1年ぶり2回目のシンガポール海南鶏飯が美味しいので好きな国です。

nao-y.hatenablog.com

blog.pyq.jp

ほんとはここで本当の海外登壇デビューをキメるつもりだったんですが、CfPの締切が早まるという予想外の事態により、そもそもProposal出せず。PyCon TWに出したやつをブラッシュアップして出そうかな、と思ってた矢先だった。やっぱ早めに出さないとダメっすね。

nikkieとのシンガポール観光でマリーナベイサンズの上からの眺めを堪能したり、二人揃ってルーレットで負けたりして楽しかった。

その他

あれ、去年って何書いてたんだろう。

nao-y.hatenablog.com

ポーカーとか写真とか音楽について書いてますね。ポーカーは最近全然やれてないし、高田馬場や高円寺でやってるやつにも参加できてないです。推し事への情熱があまりに強すぎる。

写真はFlickr見ていただけると嬉しいです。春頃には友人の友人がモデルをやってくれてポートレート撮影できた。ありがとうございました。

Nao Y. | Flickr

音楽

音楽は…お察しです。推してます。神﨑風花ちゃん激推しです。Spotifyが生成する2018年nao_yまとめによると300時間くらいオサカナ聴いてたらしいっすよ。狂気。

www.youtube.com

今年から聴き始めたところだと、nuance。うちの近所の居酒屋で店主さんが流してて知ったグループ。

www.youtube.com

TIFで知ったlyrical school

www.youtube.com

去年から聴いてるヤなことそっとミュートはレイラインが自分の中でキている。先日、初めてワンマン行ってきた。なでしこさんマジかっこいい。

www.youtube.com

他には最近、来年にメジャーデビューすることが決まったフィロソフィーのダンスMaison book girlとの対バンとおとはす生誕祭に行った。

www.youtube.com

Maison book girlは、4/14に人見記念講堂で開催されたワンマンSolitude HOTEL 7Fとフィロのスとの対バンを見た。

www.youtube.com

1/5に開催されるSolitude HOTEL ∞Fがオサカナ定期公演と被っているんですが俺はどうすれば。体が足りない。

アイドル以外だと、ずっと真夜中でいいのに。

www.youtube.com

最近は4s4kiとmaco maretsがお気に入り。 なんていうんでしょうね、なんかこういうの好き。上の「眩しいDNAだけ」も似た雰囲気だしね。

www.youtube.com

www.youtube.com

ここ最近のは反映されてないけど、Spotifyによる2019年nao_y再生数ベスト100プレイリスト。

Your Top Songs 2019 on Spotify

使い始めた頃によく聴いてた曲なんかが入ってて既になんか懐かしい。

音楽の趣味を押し付けたあたりで2019年のまとめを終わります。どれか一つでも刺さったら嬉しい限りです。

なんか去年より振り返り方が雑な気もするけど、ここらで2018年の振り返りを終わりにする。

と2018年の自分が書いているけど、今年はさらに雑になったぞ。

というわけで、2019年はありがとうございました。

いや、2010年代終わるんですね。やばい。知らんけど。

2020年もよろしくお願いします。