{"id":34953,"state":"published","closed_at":0,"company_name":"tver","company":{"id":31741,"name":"株式会社TVer","user_name":"tver","company_name":"tver","number_of_employee":211,"number_of_developer":null,"icon_url":"https://d3bpwnzencusk5.cloudfront.net/uploads/company/icon/31741/0540a96e6605dd468ca6e4779dc656dd.png","avatar_url":"https://d3bpwnzencusk5.cloudfront.net/uploads/company/icon/31741/0540a96e6605dd468ca6e4779dc656dd.png","thumbnail_url":"https://d3bpwnzencusk5.cloudfront.net/uploads/company/icon/31741/0540a96e6605dd468ca6e4779dc656dd.png","article":{"id":2184,"title":"会社概要","body":"株式会社TVerは、民放各局が制作した安心・安全なテレビコンテンツを、いつでもどこでも完全無料でお楽しみいただける民放公式テレビ配信サービス｢TVer（ティーバー）｣を主に運営しています。\n「TVer」は、2015年のサービス開始以来、累計アプリダウンロード数は9,000万、月間ユニークブラウザ数は4,400万を超え、2025年12月には月間動画再生数も6.5億回を突破しました。\n今後も「テレビを開放して、もっとワクワクする未来を」をミッションに、どこでも自由なスタイルでテレビの楽しみ方がもっと広がるサービスを目指し、新たなスタートを切っています。\n\n★こちらもぜひご覧ください！\n・会社紹介資料　https://speakerdeck.com/techtver/we-are-hiring\n・TVer Tech Blog　https://techblog.tver.co.jp/\n・TVer HR BLOG　https://note.com/tver/","sort_order":1}},"team_gender_composition":null,"service_and_product":"### 募集背景\r\nTVerは現在、累計9,000万DL・月間動画再生数6.5億回を超える日本最大級の動画プラットフォームへと成長しています。 \r\n次のフェーズとして掲げるのは、ユーザー一人ひとりに最適化された視聴体験（パーソナライズ）の実現です。\r\n\r\n本ポジションでは、「データ収集から活用（パーソナライズ）まで」の一連のバックエンドシステム CDP(Customer Data Platform)を設計・構築することがミッションです。\r\nAWSとGCPを跨ぐ大規模なデータ基盤を整備しつつ、秒間数万リクエストを超えるトラフィックに耐えうる「ログ収集API」や、Spannerのグラフ機能を活かした「パーソナライズAPI」の新規開発において、チームの中心となって技術的な議論と実装をリードしていただきます。\r\n今回は、この新基盤構築に向けて新たに立ち上げるチームでの募集となります。\r\n\r\n\r\n### 業務内容\r\n次世代のCustomer Data Platformをゼロベースで設計・構築する新規プロジェクトです。\r\nSpanner等のデータベースに蓄積される膨大なユーザー属性・行動データを、分析や機能開発に活用可能な状態へと処理・統合する「データ基盤」の開発が主務となります。\r\n\r\n1. 高可用性・高パフォーマンスなログ収集・活用基盤の構築\r\n* 行動ログ収集APIの開発 (GCP): ユーザーの視聴行動やアプリ内操作をリアルタイムに記録するAPIを設計・開発します。スパイクアクセスにも耐えうる、高可用性かつ低レイテンシなAPIの実現に向け、チームで設計を練り上げます。\r\n* データパイプラインの整備 (BigQuery -\u003e Spanner): 収集したログをデータレイク（BigQuery）へ蓄積するだけでなく、分析・集計された結果や特徴量をCloud Spannerへ書き戻し（Reverse ETL等）、即座にアプリ側で利用可能にするためのデータフローを構築します。\r\n2. Spanner Graphを活用したパーソナライズAPIの開発\r\n* Spanner × Graph DBへの挑戦: ユーザーとコンテンツの関係性をグラフ構造で管理し、高度なレコメンドを実現するために、SpannerのGraph機能（またはGraph DB）を活用したスキーマ設計を行います。\r\n* パーソナライズAPIのアーキテクチャ検討: SpannerとCloud Run（またはGKE）を組み合わせ、スケーラビリティとレスポンス速度を両立するアーキテクチャについて、チームメンバーと深く議論・検証を重ねながら、最適な構成を導き出してください。\r\n3. マルチクラウドデータの統合とAI連携\r\n* 既存DBとの連携: AWS上にあるメタ情報とGCP上のデータを連携させるための課題（クラウド間のデータ整合性や同期処理）に対し、技術的なアプローチで解決策を提示・実装します。\r\n* AI/ML連携: Vertex AI等のLLMを活用しサービスへ反映させるフローの構築や、Claude Code等のAIツールを活用した開発効率化（社内エージェント開発等）を推進します。\r\n\r\n\r\n### 開発環境\r\n・言語: Go\r\n・クラウド: Google Cloud (GCP) , AWS\r\n・データベース: Cloud Spanner (Graph / Full Text Search), Aurora (MySQL), Dynamo DB\r\n・データ/AI: BigQuery, Vertex AI\r\n・開発支援: Claude Code, GitHub Copilot\r\n・その他: Cloud Run, GKE, Terraform, gRPC\r\n","required_experience_and_skills":"・Web APIのアーキテクチャ設計・開発経験（3年以上目安）\r\n・クラウド（GCP/AWS）を活用したインフラ・バックエンド構築経験\r\n・データモデリング・DB設計経験","preferred_experience_and_skills":"・レコメンデーションシステムや検索エンジンのバックエンド実装経験 \r\n（協調フィルタリングやベクトル検索などの基礎的なアルゴリズムへの理解がある方）\r\n・パーソナライズ機能の開発・運用経験 \r\n（ユーザーセグメントに応じたコンテンツ出し分けや、A/Bテスト基盤の構築など）\r\n・Cloud Spanner の運用経験、またはGraph DBを用いた開発経験\r\n・BigQuery を用いたデータ基盤（データレイク/DWH）の構築経験\r\n・マイクロサービスアーキテクチャの設計・運用経験","desired_personality":"・TVerのミッションに共感いただける方\r\nhttps://tver.co.jp/about/#vision\r\n「テレビを開放して、もっとワクワクする未来を」というビジョンのもと、放送業界のDXを推進することに意義を感じられる方\r\n・テレビという社会インフラに関わりたい方\r\n多くのユーザーが日常的に利用するサービスにおいて、自分の仕事が社会にインパクトを与えることに喜びを感じる方\r\n・問題解決そのものが好きな方\r\nSpanner Graphの活用やマルチクラウド連携など、前例の少ない未解決の技術課題に対して、意欲的に挑戦できる方\r\n・ハイパフォーマンスな設計・開発に関する改善が大好きな方\r\n秒間数万リクエストをさばくためのチューニングや、アーキテクチャの継続的な改善・刷新に熱意を持てる方\r\n・チームとの対話を重視できる方\r\n技術的な意思決定において独断に陥らず、チームメンバーと議論を重ねながら最適解を導き出せる方\r\n","message_for_candidates":"### キャリア開発の機会と得られる経験\r\n・月間4,400万人のユーザーが使う巨大サービスだけあって、大規模な負荷が特徴のひとつとなっています。バックエンドエンジニアとして、高トラフィックなデータのやり取りに耐えうるシステムの構築は、大きなやりがいとなります。\r\n・ハイパフォーマンスな設計・開発に関する経験が積めます。日々大量の視聴者データを扱いながら大規模負荷を捌くために、TVerではパフォーマンスの高さに焦点を当てた設計や技術が用いられており、大規模データを管理する経験を通してスキルアップできる環境です。\r\n・テレビ放送という社会インフラに関わっていくことができます。ドラマやアニメ・ドキュメンタリー・バラエティ、ニュースやスポーツなどのテレビ放送は、人々に新しい発見やドキドキする体験、\"ワクワク\"する毎日を届ける重要な役割を持っており、\r\n社会的インパクトの大きなサービスの信頼性向上に携われる魅力的な仕事です。\r\n・イベント（各種テックカンファレンスへの協賛、参加や技術勉強会等）や課内の定例ミーティングなどで、幅広い世代、バッググラウンドのメンバーと情報交換ができます。\r\n・最新技術のキャッチアップのため、各種外部研修への参加、外部エキスパート招聘などエンジニアの成長に積極的に投資しています。利用できそうな技術はすぐに検証しプロダクトに反映することもあります。","working_condition":"**勤務地**\r\n（雇入れ直後）本社／〒107-0052 東京都港区赤坂2-4-6 赤坂グリーンクロス 20F\r\n（変更の範囲）本社およびその他雇用者の指定する場所（テレワークを行う場所を含む）\r\n\r\n\r\n**勤務時間**\r\n1日あたりの所定労働時間：7時間\r\n労働時間区分：フレックスタイム制\r\nフレキシブルタイム：5:00～22:00\r\n標準的な勤務時間帯：10:00～18:00\r\n\r\n**休日・休暇**\r\n休日：年間120日（土日・祝日・年末年始・その他会社が定めた休日）\r\n休暇：年次有給休暇：入社初日から入社月に応じて付与、夏季休暇、結婚休暇、出産休暇、妻の出産休暇、服喪休暇、生理休暇、裁判員休暇など","insurance":"**福利厚生**\r\n社会保険：健康保険（介護保険）、厚生年金保険、労災保険、雇用保険、労災上乗せ保険加入、\r\nみんなの社食（デリバリー型）※月に複数回無料提供あり、置き型社食（オフィスプレミアムフローズン）\r\n\r\n**制度**\r\n在宅勤務可（原則週2日限度）、勉強補助制度（グロービス学び放題）、資格補助制度、あんしん財団WELBOX、服装自由","primary_base_salary":{"id":149015,"unit":"year","min_value":600,"max_value":1500},"technology":{"practical_skilltags":{"言語":[{"id":477,"name":"go","created_at":"2012-04-03T12:51:36+09:00","updated_at":"2026-04-02T17:53:57+09:00","has_image":false,"formal_id":3748,"popular":false,"real_name":"","skilltag_category_id":1},{"id":84,"name":"node.js","created_at":"2012-02-21T15:22:14+09:00","updated_at":"2026-04-06T11:19:26+09:00","has_image":true,"formal_id":84,"popular":true,"real_name":"Node.js","skilltag_category_id":1},{"id":66,"name":"python","created_at":"2012-02-21T15:22:14+09:00","updated_at":"2026-04-06T11:19:26+09:00","has_image":true,"formal_id":66,"popular":true,"real_name":"Python","skilltag_category_id":1}],"データベース":[{"id":152,"name":"mysql","created_at":"2012-02-21T15:22:14+09:00","updated_at":"2026-04-06T11:17:15+09:00","has_image":true,"formal_id":152,"popular":true,"real_name":"MySQL","skilltag_category_id":3},{"id":4076,"name":"dynamodb","created_at":"2015-03-27T13:06:18+09:00","updated_at":"2026-04-02T11:29:32+09:00","has_image":false,"formal_id":2802,"popular":false,"real_name":"","skilltag_category_id":3},{"id":173,"name":"redis","created_at":"2012-02-21T15:22:15+09:00","updated_at":"2026-04-03T10:42:08+09:00","has_image":true,"formal_id":173,"popular":false,"real_name":"","skilltag_category_id":3},{"id":1885,"name":"bigquery","created_at":"2012-07-11T18:20:55+09:00","updated_at":"2026-04-06T11:19:26+09:00","has_image":false,"formal_id":3093,"popular":false,"real_name":"","skilltag_category_id":3}],"その他":[{"id":4233,"name":"gcp","created_at":"2015-07-23T12:10:47+09:00","updated_at":"2026-04-01T18:13:33+09:00","has_image":false,"formal_id":4346,"popular":false,"real_name":"Google Cloud Platform","skilltag_category_id":5},{"id":3246,"name":"gitlab-ci","created_at":"2013-09-18T10:26:08+09:00","updated_at":"2026-03-27T18:16:03+09:00","has_image":false,"formal_id":3246,"popular":false,"real_name":null,"skilltag_category_id":5},{"id":6947,"name":"cloudbuild","created_at":"2021-12-14T13:09:47+09:00","updated_at":"2026-03-27T18:16:03+09:00","has_image":false,"formal_id":6947,"popular":false,"real_name":null,"skilltag_category_id":5},{"id":5236,"name":"codebuild","created_at":"2018-04-25T13:39:07+09:00","updated_at":"2026-04-02T11:31:06+09:00","has_image":false,"formal_id":5236,"popular":false,"real_name":null,"skilltag_category_id":5},{"id":3260,"name":"newrelic","created_at":"2013-09-24T13:55:34+09:00","updated_at":"2026-04-06T10:20:25+09:00","has_image":false,"formal_id":3260,"popular":false,"real_name":"","skilltag_category_id":5},{"id":4545,"name":"cloudwatch","created_at":"2016-02-18T17:28:31+09:00","updated_at":"2026-04-01T18:13:33+09:00","has_image":false,"formal_id":4545,"popular":false,"real_name":null,"skilltag_category_id":5},{"id":4544,"name":"cloudformation","created_at":"2016-02-18T17:28:31+09:00","updated_at":"2026-04-02T17:53:57+09:00","has_image":false,"formal_id":4544,"popular":false,"real_name":null,"skilltag_category_id":5},{"id":6172,"name":"cdk","created_at":"2020-08-25T10:43:18+09:00","updated_at":"2026-04-02T17:51:47+09:00","has_image":false,"formal_id":6172,"popular":false,"real_name":null,"skilltag_category_id":5},{"id":363,"name":"aws","created_at":"2012-02-21T15:22:16+09:00","updated_at":"2026-04-06T11:19:26+09:00","has_image":null,"formal_id":239,"popular":false,"real_name":null,"skilltag_category_id":5},{"id":2981,"name":"redshift","created_at":"2013-06-06T01:24:10+09:00","updated_at":"2026-03-27T18:16:03+09:00","has_image":false,"formal_id":3205,"popular":false,"real_name":"","skilltag_category_id":5}]},"not_practical_skilltags":{}},"login_for_visitor":{"class_for_ga":"ga-track-with-more-read-for-skills"},"job_environment_categories":[{"id":14,"name":"キャリアパス","environments":[{"id":44,"name":"エンジニアの人事評価にエンジニア経験者が関わっている"},{"id":50,"name":"マネージャーやCTOと高頻度（月1程度）でキャリアについて話す場が設けられている"}]},{"id":10,"name":"技術カルチャー","environments":[{"id":41,"name":"CTO またはそれに準じる、技術やワークフローの標準化を行う役割の人・部門が存在する"},{"id":42,"name":"取締役（社内）または執行役員として、エンジニアリング部門の人間が経営に参加している"},{"id":56,"name":"エンジニアが自発的に外部のイベントやカンファレンスに登壇している"},{"id":57,"name":"最新技術を追いかけるための社内勉強会が定期開催され、参加者が自主的に参加している"}]},{"id":7,"name":"労働環境の自由度","environments":[{"id":71,"name":"週2日リモート勤務のハイブリットワーク（週3出社）"},{"id":72,"name":"業務時間中に中抜けできる制度がある"},{"id":73,"name":"2年以内に未就学児を子育てしながら働いていたエンジニアがいる"},{"id":30,"name":"フレックスタイム制または裁量労働制を採用している"}]},{"id":18,"name":"職業安定法に対応する記載事項","environments":[{"id":120,"name":"給与形態：賞与あり"},{"id":117,"name":"給与形態：月給制"},{"id":112,"name":"休日制度：完全週休2日制（土日祝休み）"},{"id":101,"name":"フレックスタイム制の所定労働時間：1日平均7時間相当"},{"id":100,"name":"【フレックスタイム制を適応している】"},{"id":87,"name":"固定残業時間：月35時間分"},{"id":138,"name":"試用期間：あり（3ヶ月間）"},{"id":47,"name":"受動喫煙防止措置：屋内禁煙（屋内に喫煙可能室設置）"}]}],"title":"【E13】【株式会社TVer】累計9,000万DL、月間動画再生数6.5億のサービスを支えるバックエンドエンジニア(Customer Data Platform開発担当)を募集！","updated_at":1774510243,"published_at":1771317076,"skilltags":[{"id":477,"name":"go","translated_name":"Go"},{"id":66,"name":"python","translated_name":"Python"},{"id":84,"name":"node.js","translated_name":"Node.js"},{"id":152,"name":"mysql","translated_name":"MySQL"},{"id":4076,"name":"dynamodb","translated_name":"Dynamodb"},{"id":173,"name":"redis","translated_name":"Redis"},{"id":1885,"name":"bigquery","translated_name":"Bigquery"},{"id":2981,"name":"redshift","translated_name":"Redshift"},{"id":363,"name":"aws","translated_name":"Aws"},{"id":6172,"name":"cdk","translated_name":"Cdk"},{"id":4544,"name":"cloudformation","translated_name":"Cloudformation"},{"id":4545,"name":"cloudwatch","translated_name":"Cloudwatch"},{"id":3260,"name":"newrelic","translated_name":"Newrelic"},{"id":5236,"name":"codebuild","translated_name":"Codebuild"},{"id":6947,"name":"cloudbuild","translated_name":"Cloudbuild"},{"id":3246,"name":"gitlab-ci","translated_name":"Gitlab Ci"},{"id":4233,"name":"gcp","translated_name":"Google Cloud Platform"}],"profession":{"name":"バックエンドエンジニア","slug":"server-side-engineer"},"image_url":"https://d3bpwnzencusk5.cloudfront.net/uploads/job/34953/job_image/thumb_6d771795e89ffba34e82f01630b84f52.jpg","image_alt":"【E13】【株式会社TVer】累計9,000万DL、月間動画再生数6.5億のサービスを支えるバックエンドエンジニア(Customer Data Platform開発担当)を募集！ | 株式会社TVer","profession_change_scope":null,"employment_types":["正社員"],"base_salaries":[{"unit":"year","min_value":600,"max_value":1500}],"prefecture_name":"東京","office_change_scope":null,"selections":[{"slug":"over-5m-yen","name":"下限年収500万円以上"}],"job_tags":[{"id":1,"name":"一部リモート可","created_at":"2015-08-27T22:11:59+09:00","updated_at":"2019-04-15T16:38:52+09:00","priority":11,"slug":"remote-friendly","available":true},{"id":4,"name":"アジャイル開発","created_at":"2015-10-29T13:57:06+09:00","updated_at":"2016-06-30T14:04:38+09:00","priority":10,"slug":"agile-introduced","available":true},{"id":7,"name":"B2Cのサービスを運営","created_at":"2015-10-29T13:57:06+09:00","updated_at":"2018-03-10T12:13:40+09:00","priority":9,"slug":"has-b2c-services","available":true},{"id":9,"name":"椅子が定価6万円以上","created_at":"2015-10-29T13:57:06+09:00","updated_at":"2019-04-15T16:41:34+09:00","priority":1,"slug":"rich-chair","available":true},{"id":19,"name":"自社サービスを開発","created_at":"2016-06-07T16:17:57+09:00","updated_at":"2016-06-07T16:17:57+09:00","priority":9,"slug":"has-owned-services","available":true},{"id":20,"name":"CTOがいる","created_at":"2016-06-30T11:48:20+09:00","updated_at":"2019-04-15T16:41:49+09:00","priority":1,"slug":"cto","available":true},{"id":29,"name":"オンラインで選考が受けられる","created_at":"2020-04-06T20:44:08+09:00","updated_at":"2020-06-25T18:49:41+09:00","priority":10,"slug":"online-interview","available":true}],"images":[{"width":1600,"height":1066,"src":"https://d3bpwnzencusk5.cloudfront.net/uploads/job/34953/job_image/6d771795e89ffba34e82f01630b84f52.jpg","thumbnail":"https://d3bpwnzencusk5.cloudfront.net/uploads/job/34953/job_image/thumb_6d771795e89ffba34e82f01630b84f52.jpg","title":null},{"width":1600,"height":1200,"src":"https://d3bpwnzencusk5.cloudfront.net/uploads/job/34953/job_image/b2683edb151b8aa052e464a90adc9dc9.jpg","thumbnail":"https://d3bpwnzencusk5.cloudfront.net/uploads/job/34953/job_image/thumb_b2683edb151b8aa052e464a90adc9dc9.jpg","title":null},{"width":1600,"height":1200,"src":"https://d3bpwnzencusk5.cloudfront.net/uploads/job/34953/job_image/d7f0a2b5b7fdbca86b8d9f6ed29efd99.jpg","thumbnail":"https://d3bpwnzencusk5.cloudfront.net/uploads/job/34953/job_image/thumb_d7f0a2b5b7fdbca86b8d9f6ed29efd99.jpg","title":null},{"width":900,"height":1200,"src":"https://d3bpwnzencusk5.cloudfront.net/uploads/job/34953/job_image/d9598ebae17c77dcd52447f87aa9d904.jpg","thumbnail":"https://d3bpwnzencusk5.cloudfront.net/uploads/job/34953/job_image/thumb_d9598ebae17c77dcd52447f87aa9d904.jpg","title":null},{"width":1600,"height":1200,"src":"https://d3bpwnzencusk5.cloudfront.net/uploads/job/34953/job_image/4c73eaae5959d2151c12591b903f00e8.jpg","thumbnail":"https://d3bpwnzencusk5.cloudfront.net/uploads/job/34953/job_image/thumb_4c73eaae5959d2151c12591b903f00e8.jpg","title":null},{"width":1600,"height":1200,"src":"https://d3bpwnzencusk5.cloudfront.net/uploads/job/34953/job_image/600da76347a410da0b7b6a3fcfd51925.jpg","thumbnail":"https://d3bpwnzencusk5.cloudfront.net/uploads/job/34953/job_image/thumb_600da76347a410da0b7b6a3fcfd51925.jpg","title":null},{"width":1600,"height":1067,"src":"https://d3bpwnzencusk5.cloudfront.net/uploads/job/34953/job_image/8c4e54c1829031fbbe9c20cf07c8f414.jpg","thumbnail":"https://d3bpwnzencusk5.cloudfront.net/uploads/job/34953/job_image/thumb_8c4e54c1829031fbbe9c20cf07c8f414.jpg","title":null}]}