見出し画像

【 天才集団R&Dチーム特集企画#1 】「組合せ最適化」でプライバシーテックに貢献する歌島さんをもっと深掘り!

秘密計算や合成データをはじめとしたプライバシーテックの基礎研究を推進するAcompanyの「コア」であり「ブレイン」こと、天才集団”R&Dチーム”。この記事では、R&Dチームメンバーのひとり、歌島侃勇さんに焦点を当てて、今まであまり紹介してこなかった専門性についてインタビュー形式で深掘りしています。

歌島さんについては、過去すでにアカントピックというオウンドメディアのSpotify Podcastや、noteでもゆるく深掘りしていますが、大学時代の専門性やAcompany入社後の業務の観点でもっと深掘りして、優秀なメンバーのことを世に押し出していきたい!!というR&Dチームマネージャーの牧野充朗さんのリクエストからこの企画が生まれました!アカントピックでは、R&D特集回でチームの他メンバーについても配信しているので、ぜひそちらも聴いてみてください!

こちらは、#アカンクリスマスアドベントカレンダー2023 25日目の記事として投稿します!


Acompanyに入社したきっかけは?

戸田:
今日はAcompanyに入社したきっかけや、歌島さんがどのようなことを専門としてきたか、日々どのようなタスクをされているかを中心に聞いていきたいと思います!まずは、歌島さんがAcompanyに入社したきっかけを教えてください。どんなところに魅力を感じて入社を決めたかも知りたいです!

歌島:
僕の場合は普通に新卒(2022年度)で入社しました。でも、その前から内定者インターンのような感じで働いていましたね。インターンには、AtCoder Jobs に掲載されていたAcompanyを見つけて応募しました。昔はAcompanyも競プロからの採用がとても多かった印象ですね。最初はカジュアル面接で、最終に至るまで、CRDOの近藤さんと3回ぐらい面接をしました。

僕は結構大学の研究を頑張ったので、その知識を生かせるところがないかなと思っていました。これがなかなか難しく、「ダイレクトに早く動くコードを書く」、みたいなことを重要視する仕事って意外となかったりします。計算量理論など、活きてくるところはあるかもしれないけど、需要としてはそれほどない。業務とかそれを使った仕事としてはなかなか見つけづらかったです。そんな中AtCoder Jobsで探していて、プリミティブな部分をやらせてもらえそうな仕事だな、と思ったのがAcompanyでした。別の会社も候補としてはあったんですが、やっぱり「やりたいこと」ってなるとちょっと違ってたりしたんですね。

戸田:
R&Dだと技術課題もあったのかなと思うのですが、歌島さんはどうでした?いつ頃からAcompanyでインターンを始めたんですか?

歌島:
僕が受けたのはかなり昔なので、実は技術課題はまだなかったです。AtCoderのレーティングで水色以上という制約があったのでそこである程度フィルタリングしているんだろうという感じでした。僕も応募したときは水色でした。それで内定者インターンで、2021年の5月からいましたね。そう考えると、僕は結構初期からいますね。

どのような仕事をしている?

戸田:
なるほど、Acompanyとしても、R&Dとしても古参メンバーですね!専門的には、どのようなことをやってきたのでしょうか?大学でやってきたことが活かされている、とはどのように活かされているのですか?

歌島:
僕の専門は広く言うと「組合せ最適化」です。具体的には、文字列数のアルゴリズムにおいて2つ文字列が与えられるので最長共通部分率を求める、といった問題の派生バージョンみたいなものを研究していました。

業務では、文字列自体が活かされているわけではないんですけど、計算量の解析であったり、論理的な証明の能力などが活かされていると思います。分野は応用数学の一部分で、証明をめちゃくちゃたくさん書いていました。

情報寄りの研究もできる分野で、そっちの方は実装の研究をやってる人もいた気がします。ただ、うちの研究室の人は理論だけやる人が多かった気がします。

それから僕の分野特有の話なのですが、NP-hardの証明をめちゃめちゃやる、ということが挙げられます。組合せ最適化の問題はコンピュータに解かせるには結構難しい問題が多く、NP-hardと呼ばれるものが多くあります。そのNP-hardを証明したりとかしていました。結構、これが暗号の安全性解析と似ているところがあったりします。これは結構活きてる感じがしますね。証明をするときに、気にするポイントが結構似てると思います。安全性の証明とかの際に、流れが似てるので読むことができる。

それから、計算量を扱ってたんで、結構計算量には厳しいと言われますね。ここはO(nlog n)になるでしょ、みたいな。学士論文も計算量の解析を頑張る、そういう感じのものでした。

業務としては「こういうものを作って欲しい」みたいな指示が降ってくるので、それを実装する、みたいなことを多くやっています。ざっくり、こういう目的でこういう出力が出てくるものが欲しいです、みたいなことを伝えてもらえたら実装できます。

戸田:
エンジニアの人が行う実装とR&Dの人が行う実装は何が違うのですか?

牧野:
R&Dチームが行っているのは理論の実装って感じですね。アルゴリズムの理論実装をしてライブラリを作っていくのがメインになっています。R&Dチームでは一人ひとりがそれぞれ分野を担当しているので、一緒に進めているタスクがあったらコミュニケーションを取るという感じになっています。

ただ、固定化しないようにはしています。いろいろ幅広く扱うと視点が増えたりとかいうのもあったり、ある程度扱える人が多い方がリスク管理的な意味で良かったりもするので。その辺色々考えながらやっています。

歌島くんは一通り何でもできるみたいなところがあるので、初見のタスクでもサクッとできちゃったりします。タスクの割り振りは大体、皆の専門とか得意なこととかを加味しながら僕が決めることが多いです。ただ、幅が広いものであったり、競プロ的な話があったら歌島くんに真っ先に降ることが多いですね。

戸田:
なるほど。歌島さんは普通にエンジニアとしてもいけそうな感じなんですか?

歌島:
どうでしょうね、僕はエンジニア的な知識はかなりない方だと思っていますね。実装ができるからといって、それはまた全然違います。理論実装はまあまあできると思っていますがエンジニアリング的なところは正直、全然わからない。

競プロはどちらかというと数学よりなので、競プロをやっていてもエンジニアリングには詳しくなれないんです。競プロは数学で立式する、あのイメージに近いです。式を立てるところまではやって、あとはコンピュータがやってくれる。やったことない人にはそういうイメージだと思ってもらえればいいかなと。

牧野:
R&Dチームが作るアルゴリズムは、集合と写像を作るみたいな、特定のデータに対して特定の出力が出るような関数みたいなのを使いやすい形で作る。裏側でデータを入れると、分析結果のような出力が出てくる。こういうものを作るイメージ。

プロダクトの人はその作ったものをちゃんと、サーバーにてどう処理するか、どう計算処理するかなどいろいろ考えながら組み立てます。また、実際にAPIなどを立てたり、画面から呼び出す方法などそういうのも実装します。UI/UX、バックエンド、クラウドのインフラといった感じですね。

歌島さんから見たAcompanyは?

戸田:
なるほど。視点を変えますが、歌島さんから見てAcompanyはどうですか?

歌島:
皆さんすごいな、と。どうしてそんなことを知っているの、としばしば思わされます。

牧野:
歌島くんも優秀です。普通のところであればエース級の力を持っているなと思いますね。ガチで数学を取り組んできた化け物みたいな人もいるので、数学力はみんな本当にすごいので卑下してしまうかもしれないですが、歌島くんも相当できます。

歌島:
他のメンバーで数学的に強い方々がいるのは本当に思いますね。僕は数式で表現するのがあまりうまくなくて、厳密ではない書き方をしてしまったりするんですが、そういうのをちゃんと直してくれたりする。数学科の方々は厳密さのレベルが何かちょっと違いますね。僕も工学部の中では数学よりのことをやっていたのですが、やっぱりもう一段階違う感じがあります。ノブカツさんや加藤さんのような「ずっと数学やってきた!」みたいな人はやっぱりすごいですね。数学の詳しいメンバーには、問題に突き当たった時に「どう思います?」みたいな感じで相談もしたりします。

戸田:
歌島さんが今R&Dチームでやっている一番得意なタスクはなんですか?

歌島:
何かアイディアだけある状態から、こういうものを作ってください、という指示に応えて作るのが得意な気がします。

アイディアを実際に落とし込んでいく。こういうのが来たら、入力としてこのようなものが与えられたらどういう形にするか、などそういうところを考えている。アイディアとかは論文から拾ってきたりします。そういうのを調べた上で独自の新機能を考えるのが得意なタイプかな、と思います。

競プロをやってて良かったのは、計算量的に細かいところで「こうやったら速くなる」みたいなのをわかるようになったことです。あと僕多分あんまりバグ出さないです。いや、これはいいすぎかも。でも、関数の説明とか書くんですけど書いた通りの挙動を試しているようになる確率が高い気がしています。

競プロをやってるとバグをつつかれることが多くてですね。どういうところで自分がバグを出すのか。例えばそのC++double型において、何桁まで精度が保証されるかみたいなのを、なんとなく把握していたりだとか。そういうことを知っていないと落とされたりするので、細かい仕様を知ることになる。あとは実装が重い問題を早く解く必要があるのでどうすればシンプルに書けるのかは考えることになります。そうして、ロジック的に「こういう書き方がバグを出しにくい」みたいな型を自然に身につけていったりしました。

戸田:
素晴らしいですね。歌島さんは今はR&Dチームでいろいろやっていると思うんですけど、人生という括りで見たときに、何をしたいか、どういう思いを持っているか、どういうことに関わっていきたいかなど、野望みたいなものがあれば聞かせていただきたいです。

歌島:
僕個人としては何というか、結構仕事を通して居心地の良い場所を確保していたい、みたいなイメージでやっていますね。仕事で何かちゃんと自分が活躍できる場を選んで、周りの人からちゃんと頑張って仕事をしてる、と認められていれば居心地良く生きられるだろう、と。そんな感じですかね。

もっと大きい視点で言うと、人間は結構自分の得意なことが最大限発揮される場所に置かれるべきだと思っています。ある人があることをやるよりコストが低くそのことをやれるなら全体として幸福度が上がるはずじゃないですか。得意なことをやれる場所にいればそういった機会というのは多くなると思うんですよね。Acompanyを選んだのは、そういう何か自分の得意なことを活かせそうだと思ったからです。
今、Acompanyでは、ある程度はこれが担保されていると思っています。完璧にできるっていうのはなかなか難しいことですが。

牧野:
「ある程度は」、というところに含みがありそうですね。笑 
歌島くんは視点が研究者っぽいというか、「自分がどう」とかいうよりは、「全体で見てどうか」みたいな感じで客観的に見てるんです。自分がこうしたいっていうのあんまりないのかなって。

歌島:
僕はそうですね、自分の感情には結構無頓着なところがありますね。個人に起こることは全体からしたら些細なことなので。

R&Dで働く上で

戸田:
なるほど。なんだか歌島さんらしいなと思いました!ありがとうございます。最後に、R&Dチームでどんなメンバーと一緒に働きたいか、教えてください!

歌島:
一つはR&Dの中でも埋もれない専門性があったほうがいいんじゃないかな、と。持っていると、仕事がやりやすいかなという気がします。
あとはそうですね、 優しさがあるといいですね。みんな優しいですもんねAcompanyは。

戸田:
Valueが、Be Cool. Be Hacker. ですもんね!
歌島さん、牧野さん、ありがとうございました!


この記事が参加している募集

数学がすき

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