サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
円安とは
blog.nnn.dev
株式会社ドワンゴは2024年5月11日に開催される日本最大級のTypeScriptをテーマとした技術カンファレンス TSKaigi 2024 にプラチナスポンサーとして協賛いたします。 TSKaigi 2024 当日は弊社教育事業エンジニアが複数名参加します。スポンサーブースをいただいていますので、現地で参加される方は是非お気軽にお越しください。 スポンサーブースではN予備校内にあるTypeScriptの教材を触れる他、限定ノベルティもご用意しております! ドワンゴの教育事業とは? 私たちは、未来の「当たり前」の教育をつくるため、生徒・学生や教職員の「学ぶ」「教える」体験の最大化を日々目指しています。 日本発の本格的なオンライン大学「ZEN大学(仮称)(設置認可申請中)」や、2万名を超え日本最大の生徒数であるネットの高校「N高等学校・S高等学校」と連携し、ネットの時代に合わせた教育関連のサ
N予備校のインフラを Amazon EKS に移行した話 はじめまして。ドワンゴの教育事業で SRE エンジニアをしている西永です。 N予備校 では Kubernetes を採用しています。 これまでは Control Planes 含めすべての構成要素を自前で構築し運用していましたが、様々な問題が発生してきたことから Amazon EKS に移行をおこないました。 この記事では、Amazon EKS への移行に取り組んだ事例にについて紹介します。 なぜ移行したのか Kubernetes のバージョンが古い これまでの構成では Kubernetes のバージョンアップが考慮されておらず、Kubernetes を利用した N予備校の提供開始以降バージョンアップができていない状態でした。 そのためバージョン 1.7 を利用し続けていました。 バージョン 1.7 は 2017 年にリリースされ、
ドワンゴ教育事業 バックエンドエンジニアのtakuminishです。 現在、私は教材入稿ツールの開発チームに所属しています。 教材入稿ツールは昨年の2023年06月に社内向けに正式リリースされた比較的新しいツールであり、リリース当初はリリースノートに関する運用について検討が進んでいませんでした。 リリースノートは開発メンバーが手動で作成しており、内容も前回リリース後にマージされたPRタイトルとリンクを箇条書きで記載しているだけの簡素なものでした。 また、PRタイトルのフォーマットも存在しなかったため、英語で記載されたタイトルと日本語で記載されたタイトルが混在している、ユーザ影響度がタイトルからわからないといった問題もありました。 そこで、教材入稿ツール開発チームではリリースノートの運用として、Conventional Commitsを導入するとともに、conventional-change
はじめに 先日Server-Side Kotlin MeetupのLT大会で登壇してきましたので、その内容をブログ記事でも公開します。 テーマはKotlin製のORマッパー、Ktormのクラス構造と機能拡張についてです。 Ktormの紹介 ktorm.org Ktormは、いくつかあるJDBCベースのKotlin製ORマッパーのうちの1つです。 それらの中でもっともメジャーと思われるExposedと比較すると、次のような特長があります。 シンプルな実行モデル 遅延実行やキャッシュなどの仕組みを持たないので、コードを読んで理解しやすく、SQLの実行タイミング等も把握しやすいです。 生SQLに近いDSL select() で検索条件を指定し slice() でカラムを指定する形式のExposedのDSL 1 に比べて、生SQLに近い文法を採用しており、SQLに習熟していれば少ない認知コストで読
初めに 初めまして、「教育学習サービス『N予備校』サーバーサイドエンジニアインターンシップ」に参加した落合大輔です。 私は大学院の修士1年生の秋頃にインターンシップに応募しました。内容はTypeScriptによるバックエンドの開発です。私の場合は期間は4ヶ月程で1週間あたり16時間程のシフトです。 参加をおすすめする人 ドワンゴのインターンシップは下記の様な人にお勧めです。特に「ものづくりが好き」という人にお勧めです。 ものづくりや技術が好きな人 自分の手でコーディングを行い開発がしたい人 チーム開発のノウハウを学びたい人 開発環境 ドワンゴのインターンシップでは各自にPCが支給されます。OSはMacかWindowsが選べて、私はMacを選びました。 技術スタック 言語・フレームワーク TypeScript/NestJS/TypeORM 開発プラットフォーム Docker/JFlog/AW
こんにちは、ドワンゴ教育事業 Web フロントエンドチームの猪井です。 この記事では babel-jest から @swc/jest に移行することで Jest によるテストが速くなった事例について紹介します。 JavaScript のテストツールは、Vitest のバージョンが 1 を迎えたり Bun が登場したりして、よく使われる Jest 以外にもよさそうな選択肢が増えています。業務の手が少し空いたタイミングでそれらについて調査し実際に試してみたところ、最終的に @swc/jest を使用することで既存のテストを大きく書き換えることなく実行時間を短縮できました。 今回試した JavaScript のテストツール 今回は Vitest、Bun、そして @swc/jest の 3 つを試してみました。 これら以外にも、Node.js 自体に搭載されているテストランナーや、@swc/jes
こんにちは。N 予備校 Webフロントエンド開発チームの中村です。 去年の夏頃、記事タイトルの件に絡んで起きていた問題の対応をしたのでその時の話を書きます。1 なおTwitter社の社名及び同社のサービス名は現在ではXとなっていますが、本文内容の当時はまだTwitterだったためこの記事ではTwitterと表記しています。 何が問題か 以前から開発チームに寄せられていた改善の要望として、「iOSのTwitterアプリ上でN予備校のURLをタップした際にN予備校アプリではなくWebページが開いてしまい、ユーザが目的のページに遷移できない」というものがありました。 iOSにはUniversal linksという、ネイティブアプリとURLを紐付け、Webブラウザやネイティブアプリから他のネイティブアプリに遷移できる仕組み(URLをタップするとアプリが開くアレ)があります。しかしながらiOS版Tw
この記事はドワンゴ Advent Calendar 2023 の 22 日目の記事です。 ドワンゴ教育事業Webフロントエンドチームの berlysia です。1 この記事では、オンライン学習サービスN予備校の開発を支えるコーディング規約の考え方に少し触れ、その運用を支えるESLintの活用を紹介します。 この記事の内容は、他社様主催イベントにて発表した内容の再構成です。 speakerdeck.com コーディング規約は実行可能にしたい 教育事業のWebフロントチームには、細かいコーディング規約が書かれた文書は存在しません。コーディング規約はESLintをはじめとする各種ツールによって、自動で検出・修正可能な形になっています。 文書という形でなく、各種ツールのコンフィグファイルとそのコメントとしてまとまっている、と言い換えてもよいかもしれません。ドキュメンテーションは重要な仕事ですが、そ
この記事はドワンゴ Advent Calendar 2023 の 20 日目の記事です。 はじめに こんにちは。今年の 10 月に教育事業本部にフロントエンドエンジニアとして入社したユーンです。 この記事では、 2016 年から新陳代謝を続けている N予備校 Web フロントエンドのコードベースにおいて、 2019 年ぶりにビルドターゲットの設定を見直した話をします。 N予備校 Web フロントが約 8 年近くも新陳代謝を続けてきたあゆみについては、チームの古株である berlysia さんの以下の記事をご覧ください。 blog.nnn.dev はじめに 現状確認と課題設定 具体的な調査の取り組み 結果 今後の方針 終わりに We are hiring! 現状確認と課題設定 話はチーム内で以前から core-js のサイズが大きいと認知されていたことから始まります。(前提知識: @babe
この記事は ドワンゴ Advent Calendar 2023 の16日目の記事です。 新卒採用イベントで会社説明をする機会があり、その中でもタイトルにもさせてもらっている通り「ものづくりが好き」をはじめとするドワンゴのエンジニア文化などの話をさせてもらいました。 会社説明で利用したスライドの抜粋 特にスライド中にも書いてありますが「とりあえず作ってみる」「不便なものはハックする」「あらゆるものをカスタマイズする」は、会社説明の中でもフォーカスしたかったものの時間の関係で話せなかったため、これまで自身で作成したツールの紹介や利用している技術を紹介できればと思います。 AWSマネジメントコンソールへのログインを行うためのCLIツール このツールは、AWS CLIを利用する際に設定するであろう ~/.aws/credentials に保存されているアクセスキー等を用いて、フェデレーショントーク
この記事は ドワンゴ Advent Calendar 2023 の 13 日目の記事です。 自己紹介 こんにちは。バックエンドエンジニアのlenです。 現在私は社内で使用する教材入稿ツールを改修するプロジェクトに参画しており、そこではバックエンドの実装に加え、フロントエンドの実装も携わっています。 ここではなぜフロントエンドの実装をすることになったのか、またそこから得られたことなどを紹介していきます。 フロントエンドの開発をすることになったきっかけ 理由は2つあります。 1つはバックエンドセクション内でフルスタックな人材が求められていたことです。 2021年の時はバックエンドセクションとフロントエンドセクションというセクション分割をしており、バックエンドセクション内でサービスごとにグループが分かれているような状態でした。 外部ツールは良いのですが新しい内部ツールや内部サービスについても考え
この記事は ドワンゴ Advent Calendar 2023 の 10 日目の記事です。 N予備校 Android アプリ開発チームでは、2023 年はアプリの実装および内部改善を活発に行い、内容をまとめた記事も例年より多く公開できました。 この記事では 2023 年に行った開発内容を振り返りながら、得られた知見などをあらためてまとめていきます。 新機能の追加・改善 ユーザーがN予備校アプリを使って、さらに学習しやすくするためにいくつかの機能を追加・改善しました。 2023 年のもっとも大きなアプリの変更は、必修レポートの表示の追加です。これは、N/S高等学校に通う生徒が提出するレポートの状況と締め切りが一覧できるものです。 必須レポート表示の追加 もともとの課題として、生徒が計画的にレポートを進めづらかったため、レポートの提出が締め切りギリギリになったり、場合によっては締め切りに間に合
1.自己紹介 こんにちは。 ドワンゴ教育事業のN予備校 品質保証チーム(以降「品証」)の栗山です。 冒頭に簡単ではありますが、自己紹介をさせてください。 2023年3月より勤務しています。 前職ではスマホゲームの品証を約5年ほど経験しておりました。 この記事では私がN予備校での品証とスマホゲームでの品証で感じた相違点を紹介したいと思います。 ※前職のゲーム会社での品証に限った内容になります。他のゲーム会社における品証とは異なる場合もあるかと思いますので、ご了承ください。 1.自己紹介 2.一日の業務の流れ N予備校 スマホゲーム 相違点 3.チームの動き方 N予備校 スマホゲーム 相違点 4.リリース時対応について N予備校 スマホゲーム 相違点 5.テストプロセスについて 相違点 6.N予備校品証業務に移って感じたこと N予備校での良さ・課題 スマホゲームでの良さ・課題 7.終わりに W
今年もドワンゴの25卒新卒採用がはじまりました。 25卒の方を主なターゲットとしていますが、既卒の方でも一定の条件を満たせば応募可能です。 ニコニコ、教育、DMV(Dwango Media Village)と3つの事業で新卒を募集しています。 saiyo.dwango.co.jp 教育事業でも引き続き新卒を募集しています。 学習サービスN予備校の運営やN高等学校・S高等学校のサポートに加え、ZEN大学(仮称)(設置認可申請中)の開学に向けた開発も進めています。 2023年度は2人の新卒が配属されました(エンジニア職としての採用につき、配属先は入社後の決定となります)。 この記事では新卒の方向けに、ドワンゴの教育事業について、いくつかの資料を通して紹介します。 サービスについて ZEN大学(仮称)(設置認可申請中)開学に向けて 新卒として入社したら 各チームの様子 Webフロントエンド iO
はじめに こんにちは。N予備校 品質保証チームの鈴木です。私は遠隔地勤務者として東北地方の福島県に居住しながら、2023年2月よりドワンゴの教育事業本部で勤務しています。この記事では私の遠隔地勤務の体験を通じて感じたことを紹介したいと思います。 はじめに テレワークが遠隔地勤務の可能性を広げる ドワンゴで働きながら地方に住む ドワンゴの勤務形態 遠隔地勤務の日常 遠隔地勤務での品質保証業務 地方の暮らし 遠隔地勤務を実際にやってみて感じたこと メリット デメリット まとめ We are hiring! テレワークが遠隔地勤務の可能性を広げる 私はドワンゴで勤務する前から福島県に居住しており、地元の企業でQAエンジニアとして勤務していました。コロナ禍で地元の企業でもテレワークが導入され、実際に体験してみるとテレワークでも問題なくQA業務を進められることがわかりました。 テレワークを体験したこ
ESLintのFlat Configへの移行は進んでますでしょうか?試してみたでしょうか? 今回はドワンゴの新卒エンジニアが初仕事として取り組んだ、ESLintのFlat Configへの移行に関して「その方法と嵌ったところの乗り越え方」をお伝えします。 この記事で言及すること Flat Configに書き変えるときに見る資料 ESLintのconfigをFlat Configに移行するとき、configs.recommendedなどのプリセットを用いる場合はFlatCompatを使う eslint-plugin-importを使用してると嵌る どうやって新旧configが同じになっていることを示すのか? ESLintのFlat Configを書くことになりました こんにちは。N予備校 Web フロントエンド開発チームのsokunoです。私は現在4ヶ月に渡る新卒研修を経て、この8月から今の
はじめに はじめまして、バックエンドセクションの yukimochi です。 現在、N予備校ではバックエンドのアプリケーションの移行計画が進んでいます。 その一環で、一部のマイクロサービス間通信についても REST API + OpenAPI の現状から gRPC へと移行することになりました。 私の参画しているプロジェクトである教材入稿ツールでは TypeScript + NestJS を採用しており、結合している他マイクロサービスとの通信でgRPCを利用する際の gRPC クライアントと、そのスキーマ定義を担う proto の運用戦略、実現方法について記します。 proto ファイルと型定義パッケージの取り回しについて考える スキーマ定義である proto をどこに保存するか スキーマ定義である proto をどこに保存しておくかは、 proto のバージョン管理の観点で重要です。今回
はじめに シンプルな実装例 sealed型による実装のメリット enumに階層関係を持たせることができる 個々の値を型として扱える sealed型による実装のデメリット 言語仕様が提供する便利機能を利用できない まとめ We are hiring! はじめに blog.nnn.dev Kotlinのsealed型の使い方を考える記事の第2弾です。 前回の記事では、sealed型を使って論理和型を実装しましたが、今回は通常の enum class よりも機能を拡張したenum型を実装したいと思います。 シンプルな実装例 通常、Kotlinでenum型を使いたい場合は、enum class を使って、次のように実装します。 /** * 学校で教える教科 (抜粋) */ enum class SchoolSubjectEnum { /** 日本史 */ JAPANESE_HISTORY, /**
こんにちは。N予備校 Webフロントエンド開発チームの堀です。 先日 TypeScript@5.2 が正式リリースされました。 TypeScript@5.2 で新しく追加された using Declarations and Explicit Resource Management (using 構文と明示的リソース管理)によって、N予備校のフロントエンドのテストでの本質的でない処理をカプセル化し、コード上のノイズを削減することができました。 この記事では、using 構文の活用方法や利用するまでの手順、調査した using 構文の挙動について紹介します。 N予備校のPCブラウザ向けフロントエンドの紹介 N予備校のPCブラウザ向けUIのテストについて テストの種類 UIコンポーネントの単体テストについて リクエスト内容のテスト 課題: 本質的でない処理が afterEach に漏れ出ている
こんにちは、N予備校 Android アプリ開発チームの @hiraike32 です。 今年も DroidKaigi の開催が近づいてきましたね。開催に先立って DroidKaigi の公式アプリのコードが GitHub で公開されました。 github.com N予備校 Android/iOS アプリ開発チームでも DroidKaigi アプリの開発に貢献すべく、「業務時間を使って 1 日 2 時間まで DroidKaigi アプリの開発をして良い(むしろ推奨)」というルールを設定して開発に取り組みました。 DroidKaigi アプリの開発に関わることで、最新の技術を使用したコードに触れて学習とアウトプットを行い、その知見をN予備校のアプリ開発に活かす、という目的もあります。 N予備校 Android チームでは普段から Jetpack Compose を使用した開発を行なっているため
はじめに ポリモーフィズム形式の実装 ポリモーフィズム形式の実装の利点 ポリモーフィズム形式の実装の欠点 代数的データ型形式の実装 代数的データ型形式の実装の利点 代数的データ型形式の実装の欠点 まとめ We are hiring! はじめに Kotlinのsealedタイプ (sealed class と sealed interface) は、外部モジュールによるクラスの継承やインターフェースの実装 (以降は実装で統一します) を制限することで、継承先クラスの一覧を静的に取得できるようにする機能です。 以下は公式ドキュメントの例ですが、sealedタイプを使うことで log() 関数内の when が全てのとり得るパターンを網羅していることがコンパイル時にチェックされ、冗長な else を省くことができます。 また、Error インターフェースの直接の実装先が増えて when が網羅性
こんにちは、N予備校 iOS アプリ開発チームです。 今年も WWDC 2023 が終わり、iOSDC 2023 の時期ですね! WWDC では新しいプロダクトの Vision Pro はもちろん、Swift だとマクロ、Xcode だと Asset の自動コード生成やローカライズ周りの強化などなど、さまざまなアップデートがあったので、それを受けて iOSDC でどんな発表があるか楽しみです。 N予備校 iOS アプリ開発チームからも、以下のプロポーザルを出させていただきました。 SwiftUIのList以外でのswipeActions実現のためのSwipeableStackの紹介 by yoppie RxSwiftプロジェクトでSwift Concurrencyを利用する by coffmark そんな iOSDC 2023 に、株式会社ドワンゴは今年も動画配信協力のスポンサーとして協賛
この記事では、マネージャーである私(男)が、育休を取得するときに気をつけたことや取り組んだことについて紹介します。 「いなくても業務を円滑に回す」という大方針を軸に、自分なりに段取りを整えました。 ドワンゴでのマネージャー業務の一例として、育休や長期休暇を取得する際のノウハウの一例として、参考になれば幸いです。 育休は1ヶ月間でした。 より長期の休暇を取得する際にはさらに追加で対応が必要なこともあるかもしれませんが、基本的な考え方は変わらないと思います。 なお、育休を取得する際の社内や行政の手続きおよびそのノウハウについては記載しません。 休暇中に業務を円滑に回すための取り組みにフォーカスしてご紹介します。 大方針「いなくても業務が円滑に回るようにする」 マネージャー業務 方針の実行に向けて 現状の洗い出し ひたすら業務内容を記録する 業務内容を分類する 対応方針を検討する 引き継ぎ先の連
はじめに こんにちは。N 予備校 Web フロントエンド開発チームの三橋です。 この記事では Web フロントエンドチームについてご紹介します。 メンバー(実施時点 9 名)にカジュアル面談でよくご質問いただく項目を含めたアンケートに協力してもらいました。 チームメンバーの雰囲気を知りたい チームメンバーがどんな働き方をしているか知りたい という方に読んでいただきたい内容になっています。 概要 新卒/中途 中途採用されたメンバーがこの 1~2 年で増えて、現在では新卒採用の方に比べて中途採用の方が多くなりました。 年齢のボリュームゾーン 30 代が 5 名と最多ですが、年齢に関係なく疑問を投げかけたり提案したりしている気がしますね。 お住まい エンジニアは原則として テレワーク なので、東京都が最多ですが地方にお住まいの方もおられます。 普段のコミュニケーションは Slack でテキストベ
GraphQLのFragment活用テクニック: colocationとmasking こんにちは。N 予備校 Webフロントエンド開発チームの中村です。 現在開発中のZEN CompassではGraphQLを採用しました。我々のチームでは(そして私個人としても)GraphQLを採用したのは初めてだったのですが、実際に設計を進めていくうちに色々と知見を得ることができました。今回はその中でも特に重要だと思った、GraphQLのFragmentという仕様を活用したコンポーネント設計のテクニックについてお話ししようと思います。GraphQLを使用したWebアプリケーションに興味がある方にとって何か参考になりましたら幸いです。 【ZEN Compass】 学習者を導く先生方などが利用するコーチング支援Webサービスです。 LMS(Learning Management System)として学習状況
はじめに Result型の定義とサンプルコード Result型を使わない場合 Result型を使う場合 なぜResult型を使うのか 関数シグネチャで、呼び出し元が処理すべきエラーを伝えることができる 呼び出し元にエラー処理を強制できる 復帰可能なエラーと復帰不可能なエラーを明確に区別できる エラー処理を簡潔に書ける なぜkotlin-resultを使うのか メソッドが豊富に用意されている エラーの型を自由に設定できる Result型を使ったエラーパターン 単純なエラーメッセージを返す 構造化したエラー情報を返す 複数のエラー情報を同時に返す 型による分岐が可能なエラーを返す kotlin-resultの基本メソッド get() / getError() unwrap() / unwrapError() onSuccess() / onFailure() map() / mapError(
はじめに 株式会社ドワンゴと公益財団法人日本財団は包括提携し、2025年4月に新しいオンラインの大学、ZEN大学 (仮称) (設置構想中) の開学を目指しています。 ドワンゴ教育事業では、ZEN大学生のオンライン学生生活を便利に、かつ豊かなものにするため、システムを開発中です。 それに伴い、エンジニアも募集中です。 この記事では、ZEN大学がどのような大学か、開学に向けてどのようなことをしていくか、といったことをご紹介します。 大学が開学すると、N中等部、N高等学校・S高等学校、ZEN大学と10年間にわたる教育を提供することになります。 この新しい挑戦に興味をもっていただけるとうれしいです。 6月6日の発表会でもZEN大学についてお伝えしていますので、よろしければこちらもご覧ください。 www.youtube.com ニコニコ生放送はこちら はじめに ZEN大学とは ZEN大学が目指すもの
はじめに SwiftPM 移行の準備 2021/12 〜 2023/02 (平和) 2023/02 中旬 〜 2023/03 上旬 (問題発生と対応) 一体どんな問題が起きていたのか? 調査結果の詳細 XcodeGen 実行時にクラッシュ Bitrise Xcode & OS 変更 SwiftPM 完全移行に向けて アプリクラッシュ おわりに We are hiring! はじめに N予備校 iOS アプリ 開発チームです。 数ヶ月前までの教育iOSアプリでは、パッケージマネージャに CocoaPods(Ruby製) を使用していました。 環境構築の手間や Apple 標準ではないという点で、Apple 標準のパッケージマネージャである SwiftPM 移行に向けてこつこつと準備をしてきました。 macOS や CocoaPods・Bitrise が関係する問題がきっかけで、2023年2月
はじめに こんにちは、lenです。 現在自分はバックエンドセクションのメンバーとともにある改善プロジェクトに参画しております。 そのプロジェクトでは、スクラムを用いてプロジェクトを進めていますが、初めてのスクラムだったので困ったことや反省点についてお話していきます。 スクラムについて スクラムをするにあたり、弊社のエンジニア研修での課題図書でもある SCRUM BOOT CAMP THE BOOK(翔泳社) をあらためて読み直しました。 そこでは、スクラムとは以下の特徴があると述べられています。 要求を価値やリスクや必要性を基準にして並べ替えて、その順にプロダクトを作ることで成果を最大化します。 スクラムでは固定の短い時間に区切って作業を進めます。 現在の状況や問題点を常に明らかにします。 定期的に進捗状況や作っているプロダクトで期待されている成果を得られるのか、仕事の進め方に問題はないか
次のページ
このページを最初にブックマークしてみませんか?
『ドワンゴ教育サービス開発者ブログ』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く