サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
世界禁煙デー
blog.nnn.dev
はじめに ドワンゴ教育事業 Web フロントエンドチームの berlysia です。 ドワンゴ教育事業が提供するオンライン学習サービス『N予備校』は、この 4 月でリリース 6 周年を迎えました。N 予備校の Web フロントエンドはリリース以来、全面的な書き換えを行い、今も続けています。 この記事では書き換えに伴う N 予備校の Web フロントエンド実装の変遷を説明し、これら書き換えの経験やWebフロントエンドという領域の性質を踏まえて、すべてを書き換え続ける選択をしていることを述べます。 この記事は berlysia が他社様イベント*1にて発表させていただいた話題を元に再構成しています。 speakerdeck.com ※JSConf JP 2021 で発表させていただいた事例とは異なるコードを対象にしています。 はじめに 実装の 5 つの世代 v1 v2 v3 v3(TypeSc
こんにちは。N 予備校 Webフロントエンド開発チームの中村です。 TypeScriptを使用しているプロジェクトでコンパイラの設定を変更したら既存のソースコードがコンパイルに通らなくなった……という経験はないでしょうか。 先日あるリポジトリでnoUncheckedIndexedAccessというコンパイラオプション(TypeScript4.1以降で使用可能)を有効化した1ところ、既存ソースコードの200箇所以上がコンパイルエラーになりました。これを全て手作業で直すのは大変ですし、その間にも直さないといけないコードは増えていくかもしれません。 そこでTypeScriptのCompiler APIを使用し、コンパイラから得られるコンパイル時のエラー情報を利用して@ts-expect-error2を挿入するスクリプトを作成しました。その過程と結果を書きましたので、次のような方々の参考になれば幸
はじめに こんにちは。 10月に発表された Appleのアカウント削除に関する審査ガイドライン更新のニュースから3ヶ月経ちました。 皆さんいかがお過ごしでしょうか。 私たち N予備校もこのニュース以来、文字通りの忙しい師走となりました。 それまでは非公開のアカウント削除機能がありユーザーの依頼ベースで対応を行なっておりました。Appleの審査ガイドラインの更新に伴い、これをユーザーがアプリから直接アカウント削除できるように機能提供しました。普段の案件の流れを踏まえながらご紹介します。 おこなったこと iOS だけではなく Android も対応 件のニュースを受けて先ず iOS とバックエンドチームが動き出しました。あれができる、これができないなど話が進むうちアカウント削除機能は iOS だけでなく別クライアントでも対応することになりました。iOS 以外のクライアントでも提供することでユー
昨年末より、N高等学校・S高等学校プロジェクト採用サイトをリニューアルしました。 www.nnn.ed.nico 初公開のものもありますので、コンテンツについて少しばかり紹介させていただきます。 インタビュー 昨年取り組んだ2つの大きなプロジェクトであるN予備校改善(ホーム改善)とVR教材開発のインタビュー記事を公開しています。 N予備校改善(ホーム改善) VR教材開発 N予備校改善(ホーム改善)は、サービスで最初に目にするホーム画面を中心としたサービス体験の改善プロジェクトです。 昨年末にこちらの記事でも紹介させていただきました。 インタビュー記事にはエンジニアとデザイナーが登場しており、プロジェクトの全体像をつかめます。 VR教材開発は、N予備校の教材を Quest2 アプリである Virtual Cast を利用して VR 空間内で学ぶことができるプロジェクトです。 N予備校を開発す
このドワンゴ教育サービス開発者ブログを開設してから2年が経ちました。 特に2021年3月からおよそ1年の間、技術ブログの運用体制を整え、定期的に記事を投稿してきました。 この記事では、技術ブログ運用の背景と現在の運用体制、成果と課題についてまとめます。 背景:教育事業の成長のために 運用:編集部体制の構築 執筆フロー 執筆者のアサインとテーマの決定 記事構成・目次の作成 初稿の作成 完成稿の作成 社内公開と公開日の調整 公開 成果 採用での成果 副次的な効果 課題と今後の展望 We are hiring! 背景:教育事業の成長のために 私達は教育を生業とすることもあり、学習や知見の共有は大事な業務のひとつです。 そのような活動の場のひとつとして技術ブログを開設していましたが、有志の手によって不定期に更新される程度で、効果的に活用できていませんでした。 そのような中で、さらなる事業成長のため
この記事は、ドワンゴ Advent Calendar 2021 の15日目の記事です。 N予備校 Android チームでは、アプリの各画面を少しずつ Jetpack Compose で書き換えています。 developer.android.com この記事では、チームで Compose を学習した過程や、段階的な Compose 導入の方法について、また導入して良かったことと、実装でつまづいたことをまとめます。 これから Compose の導入を考えている方や、具体的な導入事例を知りたい方の参考になれば幸いです。 Composeの学習について アプリに Compose を導入するために、まずはチームでの学習から始めました。学習内容は、Jetpack Compose learning pathway を参考に、各 Google Codelab の学習を進めました。 以下に、学習した Cod
この記事は、ドワンゴもスポンサードしていた JSConf JP 2021 にて、「Web フロントエンドのリプレースを支えるテストの考え方」というタイトルで berlysia がトークした内容をもとに再構成したものです。トークのアーカイブもご覧いただけます。 この記事は ドワンゴ Advent Calendar 2021 の3日目の記事です。 speakerdeck.com 宣伝 『ドワンゴ EdTech Talk』と題した事業説明イベントを 12/8(水) に開催します。 ドワンゴの教育事業で提供するオンライン学習サービス「N予備校」のライブ配信の授業を体験いただきながら、教育事業での取り組みを知っていただくためのイベントです。 最後までご参加いただくと N 予備校の有料会員相当の教材を 3 か月間無料で利用できる ように用意をしております。 Web 開発を学ぶ教材として好評をいただいて
私達ドワンゴの教育事業ではカジュアル面談しています。 よりお気軽にカジュアル面談に申し込みいただくため、どんな人がどんなことを話すのかこの記事でまとめてお伝えします。 カジュアル面談よりさらにカジュアルに話を聞いていただける場として、ドワンゴ EdTech Talk(事業説明会)も開催予定です。 こちらもご興味ある方はぜひご参加ください。 dwango.connpass.com カジュアル面談概要 私達はカジュアル面談を通して、ドワンゴの教育事業について知っていただきたいと考えています。 カジュアル面談に必要な前提などは全くありません。 N高等学校やN予備校といったサービスをご存じない方 そういったサービスは知っているがそれがドワンゴの事業だとは知らなかった方 ドワンゴの教育事業について関係者からより詳細に聞いてみたい方 技術スタックや現場の開発環境が気になる方 転職の参考にしたい方 カジ
こんにちは。N予備校の品質保証グループです。 品質保証グループでは、日々案件ごとの業務に関わっています。今後はより横断的な関わりを強化していき、開発チームと密な連携を進めようとしています。 そこで、今回はリグレッションテストについてお話しようと思います。 リグレッションテストとは? 一般的には、新規機能や既存機能の改修、不具合修正によって、既存機能に意図しない影響が出ていないかを確認する目的のテスト全般のことを指します。 リグレッションテストをしないと、元々問題なかった機能が使えなくなったり、意図しない動きになっていたりと品質低下に繋がります。 横断リグレッションテスト導入前の状況 品質保証グループは2021年1月に立ち上がりました。(チーム立ち上げのブログ詳細はこちら) 以前までは機能ごとの動作確認はもちろんのこと、リグレッションテストも同様に開発チームごとに開発者が自身の手で行っていま
N予備校 Android チームでは、tatsuyafujisaki さん、hiesiea さん、yoshiya12x さんにご協力いただき、画面構成のほとんどを Single Activity に移行しました。 この記事では、Single Activity に移行した背景とつまづいたポイント、Single Activity にしたことによるメリットをまとめます。 Single Activity に移行したきっかけ Single Activity に移行するきっかけは、大きく 2 つありました。 きっかけ1: Jetpack Navigation の登場 N予備校 Android アプリは、2016 年にリリースされてから 5 年に渡って Multi Activity で開発が行われてきました。 N予備校には、以下のような「教材」「生授業」「Q&A」という機能があるため、それぞれ、Mate
N予備校ってどんなサービス? 私達ドワンゴ教育事業本部ではN予備校を開発しています。 この記事では、N予備校がどんな機能やコンテンツを提供しているのか、ひととおり説明します。 N予備校サービス全体像 N予備校は月額1100円(税込)で様々なコンテンツを学ぶことができます。 予備校とサービス名にはついていますが、大学受験以外にもプログラミングなど幅広いジャンルの教材を取り揃えています。 また、アカウントさえあれば高校生に限らず利用可能です。 中学生で高校の内容を学んだり、社会人が学び直しに使ったりできます。 多くの機能が学習をサポートします。 教材:自分のペースで学習を進めることができます 授業:先生の授業を聞きながら、ときに質問したりコメントしたりして理解を深めることができます フォーラム:Q&A形式でわからないことを質問できます VR:VRならではの教材でより理解を深めることができます
こんにちは。N予備校iOSアプリ開発チームです。今日はリファレンスリポジトリをご紹介します。 皆さんはチームの新メンバーをどうやって開発にアサインしてもらっていますか?この悩み、一度は悩まれたことがあるのではないでしょうか。そこで我がチームで登場するのはリファレンスリポジトリです。 どんなリポジトリかご説明しますと、字のごとくリファレンス実装が詰まったリポジトリになります。コード規約、設計手法、ディレクトリ構成などを把握できるよう、メインのリポジトリを模して1,2画面ほどの小さなアプリを実装した簡潔なリポジトリとなっています。新メンバーはチュートリアルとなる課題を与えられ、先ずはこのリポジトリで開発します。他にも大活躍しているリポジトリで今日はこの魅力をお伝えします。 何が良いの? たくさん良いところがあるリファレンスリポジトリですが、まとめるとこの1点につきます。 具体的で解りやすいリフ
N予備校のバックエンドは、2016年のリリース当初からマイクロサービスアーキテクチャを採用しています。 この記事では、N予備校のマイクロサービスアーキテクチャについて、主にアプリケーション側の観点からご紹介していきます! 目次 目次 N予備校の全体構成 なぜマイクロサービスにしたか? 採用しているマイクロサービスのデザインパターン Decomposition/サービスの分割 Data management/データ管理 External API/外部API, Orchestration/オーケストレーション Communication/コミュニケーション Deployment/デプロイ, Service discovery/サービスディスカバリ 利用しているフレームワーク/サービス マイクロサービスの運用の難しさと今後の展望 課題: 責務の分割へのハードル 今後の改善方針 We are hi
現在、ドワンゴ教育事業では品質保証チーム(以下品証チーム)を立ち上げている最中です。 それに伴い、品質保証エンジニアの採用 もオープンしています。 この記事では募集の背景と目指しているところをお伝えします。 また、立ち上げの最初期、2021年1月から参画いただいている2名のメンバーに一問一答形式でインタビューもしてみました。 品証チーム立ち上げの背景 品証チームを立ち上げるに至ったのは、ドワンゴ教育事業が担う責任と品質保証の体制がアンバランスになってきたからです。 ドワンゴ教育事業では、2016年4月にN予備校をリリースしました。 リリースから5年経ち、大きく環境が変化しました。 ユーザー数の増加 直近では2020年3月に実施したN予備校の無料開放キャンペーンをきっかけに、大きくユーザー数が増加しました。 また、N高等学校・S高等学校の生徒数も年々増加しており、19,000名を超えました。
ドワンゴの教育事業ではエンジニアを採用中です! 私達は「未来の当たり前の教育をつくる」ため、N予備校やN高等学校・S高等学校を支える教育システムの開発に日々取り組んでいます。 この記事を通じて、教育事業に興味をもっていただいたり話をきいてみたりするきっかけになったりしたらうれしいです。 順番に、ドワンゴの教育事業についてお話させていただきます。 ドワンゴの教育事業:そもそも何をやっているのか 採用の背景:なぜ今なのか 働く環境:どんな会社なのか 面談・応募の方法:コンタクトをとるにはどうすればいいか ドワンゴの教育事業 ドワンゴの教育事業 ドワンゴの教育事業では、大きく2つのアプリケーションの開発・保守・運用に携わっています。 N予備校と角川ドワンゴ学園の教務システム(N高等学校・S高等学校の生徒の入学状態や成績を管理するシステム)です。 教務システムはもちろんのこと、N予備校も角川ドワン
こんにちは。N 予備校 Web フロントエンド開発チームの berlysia です。 N 予備校の Web フロントエンド開発に、 Storycap + reg-suit による Visual Regression Testing を導入しました。設定の工夫から、設定中や運用してしばらくの間に実際に発生したハマりどころを挙げ、簡単に注意点や対処例を紹介します。 背景 N予備校について N 予備校はドワンゴが提供するオンライン学習サービスです。大学受験対策、プログラミング、Webデザイン、機械学習など多様なコースがあります。オンラインでの利用に合わせた教材や、講師が生放送で行う授業、受講者同士でも質問し教えあえるフォーラムを備えています。 www.nnn.ed.nico 周辺状況 N 予備校の Web フロントエンド開発とそれを取り巻く状況には、次のような特徴があります。 React による
この記事は、ドワンゴアドベントカレンダー2020の10日目の記事です。 qiita.com はじめに ベルリシア(@berlysia) という名前で活動しています。Webが好きです。ドワンゴでは、N予備校をはじめとする教育事業のWebフロントエンド開発をしています。 この記事では、Webフロントエンドチームの実際の開発で用いた、TypeScript Compiler APIを使っての型を中心とした実装の自動生成事例を紹介します。考察パートが中心で、コードはほぼ出てきません。 状況説明 管理画面の開発です。検索と結果一覧とCRUD操作が中心で、多くの画面が定型的な実装です。画面数が多いため、いかにこうした定型的な画面を効率よく開発して複雑なところに注力するかが、この開発を成功させるカギとなります。また、人員的にもある程度の並列性を確保している状態です。 APIはOpenAPIで仕様が提供され
この記事は、ドワンゴ Advent Calendar 2020の4日目の記事です。 N予備校Androidチームでは、およそ2年かけて、Javaで書かれたコードのほとんどをKotlinに書き換えました。この記事では、コードをKotlinに書き換える上で必要だったことをまとめていきます。 Kotlin化に技術はそこまで必要ではない そもそもKotlin化をすることにそこまでの技術力は必要ないです。JavaとKotlinの互換性が高いので、Kotlin化によってコードが壊れることは少ないですし、以下のように文法にも大きな変化はないので、読めないコードが生まれることもありません。 Javaで作成したFragment public class SimpleFragment extends Fragment { @Override public View onCreateView(LayoutInf
N予備校Androidチームでは、Unit Testに使用しているMockライブラリをMockitoからmockito-kotlinに移行しました。 この記事では、ライブラリを移行した経緯、mockito-kotlinを選定した理由と移行して得られたメリットについて書きます。 Mockライブラリを移行した背景 私たちのチームでは積極的にコードのKotlin化を進めていて、2020年6月現在で約95%のコードがKotlinで書かれています。テストファイルだけを見れば、100%Kotlin化が完了している状態です。 その中でKotlinとの相性がよくないライブラリはとても書きにくくなり、その筆頭がMockitoでした。 例えばMockitoではモックしたライブラリからの返り値を設定する場合には"when"を使用しますが、Kotlinでは"when"は予約語なのでバッククオート(`)で囲わなけれ
この記事は 『ドワンゴ Advent Calendar 2019』 の 25日目 の記事です。 はじめに Kernel#` について お題:HTMLを組み立てるDSL 実際に動く ` を使ったHTMLのDSLの例 まとめ おまけ はじめに こんにちは、 Ruたん( @ru_shalm )だよ! ドワンゴでは、毎週火曜日に有志による社内Rubyの会「KBKZ.rb」 1 を開催しています。 この会は、決まった何かをしないといけないとか、特定のチームの人しか参加できないと言ったものではなく、最近のRubyの話や、業務のRubyで困ったときの相談など、話をしたい人が自由にRubyに関する技術交流ができる会として開催されています。 例えば以下のような話をしたりします。 こういう gem 使ってみようと思うんだけど何か知見ある? こういうことを実現したいんだけど、いい感じの実装方法あるかなぁ? パイ
ドワンゴアドベントカレンダー2019の24日目です qiita.com こんにちは、@tsuwatch です。主にRubyを書きます。今はN予備校、ニコニコQをやっていて、昔はニコナレもやってました クリスマスイブですね。年末にニコ生に耽るのが楽しみです 早速ですが今回は、エンジニアチームのナレッジ共有と改善ということで、N予備校のバックエンドチームで勉強会を開催しているのですが、開催してよかったことなどを書こうと思います 勉強会 現在N予備校のバックエンド開発チームでは、1ヶ月に1度の頻度で業務内で勉強会を実施しています やることになった背景としては、やはりチームもサービスも日々大きくなっていっており、もっとコミュニケーションを取っていれば…情報共有していれば…ということも増えてきます 業務をしているなかで発見したプロダクトや技術のいいナレッジやプラクティスなどを共有することで、 いいプ
この記事は 第二のドワンゴ Advent Calendar 2019 の20日目の記事です。 qiita.com 投稿が遅くなりました。 「Kubernetesのカスタムコントローラーを作ってみた」的な記事を書きたかったのですが、作ってる際にハマったclient-goでのラベルセレクターの扱いについて書いていこうかと思います。 ラベルセレクターとは kubernetes.io ラベルはユニーク性を提供しません。通常、多くのオブジェクトが同じラベルを保持することを想定します。 ラベルセレクター を介して、クライアントとユーザーはオブジェクトのセットを指定できます。ラベルセレクターはKubernetesにおいてコアなグルーピング機能となります。 Podをスケジュールする際にNodeを決定する nodeSlector もラベルセレクターの一種で、ラベルを持つノードからこの nodeSelecto
この記事は 第二のドワンゴ Advent Calendar 2019 の19日目の記事です。 qiita.com 誰 naari3です。 ドワンゴで N予備校 のバックエンド開発をやっています。 概要 Rails 5.0 から Rails 5.1 にアップデートする対応の最中に遭遇した現象を紹介します。 依存しているgem同士の相性が悪かった問題がRailsのアップデートによって解決されました。 内容的にはただのコードリーディングになってしまいますが、面白かったので書き起こすことにしました。 Activerecord-Import とは github.com ActiveRecord でバルクインサートをするためのgemです。 ActiveRecord::Base.import (以下 AR.import と記述します) が生えます。このメソッドにセーブしていないレコードの配列を渡す等する
2024-05-17 TSKaigi 2024 参加レポート バックエンドエンジニアの松尾です。 2024 年 5 月 11 日に開催された日本最大級の TypeScript をテーマとした技術カンファレンス TSKaigi 2024 に参加しました。 本記事では弊社からの登壇内容やスポンサーブースの様子をお伝えします。 登壇内容まとめ 弊… 2024-05-10 pnpm の node_modules を探検して理解しよう Webフロントエンド はじめに こんにちは。ドワンゴ教育事業でエンジニアをしているユーンです。 N予備校アプリケーションやその他複数のプロジェクトで pnpm を採用しました。pnpm とは何か、npm とどう違うのかというのを node_modules の構造を追いながら理解しつつ、教育事… 2024-04-25 株式会社ドワンゴは TSKaigi 2024 をスポ
この記事はドワンゴアドベントカレンダー2019の3日目です。 qiita.com TL;DR リファクタリング前の実装をESLintで指摘しよう disabledコメントで黙らせて、リファクタリング待ちのマークにしよう 指摘するためのルールにちょうどいいものがなければその場で作ろう 誰 ベルリシア(@berlysia)という名前で活動しています。Webフロントエンドを少々やっています。ドワンゴでは N予備校 のWebフロントエンド開発と、 N Air の開発を兼任しています。 何の話 今回は、N予備校のWebフロントエンド開発でも実際に活用している、ESLintを活用した漸進的(=少しずつ進めていく)リファクタリング術を紹介します。 リファクタリングしたいことって、たくさんありますよね。一瞬で終わるものなら良いですが、手のかかりそうなことも少なくないでしょう。日々の開発も進めなければいけな
このページを最初にブックマークしてみませんか?
『ドワンゴ教育サービス開発者ブログ』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く