PLAY DEVELOPERS BLOG

HuluやTVerなどの日本最大級の動画配信を支える株式会社PLAYが運営するテックブログです。

HuluやTVerなどの日本最大級の動画配信を支える株式会社PLAYが運営するテックブログです。

Mockoonを使ってローカル環境で手軽にMock APIサーバを立ち上げる

こんにちは、ソリューション技術部 OTTサービスソリューション統括部 LOGICAプロダクトグループの小川です。 今回はローカル環境で簡単にMock APIサーバを立ち上げることができるアプリケーションをご紹介します。 外部システムと連携する機能を開発する際に…

ESLintを導入して独自ルールを作成してみた

こんにちは。ソリューション事業部の樋口です。 最近私が担当している案件に、ESLintを導入する機会があったのでその際の手順を記載します。 同じ様な境遇の方の助けになれば幸いです。 ESLintとは何か? なぜESLintを導入したのか? 導入手順 インストール …

GitHub Actionsをオートスケールするself-hosted runnersで動かしたくて

こんにちは、SaaSプロダクト開発部の松本です。 弊社プロダクト「PLAY VIDEO STORES」のエンジニアを担当しています。 最近は朝の布団との格闘が始まり、冬の幕開けを沸々と感じています。 寒い冬はMacBook Proで暖を取りましょう(?) さて、本題に入りま…

AWS Amplify で Next.js 14 アプリを SSG(静的サイト)としてホスティングする [2023年11月版]

こんにちは、SaaS プロダクト開発部テックリードの丸山です。 2023 年 10 月 26 日に、Next.js の最新バージョンである Next.js 14 がリリースされました。 nextjs.org そこで早速、Next.js 14 で作ったウェブサイトを AWS Amplify でホスティングしようとし…

RunTask API を用いた ECS タスク実行時に気をつけたいこと4選

AWS

Amazon Elastic Container Service (以下、ECS) はコンテナ化されたアプリケーションのデプロイ、スケーリング、管理などを行うフルマネージドサービスです。AWS Fargate (以下、Fargate) は、Amazon EC2 インスタンスやサーバーを管理することなくコンテナ…

ChatGPTでファインチューニング (Fine-tuning) を試してみた

LLM

こんにちは、プラットフォーム技術部開発第2グループの李です。 最近AIサービスChatGPTがよく注目されます。米国時間2023年8月22日にOpenAIは、大規模言語モデル「GPT-3.5 Turbo」がFine-tuningに対応したと発表しました。 openai.com 今回、このFine-tunin…

再生プレイヤーの UI 改修でアニメーションとグラデーションの実装に試行錯誤した話

こんにちは、SaaSプロダクト開発部の田澤です。フロントエンドをメインに、再生プレイヤーの開発を行っています。 今回は、当社動画配信プラットフォームの一つであるULIZAの、プレイヤーUI改修にて試行錯誤した話をさせていただこうと思います。 プレイヤー…

Node.jsのStream APIを使用してAmazon S3の大きなオブジェクトを少ないメモリ消費量で圧縮する

クラウドサービスを使用しているとメモリやストレージを節約したくなりますよね? 今回はそんな節約に役立つNode.jsのStream APIについてです。Java等にもStreamはありますが、全くの別物です。AWSのSDKと組み合わせて、S3からダウンロード、圧縮してアップ…

GitHub Enterprise ServerのログをAmazon S3へ転送してAthenaで確認できるようにしてみた

AWS

こんにちは、ソリューション技術部の藤原です。 弊社ではAWSでGitHub Enterprise Serverを運用しているのですが、監査等のためログを一定期間保存するようにしています。 今回はGitHub Enterprise ServerのsyslogをLogstashを使ってS3に保存し、Athenaで確認…

動画データの世界への基礎概論

こんにちは。クラウド推進技術部の山田です。 昨今、動画配信は、生活の一部になるほど身近になっています。 YouTubeの動画、ストリーミングサービスの映画、SNSの投稿動画、Webサイトの動画広告など、ブロードバンドやスマホが普及し、今や外で動画を見るこ…

sidekiq の本番運用を始める前に注意すべきポイント

こんにちは、LOGICAプロダクトグループの篠原です。 先月末に約10年振りにARMORED COREの新作が出ました。 以前からAC乗りはやっていたので久しぶりにコントローラーを持ち3周目まで完了した感想ですがやはりハイスピードメカバトルはよい物です。 閑話休題…

iOS デバイスに接続した外部ディスプレイに対して別の画面を表示させる方法について調べてみた

iOS

はじめまして、ソリューション技術部の伊藤です。 今携わっているプロジェクトで、iPhone/iPadをHDMIケーブルを使って外部ディスプレイと接続した時に iPhoneと外部ディスプレイで別の画面を表示してほしいという依頼があり、実際に開発した内容をまとめてい…

G.I.G. で Google Cloud 認定の Professional Cloud Developer を取得しました

こんにちはソリューション技術部の中山です。 この度、Google Cloud 主催の G.I.G. Japan プログラム 第 6 期に参加させていただき、無事 Google Cloud Professional Cloud Developer 認定資格を取得し、修了することができました。 プログラム内容や、私が…

【入門編】いつかどこかで使えるかもしれない FFmpeg コマンドの紹介

みなさん、こんにちは。ソリューション技術部の叶です。 今回は、FFmpeg に関するテックブログをお届けします。 PLAY の開発において、動画ファイルは、とても重要な役割を果たしています。私は日々、FFmpeg で生成した動画ファイルを使い、開発や検証をして…

字幕の不具合で WebKit にバグレポートを出した顛末記

こんにちは、クラウド推進技術部開発第1グループの石川です。 フルスタックエンジニアとして、システムプログラミングからWebプログラミングまで幅広く手を出していますが、最近は機械学習が加わりました! 生成AIや、画像認識、超解像などのモデルも組める…

Pulumi AIでAWS Media Servicesを使用したライブ配信環境は作成できるのか?

こんにちは。プラットフォーム技術部開発第2グループの村井です。 最近ではAWS CDKやTerraformなどのInfrastructure as Code(IaC)ツールを使ってインフラをコードで管理することも珍しくないですよね。 今回はIaCツールの一つ、Pulumiのコードを今流行りの…

視聴動向データの分析基盤を Redshift から Snowflake に乗り換えた話

こんにちは、SaaS プロダクト開発部テックリードの丸山です。さて今回は、少し前の話にはなりますが、昨年実施した視聴動向データの分析基盤のリニューアルプロジェクトについてご紹介したいと思います。視聴動向データとは、誰が、いつ、どこで、どの動画を…

Amazon GuardDutyとAmazon Inspector:AWSセキュリティにおける継続的な監視と診断

プラットフォーム技術部のアーロンです。AWSのセキュリティサービスであるGuardDutyとInspectorについて紹介します。 これらのサービスは、AWS環境におけるセキュリティの監視と評価を支援するための強力なツールです。GuardDutyは、マルウェアの検出、不審…

弊社テックブログのリニューアルについて

ソリューション技術部 デザイングループでデザイナーをしている山本です。 今年の4月に他業界から転職し、社内で飛び交う聞き覚えのない単語にもやや慣れてきたかな?と感じているところです。 私の所属するPLAYのデザイングループは、社内外を問わずデザイ…

Amazon SESで学ぶメールのBounce(バウンス)とComplaint(苦情)

AWS

ソリューション技術部の杉嵜です。BMIが18.5付近で反復横跳びしています。 今回の題材はAWSのAmazon Simple Email Service(SES)で、その中でもバウンス(Bounce)と苦情(Complaint)について取り扱います。Amazon SESを利用することでメール送信に関する構…

GitHub Actionsを使ってプルリクエスト作成時に自動でRubocop + RSpecを実行する

こんにちは。LOGICAプロダクトグループの松本です。 GitHub Actionsを使ってlintツール"Rubocop"と単体テスト"RSpec"を実行する方法を紹介します。 概要 背景 GitHub Actionsとは 解説 name on jobs runs-on services uses: actions/checkout@v2 uses: ruby/…

MPEG-DASHとMPDマニフェストの構造について

こんにちは、社会人になってから体重が10キロ程増えたので最近食事制限ダイエット始めました。 ソリューション技術部 (元OTTサービス事業部) の小渕です。 私は主にWebアプリのフロント開発を担っているのですが、Webの中でも特殊なHTML5に対応したテレビ (H…

SlackワークフロービルダーとGoogleスプレッドシート連携でデータ管理

皆さん、こんにちは。 この記事では、SlackワークフロービルダーとGoogleスプレッドシートを連携させる方法を詳細に解説します。これにより、スプレッドシートの情報をSlackで簡単に取得でき、情報共有の効率化が図れます。 Google Sheets for Workflow Buil…

NAB Show 2023 現地視察レポート:映像クリエイションの最先端とトレンド

こんにちは、プラットフォーム技術部開発第1グループの今雪とクラウド推進技術部第1グループの今坂です。 今年4月にラスベガスでNAB Show 2023というイベントが開催されましたが、PLAYからも今雪と今坂の2人が視察に行ってきました! 4/15に日本を出発し、4/…

React 対応 WYSIWYG エディタ Draft.js を試してみた

こんにちは。SaaSプロダクト開発部の千葉です。 今回は、最近試した「React 対応の WYSIWYG エディタで HTML 文字列を(class などの属性値を維持しながら)編集する」方法をまとめていきたいと思います。 WYSIWYG エディタとは React 対応 WYSIWYG エディタ…

フロントエンジニアなら知っておきたいトランスマックス入門

こんにちは、クラウド推進技術部開発第1グループの石川です。 突然ですが、トランスマックス (Transmux) とはなんでしょうか? 動画は内容を表すコーデック (H.264, H.265, mp3, AAC, ...) と、コーデックを多重化するコンテナ (MPEG-TS, fmp4, FLV, ...) で…

HLSマニフェストにおける主要なタグの意味と使い方

こんにちは、メディアプラットフォーム事業部 プラットフォーム技術部の新井です。 メディアプラットフォーム事業部から名前が変わり、プラットフォーム技術部になりました。過去のメディアプラットフォーム事業部の記事はこちらです。 developers.play.jp …

GitHub Copilot と Amazon CodeWhisperer の違いを比較:AIによるコード生成サービスの性能を検証する!

こんにちは。プラットフォーム技術部開発第2グループの髙嶋です。 最近、AIを使ったサービスが急に目立つようになってきました。 皆さんも何らかのAI系サービスを使ったことがあるのではないでしょうか。 今回はAI系サービスの中から、GitHub CopilotとAmazo…

AWSのランニングコストを削減しよう! EventBridgeを使った定期停止・起動について

ソリューション技術部の赤澤です。 普段はAWSでの環境構築などを担当しています。 環境構築にあたって、話題によくあがるのがコストについてです。 所謂本番/開発環境のような環境を運用している場合、 AWSは主にリソースの稼働時間に対してコストが掛かって…

プライベートNPMレジストリ Verdaccio について

ソリューション技術部の斎藤です。 弊社では、社内でNPMパッケージを管理するライブラリとしてVerdaccioを利用しています。 verdaccio.org Verdaccioは、無料でプライベートなNPMレジストリを作成できるNPMパッケージです。 ローカルのNPMレジストリ参照先を…