2017年1月の Twitter を見るとこんなことつぶやいてた。
ちなみにけん玉はまったく上手くなっていない。とめけんができるレベル止まり。姪っ子がけん玉が上手で、会う度に対決しようと言われていたわけだが、僕の腕を見て鼻で笑われ、勝負しようと誘われることがなくなった程度である。悲しい。
そんなわけで2017年を振り返りつつ2018年の抱負を書いておこと思います。
CTO として
エンジニアブログを開発した
会社で開発部ブログというのを数年ほど運営していたのだけど、書きにくいシステム(jekyll を使って git 管理&デプロイ)ということで長らく不評であった。jekyll が悪いのではなくメンテナンスをしていなかったのが原因で、ローカルでの動作確認がまともにできなかったりしていた。jekyll は大好きだ。
そこで、ブログをゼロベースで作るかという話になった。その話は別の記事で書いたので興味ある人は読んでみてください。
スクラム開発を導入した
2017年の豊富の一つに「事業と技術をマージさせる」というのがあり、その状態を目指す一つの方法としてスクラム開発を導入してみた。
エンジニアが作るだけではなく、何を何のために作るのかを考え行動できるようにするために、プロダクトオーナーと一緒にプロダクトについて考える機会を作れたと思っている。
技術の標準化へ
弊社は結構な数のサービスを運営していて作られた時期もバラバラなので、ライブラリや作り方・周辺サービスなどもバラバラだったりする。それはそれで検証や挑戦などがあるので良い面もあるが保守のしにくさや失敗を糧にしにくい悪い面もある。そこで、網羅的ではないにせよこれを使っておこうという標準化を進めていった。Gem の選定や、死活監視やインフラ構成など。
新しいものを取り入れつつも、積み上げていったものも効率良く使っていくバランス感は今後も大事にしていきたい。
CTO 室の発足
事業部にとらわれない自由に動けて技術的目線でプロダクトの成長に寄与できるようにしたいと考えていて、2017年は CTO 室というのを作った。自分含めて3人の小さなチーム。ここでは、技術の先行検証や横展開できる業務改善系の取り組みなどを中心に行った。
- ステージング環境自動構築システム
- Ruby / Rails バージョンアップ
- パフォーマンス改善
- 画像リサイズライブラリ
- Docker / k8s / GKE / Heroku のプロダクション利用
2018年はわけあって解散したが、これらの取り組みをプロジェクト的に動けるようにしていきたいと考えている。問題を設定したら開発部のメンバーから数人集めて集中的に解決し終えたら解散する感じ。
そういえばこんな相談会とかもやってた。
これは対エンジニアだけど、エンジニア以外の職種の人でも悩みを抱えている人はいたので、問題をきちんと業務フローの中で吸い上げて解決できるように、各チームのエンジニアが聞いて回るようにしてもらったりした。
困ってるけど言いにくいっていうタイプの問題は、言っても良いんだっていう感覚と、それによって良いことが起きたという体験ができれば解決すると思っているので、引き続きやっていきたい。
今のコードにこだわる
いくつかのプロジェクトにヘルプ的に入ったが、その時の設計に問題があると感じたら結構なコストを払ってでも作り直す方向に持っていった。後で直すことが難しいデータベース・モデル周りは特に。
なぜこれが起こるのかというと、時間的制約と技術的限界の2つがあると思っている。
前者の時間的制約のために、その場のスピードを優先して設計やコードに妥協をして進めていくと、結果的には大きなコストを払うことになりがちになる。経験則的にそうなるのは分かっていてもそう判断させてしまうのは、環境が悪いと思っていて、ここは時間をかけてでもしっかりやるべき、ここは捨てる前提で書いていっても大丈夫などの適切な判断と実行がされるような環境に改善をしていきたい考えている。
技術的限界については単により良い方法を知らないだけの話なので、具体的な話をしていけば時間はかかるが解決すると思っている。
プログラミングのクイズ
会社の同僚 @mochizukikotaro がプログラミングクイズのサービス作りたいとか言ってコード書き始めたので、少しだけ手伝ったりした。Today’s Quiz というサービス。二人で考えたクイズを1日1個みんなに解いてもらい、間違えたところを見るのが面白かった。
こういうのでプログラミングについて学べるっていうのは良いなーと思っているので、もう少し考えたい。
ペアプロ用のモニタ買った
買いました。ペアプロやる人増えて嬉しいです。
社内ネットワークの機材入れ変えた
色々不具合合ったので、すべてのネットワーク機器を YAMAHA に統一して入れ替えた。統一すると管理が楽なのでとても幸せな気持ちになった。
でも無線の調子はいまひとつ。チューニング難しい。誰か教えて…。
プログラマとして
個人プロジェクト
2017年も個人プロジェクトを多少やった。仕事上がりの平日と休日では、なかなか時間を作るのが難しいので大量に余っている有給を使い、毎週1日休んでコードを書いてたりした。とても楽しかった。
その時間で CI サービスを作ったりした。ただ、動くものはできたがサービスイン自体はしていない。有料サービスで始めることを考えると超えなきゃいけない壁がいくつかあり、それを乗り越えるほど今は優先度が高くなくなったからだ。いつかまたサービスの形を変えてやりたいとは思っている。
そしてここで得た技術的知見はかなり業務で生かされており、やってよかったなと思っている。
他にも完成度は低いが、Mail を WebAPI にするのを作ったり、Papertail を模した感じのものを作ったり、Paper 風な複数人同時編集エディタを作ったり、GCB local WebAPIを作ったり、Rails のモデルから自動でダミーデータを生成する gemを作ったりしてた。
これらでもかなりの技術的知見を得られて良かった。サービスやライブラリとして使えるものまで持っていく力と、成立するための技術の壁を乗り越える力は別物だなと改めて感じた。
勉強会で話す
2017年は RejectKaigi や Rails Developers meetup など外部の勉強会で話す機会があり、非常に刺激的だった。2018年も引き続き外で話していきたい気持ち。準備はけっこうしんどいので回数はそこまでやれないと思うけど。
社内の月1の勉強会では全部 LT やった。枠を独占している老害感あるけど、遠慮してても仕方ないからこれでいいと思っている。もっとみんなが気軽に LT をしたい気持ちになるように工夫はした方がいいとは考えている。
新しい技術
2017年は個人的に新しい技術を学べた。
- Docker / k8s
- Heroku
- Go
- Vue.js
- API Blueprint
- Terraform
- WebAssembly
- Arduino
特に Docker / k8s はいくつかのプロダクション環境での運用もできたので良かった。k8s に出会う前は AWS ECS で頑張っていたけど、今は k8s しかさわりたくないくらい好きになっている。AWS でもサポートされたので良かった。また、今の個人的な感覚としては Heroku を代表とした PaaS をもっと活用した開発スタイルを模索していきたい気持ちがある。
言語では Go で悩むことなく書けるくらいにはなれたし、逆に今まで慣れていたはずの Ruby でコードを書く時に悩むシーンが増えたりしたのが面白かった。
2018年は引き続き Go をやりつつ、関数型言語をなにかプロジェクトで使っていきたい気持ちがある。
あと Arduino はもう少し実用的なのを作りたい。
TOEIC 受けた
人生初めて受けた。今まで英語の勉強ってまともにしたことなかったので 500 点いかないくらい低い点数だった。つらい。2018年にも受けたい。勉強します。とりあえず文法が壊滅的に弱いということが判明したので、中学英語から始めます。
モチベーションのために社内 slack に英語勉強専用チャンネルを発作的に作った。ここに報告することで継続できるメソッド。目指すは 600 点。果たして。
2018年抱負
全員が同じ強みを持つのでなく、互いに異なり刺激になるような強みを持ったチームで働きたいと思っている。その方が強い。多面体的なチーム。それができるような役割だったり、機会というのを作っていきたい。
気持ち。
2018年も頑張るぞ。