サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ドラクエ3
developers.cyberagent.co.jp
こんにちは、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アドレスを持ち込めるサービスです
ジャンプ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を使用して開発した初めて
AI事業本部 協業リテールメディア Div. の青見 (@nersonu) です。2023年11月に中途で入社したため、5月でようやく入社半年を迎えました。社内 Slack の times で有給休暇が付与されて喜んでいる(?)様子を御覧ください。 有給休暇に喜ぶ筆者 そんな社歴半年のペーペーですが、普段は機械学習エンジニアと強い気持ちで名乗ってお仕事をしています。特にうまい繋ぎも思いつかないので、記事の本題に入りましょう。 近年、 LLM に関する話題は尽きることはありません。研究領域やビジネス領域といった概念にとらわれず、わたしたちの生活のすぐそばで、今まさに違和感が少しずつ取り除かれながら社会に溶け込んでいっていると感じます。そんな LLM ですが、自然言語というデータの枠に収まらず、様々なタスクへの適用の試みが日夜行われています。そんな挑戦的な数多あるトピックの中から「表形式データ
協業リテールメディアdivでデータエンジニアをしている千葉です。 本日は、広告プロダクトにおけるデータ基盤を効率よく活用することを目指したこの1年間を振り返って、データ基盤から広告プロダクトの価値を高めるための試行錯誤をご紹介します。 目次 データ基盤の構成紹介 データ基盤の活用および運用方法 手動作業での事故が起きないCI/CD構築 実験ができる環境の提供 コストの確認および監視 定期的な棚卸し データ基盤の民主化をした結果と課題 まとめ データ基盤の構成紹介 以前弊社のイベントに登壇した際の設計思想をもとに構築をしています。 このデータ基盤の利用目的としては、各広告媒体の配信結果を分析するための基盤となっています。 基盤の構成としてはStorageにRaw Dataを格納し、Datalake、DWH,Datamartの3層構造で基盤を構築しています。 主に使用しているツール/サービスと
こんにちは.協業リテールメディアdivでデータサイエンティストをしています須ヶ﨑です.本日はLLMを用いて専門性の高いデータを読み解くというトピックをご紹介します. また,実際にオープンデータである気象データと,NYCタクシーデータを読み解く例をご紹介します. 専門性の高いデータの読み解きがスケールする嬉しさ 今回の記事での「専門性の高いデータ」とは,気象データや株価推移,POSデータ,時系列行動データ,車の運転データ,センサーデータなど,データ自体が直感的に理解しにくく,理解するためには一定の分析,及び,その読み解きを必要とするようなデータを指しています. さまざまなビジネスにおいて,色々な分野のデータが当たり前に集められるようになり,データの価値やその活用がとても重視されるようになってきています.これらのデータを基軸としたデータ分析によって、顧客のニーズを的確に把握し、効果的なマーケテ
この記事は CyberAgent Developers Advent Calendar 2023 17日目の記事です。 株式会社WinTicketで競輪事業のキャペーン設計や運用、分析を担当しています。2023年ビジネスコース新卒入社の村瀬拓登です。 私はエンジニア職ではありませんが、社内の課題を解決するにあたり生成AI活用にチャレンジしたので、僭越ながらその記録を投稿させていただきます。 今回、CyberAgentメディア事業部 Data Science Centerの若松さん(機械学習エンジニア)の全面サポートにより実現できました! この場を借りて御礼申し上げます!ありがとうございました! はじめに 弊社では現在、競輪・オートレースの投票サービス「WINTICKET」を提供しており、業界最後発ながらシェアNo.1まで事業を拡大してきました。 弊社は日々のデータドリブンな意思決定でグロー
こんにちは。協業リテールメディアdivでデータサイエンティスト、プロダクトマネージャーをしております早川です。本日はABテストにまつわるトピックを紹介します。 はじめに とあるマーケティングコミュニケーションを介入とみなしたとき、一つの介入が異質性を持っていたり、複数のアウトカムに影響を及ぼすことは容易に考えられます。例えば缶ビールのクーポンを配布して、各消費者の缶ビールの平均購買点数が増えるかを検証する状況を考えます。このとき、ビールを好む消費者の購買点数が増えた、普段飲酒をしない消費者の購買点数は0本のままで影響がなかった、という状況が直感的に想像がつきます(異質性)。また、ビールの購買点数に加えて、おつまみ類の購買点数も増えるかもしれません(複数アウトカムへの影響)。 この介入の効果検証をABテストを通じて行うとき、異質性や複数アウトカムへの変化を含む、なるべく多くの変化を正確に捉え
AWS CodeBuildのGitHub Actions runnerサポートでLambdaが実行できるようになったので検証しました CTO統括室の黒崎(@kuro_m88)です。本日早朝に面白そうな発表を目にしました👀 AWS CodeBuild now supports managed GitHub Action runners AWS CodebuildがGitHub Actionsに対応したという内容ですが、要するにAWSがホストするGitHub Actions Runnerが出たということですね🎉 AWSがマネージしてくれることで、EC2(x64, arm)はもちろん、GPUとカスタムイメージも利用できるようです。 さらに注目したのはGitHub Actions RunnerとしてAWS Lambdaが使えるようです。Lambdaが使えると嬉しいポイントはActionsのjo
こんにちは、CyberFight DX 事業本部で web フロントエンドエンジニアをしている久保です。CyberFight DX 事業本部は複数のエンタメサービスを開発、運用するFANTECH本部に所属しています。今回は、管理画面を対象に WebAssembly ( Wasm ) を導入した事例をご紹介します。 FANTECH 本部では技術ブログでの発信を強化しており、最近では下記のような記事を投稿しています。ぜひご一読ください。 Cloud Run サイドカーで Fastly の Prometheus Metrics を収集して Grafana で可視化する reminder-lintでFeature Flagsの削除漏れを防ぐ マルチリージョンで稼働する内製Feature Flagsの実装 私たちのプロダクト WRESTLE UNIVERSE では、ユーザー対象のキャンペーンを実施す
Cloud Run サイドカーで Fastly の Prometheus Metrics を収集して Grafana で可視化する はじめに こんにちは! FANTECH 本部所属の川口です。 我々のチームでは、Google Cloud, AWS, Azure といったクラウドサービスの他、さまざまな XaaS を利用しています。 これらの metrics はそれぞれのサービスで可視化できるようになっている一方、それらを一元管理したいというモチベーションとコストパフォーマンスの観点から Grafana を自前で Cloud Run 上で運用しています。 Grafanaでは、主要なサービスであれば Grafana data sources を用いて簡単に連携することができますが、こちらに存在しない場合は別途どのように連携するかを考慮しなければなりません。 Fastly も、その内の一つで 2
次のページ
このページを最初にブックマークしてみませんか?
『CyberAgent Developers Blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く