見出し画像

【エンジニアインタビュー】iOSDCのベストスピーカーにELYZAのサービス開発状況について聞いてみた。

iOS の画像


【Profile】
齋藤 暢郎(さいとう・のぶお) tarunon /ソフトウェアエンジニア
LINE株式会社、株式会社Mercariを経てELYZAに参加。iOSDC2018ベストスピーカー。未踏クリエイタ。現在はELYZAでサービス開発を担当。

前回の記事に入社経緯や当時の想いが載っているので合わせてご覧ください!

ELYZAに入ってからの変化とは?

-ELYZAに入社をして2年半が経ちますが、入社時と比べて変化を感じる点はありますか?
一番大きな変化は2021年夏にリリースされた「ELYZA Digest」のデモがバズったことですね。入社した当時から「サービスをつくりたい」と言われていましたが、企業との共同研究が多かったので本当にプロダクトまでつくれるのかな、という思いがありました。ELYZAのAIモデルに需要があるということなので嬉しくはありますが、最初のプロダクトができるまで後何年くらいかかるだろうか、ともすれば5年ぐらいか、と思っていました。

しかし、ELYZA Digestがバズってからは次のプロダクトも見えてきましたし、ELYZA Digestの商業版の構想も始まっています。デモをつくる過程で開発基盤も整ってきていて、会社としても開発環境としてもこの半年が本当に大きな変化でしたね。

-思っていたよりも早くプロダクトができたんですね。
そうですね。入社して最初は需要予測のシステムをつくっていました。お客様の仕入れや販売状況のデータを活用して、最適な仕入れや機会損失を無くすための予測システムでニーズも強くありました。しかし、1社1社の個別要求や状況に合わせて開発していくことが必要で、開発やサービス自体の難易度がとても高いこともあって、2021年4月頃から注力サービスに置きづらい状況が続いています。悔しいですね。

-そうだったんですね。そこから同じ年の夏にはELYZA Digestのデモがリリースされたんですか?
はい。かなりタイトなスケジュールで開発をすることになりました(笑)
それだけ研究開発チームが開発した要約AIモデルが良く、面白そうなチャレンジでしたし、会社が飛躍するチャンスを掴もうという気持ちが強かったです。メインは私1人での開発をしていましたが、他の業務を兼任しながら手伝ってくれるメンバーがいたので何とか1ヶ月という短い期間でデモのリリースまで行うことができました。結果的に、これが大きくバズってくれたので、本当に嬉しかったですね。

画像2
画像4

ソフトウェアエンジニアとしての働き方とは?

-ELYZA Digestを始めとしてNLPサービスの開発を推進されていますが、齋藤さんが行っている業務の範囲を教えてください。
NLPのアプリケーションをつくる上でAIモデルの作成以外、フロントエンドもバックエンドもインフラも全てやっています。TypeScriptやTerraformに取り組み始めたのはELYZAに入ってからになります。
ELYZA Digestのデモをつくった時も、インフラ基盤をつくるところから始まりました。今でこそ構成が同じなら、同じインフラを使い回せるように環境を整えましたが、当時は元となるネットワーク構成もサーバーの運用ノウハウも、とにかく何もなかった。
これまでは1を10にする開発だったので、前任者の作った環境に新しい機能を追加する、或いはリファクタリングを進めていく立場で、首を捻る事もありましたが、今度は自分が後から来た人々を唸らせる立場になってしまいました(笑)

-この半年が開発環境としても大きな変化だったんですね。
そうですね。何よりも基盤が充実して、新たなアプリケーションを作りやすくなったという事が大きいです。基盤を一から作っていた頃は、1ヶ月かけてやっとそれらしい形がオンラインで見られる…と言った状態でした。今は基盤が整っているおかげで、手元で動作を確認できたAPIとMLモデルがあれば、数日の後にはオンラインで確認できる状態になります。私たちソフトウェアエンジニアが仕事をしやすい環境になっていると思います。これから入ってくる人が開発に専念できる環境として育てていきたいですね。首を捻らせてしまうこともあるかもしれないですけど(笑)

画像5

ELYZAで開発をしている時のやりがいとは?

-これまでとは違ったやりがいや楽しいと思う瞬間はありますか?
これまでは数百万人、数千万人が使うサービスの一部を開発していました。その頃から比べると、今はお客様の人数の規模こそ本当に少ないですが、自分が0から作ったサービスを顧客に使ってもらえることにワクワクしますし、新しい顧客が増えるたびに嬉しくなりますね。あとは今までの会社でもチームをリードする立場なこともありましたが、これは極端な話、自分がいなくなっても会社は前に進んでいきます。でも今は自分がいなくなったら、色々とストップしてしまうものが出てくる。それは結構良い意味で緊張感がありますね。

-MLやNLPといった技術に触れるやりがいはありますか?
もちろん最先端技術に触れ続けられることは魅力ですね。でも、MLがどうこうというよりも、インフラから一貫して触ることで「こうしたい!」という体験を自分で設計できることが面白いですね。ELYZA Digestの例でいくと、後ろでレスポンスに時間のかかるAIモデルが動いている中で、どのようにしたらシームレスな動きに見えるか、あるいはC10K…とまでは行きませんが、リクエストをどうやって捌くのかを考えて開発ができる。これが開発の中でチームが分かれていて、コミュニケーションも取れていない、となるとフロントエンドもAPIもちぐはぐな仕様になってしまいがちです。

私としては仕事をしていて理不尽さをあまり感じない環境が楽しいですね。仮に理不尽なことが発生しても、この規模なら100%自分の責任なので納得感があります。

開発をする中で解決した課題や技術面の改善は?

-技術面で改善されたことや解決したことはありますか?
最近は様々なサービスのリポジトリを一つに統合しています。需要予測のシステムを開発していた際はモジュール毎にリポジトリを管理していましたが、ELYZA Digestの商業版を開発した時に、今後開発をするアプリケーションを全てこのリポジトリに乗せようと決めることにしました。詳細は省きますが、このことは、ELYZAがサービス開発をこれまで以上に加速させていくにあたって、問題解決の先回りができたのではないかなと考えています。またインフラ構成のほとんど全てをTerraformのコード上で表現するようにしています。これは我々が開発用や、本番の環境だけでなく、例えば専用の環境を個別のお客様に提供する事も考えられるからです。まだごく一部コードに載せきれていない箇所もありますが、今後解決していきたいと考えています。

-どのようにして意思決定をされているのですか?
ELYZA Digestのデモ版を開発する時に私が構成を考えていたのですが、もう一人のソフトウェアエンジニアである馬場さんと「オーソドックスなつくりにしたいよね」と話をして「じゃあこれで!」とすぐに決まりました。ELYZAは意思決定のスピードが速いです。まだ人数が少ないので、決めてすぐに動ける。チームメンバーを信頼しているので、前提を事細かに議論・説明しなくても、「これでいこう!」と即座に言えるのは気持ちがいいですね。大規模な会社、チームでは一つのことを決める際に、大量の説明が必要になったり、あるいはその中で意思決定が難しくなり、些細なことでも周りから「これ、どうします?」というコミュニケーションが増えてしまうことがしばしばあります。

-他にELYZAの開発環境で良い点はありますか?
このサービス立ち上げ時期の段階から開発しやすい環境に投資をできる点は凄いと思います。「技術的な負債は踏み倒した方がお得」みたいなパワーワードがあったり、もしかしたらまかり通っているかもしれませんが。もちろん、サービス開発を蔑ろにしてリファクタリングばかりしているのは違いますが、しっかりと既存のプロダクトコードにも時間を使って改善できることはありがたいですね。

画像6

今後のELYZAのエンジニア組織とは?

-齋藤さんがつくりたいエンジニア組織像はありますか?
どういった組織になるといいのかな。
中規模・大規模と組織が大きくなるとエンジニアリングマネージャーが置かれるケースが多いです。確かにエンジニアリングマネージャを置く事で解決する問題の範囲は広いですし、中にはそれでしか解決できない事もあるかもしれません。現時点での考えにはなりますが、チームごとに手と目の届く範囲で、膨らみすぎないちょうどいい組織のサイズ感みたいなものを保っていきたい、それを以って問題の解決としたい。と、願っています。もちろんそれは、難しい事だとは承知しています。

別の観点で言うと、エンジニアの仕事っていつも現実と理想の落とし所を探してるみたいなところがあるんですが、例えばそれがブラウザの仕様や通信速度などと言った、自分たちではどうしようもないものだけであれば、やっていて楽しいと思います。そして今の組織なら、それができていると感じています。

-「良いものをつくる」とありましたが齋藤さん自身の開発する上で大切にしていることは何ですか?
お客様に不義理を働かないことですね。例えばtoCのサービスであれば退会やopt outがわかりづらい、或いはダイアログが無限に出てくる、みたいなのはあんまり作りたくないですね。toBであっても同様に、お客様に誠実であるということは大切だと考えています。

画像7

ELYZAで求めるエンジニア像とは?

-齋藤さんはどういったエンジニアの方と一緒に働きたいですか?
物怖じせずにトライ&エラーを高速で回せる人ですね。これは前から変わらないですが、スタートアップなので開発する上でやることが広範囲にあります。自分の専門分野だけに留まらず、様々なことにチャレンジして欲しいです。そして、チャレンジするためのサポートは最大限していきます。コードレビュー、或いはペアプロや、ドキュメントの整理もそうですし、壊しても大丈夫な環境があるというのも大事なことですね。新しいチャレンジをするためのサポートは全部やっていくつもりです。そして今度は、次の人のチャレンジを支えていく、そういったサイクルを作っていきたいと考えています。

-最後に一言、お願いします!
インタビューで話をしていたように、ELYZAはNLPのサービス開発のサイクルを高速で回しています。このサイクルをより加速させるためにも一緒に開発を楽しんでくれる人を増やしていきたいので、少しでも興味がありましたらお話する機会をつくらせてください!

まずはカジュアル面談でお話をさせてください!


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