サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
災害への備え
dwango.github.io
はじめに こんにちは。ニコニコ動画開発の小池です。 私の所属するチームではニコニコ動画の動画サービスのサーバーサイドをメインに担当しております。 今回は PHPerKaigi2024 向けの記事として、動画サービスのコード改善についてこれまでの歴史や取り組みとその成果について紹介していきたいと思います。 文中の3つのフレーズをチャレンジトークンとしてみました。ぜひ探してみてください! (※ 記事の見出しにの横についている「#」はチャレンジトークンではありません。チャレンジトークンは文中に配置されています。紛らわしくてすみません!) 2006年: ローンチ ニコニコ動画は2006年にローンチされて以来、皆様の応援のおかげで現在までサービスが継続されております。 当時はRuby on Railsが流行り始めてCakePHPが出ているかどうかといったくらいの時代で、フレームワークを利用しないとい
※本ブログは2024/2に執筆されています。そのため、アップデートによってここに記載されている内容が現状と乖離する可能性があります。記載する内容を参照する場合は自己責任でお願いします。 はじめに こんにちは! ドワンゴでエンジニアをやっている小林と申します。競技プログラミングを趣味にしています。 今回は業務には関係ありませんが、個人的に興味のあるトピックであるセキュリティーについて執筆します。 対象読者: 以下のどれかを満たす人 AtCoder で青色〜黄色以上、あるいは意欲のある水色以上 暗号理論に興味のある人 数学が好きな人 また、簡単な群論の知識を仮定します。(群の定義など) まとめ セキュリティーの強さはセキュリティーレベルと呼ばれる尺度で測ることができます。 \(k\) ビットセキュリティーはおよそ \(2^k\) 回の計算を要するレベルです。 \(n\) ビットの楕円曲線暗号方
はじめに 2023年新卒エンジニアの武智です。 今回は2023年新卒エンジニアが3ヶ月間共通で受けた研修について、研修の内容と感想を記事にしようと思います。 この記事では、全3ヶ月の研修の内、以下の内容を扱います。 毎日の読書/朝会/振り返り会 1ヶ月の基礎研修 1ヶ月の個人研修 1ヶ月のチーム研修 その他 毎日の読書/朝会/振り返り会 3ヶ月の研修中、毎日9:00〜10:00で読書、10:00〜10:30で朝会、17:30〜18:30で振り返り会をしました。 読書は課題図書が指定されており、50分読んだ後、10分ほどオンラインMTGを繋いで同期+メンターさんたちと内容を共有する、という形で行いました。 課題図書は「図解即戦力 Web技術がこれ1冊でしっかりわかる教科書」や「Team Geek」、「達人プログラマー」、「入門監視」などがありました。技術的知識の基礎からチームで働く際のマイン
こんにちは。ニコニコQセクションのHajime-san(GitHub)です。 本稿では、HTMLのloading属性の仕様とブラウザの実装を解いていきます。これにより、ブラウザからのコンテンツ配信の最適化を支える判断材料の1つとなれば幸いです。 執筆の動機 筆者が開発に携わっているサービスであるニコニコオーディションが間接的に利用している社内ファミリーサービスについて、ふと自分のスマートフォンで見てみたところページの初期表示に時間がかかるように感じました。 オーディションシステムはiframe要素によって社内ファミリーサービスなどに専用のUIを埋め込むことが可能になっており、iframe要素のloading属性を用いた「遅延読み込み」(以下、遅延読み込みはloading属性によるもの)が効果的なのではないかと考えました。 まずは、実際にloading="lazy"を適用して読み込みが後回し
こんにちは。ニコニコ共通バックエンド開発担当の小野塚です。 ニコニコには各ファミリーサービスが使っている共通通知システムがあります。このシステムを利用することで、各サービスはiOSアプリプッシュ通知、Androidアプリプッシュ通知、ブラウザーWebPush通知、Eメール通知、Webページやスマートフォンアプリの「あなたへのお知らせ」を送っています。 そのリプレースが最近完了したので、ご紹介したいと思います。 リプレース前の状況 リプレース前の共通通知システムは、通知生成システムと通知配信システムという2つのシステムから構成されていました。この2つのシステムの間では、通知生成システムがニコニコ独自の通知ロジックを担い、通知配信システムがニコニコに限定されない汎用的な通知機能を担う[1]という分担がありました。 通知生成システムは、通知するイベントに含まれるコンテンツのIDから通知配信システ
はじめに こんにちは。ニコニコ開発部で、動画スマホアプリ開発を担当している秋元です。 私たちのチームでは、いくつかのスマホアプリを開発しています。 その中でも、ニコニコ動画iOSアプリは、10年以上に渡り開発・保守・運用を行っている歴史あるアプリです。 この記事ではその歴史を振り返りながら、私たち開発チームがどのように改善を進めてきたかについて紹介します。 大規模なiOSアプリ開発の楽しさや大変さ、そしてやりがいが、読んでくださる皆さんに伝われば嬉しいです。 iOSDC 2023 のチャレンジトークンが記事内に 2つ 含まれています。ぜひ探してみてください! (※ 記事の見出しにの横についている「#」はチャレンジトークンではありません。チャレンジトークンは文中に配置されています。) ニコニコ動画iOSアプリとは ニコニコ動画iOSアプリは、iPhoneやiPadなどのiOS/iPadOSデ
こんにちは。ニコニコ生放送生放送フロントエンドシステムセクションのmisuken(GitHub/Twitter)です。 今回は最近公開したurl-fromというライブラリに関して、作成した動機、安全性、利便性、おすすめの使い方を紹介していこうと思います。 url-fromが一般的なURL生成ライブラリと比較して強みを持っているのは以下の点になります。 パス部分も含め、全体的にエンコードを意識せず使用できる URLの定義と生成を分離できる 細部まで型や警告で保護してくれる 実際の利用シーンに馴染む設計を心がけたため、安全性と利便性と書き味を兼ね備えたライブラリに仕上がっています。 使用してもらったメンバーから「型がサクサク当たるので書いてて楽しい」といった声もあがるくらい、使っていて楽しくなるライブラリでもあります。 url-fromを作った動機 発端 以前からチーム内でURLの生成方法が時
こんにちは。ニコニコ動画開発の多胡です。 今回は PHPerKaigi2023 向けの記事として、2021年に実施したニコニコ動画のコメントサーバーをお引越しした時のことを書いてみたいと思います。 文中の 5 つのフレーズをチャレンジトークンとしてみました。ぜひ探してみてください! (※ 記事の見出しにの横についている「#」はチャレンジトークンではありません。チャレンジトークンは文中に配置されています。紛らわしくてすみません!) 背景 実はニコニコ動画の #コメントサーバーを引っ越した のはこの時が二度目でした。 一度目は2014年から2016年にかけてのプロジェクトでファイルベースのシステムからの引っ越しでした。このファイルベースのシステムは、ニコニコ動画生誕当時から利用されており、当時のコメント参照や投稿にはすでに耐えられない状態になっていました。 そこで、このファイルベースのシステム
2023-03-06 Mon Service WorkerとCache APIによるWebサーバーの負荷軽減とテスト実装について-後編 ニコニコQセクションのHajime-san(GitHub)です。 本記事は、Service WorkerとCache APIによるWebサーバーの負荷軽減とテスト実装について-前編の続きとなります。 テストについて さて、前編のService Workerスクリプトの実装はローカル開発環境および検証環境での確認を経て本番環境にデプロイされているのですが、このままでは「なんとなくキャッシュが動いている」という状態がブラウザ上に構築されていることになるので、Service Workerの振る舞いの仕様書となるテストコードが欲しいというのが本稿のもう1つの主題になります。 Service Workerのテストについては筆者が知る範囲ではインターネットにはあまり知
2023-02-27 Mon Service WorkerとCache APIによるWebサーバーの負荷軽減とテスト実装について-前編 こんにちは。ニコニコQセクションのHajime-san(GitHub)です。 当記事では所属部署で開発に携わっている「ニコニコオーディション」の既存システムにService WorkerとCache APIを用いて、 Webサーバーからのレスポンスを一定期間保存し、キャッシュ(CacheStorage)からレスポンスを返すことによってWebサーバーへの負荷軽減を実現するまでの経緯や実装などを紹介します。 オーディションシステムの紹介 システムの概要 まず初めに本稿の主題となるシステムが抱える課題について、先ほどサラッと単語が登場した「ニコニコオーディション」というシステムの前提があるとより理解が明瞭になるのでこちらを紹介します。 ニコニコオーディションとは
こんにちは。ニコニコ生放送生放送フロントエンドシステムセクションのmisuken(GitHub/Twitter)です。 今回は10月に公開したsmart-svgとreact-sass-inlinesvgという2つのSVG表示ライブラリに関して、作成に至った経緯、ライブラリの特徴、工夫したポイント、パフォーマンス等の話をしていきたいと思います。 ライブラリを作成した経緯 これまでのSVGの表示方法 ニコニコ生放送ではこれまで、SVGを表示する際にはreact-inlinesvgというライブラリを使用していました。 react-inlinesvgは<img>のようにsrcにURLを渡して表示するタイプのライブラリです。 SVG要素がDOMに展開されるため、CSSからスタイルを適用できます。 react-inlinesvgのREADMEに書いてある使用例。 import React from '
はじめに ニコニコサービス本部ニコニコ開発部の小野寺と田中です。ニコニコ生放送の開発をしています。 今回は我々のチームで担当しているプロダクトの「品質改善の事例」をご紹介します。 Web アプリケーションの reftest (Reference Test) を導入する事例が出てきます。興味のある方はぜひご一読ください。 どんな課題があったか 今回ご紹介する事例は、 ある Web アプリケーションフレームワークの品質改善です。 過去の記事でもご紹介した Akashic Engine と呼ばれるもので、以降は 「エンジン」 と呼称します。 エンジンには 二つの課題 がありました。 いずれもある時期のプロダクト品質指標値を下げる要因となったもので、開発者の心の平穏を脅かすものです。 マルチプラットフォーム対応によるテスト範囲拡大 導入先サービス特有のテスト不足 これらを順に説明します。 1. マ
2022-06-13 Mon ニコニコ生放送のBackend For FrontendsをKubernetesに移行した知見を公開します こんにちは。生放送フロントエンドシステムセクションのHimenon(GitHub/Twitter)です。 ニコニコ生放送のWEBフロントエンドはBackend For Frontendsの構成を取っています。 これらは従来Docker Swarmのクラスター上でコンテナを稼働させてサービスを提供していましたが、今回、Kubernetesへ移行を実施しました。その知見を公開します! ニコニコ生放送 WebフロントエンドのKubernetes移行ハンドブック 2022 PDF版 構成 Kubernetes istio Argo CD Argo Rollouts 稼働実績 2022年の4月の段階ではWebフロントエンドのサーバーはすべてKubernetesで稼
はじめに こんにちは。ニコニコでサーバーサイドエンジニアの就業型インターンシップをしていました有馬海人です。 インターンシップに申し込んだ当時は大学院修士課程1年の夏休み前でした。 研究では「スパコン用プログラム開発者の開発支援をするツール」の開発をしています。 期間は週3日、2021年10月初めから2022年3月末、1日当たり4時間の稼働でした。 週5の8時間労働に換算すると約1か月ほどです。 申し込みの動機 申し込み当初はこんな動機で申し込みました! せっかくなら有給インターンに参加したい なんとなくドワンゴって技術高そう→ためになるかも! 落ちても死ぬわけじゃないしな 「申し込みの動機」からは少し離れてしまいますが、面接のときに印象深いエピソードは唐突にコーディングテストが始まってびっくりしたことです。 業務内容 ニコニコの基盤として使われるシステムの開発を行うチームに参画しました。
こんにちは。エンジニアの新入社員研修を担当している青木です。 今回はリモートで行われた2021年度の新入社員研修が、どのような様子だったかをご紹介します。 現在は2021年度の振り返りをもとに、迫っている2022年の新入社員研修の準備を進めています。 入社予定の皆さんやエントリーを迷っている皆さんの不安を軽減できればいいなと考え、この記事を書くことにしました。 昨年実施した研修に新入社員の皆さんから、沢山のフィードバックをもらいました。 その中に「完全リモートという不安な環境でエンジニアとしてのキャリアをスタートしたので〜」という一文がありました。 社会人という「新しい環境」に不安を感じているのに、馴染みのない「リモート環境」という要素も加わっていた為、不安は大きく、もっと軽減してあげられたらよかったなと思いました。 この記事を読んで少しでも研修の様子やドワンゴの文化が伝わり、不安が軽減で
※本ブログは2022/2に執筆されています。そのため、アップデートによって内容が現在と異なる可能性があります。 はじめに モバイル事業本部プロダクトエンジニアリングセクション マネージャーの安田です。 インフラっぽいことやクラウドっぽいことやデータエンジニアっぽいことをやってます。 今回、モバイル事業部で使うS3のコスト削減のため、ストレージクラスの移行等を行うライフサイクルの設定を行いましたのでご紹介します。 これからS3の管理を行っていく方、コスト削減に興味のある方の参考になれば幸いです。 実施の背景 モバイル事業本部ではドワンゴジェイピーやアニメロミックスなど音楽配信ビジネスを中心に展開しており、様々なレーベルからお預かりした楽曲データを管理しています。 また、ニコニコ事業本部ができる前からサービスを行っており、多大な量のシステムログやクラウドサービスのログデータなどが存在しています
はじめに 2021年新卒エンジニアのHikamayoです。 先日、僕が入社して初めて開発に関わった機能がリリースされました。 ニコニコ動画で、自分の投稿動画の再生数・コメント数が伸びている際にお知らせが届くようになりました。https://blog.nicovideo.jp/niconews/157710.html 「ニコニコの"お知らせ"について」はこちらをご覧ください。 入社して半年が経過して、機能のリリースまで体験できたこの機会に、せっかくなのでここまでの僕のドワンゴ生活についてお話してみようかなと思います。 この記事では、以下のようなことをお話しします。 入社してから配属までの新卒エンジニア研修 配属されてからの配属後研修 実際のプロダクトを作成してリリースするまでのOJT ドワンゴでの働き方 入社から配属までの新卒エンジニア研修 入社してから3ヶ月ほどは新卒エンジニア全体研修があ
はじめに ニコニコ動画では、過去にどのような動画がランキングに掲載されていたかが分かる機能を提供しています。 これまではプレミアム会員専用機能として、ブラウザ上で過去のランキングを閲覧できる機能を提供してまいりましたが、 2019年6月中に導入される予定の 新ランキング(ジャンルランキング) にあわせて、ファイルとしてご提供する方式に変更させていただきます。 つきましては、本記事を通して、ランキング過去ログファイルの技術情報について、事前に説明させていただきます。 このドキュメントの説明 本ドキュメントは、リリースに先立ち、ランキング過去ログの情報を必要とするニコニコユーザー様に向けて、事前に技術情報を解説するものです。 ジャンルランキングの過去ログファイルは、ジャンルランキングのリリースと同時に利用可能になります。 利用を希望される方は、利用規約に同意いただいたうえで、このページに記載さ
ジャンルランキングにおけるランキングRSSについて はじめに ニコニコ動画では、ランキングページをRSS形式で取得できる機能を提供しています。 2019年6月の新ランキング提供開始にともない、RSSの内容・URLを変更いたします。 つきましては、本記事を通して、新しいランキングRSSの技術情報を解説させていただきます。 このドキュメントの説明 本ドキュメントは、リリースに先立ち、ランキングRSSの情報を必要とするニコニコユーザー様に向けて、事前に技術情報を解説するものです。 新しいランキングRSSは、ジャンルランキングのリリースと同時に利用可能になります。 ランキングRSSの概要 ランキングRSSを利用すると、ランキングページと同じ内容を、よりコンピュータで取り扱いやすいRSS形式で取得することができます。 RSSで取得できるランキングは以下の通りです。 期間 毎時 24時間 週間 月間
ドワンゴ 技術コミュニケーション室のsaka1です。 この記事では、社内で用いられているLightningTalk(LT)用のライブストリーミングシステムについて紹介したいと思います。 LTは普段こんな感じで行われています。 実は、社内ではLTの開催形式について見直しが行われつつあります。 記事の執筆時点ではまだこのシステムは使われていますが、ライフサイクルとして末期かもしれません。 せっかくなのでシステムがどういったものだったかについての記録を残したいと思い、記事を書くことにしました。 記事ではまず、なぜシステム開発が必要だったかについて簡単に説明し、次にシステムの技術的詳細について紹介していきます。 LT運営にどういった課題があったか エンジニア有志が参加するLT会はそれまでも定期開催されていたのですが、エンジニアの人数が増えるにつれて、 一つの会議室に全員が物理的に集合してLTを開催
選定作業にはAOMが公開しているソフトウェアエンコーダaomを使用し、改造によってツールを削減したときの映像品質を比較しました。 映像品質は一般的にビットレートと客観/主観画質のバランスで表されます。 客観画質とは計算によって数値化した画質のことで、代表的な手法としてはPSNRやSSIMがあります。 主観画質とは人の目で映像を評価した画質のことです。 今回は、客観画質としてPSNRを用いた指標(RD性能)を用い、映像品質を比較しました。 PSNRには"30dBを下回ると低品質である"といった基準はありますが、人の目で見たときの評価と必ずしも一致するわけではありません。 そこで、主観画質の評価も並行して実施し、多角的に映像品質低下を防止しました。 選定結果 まず、Superblockサイズを64X64と128X128とで比較しました。 その結果、テストケースのうち約75%でRD性能に変化がな
ドワンゴ 技術コミュニケーション室の塩谷( kwappa ) です。 2019年、ドワンゴには19名の新卒エンジニアが入社しました。一般研修やグループ会社との合同研修を経て、4/22からはエンジニア研修が始まっています。 その冒頭に「エンジニアの心技体」というテーマでぼくが話す時間を作りました。エンジニアとして成果を出し、成長し、生きのこるための心構えを「親父の小言」的に紹介しています。 スライドはこちらです。 前提知識として、ここ数年話題に上ることが増えてきた「心理的安全性」と「HRT」などを紹介し、その上でプロのエンジニアとして生きのこり成果を出すための心構えを「心技体」という軸で切り取って紹介しています。 「心理的安全性」という言葉が注目を集める結果となったGoogleのプロジェクト・アリストテレスについては時間的な都合で言及していませんが、平易に書かれた重要な文章ですので、あわせて
ニコニコの開発者向け情報 ニコニコの開発者向け情報を公開します。 ニコニコ動画 ニコニコ動画の開発者向け情報を公開します。
ドワンゴ 技術コミュニケーション室の塩谷( @kwappa / kwappa@friends.nico )です。 エンジニアにとって勉強会やカンファレンスに参加するのは学びであるとともに楽しみでもあります。そんなイベントをさらに楽しみなものにしてくれるのが、みんな大好き懇親会。 本日はそんな懇親会をさらに楽しくしてくれる、革新的で魔法のようなアイテム「プルタブフック」をご紹介します。 懇親会といえば 🍣 と 🍕 、そして 🍺 がつきものですよね。でも、皿を持ち、箸を持ち、さらに缶を持つのはとても大変です。空きスペースを探してウロウロするのはなんだかマヌケなものですし。 そんな悩みを解決してくれるのが、この「プルタブフック」。これさえあれば、食べる・飲む・喋るという懇親会の行動をスムーズに切り替えることができます。 使い方はいたって簡単。プルタブを開けたら垂直に立て、その穴にフックを通
はじめに ドワンゴではniconicoの配信系サービスのバックエンドで利用するために、Frugalosという名前の分散オブジェクトストレージを開発しているのですが、この度OSSとして公開することとなりましたので、この場を借りて軽く紹介させて貰います。 FrugalosはRustで実装されており、現時点では以下のリポジトリが公開されています: raftlog_protobuf: raftlogへのProtocol Buffersサポートの追加 “Frugalos"って何? “Frugal object storage"の略です。 “frugal"は日本語では「倹約な」や「節約する」といった意味となり、「読み書き性能を犠牲にせずに、膨大な数のBLOB(Binary Large OBject)を、容量効率良く保持する」ことを目指して開発されているオブジェクトストレージです。 提供されている機能は
株式会社ドワンゴの教育事業本部でN高等学校のプログラミング教育を担当しているエンジニアのsifueといいます。 N高等学校は2016年にできた通信制の高校で、現在は7000名以上の生徒が在籍しており、その中の800名近い生徒が全国に8箇所あるキャンパスに通っています。 自分は2015年9月に開発を行う部署から教育事業本部に異動してきました。最初はひとりでしたが、3年経った現在では4人の教育従事プログラマーで、N高等学校のプログラミング教育を行っています。 自分がこの3年間で主にやってきたことは、 N予備校の教材制作と生放送授業 SlackやZoomを使った生徒へのメンター活動 N高の通学コースのプログラミング教育の設計 などです。 2018年度の教材制作でいうと、N予備校の「ニコニコ動画再現コース」をリリースしたことがあります。 この「ニコニコ動画再現コース」は、ScalaでJWT認証をす
はじめまして。トリスタアプリ開発セクションのtukiyoです。普段はAndroidアプリの開発を行っています。 このブログの読者の皆さんには、「トリスタ」という名前に聞き覚えがないかもしれませんのでご紹介させていただきますと、株式会社トリスタは『ニコニコ漫画』『読書メーター』など、本にまつわる事業を担うカドカワのグループ会社です。私を含め、メンバーの大半はドワンゴの社員でもあります。 実は先日、トリスタでもブログ「トリスタinside」を始めました。今回はトリスタの紹介と、ブログの宣伝……だけでは物足りないので、こちらのブログにも私が書いた記事を掲載させていただくことになりました。内容はほぼ変わらないので、元記事でお読みになる方はこちらからどうぞ! 本記事では、トリスタで提供しているスマートフォンアプリのうち、『ニコニコ漫画』と『読書メーター』がどのように作られているか概説します。より詳細
次のページ
このページを最初にブックマークしてみませんか?
『Dwango on GitHub』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く