ぱいぱいにっき

Pythonが好きすぎるけれど、今からPerlを好きになりますにっき

2020年の振り返りと2021年の抱負

はい、今年は色々ありましたね。しかし、他人と共有しやすい「色々」があったのであって、毎年色々はあったのではないか、つまり今年は多くの人が同じことを話題にした年であると言えるのではないか、そう考える日々です。

去年のやつ 2019年の振り返りと2020年の抱負 - ぱいぱいにっき

登壇とかイベントとか執筆とか

CircleCI ユーザーコミュニティミートアップ#8

circleci.connpass.com

speakerdeck.com

CircleCIのイベントで話した新しいAPIを活用した話。しかしこのあとにCircleCIもいくつかの新機能が入ったり、社内で一部使い始めているGitHub Actionsも大きく変わったので、振り返るとここはActionsで作るなあとかそういうのもある。これは1月なのでまだオフラインイベントが開催されていた時期。

Tsukuba Mini Maker Faire 2020

あと、仕事とは関係ないのだけれども、2月にTMMFで出展をした。

tmmf.jp

f:id:mackee_w:20201231205113j:plain

内容としては、昨年のbuildersconで頒布したFMラジオバッジや自作キーボードなどを展示していた。周囲の出展も面白かった。会場のローカルで熱気が凝縮した雰囲気もあり、東京でやるのとは別にまた出展したいと思った。

吉祥寺.pm23【オンライン】

kichijojipm.connpass.com

あと、オンラインイベントになったあとに、吉祥寺.pmで仕事で取り組んでいる話をした。

speakerdeck.com

この話でおこなった、GoでGraphQLをさばくサーバは無事本番投入して元気に今も動いているので、どこかで話をしたい。

Perl Hackers Hub

それから、WEB+DB PressPerl Hackers Hubでまた記事を書かせていただいた。

gihyo.jp

仕事でも、比率は少なくなったものの、まだまだPerlを書いているを書いているので、コミュニティに何らか還元をし続けたい。

ISUCON 10

isucon.net

藤原組として出た。他のお二人とは普段からよく一緒に仕事していたけれども、ISUCONに一緒に出るのは初めてであった。なんなら藤原さんとは出題時の移植を過去にやったことがある。

成績としては予選落ちだったが、並行回答チームというエキシビジョン枠の形で決勝に参加させていただいて、successしたチームの中では全体3位の成績だったので、良かったなとなった。来年は決勝に出たい。

オンラインイベントについて

みなさんも認識している通り、今年はリアルイベントが激減してしまった年だった。なので、登壇自体もあまりなく、オンラインの勉強会に行ったのもあんまりなく、今年は技術的な悩みを聞いてもらったり、自分が体験していないことを聞くような機会も少なく、今年、それと来年以降の技術に対するスタイルを変えなければならないのかな、とか思っていた。まあ、もがいても体力を食うだけなので、今は様子見状態ですが。

僕は技術勉強会やカンファレンスに行くときの目的として、一番に懇親会をおいていた。本編の登壇は生で話を聞いたり、質問をすることも大きな価値であるけれども、その話を肴に懇親会で他の参加者と技術的な話をして理解度を深めることで、僕は知識を得ていった体験が今まではあった。

一方、今年主流となったオンラインイベントの懇親会は同様の体験を得るのは難しい。今年の前半は、オフラインができなくなったので、オンラインにその代理の体験を求める動きが多かったのだけれども、オンラインはオンライン、オフラインはオフラインという別のものであり、それぞれ代わりになるものではない事がわかってきた。なので、オンラインのイベントでは代わりではなくオンラインならではの情報の取り方、接し方をしなくてはという気持ちがあるのだけれども、なかなか僕なりの答えを見出せていない。

代わりに一人でドキュメントと対峙することも多くなったし、一人でモックをガッと作ってしまうことも多い。発表の場があまりないので電子工作関連もM5Stackを使って色々作っているが、すぐにパーツを使い回すために崩したり、社内の仲間内だけの共有をしていたりする。作ることに専念できていていいのか、それともシェアとコラボレーションのサイクルが回っていかないことを損と考えるのか、わからない。。。。

仕事

今年は仕事の内容が変わった。去年までは社内ツールの作成だったり、技術検証をやっていたのだけれども、今年は運用中のWebサービスのサーバサイドエンジニアの仕事をやっている。その一環が以下のような仕事。

techblog.kayac.com

techblog.kayac.com

今年前半にこのプロジェクトに慣れて、後半は新機能の実装とともに、コア機能をほぼ全部PerlからGoに書き換えるという仕事をした。Goに書き換えた結果、コードの責務が整理されて、ある程度、型安全に守られながら書きやすくなり、レスポンスタイムが安定し、またDynamoDBに置き換えたことでほぼ無限のスケールアウト性能を手に入れた。

よかった、よかったのだが、GraphQL, DynamoDB, クリーンアーキテクチャなどの新しく導入した技術たちは、扱うのが初めてであり、今の時点でもある程度の歪みが生じてしまっている。また、Perlとの旧システムとの連携を取るためにアーキテクチャ的な無理をしているので、来年はこのあたりの解消を確実にやっていくのが、足元の目標ではないか。

今年得た技術として一番大きいのは、メインのDBを使い慣れたRDBMSではなくDynamoDBを使うことにしたことである。僕が今まで一番使ってきたデータストアはMySQLであり、ロックの仕方やパフォーマンスチューニングに一定の蓄積された知識があった。そうではなく、全く未体験のNoSQLを使うのはなかなかに抵抗があることであり、できるのかなと思ったが、理屈では出来て感情が拒否しているという感じだったので、やってみたらちゃんと動いてよかった。なんならボロボロでread/write throttlingが起こる状態からproduction readyの状態に持っていったチューニングもやったので、そのへんもどこかで話してみたい。

一年を通してかなり真剣に付き合った技術としてGraphQLがあるが、エコシステムは独特であるものの、数あるスキーマ定義言語/メッセージングプロトコルの一つであるので、あんまり自分の中では特別視していない。今後も型有りRESTful API定義言語として付き合うと思う。

とはいえ、サーバサイドの変化の流れもある。今年はEC2で運用されていたトラディショナルなアプリケーションをECSを使ったフルコンテナ環境に持っていったこともしたが、よっぽど理由がない限りはこれがLambdaやCloudRun/knativeといったサーバレス環境に行く流れを感じている。またコンテナやサーバレス環境で賄えないような機能要件も、FirebaseやAuth0やstripe、SendGridといったSaaSを併用するようになっていくと思う。ただ、これは僕らが向き合っている市場環境で取りうる最適な選択肢であって、コスト面や機能面で折り合わずに自作することもあると思う。けれども、僕には内製することが製品に大きなアドバンテージを与えるわけではない場合には、外部の部品を使うのを、前よりもためらわなくなったと感じる。

それでも、コアの機能は自分たちで作り続ける。むしろそれに専念するために、必要ないところはSaaSを使う。今の仕事でいうと、トーナメント表の進行管理や対戦管理が自分たちのシステムで今一番価値があるところだと僕は思っているので、それにはかなり力を入れる。それ以外は、外部サービスをできる限り使う。

ただ、SaaSをフル活用するというのは、知識のロックインにもつながる。あるSaaSで手に入れた知識を他のSaaSで使えるとは限らない。こういうとき、僕はプログラムを書くというより、組む、組み合わせると言う事が多いが、自分がモノをイチから作っている感覚ではなく、すでにあるパーツを組み合わせて新たなサービスを作っていると感じるからだ。昔の言い方だとマッシュアップと言ったり、別の観点だとオフザシェルフというかもしれない。

自分でイチから作らないことに対して、僕はあまり危機感を感じていない。知識を新たに手に入れなければいけないというのはそうだが、それはやればいいし、ドキュメントの読み方や探し方、共通のAPIの叩き方や扱い方などそういったメタ知識をためていくのが重要だと感じているからだ。最近だとwebhookといった形で、SaaSから自分たちで用意したエンドポイントにイベントを送信されることがあるが、こういったのもメタ知識である。

来年はLambdaにより傾倒するようなアーキテクチャを組むようになるだろうし、よりNoSQLを活用するようになるだろうし、SaaSも活用すると思う。それを胸張ってハックしているというぐらいにものにしたいと思う。

趣味

キーボード

今年は一気に失速した。現状、興味を失ったに近い状態にある。というのも、人と会わなくなったり、新しいハードウェア欲があまりなく自分のために作るつもりにもあまりなれなかったからだと思う。とはいえPulsarは今でも欲している人がいるし、異常にハンダがむずくて僕が発送を行うたびにめっちゃ細かいUSB-Cコネクタのはんだ付けをして発狂する現状が改善されればまた販売にチャレンジしてみようと思う。

買い替えた。

f:id:mackee_w:20201231214308j:plain

とはいえ前に乗っていたのは、実家近くの知り合いに譲ったので、また実家に帰ったときに乗らせてもらおうと思う。本当に楽しい車だった。色んな所に行った。

f:id:mackee_w:20201231214458j:plain

f:id:mackee_w:20201231214413j:plain

歩く

世の中こんななので、8月くらいまで家の中に引きこもりっきりで、仕事で時々会社に行くぐらいの生活で、睡眠の質も悪く、思えば体的に辛かったなと思ったのですが、9月ぐらいから歩くことを考えていた。

初っ端に9月に奥日光に行った。そんでもって戦場ヶ原を歩いた。

f:id:mackee_w:20201231214800j:plain

f:id:mackee_w:20201231214911j:plain

そのあとに伊豆で海近くの崖を歩いたりした。

f:id:mackee_w:20201231215000j:plain

f:id:mackee_w:20201231215018j:plain

それから、新たに始めたキャンプのついでに長瀞の山を登った。

f:id:mackee_w:20201231215128j:plain

f:id:mackee_w:20201231215157j:plain

ソロキャンプ

YouTube見てたらキャンプしたくなり、キャンプを始めた。車を持っていたのも大きい。

f:id:mackee_w:20201231215310j:plain

特に意識してなかったのだけれど、ワンポールテント+プラシパラトカの組み合わせをしているので、軍幕っぽい感じのコーディネートになっている。

来年へ

いつも来年はこれをしたいなあとここに書くのだけれど、今年は意外にも現状維持ぐらいにしか考えていない。死ぬのか?いや、今のまま平穏に暮らしたい。

とはいえ、状況が改善されてオフラインイベントがある程度開催され、旅行にもある程度行けるようになり、人と交流を持ちたい。それが叶わなければ、今どきにあったコミュニティを探すかもしれない。来年のことはわからない。。。

あーあと、Rustやりたいんだった。ずっとやりたいって言っているのをどうにかしたいですね。