1
/
5

開発はもちろん、開発“以外”にも挑戦!ユーザーに最高の体験を届けるVoicyのエンジニアチームとは

“最高の体験を届ける”チーム体制とは

(左から:千田・遠藤・山元・窪田・大沼)

(山元)今回は、Voicyのエンジニアチームがどのような仕事をしているのかについてご紹介します。まず、ここにチームメンバーが集まっているので、一人ずつ紹介していきます。私は、Voicyでエンジニアリングマネージャーをやっている山元です。山元の“もと(元)”が元気の“げん(元)”なので、ヤマゲンと呼ばれています。

(窪田)窪田です。今は主にフロントエンドの開発をやっているのですが、バックエンドやインフラをやることもあります。共同創業者として幅広くプロダクトを理解していることもあり、あっちこっち手を出しながら開発しています。よろしくお願いします。

(大沼)Androidエンジニアをしている大沼です。社内では“ぬまさん”と呼ばれています。よろしくお願いします。

(遠藤)iOSエンジニアの“えんたく”こと、遠藤です。よろしくお願いします。

(千田)SREとしてインフラを見ている千田です。Voicyでは、“せんちゃん”と呼ばれています。よろしくお願いします。

(山元)今日は、この5人でお届けします。まずは、エンジニアチームがどういったことをやっているのかを具体的に説明したいと思います。私たちエンジニアチームは、PdM(プロダクトマネージャー)チームと一緒に、パーソナリティやリスナーの体験を最大化する機能を開発することが一番大きなミッションです。その中でも、実際にエンジニアリングで開発し、機能リリースをするところを担当しています。
また現在は、機能開発という攻めの面はもちろん、品質改善という守りの面にもしっかり力を入れるための体制を構築しており、ユーザーに最高の体験を届けるプロダクトのリリースを目指す組織となっています。

チーム構成としては、ユーザーの体験を最大化していくためのチームがパーソナリティ軸とリスナー軸で2チームあり、総称して「Feature Team」と呼んでいます。このチームは職能横断となっていて、iOSやAndroid、バックエンド、フロントエンドと、各プラットフォームで開発できるエンジニアが集まっているため、Feature Team内で開発が回るようになっています。
また体験の最大化を止めないために、品質を担保をしたり、社内から出てきた改善点に対応したりと、特定のミッションに向かってタスクを対応する「Quality Team」があります。
その他の専門チームとして、「QA Team」、「Data Team」、「SRE/PF(プラットフォーム)Team」があり、それぞれ、テストをしたり、データ分析をしたり、AIを作ったり、インフラを開発したりと、専門性の高いタスクを対応しています。
現在のエンジニア組織は正社員が20名弱ほどで、このようにチームに分かれて、各々が協同しながらプロダクトと向き合っています。

ではここからは、エンジニアメンバーが具体的にチームでどのような活躍をしているかについて紹介してもらいたいと思います。まずは、「Feature Team」にて、パーソナリティ軸で体験の最大化を行っているぬまさん(大沼)から教えてください。

(大沼)はい。私は「Feature Team」の中でも、P(パーソナリティ)チームに所属しています。Pチームではスクラム開発を導入しており、パーソナリティの体験の最大化を目指して目標を設定し、開発し、そのアウトプットを評価するという仕組みを、日々計画して行っています。計画の内容は、主にPdMやプロジェクトオーナーが仮説を元に最大化していきたい体験を提示し、それに伴った開発項目を開発者が評価し、リファインメントしてから開発を始めていくという流れになります。
開発に関わるメンバーたちの裁量はとてもフラットになっており、上流から下流へということでは全くなく、全員がオーナシップを持って開発に携わるという意識があります。

(山元)ありがとうございます! では続いて、最近立ち上がった「Quality Team」について、えんたく(遠藤)から説明をお願いします。

(遠藤)はい。「Quality Team」のリーダーをしているえんたくです。「Quality Team」は“Voicyのお医者さん”だとよく例えているのですが、今ありがたいことに日々ユーザーから様々なお問い合わせを頂いているので、それを一つひとつ分析し、開発=医者で言う手術を行っています。
手術して治すって、結構大変なんですよね。急に手術をするわけではなく、ユーザーにどういった症状が起こっているのかをヒアリングし、どこを治すのかという方針を伝え、実際に治していくというフローを丁寧に行っています。

(山元)不具合の修正や改善も多いですが、リファクタリングもやっていますよね。

(遠藤)そうですね。調査した結果、リファクタリングが必要だとなれば、「このくらいの時間を使って、根本から修正させてください」というようなコミュニケーションを取ることもあります。

(山元)ソフトウェア側の課題も、Voicyのお医者さんとして治しているんですね。では最後のチーム。ここに「SRE/PF Team」 のせんちゃん(千田)がいるので、どんなことをやっているか教えてもらいたいと思います。

(千田)はい。「SRE/PF Team」の仕事というのは、大きく2つに分かれます。1つは、技術的負債をなくしていくこと。Voicyが設立してから6年が経ち、昔開発された古いコードなども溜まってきている中で、サービスに合わなくなってしまったものも出てきているので、それを少しずつ今の状況に合わせるための対応をしています。
もう1つは、開発者体験を向上させていくこと。Feature TeamやQuality Teamがよりスムーズに開発を進められるよう、リソースの管理をしたり、みんなが理解しやすいようにインフラの定義自体を見直したりしています。

(山元)メトリクスを見たりとかもしていますよね。インフラで問題が起こっていないかや、データベースがパンクしていないかなどの監視を常にしているという。Voicyは多くの人が訪れてくれるサービスだからこそ、やりがいもありつつ、難しい面もありますよね。

(千田)そうですね。パーソナリティが使ってくれるタイミングでリスナーの訪問が集中することもあるので、そういう時に何かが起こっても気がついて対応できるような体制づくりもやっていたりします。

技術スタックから見るVoicyの開発組織

(山元)続いて、Voicyの技術スタックが気になる方も多いと思うので、各エンジニアより説明してもらいたいと思います。じゃあまずは、せんちゃんから!

(千田)僕は「SRE/PF Team」に所属しているのですが、職種としてはバックエンドエンジニアであり、インフラエンジニアでもあります。
まずは、インフラ側から話していこうと思います。Voicyのインフラの多くは、Kubernetes上でコンテナで動いています。AWS上で動いているリソースの管理は、Terraformでしています。あとモニタリングの話で言うと、Datadogを使っていて、この辺りがメインの技術になると思います。

(山元)データ分析基盤に関してはGCPで、アプリケーション周りはAWSで動いていますね。BigQueryがコアシステムになっているので、GCPのBigQueryを利用してデータ分析基盤を作っています。では、サーバーサイドはどうでしょう?

(千田)APIは、基本的にGo言語で書いています。それ以外にサーバーレスなども使っていて、AWSのLambdaで動いているものもありますね。APIはRESTful APIとして実装されているものもあれば、gRPCを使っているものもあって、ここが面白いポイントじゃないかと思っています。

(山元)一部、音声処理APIでPythonが動いていたりしますよね。

(窪田)Node.jsを使っていたりもします。サーバーだと前にJavaで作ったものが少し残っていて、ここは今全て無くそうとしているところですね。基本的にはGoがメインです。

(山元)ではこのまま窪田さんにパスをして、フロントエンドについても説明してもらいたいと思いますが、どうでしょう?

(窪田)はい。フロントエンドでは、基本的には​​SPA(Single Page App)で開発をしています。SPAで開発しているのは主に3つで、リスナー向けのページと、一般には公開していないですがパーソナリティ専用のページ、後は社内向けの管理ページがあります。ただ技術としてはどれも同じものを使っていて、SPAのフレームワークとしてはAngularを使っていて、言語はTypeScriptですね。CSSのフレームワークはほとんどSASSで、一部SCSSのところがあるので、今後揃えていきたいと思っています。
最近はテストをしっかりと書いていくことや、Lintを入れてフォーマットを整えること、あとはテストのカバレッジを取り、パーセントの改善を進めていきながら、効率良く開発していくための体制づくりに取り組んでいます。

(山元)ありがとうございます。ではここからモバイル側にも聞いていきたいと思うので、まずはiOSからお願いします。

(遠藤)はい、iOSエンジニアのえんたくです。iOSでは、フレームワークはVIPERを使いながら、収録アプリと再生アプリの2つを作っています。API側は異なり、収録アプリはgRPCを、再生アプリはRESTを採用しています。SwiftUIは使っていないです。
VoicyのiOSアプリの主な特徴としては、AVFoundationというApple社のOSのコアである再生のライブラリを使っているので、Apple社の仕様を理解しつつ作らないといけないというのがつらいところでもあり、楽しいところでもあると思います。

(山元)ありがとうございます。では最後に、Androidエンジニアからお願いします。

(大沼)Androidは、再生周りではExoPlayerというライブラリを使っていて、生放送機能はKotlin Multiplatformという設計で実装。バックグラウンド再生ではForeground Serviceを使用しています。API周りはiOSと同様で、収録アプリはgRPCを、再生アプリはRESTを採用しています。
言語は全てKotlinで、JavaはgRPCが自動出力したコードのみになります。アーキテクチャはMVVMです。Jetpack Composeを、今後導入したいと思っています。

10%のリソースを使う、開発“以外”の大事なこと

(山元)Voicyのエンジニアはもちろん開発をしているのですが、実は開発以外の部分でも力を入れていることがあります。リソースの約10%を使って、エンジニア組織のカルチャーを創り、組織を盛り上げるためのプロジェクトや、技術負債に立ち向かうためのプロジェクトなど、プロジェクトを横断的に立ち上げてチームで推進しています。これらのチームを“ディベロッパーカルチャーチーム”、別名“エンジニアCFT(クロスファンクショナルチーム)と呼んでいます。
まずは技術負債を担当している窪田さん、どういったことをしているか教えてもらえますか?

(窪田)技術負債におけるテストの推進を担当しているチームでは、テストに関する本を読み合い、Voicy社内で週に一度行われているエンジニア発表会にて、読んだ本の内容をアウトプットすることで社内に情報や知識の共有をしています。また領域の異なるエンジニアを選出しているので、各々がその知識や情報を元に、自分が担当している技術領域のテスト推進をリードしています。
本を読むことで発見も多いですし、テストは作り始めてしまうとキリがないので、いかに効率的にバグ発生率を抑えながら対応していけるか、という観点で取り組めています。

(山元)ありがとうございます! ちょうど“エンジニア発表会”の話題が出たので、ぬまさんから説明していただけますでしょうか。

(大沼)これはとても自慢できる施策だと思っているのですが(笑)、Voicyでは週次でエンジニア発表会というものを行っています。発表枠があるのですが、業務のことや、ちょっとしたTipsなど、技術に関するあらゆることを毎週エンジニアの誰かがアウトプットしています。私はよく設計などで悩んだときに発表し、みんなからフィードバックをもらっているのですが、多角的に意見をもらえてとても有意義な時間となっています。

(山元)エンジニア発表会というと、もともと発表枠を1枠で運営していたのですが、みんなが発表したいということで枠が足りなくなり、2枠に増えるという(笑)

(窪田)発表順を決めて回しているわけではなく、挙手制なのに、ちゃんと毎週枠が埋まって開催されていますし、エンジニア組織としては珍しいカルチャーかもしれないですね。

(遠藤)うんうん。ちゃんと事前に希望しておかないと、当日話したくても枠がなくて話せないですよね(笑)

(山元)Voicyのカルチャーが現れてますね! 社内イベントも盛り上がっているVoicyですが、社外に向けた発信活動も頑張っているんですよね。

(遠藤)はい。エンジニアメンバーで、「voi-chord」というVoicyチャンネルを運営しています。これは「パーソナリティ(配信者)への理解を深める」ための施策で、日々の音声配信や収録および生放送の体験、その他にもVoicyというプロダクト上の様々な機能を使い、実際にユーザーであるパーソナリティと同様の体験をしています。毎週データを見ながら「上がったね」なんて話をしつつ、しっかりと定量的な目標を立てて運営しています。

(山元)音声での発信も頑張っていますよね。最近はどんな話で放送したんですか?

(遠藤)そうですね。この間は「プログラマーの三大美徳」について、「怠惰」の話をしていました。エンジニアリングにおいて一般的に言われていることを取り上げたり、Voicyでやっているトークテーマ企画に沿って話したりしています。

(山元)エンジニアの方で聴いてくださっている方もいるんじゃないですかね。是非聴いてもらいたいですね! あと最近は、外部イベントでの登壇も増えていますね。

(千田)先日、ビットキー社と共催でGo言語の勉強会を開催し、Voicyからは僕とテックリードの三上さんがGoについて発表しました。それ以前にも、「Go Conference」というイベントの“後夜祭”としてGo言語の勉強会を開催したり、7月20日には「DDD(ドメイン駆動設計)勉強会」を企画していたりします。(2022年7月12日収録時点)
登壇者として呼ばれるだけでなく、Voicyが主催としてイベントを企画するなど、外部イベントにも積極的に取り組んでいます。

(山元)最近だと「Go Conference」や「iOSDC Japan」で、スポンサーセッションをさせてもらいましたよね。Voicyは、大きいカンファレンスなどへの支援を積極的にやっていきたいと思っていますし、技術界隈を盛り上げていきたいという思いがありますよね。あとやはり登壇していくと箔がつくと思うので(笑)、Voicyのエンジニアメンバーが積極的にチャレンジしている領域の一つですね。

(千田)実は最近VoicyのYouTubeチャンネルを開設しまして、登壇時の映像も公開しているんです。まだ慣れていない感が出ていると思いますが(笑)、ぜひ見に来てください。

Voicyエンジニアチャンネル
Voicyで登壇した勉強会の動画などを公開しています。 エンジニアは随時募集中なので少しでも気になった方はリンクの採用情報を参照してください。 応募の際はお手数ですが、Voicyエンジニアチャンネルをきっかけに応募の旨を伝えてください。
https://www.youtube.com/channel/UCULkHxN_0SKChiyTq5oF5nA

(山元)YouTuberデビューもしたんですね。このように、Voicyの開発組織は開発と向き合いながら、開発以外の大事なことにもリソースを使っています。こういう取り組みは、最終的には良い仲間を見つけることに繋がると思っていますし、Voicyのエンジニアメンバーはリファラル採用にもオーナーシップを持って取り組み、「自分たちの仲間は自分たちで集める」というスタンスを持つチームです。

(山元)ここまでVoicyのエンジニアチームについて、アツく、長く、ボリュームたっぷりに話してきました。開発自体の面白さはもちろん、開発以外の部分でも様々なチャレンジをしているということを知っていただけたのではないでしょうか。
“音声”という未踏の領域でバリューを出すとなると、今までの経験がそのまま活きるわけではなかったりもしますが、私たちは「新しい体験をつくる」ことを重要視しているので、体験づくりを楽しみ、且つ何を応用したらバリューが出せるのかを常に意識しながら自走できる方はとてもマッチしている環境だと思います。Voicyで働くことに少しでも興味があれば、私たちとカジュアルに話しましょう!

(全員)お待ちしてます!

今回は、Voicyのエンジニアチームから、5名に話を聞いてみました。いかがでしたでしょうか?

これからもVoicyユーザーに向け、より良い音声体験を提供するためにチャレンジしていきますので、そんなVoicyの組織に興味があればぜひご応募お待ちしています!

株式会社Voicy's job postings
29 Likes
29 Likes

Weekly ranking

Show other rankings
Like はるな 髙森's Story
Let はるな 髙森's company know you're interested in their content