はじめに
はじめまして。ソーシャル経済メディア「NewsPicks」にエンジニアとして2024年新卒入社したカトマサです。
私は博士課程まで理論物理学を研究しており、C++やPythonを使った数値計算やデータ解析の経験はありましたが、Web開発は完全に未経験でした。趣味として、YoutubeやInstagram、TikTokで動画投稿やライブ配信を行なっています。
2024年4月の入社後、広告配信システムの改修チームで主にフロントエンドやサーバーサイドの開発を担当し、2025年1月からはプラットフォーム全体の改善を行うチームで動画配信システムの改修を担当しています。 このブログでは、Web開発未経験の私が新チームでの動画配信システムのキャッチアップをどのように行ってきたかを、特に苦労した点とその克服方法を中心に共有します。
未経験からのキャッチアップや、動画配信の開発に携わる方の参考になれば幸いです。
NewsPicksにおける動画配信
NewsPicksでは2017年から動画コンテンツを配信しており、2025年現在ではほぼ毎日配信しています。NewsPicksの動画配信の形式は以下の3種類あります。
- ライブ番組:スタジオの映像をリアルタイムに配信する形式で、現在配信している番組には、WEEKLY OCHIAIなどがあります。
- 収録番組のライブ配信:事前に収録した映像をリアルタイムに配信する形式で、現在配信している番組には、HORIE ONEなどがあります。
- アーカイブ配信:リアルタイムでは配信せず、ユーザーが好きなタイミングで好きな箇所から再生できる形式です。
動画配信の技術的な理解への取り組み
動画配信システムの理解のために、以下の3つのアプローチを取りました。
1. 実際の配信現場からの学び
週に数回行われるライブ番組の裏側で、サーバーやデータベース、AWS MediaLive・MediaPackageなどの各システムの状態を観察し、正常系の動作を理解することから始めました。特にライブ配信は失敗が許されない重要な場面なので、システムの挙動を実地で学ぶ良い機会となりました。
私自身も個人のクリエイター活動の中で、TikTokでライブ配信を行なっていた時に、100人以上の視聴者がいる状態で音声が拾えなくなってしまい、配信を続けられなくなってしまった経験があります。その経験から、システムトラブルによって配信ができなくなる不安を身をもって理解しています。
そのため、スタジオのスタッフの方々の慎重な配信作業をサポートすべく、以下のことを確認していました。
- その日の配信スケジュール
- 配信番組の配信設定に問題ないか
- アップロードした動画のエンコードが失敗していないか
- スタジオのスタッフの方々から事前にテスト配信を行なており、テスト配信が問題なく配信できているか
- 番組開始1分前にプッシュ通知が送信されるので、プッシュ通知が受け取れるか
- 番組が正常に配信されているか
- 番組配信中にライブコメント*1ができるか。
- 映像配信終了後に、アーカイブ配信が正しく配信開始されているか
また、slackのチャンネルの配信ステータス通知には必ずリアクションをつけ、トラブル時には即座に対応できる体制を整えています。

2. システムの図解による理解
Figmaなどのデザインツールを使用してシステム構成を図解し、抽象化して理解することを心がけました。例えば、収録番組のライブ配信では以下のようなシステムの概念図を作りました。
- 配信担当者が社内システムから動画ファイルを入稿
- 動画入稿システムからAPIで配信設定がサーバーに送られ、データベースで配信日時・配信URL・配信ステータスなどを管理
- 動画ファイルがS3にアップロードされる
- AWS Lambda MediaConvertでのエンコード処理
- 配信時間になったら、サーバー側の配信ステータスが変わり、番組の配信開始
- AWS MediaLive・MediaPackageでライブ配信が視聴者に届けられる
- 配信終了後、サーバー側の配信ステータスが変わり、オンデマンド配信への切り替わる


これらの図解は上長とのペアプログラミングを通じて精緻化し、システムへの理解を深めていきました。
NewsPicksの動画配信システムをもっと詳しく知りたい方はこちらも読んでください。 tech.uzabase.com
3. 基礎技術のキャッチアップ
NewsPicksの動画配信ではサーバーサイドでJavaやKotlinが使われていて、エンコード処理や配信システムにはAWS Lambda、MediaConvert、MediaLive、MediaPackageなどが使用されています。ライブ配信・アーカイブ配信の両方でHLS(HTTP Live Streaming)が使われており、モバイルアプリだけでなく、webにも配信しています。
動画配信に関する専門書は「マルチメディア・ストリーミング技術」くらいしかなく、それも2011年に出版された古いものでした。そこで、AppleのHLS公式ドキュメントや他社のテックブログを参考に学習を進めました。学んだ内容はチーム内の勉強会で発表し、動画配信に慣れていない他メンバーへの知見の共有を図りました。

問い合わせ対応とドメイン知識のキャッチアップ
冒頭でも話した通り、私は動画配信以外にも課金システムやニュースコンテンツの取り込みシステムなど、NewsPicksの基幹システムを担当するチームに所属しております。 動画配信以外にも、課金システムや編成システムなど幅広い領域の問い合わせに対応する必要があります。そこで、以下のアプローチで対応しています。
- AIツールとチーム内知見共有会を活用した素早い情報収集と共有
- NewsPicksではNotion AI, Perplexity, Copilotなどの有料アカウントが会社から支給されていて、社内のドキュメントや、コードを素早く探索することができます。
- 過去の問い合わせ履歴や関連ドキュメントをNotion上にまとめ、週に1回、チーム全員で問い合わせ内容を振り返り、属人性を排除しどのメンバーでも対応できるように知見を共有しています。
- 分からない場合は速やかにペアプログラミングでの解決を依頼
- NewsPicksではほぼ全員がフルリモート勤務していながらも、Working Out Loudの思想のもと、自身の躓いているポイントや悩んでいることをオープンコミュニケーションして解決していくカルチャーがあります。
- 具体的には、slackにチームメンバーが誰でもみられるように作業ログを残したり、わからないところがあれば詳しい人のGoogle Calendarをブロックしたり、エンジニア全員がアバターとして存在するGatherのバーチャルオフィス上で直接会話したりして、ペアプログラミングを行っています。
実際に、チーム配属して1ヶ月後にビジネスサイドの方から決済システムの障害に関する連絡をもらい、課金基盤についてドメイン知識が少ない中で、私が一次対応を行いました。 その際には、障害の修正を反映するために、社内システム上でサーバーのキャッシュクリアをする方法をNotion AIに質問したり、後から駆けつけた課金基盤に詳しいチームメンバーとペアプログングをしたりしながら障害対応を行いました。

リモートでのコミュニケーション改善
私の所属しているチームは10人規模で、2025年の1月からWeb・ニュースの編成などユーザーのメディア体験改善・動画及び課金基盤の3チームが合体したチームです。
フルリモート環境での10人規模のチームでも、以下の取り組みでコミュニケーションの活性化を図ったことで、新卒でも勤務できています。
- 朝会での作業進捗の共有と方向性の確認
- 週1のオンラインランチ会の開催によるチーム間交流の促進
入社初期に設計の漏れやミスの指摘を受け、「方針と実装の認識のずれ」を課題意識に感じていましたが、朝会や作業スレなどで定期的な方向性の確認を徹底することで改善を図っています。 また、フルリモート環境ではコミュニケーションに心理的なハードルを感じやすいため、ランチ会などのカジュアルな交流の場を積極的に設けています。ランチ会では「笑っていいとも!」方式で毎回、他チームのメンバーを呼ぶことでマンネリ化を避けています。

最後に
動画配信システムに携わったことで、動画配信システムの管理画面で非エンジニアの担当者が入力するパラメータが多すぎてオペレーションミスが発生しやすい状態になっており、課題だと思っています。私自身もクリエイターの一人であるので、今後はクリエイターが自身のコンテンツ作りに最大限集中できるような配信環境を整えていきたいと思っています。
また、NewsPicksでは動画配信のサポートを担当するエンジニアが少ないので、この分野でリードできる動画配信システムを一人で構築できるエンジニアを目指していきたいと考えています。
未経験からのスタートでしたが、日々の学びと改善を継続することで、少しずつ成長を実感できています。
*1:一部のライブ番組・収録番組のライブ配信ではリアルタイムにコメントを送ることができ、配信をみている人全員とコミュニケーションを取ることができます。