見出し画像

hidekのエンジニアと長話 第8-3回【全文書き起こし】~ゲスト:紀平拓男さん(@tkihira)~

stand.fmで配信中の「hidekのエンジニアと長話」8人目のゲストは、スマートニュース株式会社の紀平拓男さんです。

「hidekのエンジニアと長話」は、メルペイVPoEのhidek(木村秀夫)さんをメインパーソナリティにお招きし、ゲストエンジニアとともに 作っていくスペシャルトーク番組です。

第8-3回の今回は、スマートニュース株式会社の紀平拓男さんをお招きして、UXとWebViewやマネージャーの仕事、Svelteなどについて語りました。

※本記事は、2021年8月6日にstand.fmで配信を開始した番組を書き起こしたものです。

ゲスト
紀平拓男 氏 @tkihira
スマートニュース株式会社 ソフトウェアエンジニア

メインパーソナリティ
hidek(木村秀夫)氏 @hidek
株式会社メルペイ VPoE(Vice President of Engineering)

パーソナリティアシスタント
gami(池上)氏 @jumpei_ikegami
株式会社プレイド エンジニア

UXとWebViewの関係

hidekさん(以下、敬称略):で、今、スマートニュースでは、いわゆるWeb周り?

紀平さん(以下、敬称略):そうですね。入ってからずっと一貫してWeb周りをやっていて。とは言ってもね、ネイティブの会社だったので、結構いろいろ大変でしたけれども。は い。入ってからですね、スマニューってネイティブの会社なんで、当然ながら、SwiftなりKotlinなりObjectiv-CなりJavaなりで書かれているんですが。みなさん、すごくUXにですね、ユーザー体験みたいなものにすごく誇りを持っていらっしゃって、そこをかなり気合い入れてインプルーブを進めているんですけれども。そんな中で、WebViewっていう、いわゆるWebをアプリの中に埋め込むっていうのは敵なんですよ。

hidek:あ! そうなんだ(笑)。

紀平:そうなんですよ。これはね、もう、「やりたくない!」という強いプレッシャーを受けましたね。入って。

hidek:へー。だって、コンテンツ、ねぇ。まさにニュースなんて、コンテンツの差し替えがすごく重要だから、そここそWebでやるべきかな、とか普通に考えたら思うんですけどね。

紀平:いや、実際、ニュースの表示はWebなんですよ。WebViewでやってるんですけども。

hidek:はい。

紀平:それは、全体がWebViewになるので、そこは全然、「当然の話だね」ってことでーーーは通るんですけど。例えば、チャンネルを表示しているところであるとか、そういったところにWebが入ってくるのがすごく嫌だ、という。

hidek:あ! そうなんだ。その嫌だっていうのは、いわゆる手触り感とかヌルヌル感って、よく言われるとは思うんですけど、そこなんですよね?

紀平:そこです。いわゆる体験ですね。体験が悪くなるし、それこそ5年くらい前だと、WebViewが入ってるだけで、結構簡単にアプリが落ちたじゃないですか。

hidek:そうですね。当時、Androidですね(笑)。

紀平:(笑)。いやー。なので、「ネイティブで書けるんだったらネイティブで書きたい。その方がやっぱりクオリティとしては高くなる」ということをおっしゃる方が結構いらっしゃって。

hidek:うんうん。

紀平:で、残念ながら、結構、僕はそこに100%同意だったんですね。

hidek:はい。

紀平:はい。なので、「まずは意識を変える」というか、「実際にちょっと使ってもらって」みたいなところから入っていかなきゃいけない、というところが、まず私がやっていたことでしたね。

hidek:なるほどね。結局、じゃあ、スマートニュースのWeb化っていうのは、基本的にどういうところをWebにしていく……。僕のイメージとしては、コンテンツ表示っていうところがメインかな、と思うんですけど。そこだけじゃなくて、いろいろなところもやってるんですか?

紀平:コンテンツ表示は完全にWebで、それは見るからにWebという形でやっているんですけども。実は、今、普通にスマニューを起動してですね、トップのチャンネルからWebViewが入っているんですよ、そこそこ。

hidek:あ! そうなんだ。へー。

紀平:で、「チャンネル全体がWeb」っていうやつも実はあったりしてですね。

hidek:はいはい。

紀平:かなりネイティブとわからないような形でどんどんと入れています。

hidek:なるほどなるほど。Web化って、ネイティブからWebへのシフトって、何か、どういうモチベーションというか、どういうあれなんですかね?

紀平:やっぱり一番大きいのですはね、ネイティブで機能を新しく開発しようとすると、当然ながら両方のエンジニアが必要になるじゃないですか。iOSとAndroidと。

hidek:はいはい。

紀平:で、そこのところの工数というものが、WebであればWebの開発だけで済むし、何より切り離せるんですよね。他のソースコードに影響を与えることなく、WebViewをボンっと入れておけば、あとは、その中で完結して機能が作れる、というところがあるので、そういった意味での「機能の開発のしやすさ」「依存関係の少なさ」みたいなのが大きなメリットです。

hidek:あとは更新するときに、コンテンツなり上に載っているものの更新にアプリのアップデートがいらない、みたいところですかね?

紀平:そうですね。そこはあんまり推しちゃうとね、今度、Appleにすごく怒られちゃうんですけど(笑)。

hidek:(笑)。

紀平:いやー、COVID-19とかね。そこら辺の情報というのは、「とにかく情報を最速で更新する」というのはすごく重要なので、「そういうところには、Webは当たり前のように使わなければいけない」というのはありますかね。

チームの立ち上げとマネージャーの仕事

hidek:なるほどですね。僕、「紀平さんがスマートニュースにジョインした」っていうニュースを聞いてしばらくしてから、「紀平さんがマネージャーやってるらしいよ」って話をちょっと聞きましてですね。

紀平:あれですよね。ここの番組でも結構話されてましたよね、EMの話。

hidek:そう。amachangかな? がたぶん。

紀平:そうです。amachangが。はい。

hidek:そうですよね。「え!」みたいな話になって。「あの紀平さんが?」みたいな話になって。なんか、マネージャーをやることによって……。そもそもチームの立ち上げみたいなことをやったんですかね?

紀平:そうなんですよ。

hidek:あー。

紀平:お伝えしたとおり、「Webに対するスマートニュース社内での認知」をまず上げていくところからしなければいけなくて。社内でお客さんを見つけて、それで使ってもらって、その有用性を理解してもらって、というような流れをやっていくためには「どうしてもチームが必要だね」ってことで、チームの立ち上げに……。がんばりました。

hidek:最初、何人くらいのチームだったんですか?

紀平:最初ね、2人で。そこからすぐに3人になって。はい。しかし、採用もやっぱり自分で全部やらなきゃくて。

hidek:はい。

紀平:Web専用の採用を回さなければいけなかったんで、そこら辺も自分の責務としてやっていましたね。採用が一番力入れたんじゃないかなぁ。

hidek:うん。採用ってあれですか。採用プロセスを作ったりだとか、技術面接みたいなこともたぶんしてるんですよね?

紀平:そうですね。技術面接の内容……。そこら辺は、チームのメンバーのフォローを受けながら作っていたんですけれども。例えば、どこら辺に私たちが求める人たちがいそうか、みたいな話で、そこのパイプラインを常に埋めるためにはどうすればいいか、みたいな話とか。そういうところからのスタートでしたね。で、来る人に対しての、もちろん面接の問題を作ったり。そして、アメリカの方でもね、採用……。結局、日本人だけではなくて、日本語を話せない人に対してもどんどん採用を広げていく必要があったので、そこら辺の話をしたり、っていうのが結構大変でしたね。

hidek:なるほどね。今、何人くらいのチームなんですか?

紀平:今ね、8人か9人か。もっといたかな?

hidek:へー。

紀平:結構いました。はい。

hidek:3年でそれって、結構、急拡大ですね。

紀平:そうですね。3年。そうですねー。急拡大です。本当にすごい勢いで増えて。ただ、オンボーディングとかもすごく力入れてやっていたので、チームが順調に拡大して、かつ、クオリティーも高いまま保てていると自負していますが。

スマートニュースで使っている「Svelte」

hidek:おー。スマートニュースって、Webの技術って何を使っているんですか?

紀平:そうですね。ちょっとね、特殊なんですけれども、Svelteというのを使っているんですよ。ご存知ですかね?

hidek:わからないですね。

紀平:「Svelte」って書くんですけど、Svelteっていうのがあって。Reactとかと同じフレームワークなんですけど。

hidek:へー。

紀平:比較的軽いんですね。やっぱり、ReactとかVueとかAngularとかって、どうしてもbundleサイズみたいなところで、重いというのがあってですね。仕方ない話ではあるんですけれども。それが比較的軽いのがSvelteで、かつ、機能も申し分ないね、ということで使っていて。普通の、いわゆるブラウザのサイトであれば、100KB、200KBって、あんまり大きなダウンロードサイズじゃないんですけど、我々の場合ってアプリの中で出てくるので、白い画面が結構出したくないんですよ。あの中に。

hidek:あー。うんうん。

紀平:で、それを避けるためには、やっぱりファイルサイズって、パースの時間からして結構かかっちゃうんで。それが0.1秒であれ、ない方がいいということで、ファイルサイズが小さいものとして選んでいますね。

hidek:なるほどね。ググって見つけたんですけど、「例えば、2つの入力ボックスに入力した結果の和を出力したい場合、Reactなら442文字、Vueなら263文字、Svelteなら145文字」。結構コンパクトなんですね。これ、どういう仕組みなんですか?

紀平:いや、まあ、そこら辺は、どうせどのフレームワークも適当なことを書いてるんで、あんまり真に受けない方がいいかな(笑)。

hidek:(笑)。

紀平:と思うんですけど、仕組みとしてはそこまで複雑なものではなくてですね。とは言っても、「どういう仕組みか」って難しいですね。背後で頑張って、例えば、オブジェクトに対する更新みたいなものを普通に追っていって、それをリアルタイムで変更する、みたいな話が当然あるっちゃあるんですけれども。そこら辺がかなり、ある程度薄く書かれている、っていうのが特色です。

hidek:ふーん。

紀平:で、JavaScriptとHTMLとCSSみたいなものが、結構、Vanillaっぽい書き方で書けるんで、Vanillaで書いていた人でもスッと入りやすい、っていうのが大きい。そういう意味では、ラーニングコストは結構低い方かな、という風には思います。

hidek:ふーん。なるほどですね。

紀平:一応、サーバーサイドレンダリングとかもできるんで、最終的に本当にパフォーマンス必要になってきたりするとそっち側に行くこともできるよね、というのも大きかったですね。

hidek:なるほどですね。結構、採用とか意識すると、どうしてもメジャーなフレームワークを導入して、それきっかけで人を寄せるってことも判断としてはあると思うんですけど。そこは、どちらかと言うと機能の方を優先した、って感じなんですね。

紀平:そうですね。とは言ってもね、「WebViewそれぞれにおいて、好きなフレームワーク使えばいいよ」っていうスタンスなんで、Next.js使っているところもあります。あったはずです。

hidek:そうなんですね。

紀平:ただ、メンテナンスとか考えると、ファウンデーションみたいなものはSvelteに寄せているところはありますね。

hidek:なるほどね。

「Reactできます」という人

紀平:あと、採用において、やっぱりね、「Reactできます」っていう人はね、信用できないとは全く言わないんですけど……。

hidek:あー、はいはい。

紀平:「jQueryできます」と同じ雰囲気を最近ちょっと感じるようになってきたな、というのが、正直(笑)。

hidek:あー、それ、言っていることわかります。メジャーなフレームワーク、メジャーな言語であればあるほど、人材の質のピンキリと言うか(笑)。

紀平:はい。

hidek:ありますよね。

紀平:そうですね。特にフロントエンドって、僕、これ、個人的な意見なんですけれども、やっぱり、バックエンドと比べて、人材の上下の差が激しい、っていうのを感じることがあって。「フロントエンドできます」「得意です」って言っている人は本当に二極化してるな、っていう印象がどうしてもありますね。真ん中がいないんですよね。

hidek:それ、間違いないですねー。

紀平:ですよねー。ある程度フロントエンドに慣れてくると、みんなやっぱりサーバーサイドの方が楽じゃないですか。動けばいいわけですから。変な言い方ですけど。

hidek:うーん。

紀平:フロントエンドって、自分の知らないブラウザとかでもちゃんと動かそうと思うと結構大変なわけですよ。

hidek:フロントエンド、そうですよね。こういう言い方すると誤解を招くのでちょっとあれなんですけど、マーケットとしても虐げられているというか、ちょっと評価としてあんまり高くないですよね?(笑)

紀平:そうですね。その側面はあるというか。うん。最初の入口がフロントエンドなんでね、そうかな、という気はしますけども。

hidek:でも、ここを極めた人って、それこそね、紀平さんもそうだと思うんだけど、市場価値というか、めちゃくちゃ高くていいと思うんだけど。なかなかね、そこの市場評価というのも上がってこないなー、というのは、若干自分としてはイラついているところではあります(笑)。

紀平:僕は全く「極めている」とはほど遠くて、ただ単純にすごく狭い分野で深いだけなんですけれども。例えば、フロントエンド界の重鎮さんたちとかは、本当に。でも、よい評価もらってるんじゃないですか、みなさん。

hidek:そうですね。そこまで極めちゃうとそうなんでしょうけど。はい。

紀平:なかなかやっぱり上の人たちに出会うことが少なくて、なので、日本での採用はすごく難しいな、というのは私の印象としてもありますね。

実際にマネージャーをやってみて

hidek:うんうん。でも、あれですね。改めて、「紀平さんがマネージャーかぁ」っていう。もともと経営者なんでマネージャーなんでしょうけど(笑)。

紀平:私もこんなマネージャー……。そもそもやりたくなかったんですよ、マネージャー。

hidek:(笑)。

紀平:これは、マネージャーになるときに、チームメンバーにも会社のレポートラインにも全員に伝えているんですけど。マネージャーは自分は全然やりたくなくて、それよりも私は「スマートニュース内でもっとWebで貢献する道が他にあるだろう」とは思っていたんですけど。僕がマネージャーをやらないことにはスマートニュース内でWebが立ち上がらない、というような状況だったので、それで泣く泣く、っていう言い方はあれですけど、他にやる人はいないし、自分ならできるんだったらやるか、みたいなのでやりました。はい。

hidek:やってみてどうでした?

紀平:そうですね。大変でしたね。やっぱりチームを作るというと、自分のチームじゃ完結しないじゃないですか?

hidek:はい。

紀平:当然、他のチームとの関わりとか、会社全体のストラテジーにおける自分たちのチームのポジションももちろんありますし。当然ながらチームメンバーに対する会社の評価制度に従った評価での評価の上げ方、みたいなものも考えていかなきゃいけなくて。

hidek:うん。

紀平:そこら辺が、全然会社の経営とは違う難しさがあったな、という風に感じていますね。

hidek:うんうん。今ってもうマネージャーではないんですか?

紀平:そうなんですよ。だから、最初からやる気なかったんで、ずっとやる気はなかったんで(笑)。とりあえずゼロイチはやっぱり得意なんですよね。「ゼロからイチにする」というのは、結構、いろいろなハードルがあっても乗り越えていくんですが、ある程度うまくいったらですね、「サステナビリティ」とか「スケーラビリティ」みたいなやつが全然興味がなかったので。

hidek:(笑)。

紀平:そして、興味がなくなることもよくわかっていたので、あらかじめ、それと一緒にマネージャー候補のメンバーをひとりすごく教育をしてですね、それでシームレスに今年の頭からですかね、マネージャーを移管して。しばらく様子は見ていたんですけど、ちゃんとチームもすごくきれいに動いているんでよかったな、というので、僕はもう。そうですね、今月くらいから完全にチームとは切り離して本来の、スマニューに対してもっと貢献できることをできるんじゃないか、と思っているところですね。

hidek:おー、いいですねー。でも、ちゃんと後任も育てられるから、マネージャーとしてはやっぱり優秀なんじゃないですか?(笑)

紀平:ありがとうございます。ただ、それをやらないとずっと自分がマネージャーやることになるんでね(笑)。

hidek:(笑)。でも、やってみて、マネージャーの大変さ、わかったでしょ?(笑)

紀平:いやー、本当にあれですね。尖った人がいると大変ですね(笑)。

hidek:(笑)。

紀平:みんな好き勝手言ってくるし。基本的にはメンバーの立場に立たないといけないじゃないですか?

hidek:はい。

紀平:メンバーに一番近いマネージャーは。はい。で、そこがね、大変でしたね。

hidek:(笑)。もう、そうですよ。DeNAのとき、もう本当に、Kazuhoさん、紀平さん、gfxもそうだけど、尖ったのばっかだから本当に大変だったんですから(笑)。

紀平:でも、まあ、それ大変だったのは、やっぱり川上さんであって、hidekさんじゃなかったんじゃないか、という気もしますけど(笑)。

hidek:それはそう(笑)。優秀なプロキシがいたんで。

紀平:いやー、優秀でしたね。本当、川上さんのお陰で僕らも好き勝手言えたんでよかったですよ(笑)。

hidek:全部受け止めて……。

紀平:いや、本当にね、あのときは、すごく尊敬してたし感謝してましたけど、改めて自分がマネージャーやって、自分の当時のマネージャーには、もう、尊敬の念を深くする一方ですね(笑)。

hidek:(笑)。そうなんですね。わかりました。

紀平:はい。マネージャーも、すごく最近しっかりしていますよね。EMみたいな職がやっと定義されてきて。

hidek:そうですよね。

紀平:それで、役割がかなり明確だったので。そういう意味ではやりやすかったですね。

hidek:うんうん。ああいうフレームワーク化されていると、役割としてもやりやすいですよね。

紀平:そうですね。自分の責任範囲がかなり明確だったので、その中で最大限のことをやればいいだけだなので、そういう意味ではすごく楽でしたね。

hidek:エンジニアリングマネージャーっていう、結構、前にもロールモデルもいるでしょうし。いい時代ですよね、マネージャーとしては。

紀平:そうですね。どんどん洗練されていって。またね、これが2〜3年するとさらに洗練されると思うとすごくいいですよね。

hidek:うん。



この記事が気に入ったらサポートをしてみませんか?