バックエンドエンジニアのスキルアップのコツ

やまげん:ISUCONに勝つところももちろんですが、バックエンドエンジニアとしてのスキルアップの話にもつながっていると思います。何かコツとかはありますか? 気をつけたほうがいいことみたいなこと。

金子:コツ。なんですかね。たぶん楽しむことだとは思うんですよね。

やまげん:おお。はい。

金子:初めてISUCONをやった時は、本当になんにも解けなかったんですよ。そこから、「じゃあこうすればいいんだ」「ああすればいいんだ」ということを一つひとつ学んでいったんですよね。

それが僕はすごく楽しかった。初めて出場したのがISUCON4なので、僕がそういうことをやったのが、ISUCON4の少し前ぐらい。そういうふうに、ちょっとずつ勉強して出たISUCON4で準優勝だった。

やはりちゃんと勉強していれば成果が出るし、それにISUCONの知識って、業務でもそのまま使えるので。そういうところが僕には楽しかったです。

やまげん:なるほど。

金子:楽しむことがなにより重要かなとは思いますね。

やまげん:そういうのって、技術自体を学ぶのも楽しいですよね。

金子:そうですね。よく論争があるじゃないですか、「エンジニアは休日に勉強するべきか否か」みたいな。

やまげん:はい(笑)。

金子:僕は別にそれはどうでもいいと思っていて。僕は休日も技術書を読んだりしていますが、別にそれって単純に好きでやっているだけで、エンジニアはそうあるべきだと思っているからやっているわけじゃないんですよね。なので、そういう議論はすごくどうでもよくて、単純に「各自で楽しめばいいじゃん」と思っているほうです。

やまげん:ああ、すごい。聞いている方々は勉強になっているんじゃないかなと思います。

金子:それならいいんですけど。

やまげん:楽しむことはやはり大事ですよね。「おもしろいものをおもしろく思う」みたいなところとか。特にエンジニアの領域はそう考えられるかどうかが分け目になっているかもしれないですね。

金子:楽しいと思いますよ。人によるかもしれないですけど。

やまげん:僕も楽しいと思える派なので。全部大好きで、すごくおもしろいと思っています。

金子:なにより、勉強したことがWebサービスをさらによくする。自分たちが見ているサービスをさらによくすることに直結できる分野って、そんなにたくさんはないと思うんですよね。勉強したことがすぐに活かせるって。やはりそういうところは楽しいなと思います。

やまげん:ああ、なるほど。確かにそのとおりですね。本でカリカリッと勉強したことをすぐに活かそうと思えば、活かせる場がありますもんね。

金子:そういうものはやはりいいなと思いますね。

やまげん:僕も共感でしかないですね。僕の話ではありますが、コンピューターみたいなところって、結局0と1で処理をしているので、「最終的に見たら誰でも理解できるはずなんだよな」と思いながらいつも勉強しています。

金子:そうですかね(笑)。それはあまりピンときていない。

やまげん:すみません(笑)。ちょっと僕のアレとは合わなかった感じですが、でも勉強が楽しくてそれを仕事に活かせて、(それで)さらに楽しくなるのは、すごくわかります。

日々の学びはどうしているか

やまげん:ちなみに今ハマっている技術とか、今だとCTOとしてもご活躍されていると思いますが、なにかそういった日々学ばれていることやトピックなどはあったりしますか?

金子:あまり意識していないですね。機械学習があんまり詳しくないので、最近たまに本を読んだり。あと、やはりシステムプログラミング周りが好きなので、そういうLinuxのシステムプログラミング周りや、Go言語が好きなので、Goの仕様とか本をパラパラッと見たり。そういうのはやりますね。

やまげん:なるほど。

金子:たまにJavaScriptとかTypeScriptの本も一応目をとおしていますね。「最近どうなんだろう?」という感じで。

やまげん:「この本を読んでみよう」と思うのは、何がきっかけですか?

金子:Twitterで流れてきて気になったら、けっこう買ったりしています。あと出版社も、技術評論社さんやオライリーさんなどは新刊は何が出るのかはけっこう見ています。それ以外の出版社さんだと、だいたいTwitterが多いですね。

やまげん:なるほど。Twitterとかでフォローしている方々がすすめている、話題にしているところを見て「読もうかなー」みたいな感じですかね。

金子:そんな感じですね。

やまげん:個人的な悩みとしては、積読が増えてきてしまっていて。「これ読みたいな」というものがほしいものリストにどんどんたまっていっているんですが、金子さんもそういった状況だったりするんですか?

金子:僕もそんな感じですね。「これよさそうだな」と思った本をすでに買っていたり。

やまげん:はい(笑)。

金子:ほとんどKindleで読んでいるんですが、Kindleを見ていたら「あれ? こんな本買ったっけ」みたいな本があったり。そんなのばっかりですね。けど、別にあんまり気にしていないですね。

やまげん:なるほど。

金子:「気が向いたら読もう」ぐらいで買っているので。

「優秀なエンジニアか」をどう判断しているか

やまげん:話していて、もう学びが日々身に付いている感じなのかなと思ったりもしたんですが、いわゆる「優秀なエンジニア」みたいなところだと、「そういった学びを楽しめるか」みたいなことで判断されたりするんですか?

金子:どうですかね。そこまでちゃんと経験を積んでいるわけではありませんが、技術について話す時に、楽しそうかどうかは確かに見ますね。

別にそういうスタンスの人はいいとは思いますが、やはりイヤイヤやっている(人)と「一緒に働きたいか」と言われると、あまり思わないですね。一緒に働きたい人は、技術を楽しんでやっている。「もっといいWebサービスを技術を使って提供したい」と思っているような人と一緒に働きたいというのはあります。

やまげん:なるほど、ありがとうございます。

PR TIMESのエンジニア組織をどう変えていこうと考えているか?

やまげん:せっかくなので、PR TIMESさんで挑戦されていることとかも、どんどん聞けたらと思っています。今エンジニアの話も出たので、今後、その組織をどういうチームにしていきたいみたいなことってあるんですか?

金子:一言で言うと、技術を使ったサービスをさらによくする組織にしたいんですよね。PR TIMESは自社サービスなんですよ。いまだに伸び続けているものすごいサービス、自社サービスとしては本当に化け物級のサービスです。このサービスの成長を技術を理由に止めてはいけないし、技術でさらに伸ばせるところは多いはずだと思っています。

PR TIMESはすでにビジネス的には成功していて、技術的にちゃんと直していけばもっともっと成長できるはずですが、技術のせいで成長を止めているんじゃないかなって。なんか僕(はそう)感じちゃう部分がけっこうあるんですよね。

そういうところを絶対に止めちゃいけないと思ってますね。なので、PR TIMESの成長を止めずにさらに進める、さらに成長させるような開発本部にしたいとは思っています。

やまげん:なるほど、ありがとうございます。

「技術が原因で成長が止まってしまう」はどんなところから感じるか

やまげん:ちなみに、話せる範囲でもいいですが、技術が原因で成長が止まってしまうことって、具体的にどういったところで感じているんですか?

金子:例えば、バグがあるのに直さなかったりすると、お客さんは不信感とか「バグッてるのに直さないなんて、何を考えているんだ」とたぶん感じると思うんですよね。

けどそれって、実はソースコードがすごく複雑で、そこを直すともしかしたら他のところがぶっ壊れるかもしれないような状態になっている可能性があるんですよ。そうなると、「むしろ触らないほうが他のバグが出ないからいい」という判断をしている可能性もあるんですね。

でもそれって、誰も幸せになっていないじゃないですか。バグは本来直すべきだし、そのバグを直したことで他にバグが噴出するのは、「そもそもソースコード自体がおかしいから全部直さないとだめだよね」という話なので。そういうところをやっていかないといけない。

あとセキュリティ。サービスを使いたくても、セキュリティが理由で使えない会社さんも当然あると思います。本当はサービスを使いたいのに、セキュリティがよくないという理由で使わなくなる会社さんも今後出てくる。

もしかしたらもういるかもしれないし、そういう会社さんを出さないためには、やはり「うちはセキュリティにすごく気を遣っている会社なんですよ」ということをちゃんとアピールしていきたいです。そのあたりが大きいです。

個人的にも、もともとサービスが好きで使っていたのに、バグが多すぎて使う気を失くしてしまったサービスってけっこうあるんです。PR TIMESをそういうサービスにしたくないというのがすごく強い思いとしてあります。

やまげん:ありがとうございます。Voicyの開発チームもバグが出て、(そこの)修正をするかしないかの判断は、毎回けっこう迷うところでもありながら、みなさんにはやはり喜んでほしいという思いでやっていたりするので。

PR TIMESを具体的にどう改善していこうと考えているか

やまげん:抜本的にそこを変えていって、品質をどんどん高めていくところを(意識して)活動しているイメージですか?

金子:そうですね。PR TIMESって、フロントエンドもバックエンドも、ものすごく古いんですよね。それだけ長い間いろいろなお客さんに使ってもらっているサービスということですが。使っていただいている間に、ちゃんとアップデートできていないのも事実です。それに対して、ちゃんと手を打っていこうとしています。

具体的に言うと、フロントエンドがほとんどjQueryで書かれているんですけれど、ページ、機能ごとに切り出して、Reactにフルスクラッチで書き換えることは、もうすでに企業ページと呼ばれているところでやっています。

あと、PHPのバージョンアップもやって抜本的な改善をしたり、PHPのソースコードもこれまでとぜんぜん違うクラスの構成で新しいAPIを作ったり。そういうことを実際に始めています。

そういう抜本的な改善をしていくことで、開発スピードが出せるように、ちゃんと改善できるようにということを今後やっていきたいと思っています。

やまげん:ありがとうございます。ちなみに、“古い”というのは、実際にどのくらい運用されたシステムなんですか?

金子:PR TIMES自体10年以上の歴史があるサービスなので、10年前とかに書かれたようなコードがまだ残っていたりするんですよね。

やまげん:ああ、そうなんですね。

金子:厳密に言うと(年数は)わからないんですけど。Git管理されたのがサービスを運営してからある程度経ってからなので、それより前については、開発側からはちょっとさかのぼれないのもあります。

git initされてから、まったくいじられていないコードもたくさん動いていて。「創業して間もないくらいに書かれたコードなんだろうな」というものはけっこうあるんです。そういうコードもちゃんと手を入れていきたいと思っていて。なので、「リファクタリングデー」でPHPのデッドコードを一気に削除したり、問題のあるコードがないかを見たり。

PHPのバージョンアップでコードをけっこう修正しているので、そのタイミングで他に変なところがないのかは、見てもらったりしています。

やまげん:なるほど。「秘伝のタレ」という表現が本当に適切なシステムになっていたというイメージなんですね。

金子:部分的には本当にすごいことにはなっていますね。そういうものは、ちゃんと1個1個倒していこうとは思っています。僕が入ってから1年も経っていなくて、そういう改善が始まってからまだ半年少しぐらいの感じなので、まだぜんぜん道半ばという状況ですが、今後ちゃんとやっていきます。

やまげん:(笑)。

(次回に続く)