サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大そうじへの備え
developers.cyberagent.co.jp
この記事は CyberAgent Developers Advent Calendar 2024 14日目の記事です。 はじめに こんにちは、ゲーム・エンターテイメント事業部 SGEコア技術本部(以下コアテク)の矢野です。 今年10月、Unity の久々のメジャーアップデートである Unity6 がリリースされました。 多くの機能や改善が含まれており、素晴らしいアップデートだと感じています。 しかし、更新内容が多い分、その全てを把握するのは容易ではありません。 とはいえ、Unity エンジニアが実際に把握すべきアップデートはそれほど多くないとも思います。 例えば、まだプレビュー版であったり、使用するには時期尚早だと思える機能については後で把握すれば良いでしょう。 また、グラフィック関連は多くの機能が追加されましたが、グラフィックエンジニア以外は概要や使い方だけを知る程度で十分なものも多いと
この記事は、CyberAgent Developers Advent Calendar 2024とCyberAgent Group SRE Advent Calendar 2024の16日目の記事です。 はじめまして、メディア統括本部サービスリライアビリティグループ(以下、SRG)の柘植(@shotaTsuge)です。 #SRG(Service Reliability Group)は、主に弊社メディアサービスのインフラ周りを横断的にサポートしており、既存サービスの改善や新規立ち上げ、OSS貢献などを行っているグループです。 本記事では、WINTICKETを支えるインシデントマネジメントの取り組みについて紹介したいと思います。 WINTICKETとは WINTICKETは、2019年4月にリリースした公営競技のインターネット投票サービスです。サービスとしては、投票だけではなくレース映像のライ
この記事は CyberAgent Developers Advent Calendar 2024 9日目の記事です。 こんにちは、Serveice Reliability Group(SRG)の鬼海 雄太(@fat47)です。 SRGは主に弊社メディアサービスのインフラ周りを横断的にサポートしており、既存サービスの改善や新規立ち上げ、OSS貢献などを行っているグループです。 本記事ではアメーバブログを中心としたサービスの大規模Aurora MySQLクラスタを、サービス無停止でアップグレードするためにどのような取り組みをおこなってきたかをお伝えします。 Amebaの大規模Aurora MySQLクラスタについて アメーバブログは2004年にオープンしたブログサービスであり、今年20周年を迎えた長期間運用されているサービスです。Amebaは、このアメーバブログを中心に様々なサービスで構成され
この記事は CyberAgent Developers Advent Calendar 2024 8日目の記事です。また、 自由入力解像度対応 Detection Transformer を錬成するトリック の続編です。 CyberAgent AI Lab の Agent Development チームで対話エージェント・ロボットの研究開発に従事しているリサーチエンジニアの兵頭です。 CyberAgent の Developer Experts としても、Labの研究活動だけではなく事業横断的に全社を技術で支援しています。 すべてのエッセンスを盛り込むといつも数十万文字超の長大な記事を書いてしまいバックエンドのブログシステムを破壊してしまうため、今回はデモコードなどをすべて排除して一年分の成果をできるかぎりコンパクトにまとめ、行間の質量を高めます。 1. 取り組んだタスク 2Dエージェント
はじめに こんにちは、株式会社 MG-DX で Web フロントエンドエンジニアをしている柳萬真伸です。 私は 2024 年の 4 月に新卒で入社し、主に薬急便というサービスのフロントエンド開発を担当しています。 フロントエンドチームでは 2024 年秋頃より、フロントエンドのテスト環境を強化しています。 この記事では、私たちがテスト環境を改善するために行っている取り組みについてご紹介します。 薬急便について MG-DX では、医療や薬局における DX の支援を目的として「薬急便(やっきゅうびん)」というサービスを提供しています。薬急便とは、薬局でのお薬の受け取りをオンラインで予約・受付できる「処方せん事前送信」の機能や、オンライン服薬指導などの機能を提供するサービスです。 薬急便では、ユーザー画面、薬局管理画面、クリニック管理画面、自社向け管理画面など、複数の画面を Monorepo 構
この記事は CyberAgent Developers Advent Calendar 2024 1日目の記事です。 こんにちは、AI Lab Audio チームの吉本 (@mulgray) です。 早いもので、Audio チームを立ち上げてからもう 5 年ほどが経ち、チームメンバーの皆さんがたくさんの論文を発表してくれるようになりました。採用ペースはチームとしては現在落ち着いていますが、現在の 10 人からまだ若干増える見込みです。最近、内部的には 2 つのチームに分割し、事業化も研究もよりフットワークを高めることを狙って動いています。 さて、今年はたまたまこちらの Developers Blog と AI Lab Blog の両方でアドカレを書くことになったこともあり、普段やっていることとは違う内容で書こうと思います。 AI アクセラレータゼミ 実は業務のメインタスクとは別に、社内では
本記事は、10月29日〜30日にかけて開催した「CyberAgent Developer Conference 2024」において発表された「AIと創る広告の未来 ― タップルと極AIお台場スタジオの最新事例」に対して、社内の生成AI議事録ツール「コエログ」を活用して書き起こし、登壇者本人が監修役として加筆修正しました。 洞ノ上 茉亜子 (広告事業本部AIクリエイティブ部門 極クリエイティブ局 AIクリエイティブプランナー) 2019年サイバーエージェント新卒入社。 クリエイティブ制作において、極予測AIを中心としたAI活用を主軸としたプランニングを進行しています。現在は極AIお台場スタジオでの「リアルタイム効果予測」CM撮影など 新しい広告の作り方を日々考え、実行しています。 中畑 育歩 (株式会社タップル > プロダクト本部) 2021年新卒でサイバーエージェントに入社。小規模な子会社
こんにちは、FANTECH本部の山下(@takecy)です。 エンジニアリング活動の計測や可視化、難しいですよね。 そもそもそんな事が可能なのか?と思いつつも、自分たちはこんだけやっているぜ、1年前と比べてこんだけ改善したぜ、というのが見えるのは、ドラクエのレベルアップと同じような楽しさがあります。(ドラクエ3予約しました) 紆余曲折を経てエンジニアリング活動を計測/可視化した後、開発フローなどを見直したら、結果的に指標が思った以上に伸びたのが目に見えて、テンションが上がったお話をご紹介します。 計測と可視化方法 エンジニアリング活動の計測方法は色々ありますが、まずは王道のFourKeysを使ってやってみることにしました。 2022/03月ごろからこの試みを開始しました。 FourKeysとは 色々なところで言及されているので詳細な説明は省略しますが、ソフトウェア開発チームのパフォーマンス
こんにちは,株式会社 AbemaTV Web browser チームの山﨑です. 私たちのプロダクトでは JavaScript や TypeScript などの静的解析ツールである ESlint を CI で活用しています.しかし,ESlint の実行が不安定になっており開発速度や開発者体験が低下している問題が発生していました.具体的には, eslint を実行している CircleCI のインスタンスクラスを large にしても,job の失敗率が 50% を超えてしまっているような状態でした. この問題を解決すべく,eslint のルール毎の実行時間を計測する TIMIMG オプションを活用することでボトルネックとなっていたルールの特定・精査を行いました. 今回の記事では,不安定だった CI 上での ESlint 実行を TIMIMG オプションを活用し安定化させるに至った話をします
こんにちは、極予測やりとりAI というプロダクトの開発責任者をしている しゅん(@MxShun)です。 この記事では、疎結合アーキテクチャにおけるプロデューサ側でリクエストをバリデーションするという考え方と、ogen-go/ogen を利用した具体的な実装方法について詳しく説明します。 目次 疎結合アーキテクチャ 今回のワークロード 疎結合における難点 OpenAPI によるシステム間インタフェース定義 ogen-go/ogen によるプロデューササイドリクエストバリデーション まとめ 疎結合アーキテクチャ AWS Well-Architected Framework の「信頼性」を実現する手段の一つに 疎結合アーキテクチャ(以下、疎結合)があります。疎結合はコンポーネント間の結合度を下げることで、単一障害点をなくした可用性向上やスケーラビリティ向上による信頼性を実現します。そして、AWS
AI事業本部 協業リテールメディアdivの林です。 私のチームでは広告配信システムを開発しており、配信実績のレポーティングをはじめとしたデータ変換のためにdbtを利用しています。 私のチームではdbtのUnit testsをシェルスクリプトを利用した仕組みによって実現していましたが、2024年5月にリリースされたdbt-core v1.8.0からUnit testsが公式でサポートされたため、既存のテストの仕組みを移行しました。 本記事では、dbt-core v1.8.0でサポートされたUnit testsの書き方と使い心地を紹介していきます。 なお、データウェアハウスはSnowflakeを前提としています。 dbtでのデータ品質の担保 dbtにはデータ品質を担保するための機能が大きく分けて3つあり、それぞれ実行対象や実行タイミングが異なるため役割が違います[1]。 Unit testsは
目次 はじめに Colocation を意識した設計方針 Parallel Routes と Intercepting Routes を用いた設計パターン サーバー側に処理を寄せたことによる恩恵と課題 Next.js が抱える課題 おわりに 参考文献 はじめに ジャンプTOON のWeb版(以降、ジャンプTOON Web)の開発を担当している浅原昌大(@assa1605)です。 5 月にサービスを開始した「ジャンプTOON」は、オリジナル縦読みマンガ作品や人気作品のタテカラー版を連載する、ジャンプグループ発の新サービスです。 ジャンプTOON のフロントエンドには、Next.js を採用し開発をしています。 本記事では、Next.js の最新機能や設計パターン、Next.js を採用した恩恵と現在の課題について紹介します。 Colocation を意識した設計方針 Parallel Rou
目次 はじめに Next.js × GraphQL のサーバー間通信 Fastly でのコンテンツ配信とキャッシュ方針 vanilla-extract の採用とスタイリングシステム Chromatic による UI テスト / UI レビュー Datadog でのサービスモニタリング ジャンプTOON の CI/CD リリース戦略とブランチ運用の工夫 おわりに はじめに ジャンプTOON の Web 版(以降、ジャンプTOON Web)の開発を担当している2024年度新卒入社の鏑木 俊樹(かぶらき としき) @tosssssy_ です。 5 月にサービスを開始した「ジャンプTOON」は、オリジナル縦読みマンガ作品や人気作品のタテカラー版を連載する、ジャンプグループ発の新サービスです。 ジャンプTOON Web では Next.js App Router (v14.2)を採用して開発をしてお
ジャンプTOON アプリチーム 2024 年新卒の西峰です。 5 月にサービスを開始した「ジャンプTOON」は、Flutter を採用し Android, iOS, iPadOS 向けのアプリを提供しています。 本記事では、ジャンプTOON モバイルアプリのために独自に開発されたマンガビューワについて紹介したいと思います。 マンガビューワとは マンガ作品を閲覧できる機能です。 本アプリでは、快適に縦マンガを閲覧いただけるよう、スクロールや拡大縮小操作に工夫を加えています。また、作品の転載防止のため、画面録画、ミラーリングの禁止機能も存在します。(本記事では解説しません) ビューワを自作した目的 本アプリではビューワ機能を自作していますが、その目的はいくつかあります。まず、柔軟に独自の機能を追加しやすくするためです。連続して話を読んだり、お気に入りやコメント、いいね、拡大縮小といった要件を全
AWSのBYOIPがJPNICの割当IPアドレスに対応したので最速(?)でIPアドレスをAWSに持ち込んでみた CTO統括室の黒崎です。AWSのBYOIP(Bring Your Own IP Address)がJPNICの割当IPアドレスに対応したので、実際にIPアドレスを持ち込んで使ってみました! 今回は社内ゼミ制度のインターネットゼミの活動の一環として検証しました。 ゼミの環境は商用環境と完全に分離されているため、わざとヘンな設定を入れてみたらどうなるのかも実験しました。 インターネットゼミについては以下をご参照ください。 インターネットゼミ開講のお知らせ ダークファイバーでOPEN.ad.jpと接続してみた #インターネットゼミ AWSのBYOIPとは BYOIP(Bring Your Own IP Address)とは、自社で割り当てを受けているIPアドレスを持ち込めるサービスです
はじめに 初めまして。夏より冬に食べるアイスの方が好きです。AI事業本部のエンジニアとして所属している佐藤 (@Rintarooo) と申します。 AIクリエイティブディビジョンのデジタルツインレーベル事業部にて、広告素材の制作用の社内ツールの開発・運用に取り組んでいます。 本記事では、gRPCのスキーマ定義であるprotoファイルと生成されたコードの管理用のリポジトリを作成し、git submoduleから移行した際の内容についてまとめています。特に、社内に閉じたプライベートなリポジトリで実施する上で躓く点や学びが多くあったため、この度得られた知見を共有いたします。 移行前の構成 私が所属するチームでは、Webフロントエンド(以下、フロント)とバックエンドとの主な通信にConnectを採用し、Protocol Buffersによるスキーマ定義とコード生成を活用した開発を行っていました。
ジャンプTOON アプリチームの吉田航己(@koki8442)です。 5 月にサービスを開始した 「ジャンプTOON」 では、モバイルアプリを Flutter で開発し、通信には GraphQL を用いています。 本記事では GraphQL の解説、Flutter アプリで GraphQL を活用する際の工夫点や開発の知見を紹介していきます。 目次 GraphQL の概要 ジャンプTOON アプリでの GraphQL の使用 Flutter で GraphQL を使うメリット Flutter × GraphQL 開発の工夫 おわりに 参考文献 GraphQL の概要 GraphQL は Meta 社が REST の問題点を解決するために開発した API クエリ言語およびランタイムです。その概念は特定の言語やデータベースなどに依存するものではなく、ビジネスドメインのデータを Node と E
ジャンプTOON アプリチームの國師です。 5 月にサービスを開始した 「ジャンプTOON」 は、Flutter を採用し Android, iOS, iPadOS 向けのアプリを提供しています。 本記事では、ジャンプTOON モバイルアプリの開発で採用している技術スタックやプロジェクト構成、開発手法を紹介します。 目次 SDK・ツール管理 プロジェクト管理・タスクランナー CI・CD ディレクトリ構成 テーマ管理 ルーティング アセット管理 状態管理 サーバ通信 Lint テスト UI カタログ Web Preview PDR SDK・ツール管理 Flutter の SDK バージョン管理には、Flutter 以外の SDK やツールもまとめて管理できる asdf を採用しています。 Flutter の開発者界隈では FVM も人気ですが、次の点から、アプリチームに限らず開発チーム全体で
目次 はじめに CLでの取り組み 字幕の仕組み 字幕の自動生成 音声抽出 文字起こし 翻訳 今後について はじめに こんにちは、FANTECH本部の古谷です。 今回は、「LDH動画配信サービス「CL」、生成AIを使用した字幕・翻訳機能を提供開始」に伴い、CLにおける多言語対応についてご紹介します。 CLでの取り組み CLでは、世界中のユーザへ最高のエンターテイメントを届けるため、多言語対応に力を入れています。 CLが提供する配信は以下の3種類あり、それぞれ配信の特性に応じて多言語化の課題があります。 ライブキャス配信 オンデマンド配信 ライブ配信 ライブキャス配信は、複数のアーティストによるライブ配信で低遅延、かつリアルタイムで配信を楽しむことができます。 この特性に合わせ、アーティストの発言を話者分離した上でリアルタイムに7ヶ国語に翻訳しユーザへ伝搬する仕組みを取り入れています。 この仕
グループIT推進本部のデータプロダクトユニット(DPU)でエンジニアをやっている@azazです。DPUではTiDBチームに所属していまして、ここではTiDBの運用、移行のサポート、クエリー最適化のサポート活動などに力を入れています。 大規模データ基盤にまつわるデータベース・ETL・クエリーエンジン・ストリーム処理技術について興味がある方は是非Cyberagentの採用ホームページから大規模データ基盤エンジニア枠で応募してみてください! 流れ 最近注目を集めているMysql互換のNewSQL データベースであるTiDBですが、内部のレートリミッターについて考えたことありますか?本記事ではTiDBで採用されているレートリミッターの仕組みについて3部構成で紹介したいと思います。 様々なレートリミッターアルゴリズムの紹介 分散システムにおけるレートリミッターの課題 TiDBのレートリミッターの仕組
背景 こんにちは!Hanoi Dev Centerでバックエンドエンジニアをしているminhquangです。この記事では、私がAI事業本部のある新規プロダクト開発に参画した際に経験したパフォーマンスチューニングについて話したいと思います。 皆さんはサービスのローンチ(サービスを世の中に初めて出すリリース)をやったことがありますか。サービスローンチするときに、リクエストのスパイクや、ユーザー数の増加によるサーバー負荷増加など、様々な未知な課題が存在します。 私のチームでは数百万人の利用が見込まれるサービスにおいて、18000RPSを実現するべく負荷試験とパフォーマンスチューニングを実施しました。 本記事では、上記のサービス要件を満たすために私たちが取り組んだ負荷試験やパフォーマンスチューニングについて説明しつつ、これらの経験から得られた学びを共有したいと思います。 前提 技術スタック サーバ
AI事業本部の協業リテールメディアdivでソフトウェアエンジニアをしている 中澤 といいます。直近では、プロダクト開発以外にAI 事業本部の新卒研修の運営を行なったりもしていました。 私が所属しているチームで最近、定期バッチを行うワークフロー管理ツールを AWS Step Functionsへ移行したので、移行の背景や得た知見を記事として公開します。 移行前の構成 私たちのチームでは、ワークフロー管理ツールを AWS Step Functions に置き換える前には、Prefect を使っていました。 Prefect に関しては、弊社ブログの別記事があるので、Prefect について知りたい方はそちらも参考にしてみてください。 Prefect を利用している時の構成では、Prefect 側でワークフローのスケジュール管理やワークフロー内のタスク実行を Prefect、実際のワークフローのタ
協業リテールメディアdivでデータエンジニアをしている千葉です。 本日は、先日弊社内で実施をしたAI事業本部 新人研修の一部である「データモデリング」について記載をします。 同じく講師として登壇をした yassun7010 も「データベースの歴史」について、ブログとして公開をしているため、合わせて見ていただけると嬉しいです。 ※今回の記事作成に合わせて一部加筆修正をしています。 基幹系と情報系 今回の研修では、データモデリングを扱うシステムを 基幹系 情報系 に分けて説明をしています。 というのも基幹系と情報系では、そもそもデータの扱われ方やシステムの特性が異なります。 基幹系システムではOLTPと呼ばれる処理システムになっており、オンラインでかつリアルタイムにデータを追加更新します。そのため、重要となってくるのが多くのトランザクション(処理数)を正確にさばくことです。代表例としては銀行の
こんにちは、AmebaLIFE事業本部の「ピグパーティ」でバックエンドエンジニアをしている松岡穂高です。 今回は、RedisのPub/Subを使用して、「ピグパーティ」のライブ配信機能(以下、観覧機能)において高い同時視聴数でも安定して配信できるように改善をしたため、その事例を紹介したいと思います。 ピグパーティとは 「ピグパーティ」とは、仮想空間内でなりきりたいアバター(ピグ)を作って、ピグのきせかえや自分のお部屋のもようがえをしながら楽しむ、アバターSNSサービスです。 背景 観覧機能は、もようがえをしたお部屋でパーティを開催し、ボイスチャットやコメント機能を使って配信者と視聴者(以下、観覧ユーザー)が交流するための機能です。 普段の運用では負荷に問題はありませんでしたが、最近ではVTuberとのコラボイベントで大規模な観覧パーティを行う機会が増えました。既存の仕様では負荷に耐えること
はじめに 近年、様々な分野で機械学習の利用が進む中、モデルの品質を担保し、継続的な学習を行うための施策が重要視されています。そのため、機械学習のためのDevOpsであるMLOpsの必要性が高まっており、AI事業本部でも研修内容に取り入れています。 より良いMLOpsを構築するためには、アプリケーションやインフラの知識も必要です。そのため、今年は昨年までと異なり、MLエンジニアだけでなくソフトウェアエンジニアも講義に参加しました。また、新たに実践編が加わり、より業務を意識した講義が追加されました。 Container編 基礎編 応用編 実践編 そこで、今回は研修で行われた各講義の資料を公開したいと思います。 Container編 Container編では、コンテナにまつわる技術に対しインデックスを張ることと、イメージ作成や運用時のTipsを学び実業務に役立てることを目的としています。 そのた
こんにちは。 AI事業本部の協業リテールメディアdivでバックエンドエンジニアをしている yassun7010 といいます。 先日、 AI 事業本部の新人研修で「データアプリケーション」の講師を同じチームの 千葉 と担当しました。 今回の記事では、主に私が担当した「データベースの歴史」の章の講義資料を公開し、資料を作成する際に考えていたこと・伝えたかったことを話します。 「データベースの歴史」で説明されている内容は、AI事業本部の新卒研修で毎年取り上げられているものです。こういった研修の資料は、同じテーマであっても講師をする人の好みが反映されやすく、今年の資料も先人が作られた昨年の資料を参考にしつつ、私が好きな話題を多く取り入れたものに仕上がりました。 SlideShare でも公開しています。 今年の構成は、データベースを RDS・NoSQL・NewSQL として分け、下記のような構成を
はじめに AWA Androidチームの向井です AndroidチームではCI/CDによって日々の作業を自動化しています この記事ではAWA Androidチームの開発で運用しているCI/CDについて紹介していこうと思います 基本的にAndroid開発の話なので具体的な内容についてはAndroid前提となってしまうのですが、どういった作業を自動化しているのかという観点ではAndroidに限らず活用できる部分もあると思います KtLint、Lint、Unit Test CIではktLint、Android Lint、Unit Testを実行しています 最初はこれらのタスクを実行するだけで運用していたのですが、コードベースが大きくなり次第に実行時間が長くかかるようになってしまいました これらのタスクはGithub Actionsを使って実行していますが、並列数も多くはなく、PRを出すたびにCI
図で表すと、以下のようにテスト手法を使い分けています。 先ほどの、壊れやすくあって欲しいテストがドメインロジックのテストです。 挙動を変えたらテストはFAILして欲しい(テストを変更していないのにPASSすると不安)ので、厳格にチェックします。 逆に、ビジネスロジックは複雑なものを除けば、ある程度の初歩的なミスはlintで防ぐことができます(型の詰め替えのマッピング漏れや列挙漏れなど)。 そのため、実装によっては、E2EなどのブラックボックステストとGoldenテストの組み合わせで事足りるケースが多くなり、変更の多いビジネスロジックではユニットテストを書かないという思い切りの良い判断もできます。 いくつか掻い摘んでご紹介します。 簡易的なビジネスロジックのテスト 例えば、デバイスに合わせたキービジュアルのURLを返すロジックを例にとると、マッピングの漏れは exhaustruct により、
株式会社CyberFightでネイティブアプリを担当している奈良です。株式会社CyberFight DX事業本部は、複数のエンタメサービスを開発、運用するFANTECH本部に所属しています。 株式会社CyberFightでは、CyberFightグループのみならず、幅広い団体の迫力あるプロレス動画を配信するサービス【WRESTLE UNIVERSE】を運営しています。 先日おこなわれたサービス方針発表会にて、キャス配信機能(ここでのキャス配信とは、サービス側が映像機器を使って配信するのではなく、選手が配信用アプリを使ってライブ配信することを指します)を提供することが発表されました。現在はWRESTLE UNIVERSEアプリ(以下、WUアプリ)の運用開発と並行して、キャス配信機能アプリ(以下、配信アプリ)の新規開発をおこなっています。 WUアプリは私がFlutterを使用して開発した初めて
次のページ
このページを最初にブックマークしてみませんか?
『CyberAgent Developers Blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く