縦にも横にも知見を深めて、一生コードを書き続けたい ~新卒1年目 成長の軌跡~#15

縦にも横にも知見を深めて、一生コードを書き続けたい ~新卒1年目 成長の軌跡~#15

2018年4月にミクシィグループに入社して1年。社会人としても成長を始めた新卒入社スタッフの軌跡を、シリーズでお伝えしていきます。どんな経験を積み重ね、この1年を歩んできたのか。そして、その先に見えてきた夢や目標は?リアルな“1年目”の声をお届けします。

15回目は、開発本部CTO室の神谷。SREとしての仕事に邁進する日々は、大規模サービスを扱うプレッシャーも大きいかと思いきや「好きなことが成果として認められる仕事」と笑顔で言います。エンジニアとしてより高みを目指す、そんな入社1年目の日常に迫りました。

国内最大規模のサービスに新卒で携われる贅沢さ

────プログラミングを始めたのは、小学生のころだそうですね。

小学校高学年のころに、パソコンを貰ったんです。その頃、小学校の授業で「パソコンで遊ぼう」みたいな授業があったので、Webサイトを作ろう、とHTMLを独学で学びました。それで、ゲームを作ってみたのがきっかけですね。

────HTMLは、プログラミング言語ではないですよね。

そうですね。ただ当時の自分にはHTMLしかできなかった。だから、自分のできる手段でゲームを作ってみようと。あまり上手くはできませんでしたが、自分の選ぶ攻撃のパターンごとにHTMLを用意して、ゲーム仕立てにしてみました。最初にこの攻撃を選んだら、該当するHTMLに遷移して…というような流れですね。敵の攻撃ターンにもHTMLがあって、そこからさらに攻撃の数だけHTMLが分岐していく。この作り方だと「この画面のここをちょっと変えたい」と思ったら、全HTMLを編集しなおさないといけません。この作業を続けていく中で「もっとうまいやり方があるのでは?」と、プログラミングを学び始めました。

 ────聞いているだけで、気の遠くなりそうな作業ですが…。

HTMLで全部作るしんどさと同時に楽しさを知った、という感じですね(笑)。

────それで、大学での専攻は何を?

大学では、コンピューターサイエンスを学んでいました。そのまま大学院へ進学予定でしたが、大学3年の時に友人に、ミクシィの人事を紹介してもらう機会がありました。モンスターストライク(※以下モンスト)の技術的な質問をしてみたら、事細かに、具体的な回答をしてくれて。人事なのにですよ。エンジニアではないのにそこまで把握しよう、理解しようとしている。そんな人事がいる会社って、すごいなと驚きました。エンジニアに寄り添ってくれるスタンスが、魅力的に感じられたんです。

────人事の話を聞いて、就職を意識し始めた、と。

話を聞いてみて改めて考えたのが、自分がプログラミングをするモチベーションは「ものをつくりたい」「書いてみて、動いたら嬉しい」という気持ちにあるのではないか、と。その気持ちを追求するなら、研究の道に進む必要はないのではないかと思い始めました。自分は、最先端の研究をしたいというよりも、先人の作ってくれた知識を組み合わせて、動くものを作りたい。そういう欲求の方が強いのだと気づいて、就職する道を選びました。

────そのような背景があったのですね。

ミクシィは、国内最大規模のゲームを破綻させることなく成り立たせている。これは、すごいことだと思うんです。「大規模サービスを、安定稼働させている仕組みを知りたい」、そんな好奇心もありました。あとは、面接フローを通して出会った人たちを見ていて、自分の意見を言いやすい環境がミクシィにはあると感じたんです。プレッシャーが少なく、発言しやすい環境は、自分のパフォーマンスを存分に発揮できるかどうかに大きく影響すると思っていましたから。

────仕事がしやすく、知的好奇心を満たせる環境だと感じたんですね。

そうですね。あとは、サービスの規模も魅力でした。配属も「ミクシィでしかできないことって何だろう?」と、まず考えたんです。そう考えると、国内最大規模のサービスに携わる経験は、ここでしかできないんじゃないかな、と。せっかく入社するのだから、ミクシィでしかできないことに挑戦しよう、と思うようになりました。

────ミクシィでしかできないこと、ですか。

はい。だから、入社が決まった直後は、新規サービスにチャレンジすることも考えていました。でも、新規サービスはこれからも手掛けるチャンスがあるかもしれない。であれば、国内最大規模のサービスを今のうちに見ておくことは財産になるのではないか、と考えたんです。将来、また違ったサービスを手掛けたとして、そのサービスが拡大したときに「サービスが負荷に耐えうるように、きちんとできているかをチェックできない」なんていう事態は避けたいという思いもありました。そういう意味でも、最初に大規模サービスに携わるというのはキャリアとして大きくプラスになると考えて、配属先を決める面談を受ける頃にはSRE一択になっていました。

────SREとして配属された後、最初の仕事を教えてください。

最初に任されたのは、社内用のデータ表示ツールに機能を追加する仕事でした。モンストの企画部門の人が、データがちゃんと設定されているかチェックするツールのプレビューページの見た目やバグを修正する仕事です。

入社1、2か月後に初めて、モンストに機能を追加する仕事を任せてもらうことになりました。ゲーム内ミッションの一つに「マルチプレイじゃないとクリアできない」という、モンスト史上でも初めてのミッションを実装させることになりました。正直なところ震えましたよね(笑)。それまで、自分が趣味で作ったサービスは一日多くても数十人レベルにしか使われなかったのに対して、いきなり何千万人が使うサービスに実装する訳ですから、プレッシャーはすごいものでした。

────バグを出すわけにはいかない、と。

「止まったら…」「間違えたら…」とは、思いました。とにかく、コードの正しさを追求して「これなら間違った挙動をするような事態は起こらないでしょう」と社内確認してから、リリースしました。コードに問題がないかを確認するための方法論はある程度確立されていたので、テストを追加して処理が正しく行われているか確認したり、QAエンジニアに何度もチェックしてもらって、準備を整えました。意図通りにきちんと動くかを徹底的にチェックして、これなら大丈夫と確信を得て、ようやくリリースに至った感じです。おかげさまで、リリース後は何の問題も起こりませんでした。

────一番苦労した点はどこでしょう?

モンストのコードは、20万行くらいあるんです。とはいえ、その時の自分にとってはこれほどのコードをいじるのは生まれて初めての経験ですから、大きなハードルでしたね。

当時は、内部の仕様も理解できていない状態でした。そこに、「ミッションの条件を追加する」という言葉だけ与えられた。じゃあ、該当するミッションのコードはどこにあるのか、どういうAPIをたたいたらミッション達成になるのか、と、試行錯誤でしたね。自分が担当するソースコードの箇所を正しく把握して、その前後関係を理解すること。仕様の理解がとにかく大変でした。「ここを変えたら、どこに影響があるか」を、正確に把握する必要がありましたから。当時はとにかくソースやドキュメントを読みまくる日々でしたね。ドキュメント化されていないものがあったら、それに関しても上司や先輩に質問して、クリアにしていきました。

────それは、大きな成長につながったのではないでしょうか。

そうですね。入社して一年が経ちますが、エンジニアとしては、かなりコードが読めるようになったと感じています。その結果、仕様に関する理解が進んだと思います。例えば「この辺りにバグがありそう」と、当たりをつけられるようになりましたし、まったく未知のコードが目の前にあったとしても、その内容を理解する速度も上がったのではないかなと思います。

モンストに関しては、全体のコードを把握できるようになりました。あとは、モンストが使っているライブラリがバグッた時にプルリクエストを送ったり、何かあった時にコードを読んで把握して、直せるようになってきました。これは、積み上げてきた経験が大きく影響しています。

────マインド面では、どのような成長を。

もともとは意見を求められてもあまり発言しないタイプでしたが、今は思ったことはきちんと言うようにしています。意見を求められる場面もありますし、個人的に「ここは問題では?」と思うところを指摘できるようにもなりました。

最初の頃は、全体像も見えていませんし、何か気がついても「自分には分からない深い理由が、きっとあるんだろう」と通り過ぎていた部分もあるんです。でも、今はとりあえず気づいたら発言してみるように心がけています。

ひたむきにコードと対峙するのは、とにかく「好きだから」

────今、担当している業務を教えてください。

今メインで担当している仕事は、モンストの機能開発です。その他にも、モンストが使っているオープンソースのライブラリに出たバグを修正する業務も行っています。

────メンテナンスをすることもあるそうですが、大変な面もあるのでは。

メンテナンス自体が大変、というよりも、メンテナンスができるようになるための必要な知識や技量の習得が大変です。メンテナンス自体は手順書があって、基本的に、当日は前日までに作成しておいたとおりにコマンドを打っていくだけ。極端なことを言えば、これは誰にでもできるんです。でも、例えば新バージョンでリリースした機能がバグッていた、というようなイレギュラーが発生した時に、どう対応できるかが課題のかな、と。対処するためにはコード全体の把握や、サーバーが壊れたらどういうフローで対処するのか、といった知識を一通りインプットしていることが前提として求められます。そういった意味では、大変な面もありますね。トラブルが起きた時にアラートを投げるのか、自分で判断するのか、どう対処するのかをタイムリーに判断する力が求められますから。

────プレッシャーは大きい、と。

そうですね、大変さはあります。でも、ミクシィに入社して一年。学生から社会人という立場に変化はありましたが、自分の場合は「やりたいことをやらせてもらっている」という意識なんです。それがSREの仕事として成果になる、とても恵まれた環境にいるのだと感じています。

 ────今後、挑戦してみたいことを教えてください。

SREとして入社しましたが、現状はアプリケーションレイヤーばかりなので、今後はもっとミドルウェアより、インフラよりのところを見られるようになりたいですね。その理由は「知らないものを、知らないまま使っているのが怖いから」です。自分の知らないレイヤーで何かが起きてサーバーがダウンした場合、知らなかったらどうしようもない。知っておけば、本当にいざという時に対応できますから。担当レイヤー以外のところもしっかりと把握して、対応力を向上させていきたいというのが、今後の目標ですね。

────仕事を進める中で、難しさを感じることはありますか。

仕事をしていて「日本語って、本当に難しいな」と思うんです。意思の疎通ができているようで、曖昧な部分がある。「○○の仕様で」と依頼を受けて、若干曖昧だったとしても「こんなイメージかな」と自分の解釈で進めていくと、出来上がって動かしてみたときに「条件が違っていた」となってしまうケースも。とりあえず一回作ってみました、というやり方で仕事を進めていくと、二度手間が生じる。意思の疎通、認識の共有を最初にきちんとしておくことが、大事だと感じています。

────そのあたりも成長を実感できますか。

そうですね。入社当時と比べるとずいぶん自然と確認できるようになってきて、後になって認識が共有できておらず作り直さなくてはいけない、という行き違いも減ってきてはいます。それでもまだ、甘い部分があるとは思います。

────日本語って、難しいですからね。

一つの言葉とっても、一人ひとりの持つバックボーンも違えば、捉え方も違う。微妙なニュアンスも含めて、正確にキャッチアップしていくのって本当に難しいと思います。だからこそ、認識のすり合わせは重要かな、と。

────今後は、どのような仕事をしていきたいですか?

一生コードを書いていきたいと思っています。好きでやっていることがだから、自分の中で余程のことがなければ、これからもずっとコードを書き続けていると思います。

────「ソースコードを書く」「サービスを作る」どちらも「作る」ことだと思いますが、神谷さんにとっては違うのでしょうか。

自分の中で、一番興味が強いのは技術的な部分なんです。だから、サービスを作ったり、仕様や機能要件定義をするような、ディレクション寄りの仕事をしたいとはまだ思いません。分からないことだらけですし、とにかく技術力を向上させていきたい。深堀りしてなんでも調べていって、横にも縦にも知見があるような、そんなエンジニアになるのが理想ですね。

 

– – – – – – – – –  ※※※ - – – – – – – – –

■ pick up! ■
チームで持つ“信頼感”が、僕を挑戦に向けてくれた。 ~新卒1年目 成長の軌跡~ #14
「自分ならではの武器を持った、エンジニアになりたい」~新卒1年目 成長の軌跡~#11

PAGE TOP