GMOペパボに入って3年、やってきたことを振り返った

2018年7月1日でGMOペパボに入社してから3年がたった。自分自身1つの会社で3年を超えて働いたことがなかったので、もう3年も経つのかという気持ちが大きい。3年間あっという間のような長かったような不思議な感覚がある。いい機会なので何をやってきたか振り返ってみた。

ちなみに入社前まではWEBの会社では働いたことはなく、PHPRubyも仕事では書いたこともない、ましてや技術イベントで登壇などしたこともない、ほぼゼロからのスタートのようなものだった。なぜ入社できたのかはわからないが、とにかくがむしゃらに自分で書いたコードをGitHubにおいたり、ある程度人に見せれるものを作ってHerokuで動かしたりてアピールしていたように思う。

サービス運用

入社してしばらくはがむしゃらに日々の運用案件をこなしていた。サービスの全体像を掴んだり、PHPRubyで書かれたアプリケーションのソースを読みながら、バグの原因を掴んで治したりして、まずはチームに不可欠な人になろうと必死にやっていた。

先にも書いたように、PHPRubyも入社まで書いたことがなかったので、入社後勉強の時間を設けてくれてパーフェクトPHPやパーフェクトRubyを読みつつ勉強させてくれてすごくありがたかった。

コードのリーディング力(というか勘所を掴む能力的なもの)は低い方ではないので、「すべての答えはソースコードにある」という気持ちで読みまくっていた。RubyGemsやComposerのようなエコシステムにも触れ、自分でライブラリを書いてみたりした。

github.com

github.com

github.com

コードレビューや先輩のコードを見たり、OSSソースコードを読んだりして設計を学んだ。仕事では、運用を省力化してそれ以外の新規開発に充てる時間を増やすために自動化をしたりBotガリガリ書いたりした。運用案件のissueがopenされてからcloseされるまでの時間を自動で計測してくれるBotを作ってその時間をいかに短くしていくか取り組んだりもした。

f:id:kimromi:20180722230940p:plain

開発環境についてはVagrantで立ち上げたVMにChefをあてて作るスタイルがすでにできていた(現在も利用している)。当時は技術的にもよくわかっていなかったので、vagrant upで開発環境出来て便利だな思っていた。

社内の読書会をきっかけにGolangも少しだけ書いてみたがいまいち身が入らず挫折した。

インフラ

そのうち、アプリケーションのサーバーが物理サーバーから自社のプライベートクラウド(OpenStackで組まれている)に移設されていくようになり、自分も進んで取り組み始めた。インフラの構築や監視、ネットワーク周り、ChefやTerraformでコード管理していく技術を学んだ。Dockerも本を読むなどして勉強し、世の中にはこんな便利なものがあるのかと感じた。

一般的なWEBアプリケーションの構成も知り、keepalivedをつかったロードバランサや、Nginxでリバースプロキシを作って各アプリケーションサーバーにリクエストを振り分けたりできるようにもなった。ドメインのサービスに携わっているのもあって、DNSの知識も得ることができた(DNSサーバーの運用はしてないけど)。一通りアプリケーションをサーバーから立ち上げてドメインの設定して、SSL証明書とってNginxに設定してhttpsでサービス公開して監視、運用、移設もできるようになった。

この頃、それまで既存のPHPのレガシーアプリにツラミを感じていたのだが、10年以上問題なく動いててサービスを支えてくれていることに感謝の気持ちを持てるようになってきた。

あともうひとつ、この頃にシニアエンジニアの昇格試験を受けた。udzuraさんにメンターになっていただき、それまでの自分のやってきたことを振り返りつつアドバイスいただいた。結果は見事に撃沈だったが本当に勉強になったし、自分には何が足りないのかがわかった。

チームリーダー

2017年9月、長年チームに在籍してサービスをまるっと知り尽くしている先輩が退社されたのと同時に、ムームードメインチームのリーダーになった。先輩が抜けた穴はかなり大きく大変だったが、コード化や自動化できていなかったところを皆で協力して少しずつコードにしていくことで省力化することができてきている。

リーダーとしては俺について来いタイプでは無いので、どちらかというと見守りつつ下から支えるタイプであると思う(サーバント型?)。自分の意見を押し通すではなく、自分の意見は持ちつつも皆できちんと議論した上で噛み砕きつつ、スッと説得力のあるアイデアを出してまとめるみたいなのを心掛けている。今までリーダーの経験はなくて、最初はどうやったらチームがうまく纏まって機能するか、また雰囲気のいいチームになってメンバーたちが出社が苦にならないかを考えていた。うまくいったかどうかはわからないが、問題はない(と思っている)。リーダーになってから3ヶ月くらい、技術的なアプローチが全然できてなかったので、2018年からは少し肩肘の力を抜いて、本来のエンジニアとしての技術を磨いてアウトプットする作業もやっている。

学生のインターンシップのメンターも初めて経験した。また中途採用の面接官もするようになった。今現在高いスキルはは持ち合わせていなくても継続して学び続けることのできる人かどうか、ペパボの風土に合うかどうかなど、人を見る目が少しついたように思う。

tech.pepabo.com

フロントエンド

最初にフロントエンドの技術に触れたのは社内サービスの顧客管理システムの1機能の中にVue.jsを採用したところから。それまではPHPRuby on Rails内で愚直にjQueryCoffeeScriptで書いていた。その後ショッピングカートを実装したときにユーザーが目に触れるところでVue.jsを採用してリリースした(2017年7月)。

tech.pepabo.com

そのあたりは本番環境にVue.jsを使った話とかVue.js on RailsとかムームードメインJavaScript環境を整えた話で外部、社内イベントで登壇した。最近のプロジェクトではVue.jsに加えてNuxt.js、TypeScriptを採用してサービスのリニューアルの実装をしている(リニューアルについてはインフォメーションで少しだけ触れている)。

最近触れるようになってきたフロントエンドの技術だが、なぜか面白みと楽しさを感じる。ただうまく言語化できていないので考えていきたい。

見えてきた自分の長所と短所

3年間とにかくがむしゃらに走ってきたように思う。その中でもとにかく手を動かすというのを心がけている。最初はあまり大きくない問題に対して大きなコスト(時間)をかけていた。シニアエンジニアの立候補をきっかけに、問題の大きさをきちんと捉え大きな問題をなるべく小さなコストかつ未来につながる方法で対応していくということをできるようになってきたように感じる。技術的に何かが突出しているエンジニアではない(自分もそれが向いているとあまり思っていない)ので、バランスをとりつつ引き出しをたくさん持った中から手数を多く出していくようにこれからもやっていく。

あとエンジニアにはあまり関係ないが、私は周りの人のことをものすごく観察していて、ちょっと見ただけでその人が何を考えてどんな気持ちなのかなんとなく分かるようなスキルが人よりもありそうということがひょんなことからわかった。自分ではそれが普通だと思っていたのだけど、意外に人はそこまで敏感ではないということに気づいた。チームのリーダーもそのあたりを見込まれて選ばれたのかもしれない。その点も強みとしていけたらよいと思う。

短所として、中長期的な観点で考えて道筋を立てていくことが得意ではない。個人的なことでも、仕事においてもそうである。入社する前まではとにかくWEBの会社に入るというのを目標にしてきてそれに向かっていたが、それが実現してからの3年間特に目標もなく進んでいたように思う。立場的にも中長期的な観点でかつ広い視点で見なければならないようになりつつあるので大きな課題である。

所感

3年間やってきて、本当にやっと最近になって自分のやっていることが売上に直結したりチームにものすごく役に立つものであったりすることが増えてきたように思う。エンジニアは様々な問題を解決する職種であるというところから、問題の重要度&緊急度に対してのコストのかけ方を肌感で掴んできたからだと考えている。まだまだやることは膨大にあるし一つ一つクリアしていきながら自分自身をレベルアップさせていきたい。またこの先エンジニアとしてどうなりたいのか、そもそもなぜエンジニアをやっているのか、エンジニアとしてこれからもやっていきたいのかというところからもう一度見直しながら残り半年過ごしていきたい。