新卒3年目のHaskell好きのScala使いが、はてなでテックリードになるまでの道

「若手エンジニア、どんな活躍してますか?」の第7回目は、はてなが手がける、サーバー監視サービス「Mackerel」の開発エンジニアにお話を聞きました。リモートでありながら、抜群の存在感を発揮する先輩の背中を、超優秀な後輩はいかにして追いかけたのでしょうか。

新卒3年目のHaskell好きのScala使いが、はてなでテックリードになるまでの道

はてなといえば、ブログサービス、ソーシャルブックマークサービスを展開する企業として知られていますが、サーバー監視サービス「Mackerel」も主力プロダクトのひとつ。今回お話を伺ったお2人も、Mackerelの開発メンバーです。そのうちの一人、2017年4月にMackerelのテックリードになったばかりの濵田さんは2015年入社の若手。愛知からリモートで働く、前テックリードの辻川さんの背中を、ディスプレイ越しに見ながら実績を積み上げてきました。

はてなの開発拠点である、京都と東京。さらには、辻川さんが居を構える愛知がリモートでつながり、開発が進んだMackerelのビハインドストーリーを新旧テックリードのお2人に聞きました。

──それぞれ、自己紹介をお願いします。

辻川 インターンを経て、2011年にアプリケーションエンジニアとしてはてなに入社した辻川貴哉(つじかわ・たかや)です。Mackerel立ち上げ時のテックリードを担当しました。現在は、愛知県の自宅からリモートで仕事をしています。

1

辻川貴哉さん。2014年10月より、愛知からのリモート勤務を開始した

濵田 2015年に新卒で入社して、すぐMackerelのチームに配属されました、濵田健(はまだ・けん)です。現在はテックリードとして次世代Mackerelの開発などを担当しています。

2

濵田健さん。京都にあるはてな本社で開発にあたっている

──辻川さんは、サーバー監視サービスMackerelの最初の1行目を書いたプログラマだったのですね。Mackerelの開発言語を決めるときに、Scalaをプッシュしたとか?

辻川 もともとPerlプログラマだったのですが、静的型付け言語を使いたいと以前から考えていて、新規に開発を始めるMackerelではScalaを使うことを提案しました。本当はHaskellを採用したかったのですが、他の人でも使える言語ということでScalaになりました。

濵田 学生時代は、Haskellが得意で、入社の時には結構それをアピールしていました。自分では覚えてないのですが、たぶん「(Haskellと関数型言語という点で共通点がある)Scalaでプログラムを書きたい」と面接の時に言っていたような気がします(笑)。

辻川 いきなり「すごい新人が来た」みたいなイメージを持っています。

──Scalaには魅力を感じていましたか?

濵田 学生時代にちょっと調べていて、いい言語だと思っていました。抵抗感はありませんでした。プログラムでは型を書きたい立場の人なので。

辻川 Haskellっぽい部分があるのがいいですよね。それにJavaを書ける人はちょっと勉強したらScalaも書けるようになる。Javaのようにコードが冗長にならない。

濵田 MackerelのエージェントはGo言語で開発されているのですが、これも自分にとっては選択の理由の一つでした。

「飛び道具」を使って一晩でプロファイラを書いた

──新人時代の濵田さんは、どんなことから始めたのですか?

辻川 最初は慣れてもらうことからですが、当時から思っていたのは「彼は放っておいても大丈夫だな」。なんでもできるし、自分で勝手に調べて分からないところがあったらそこだけ質問してくる。手がかからない(笑)。はてなの新人はみんな優秀ですが、その中でも特に優秀でした。

──濵田さんが入社してから2年を振り返って、印象に残っている出来事は?

濵田 障害ですね。どうしてもサービスには障害は起きる。自分では最初は何もできないわけですが、辻川さんが解決している姿を見て、そのアプローチを学びました。背中を見て育った感じですかね。

──リモートワークなので背中を見て、というのは比喩表現ですよね。

濵田 はい。Mackerelのチームで一番開発歴が長いということで、今もビジネス上の大きなことをやりたいときなどには、辻川さんは頼りにしています。

3

──濵田さんは技術ブログの質と量がすごいのですが、いつ書いているのですか?

濵田 夜と休日です。自分では、細かいTipsよりも、ある程度まとまったドキュメントの方が好きです。あとから見返して、ためになるので。

──ブログ記事にまとめられているMackerelフロントエンドのパフォーマンス改善の取り組みでは、定量的なアプローチを徹底しているのが印象的でした。

濵田 機能追加を続けていると、どうしてもレスポンスは悪くなりがちです。だからこそ、継続的にパフォーマンスを改善する取り組みを大事にしています。

──それにしても、パフォーマンスチューニングのためにJavaScriptのプロファイラを一晩で作るのは普通ではないと思います。

濵田 あの頃は若かったので(笑)。プロファイラはHaskellを使って書いたのですが、そこは飛び道具を使った感じでした。

──そんな濵田さんは、プログラミングはいつから?

濵田 大学に入ってからです。親しい友人がHaskellが得意だったので、その影響でHaskellが好きになりました。もともと数学は得意だったので、割とすんなり入れました。

実は専攻は電気系の学科で、物理の理論に近い分野が専門でした。プログラミングはほとんど趣味というか、現実逃避みたいな(笑)。

──何か「これを作りたい」といった目標はあったのでしょうか?

濵田 Project Eulerというサイトがあって、そこで数学の問題をプログラムで解くのにHaskellは使いやすいので、よく挑戦していました。

Haskellの次に興味を持ったのがVimの世界で、他の人が作ったVimプラグインを見たりしているうちに、作るようになりました。一番使われているのはlightline.vimで、これは海外から問題報告が届いたりして、自分にとってオープンソースソフトウェア開発のとっかかりになりました。

──なぜVimに興味を?

濵田 プログラムを始めたときに使っていたのがVimだったので。今もプログラムはVimで書いています。

辻川 僕は今もEmacsです(笑)。

──ScalaだとIDE(統合開発環境、Scala向けIDEとしてIntelliJが有名)も人気がありますよね。

辻川 Scalaだけを書くわけではなく、GoもJavaScriptも書きます。そこで負荷が少ないよう、自分が一番慣れているエディタで書いています。

異例のスムーズさだったリーダーの引き継ぎ

4

──濵田さんはいつからリーダーに?

濵田 正式にはこの4月からです。大きく変わったわけではありませんが、ある程度責任を求められるというか。テックリードはディレクターと一緒にプロダクトに貢献していく部分が大きいです。新たな機能を設計する際も、コードをよく知っている立場として、どのように作れば実現しやすいかを考えるという役割があります。

辻川 その前から実質的にリーダー役だったんです。私が半年間の育児休業を取っていて、つい最近の2017年4月に復帰したところです。

濵田 辻川さんが育休に入るときには不安もありましたが、意外となんとかなるものだと思いました。

辻川 普段の様子を見ていて問題がなさそうだったので、こちらは特に心配していませんでした。それでも、育休中に何か困ったことがあって呼ばれることがあるだろうと思っていたら、本当に1回もなくて。これはすごいなあと思いました。

濵田 困ったことはあったのですが、ここでがんばらなきゃ、と思っていました。辻川さんが休みに入る前からいろいろ質問して雰囲気はつかんでいたので。「なんでそういう設計になっているか」が難しい部分だと思いますが、それはある程度理解できていました。

──でも、普通はここまできれいに引き継ぎできませんよね。

辻川 すごいです。特別な工夫はしなかったのに、うまく引き継ぎができちゃった感じですね。定期的な会議で、複雑な機能のレクチャーをするようにしていましたが、それだけでうまく引き継げたとは思えないので。

濵田 設計した人の気持ちを理解するようにしました。なんでこういうテーブルスキーマになっているんだろうとか。

リモートワークが普通の光景

──リモートワークでお仕事をしているということですが、どのようなやり方なのか教えてください。

エンジニアHubに会員登録すると
続きをお読みいただけます(無料)。
登録のメリット
  • すべての過去記事を読める
  • 過去のウェビナー動画を
    視聴できる
  • 企業やエージェントから
    スカウトが届く