N予備校に関するhmiyadoのブックマーク (35)

  • N予備校 iOSアプリのViewState列挙体を使ったSwiftUIの状態管理 - ドワンゴ教育サービス開発者ブログ

    はじめに N予備校 iOSアプリ開発チームに所属しているcoffmarkです。 iOSチームではSwiftUIを使って開発を進めています。 SwiftUI導入までの経緯については、ブログ記事(N予備校iOSアプリへ SwiftUI を導入するまでの道のりについて)で説明しています。 SwiftUI導入を進めていく中で、導入後に改善した点がいくつかあります。 今回はその中でもViewState列挙体を使ったSwiftUIの状態管理についてお話しします。 前提 (プロジェクト構成・SwiftUI実装方針のおさらい) N予備校 iOSアプリチームでは以下のような構成でiOSアプリを開発しています。 詳細はブログ記事(iOSチームではリファレンスレポジトリを運用しています)をご覧ください。 大まかな概要としては下記の通りのプロジェクト構成・SwiftUI実装方針です。 プロジェクト構成 RxSwi

    N予備校 iOSアプリのViewState列挙体を使ったSwiftUIの状態管理 - ドワンゴ教育サービス開発者ブログ
    hmiyado
    hmiyado 2024/07/31
    SwiftUIでの状態管理の際に、画面の状態を管理する列挙体を使うと見通しが良くなるという話です
  • pnpm の node_modules を探検して理解しよう - ドワンゴ教育サービス開発者ブログ

    はじめに こんにちは。ドワンゴ教育事業でエンジニアをしているユーンです。 N予備校アプリケーションやその他複数のプロジェクトで pnpm を採用しました。pnpm とは何か、npm とどう違うのかというのを node_modules の構造を追いながら理解しつつ、教育事業での採用した結果についてお話します。 pnpm とは pnpm とは、npm や yarn とレイヤーを同じくするパッケージマネージャであり、サードパーティのものです。 pnpm.io pnpm は他のツールと比較して高速でありディスク効率が良いと謳っています。 その pnpm の最大の特徴は、 node_modules の構造にあります。 例えば npm では v3 からフラットな node_modules を使うようになっております。yarn もデフォルトでは同様にフラットな node_modules を提供しています

    pnpm の node_modules を探検して理解しよう - ドワンゴ教育サービス開発者ブログ
    hmiyado
    hmiyado 2024/05/10
    yarn v3→pnpmで "CI ではキャッシュは使っていませんが...約 20 分かかっていたところが約 14 分に、 CD では cache がうまく効くことによって 7 分から 1 分へ、短縮ができました。" とのことでうれしいですね 👍
  • N予備校のインフラを Amazon EKS に移行した話 - ドワンゴ教育サービス開発者ブログ

    N予備校のインフラを Amazon EKS に移行した話 はじめまして。ドワンゴの教育事業で SRE エンジニアをしている西永です。 N予備校 では Kubernetes を採用しています。 これまでは Control Planes 含めすべての構成要素を自前で構築し運用していましたが、様々な問題が発生してきたことから Amazon EKS に移行をおこないました。 この記事では、Amazon EKS への移行に取り組んだ事例にについて紹介します。 なぜ移行したのか Kubernetes のバージョンが古い これまでの構成では Kubernetes のバージョンアップが考慮されておらず、Kubernetes を利用した N予備校の提供開始以降バージョンアップができていない状態でした。 そのためバージョン 1.7 を利用し続けていました。 バージョン 1.7 は 2017 年にリリースされ、

    N予備校のインフラを Amazon EKS に移行した話 - ドワンゴ教育サービス開発者ブログ
    hmiyado
    hmiyado 2024/04/17
    7年ものの自前運用 Kubernetes 環境が EKS に移りました 🎉
  • Conventional CommitsとCHANGELOGの自動生成でリリースのユーザ影響をわかりやすくした話 - ドワンゴ教育サービス開発者ブログ

    ドワンゴ教育事業 バックエンドエンジニアのtakuminishです。 現在、私は教材入稿ツールの開発チームに所属しています。 教材入稿ツールは昨年の2023年06月に社内向けに正式リリースされた比較的新しいツールであり、リリース当初はリリースノートに関する運用について検討が進んでいませんでした。 リリースノートは開発メンバーが手動で作成しており、内容も前回リリース後にマージされたPRタイトルとリンクを箇条書きで記載しているだけの簡素なものでした。 また、PRタイトルのフォーマットも存在しなかったため、英語で記載されたタイトルと日語で記載されたタイトルが混在している、ユーザ影響度がタイトルからわからないといった問題もありました。 そこで、教材入稿ツール開発チームではリリースノートの運用として、Conventional Commitsを導入するとともに、conventional-change

    Conventional CommitsとCHANGELOGの自動生成でリリースのユーザ影響をわかりやすくした話 - ドワンゴ教育サービス開発者ブログ
    hmiyado
    hmiyado 2024/03/19
    Squash Merge で Conventional Commits 運用(=PRタイトルでConventional Commits)なところが個人的には興味深かったです 👀
  • Ktorm のクラス設計を読み解いて、DSLを拡張する - ドワンゴ教育サービス開発者ブログ

    はじめに 先日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に習熟していれば少ない認知コストで読

    Ktorm のクラス設計を読み解いて、DSLを拡張する - ドワンゴ教育サービス開発者ブログ
    hmiyado
    hmiyado 2024/03/13
    いざというときライブラリ側に拡張の選択肢がある、拡張しやすいというのは大事ですね〜
  • N予備校エンジニアインターンシップ体験記🌟 - ドワンゴ教育サービス開発者ブログ

    初めに 初めまして、「教育学習サービス『N予備校』サーバーサイドエンジニアインターンシップ」に参加した落合大輔です。 私は大学院の修士1年生の秋頃にインターンシップに応募しました。内容はTypeScriptによるバックエンドの開発です。私の場合は期間は4ヶ月程で1週間あたり16時間程のシフトです。 参加をおすすめする人 ドワンゴのインターンシップは下記の様な人にお勧めです。特に「ものづくりが好き」という人にお勧めです。 ものづくりや技術が好きな人 自分の手でコーディングを行い開発がしたい人 チーム開発のノウハウを学びたい人 開発環境 ドワンゴのインターンシップでは各自にPCが支給されます。OSはMacWindowsが選べて、私はMacを選びました。 技術スタック 言語・フレームワーク TypeScript/NestJS/TypeORM 開発プラットフォーム Docker/JFlog/AW

    N予備校エンジニアインターンシップ体験記🌟 - ドワンゴ教育サービス開発者ブログ
    hmiyado
    hmiyado 2024/02/29
    "1人で技術を学んでいるだけでは知り得ない事がたくさんあります。エンジニアを志す学生には積極的にインターンに参加して様々な学びを得てほしいなと思います。" ドワンゴに限らずインターン参加は良さそうです!
  • @swc/jestで手間をかけずにテストを早くする - ドワンゴ教育サービス開発者ブログ

    こんにちは、ドワンゴ教育事業 Web フロントエンドチームの猪井です。 この記事では babel-jest から @swc/jest に移行することで Jest によるテストが速くなった事例について紹介します。 JavaScript のテストツールは、Vitest のバージョンが 1 を迎えたり Bun が登場したりして、よく使われる Jest 以外にもよさそうな選択肢が増えています。業務の手が少し空いたタイミングでそれらについて調査し実際に試してみたところ、最終的に @swc/jest を使用することで既存のテストを大きく書き換えることなく実行時間を短縮できました。 今回試した JavaScript のテストツール 今回は Vitest、Bun、そして @swc/jest の 3 つを試してみました。 これら以外にも、Node.js 自体に搭載されているテストランナーや、@swc/jes

    @swc/jestで手間をかけずにテストを早くする - ドワンゴ教育サービス開発者ブログ
    hmiyado
    hmiyado 2024/02/26
    テストランナーももう Jest 以外にいろいろ選択肢がでてきていますね 👀
  • レガシーブラウザ向けのビルドオプションを剪定する - ドワンゴ教育サービス開発者ブログ

    この記事はドワンゴ Advent Calendar 2023 の 20 日目の記事です。 はじめに こんにちは。今年の 10 月に教育事業部にフロントエンドエンジニアとして入社したユーンです。 この記事では、 2016 年から新陳代謝を続けている N予備校 Web フロントエンドのコードベースにおいて、 2019 年ぶりにビルドターゲットの設定を見直した話をします。 N予備校 Web フロントが約 8 年近くも新陳代謝を続けてきたあゆみについては、チームの古株である berlysia さんの以下の記事をご覧ください。 blog.nnn.dev はじめに 現状確認と課題設定 具体的な調査の取り組み 結果 今後の方針 終わりに We are hiring! 現状確認と課題設定 話はチーム内で以前から core-js のサイズが大きいと認知されていたことから始まります。(前提知識: @babe

    レガシーブラウザ向けのビルドオプションを剪定する - ドワンゴ教育サービス開発者ブログ
    hmiyado
    hmiyado 2023/12/20
    アプリケーションによっては古いAndroidのWebViewから参照されることもあり、Webフロントには頑張っていただいていますが、環境整備に向けた活動のひとつの紹介です
  • N予備校とスマホゲームでの品質保証の違いについて - ドワンゴ教育サービス開発者ブログ

    1.自己紹介 こんにちは。 ドワンゴ教育事業のN予備校 品質保証チーム(以降「品証」)の栗山です。 冒頭に簡単ではありますが、自己紹介をさせてください。 2023年3月より勤務しています。 前職ではスマホゲームの品証を約5年ほど経験しておりました。 この記事では私がN予備校での品証とスマホゲームでの品証で感じた相違点を紹介したいと思います。 ※前職のゲーム会社での品証に限った内容になります。他のゲーム会社における品証とは異なる場合もあるかと思いますので、ご了承ください。 1.自己紹介 2.一日の業務の流れ N予備校 スマホゲーム 相違点 3.チームの動き方 N予備校 スマホゲーム 相違点 4.リリース時対応について N予備校 スマホゲーム 相違点 5.テストプロセスについて 相違点 6.N予備校品証業務に移って感じたこと N予備校での良さ・課題 スマホゲームでの良さ・課題 7.終わりに W

    N予備校とスマホゲームでの品質保証の違いについて - ドワンゴ教育サービス開発者ブログ
    hmiyado
    hmiyado 2023/12/06
    Web(N予備校)とゲームの異なる業界で品質保証を経験されて見えてきた違いについてです。
  • 遠隔地勤務の働き方 - ドワンゴ教育サービス開発者ブログ

    はじめに こんにちは。N予備校 品質保証チームの鈴木です。私は遠隔地勤務者として東北地方の福島県に居住しながら、2023年2月よりドワンゴの教育事業部で勤務しています。この記事では私の遠隔地勤務の体験を通じて感じたことを紹介したいと思います。 はじめに テレワークが遠隔地勤務の可能性を広げる ドワンゴで働きながら地方に住む ドワンゴの勤務形態 遠隔地勤務の日常 遠隔地勤務での品質保証業務 地方の暮らし 遠隔地勤務を実際にやってみて感じたこと メリット デメリット まとめ We are hiring! テレワークが遠隔地勤務の可能性を広げる 私はドワンゴで勤務する前から福島県に居住しており、地元の企業でQAエンジニアとして勤務していました。コロナ禍で地元の企業でもテレワークが導入され、実際に体験してみるとテレワークでも問題なくQA業務を進められることがわかりました。 テレワークを体験したこ

    遠隔地勤務の働き方 - ドワンゴ教育サービス開発者ブログ
    hmiyado
    hmiyado 2023/10/25
    品質保証チームから遠隔地勤務・テレワークについての記事を書いていただきました。ドワンゴのエンジニア一般としての参考にもなるかと思います 👀
  • 新卒エンジニアがESLintのFlat Config移行と格闘した話 - ドワンゴ教育サービス開発者ブログ

    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月から今の

    新卒エンジニアがESLintのFlat Config移行と格闘した話 - ドワンゴ教育サービス開発者ブログ
    hmiyado
    hmiyado 2023/10/19
    Flat Config 移行をしっかりドキュメントやソースコードを読み込みながら進めていった話です 👀
  • マイクロサービス構成における NestJS での gRPC クライアントの運用戦略 - ドワンゴ教育サービス開発者ブログ

    はじめに はじめまして、バックエンドセクションの yukimochi です。 現在、N予備校ではバックエンドのアプリケーションの移行計画が進んでいます。 その一環で、一部のマイクロサービス間通信についても REST API + OpenAPI の現状から gRPC へと移行することになりました。 私の参画しているプロジェクトである教材入稿ツールでは TypeScript + NestJS を採用しており、結合している他マイクロサービスとの通信でgRPCを利用する際の gRPC クライアントと、そのスキーマ定義を担う proto の運用戦略、実現方法について記します。 proto ファイルと型定義パッケージの取り回しについて考える スキーマ定義である proto をどこに保存するか スキーマ定義である proto をどこに保存しておくかは、 proto のバージョン管理の観点で重要です。今回

    マイクロサービス構成における NestJS での gRPC クライアントの運用戦略 - ドワンゴ教育サービス開発者ブログ
    hmiyado
    hmiyado 2023/10/13
    マイクロサービス間では REST API の利用が多かったですが、 gRPC 利用に際しての戦略についての記事です。マイクロサービスも Rails が多かったところ、 TypeScript + NestJS という点も組織的には新しく取り組んでいる点です。
  • Kotlinのsealed型を使って高機能なenum型を実装する - ドワンゴ教育サービス開発者ブログ

    はじめに シンプルな実装例 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, /**

    Kotlinのsealed型を使って高機能なenum型を実装する - ドワンゴ教育サービス開発者ブログ
    hmiyado
    hmiyado 2023/09/28
    Kotlin の sealed 型と enum class の使い方のバリエーションやメリデメの比較についてです。sealed型は便利ですね〜
  • N予備校iOSアプリへ SwiftUI を導入してみて List編 - ドワンゴ教育サービス開発者ブログ

    はじめに 問題点 ベンチマークテスト(Sampleコードで実演) 計測方法 パターン1: Identifiableに適合したデータのリスト表示 ベンチマークスコア パターン2: リスト内ボタンの表示 ベンチマークスコア ベンチマーク結果 問題発覚と調査 解決方法 改善とその結果 パターン3: UIViewControllerRepresentableを利用したリスト表示 パターン4: 従来通りのUIKitUITableViewを利用したリスト ベンチマーク結果 改善の結果 総括 We are hiring! N予備校春の入学無料キャンペーンのお知らせ はじめに こんにちは。N予備校iOSアプリ開発チームです。 以前、N予備校iOSアプリへ SwiftUI を導入するまでの道のりについてという記事を書かせていただきました。今回は導入しSwiftUI化を一部の画面で行った結果、どうなったかを

    N予備校iOSアプリへ SwiftUI を導入してみて List編 - ドワンゴ教育サービス開発者ブログ
    hmiyado
    hmiyado 2023/04/12
    昨年の SwiftUI 導入 https://blog.nnn.dev/entry/2022/10/26/110000 に引き続き、具体的に導入しているときに直面した List のパフォーマンス問題と対応について書いていただきました
  • N予備校Androidアプリの改善でインターン生が取り組んだこと - ドワンゴ教育サービス開発者ブログ

    はじめに 富山大学大学院 修士1年(2022年度現在)の吉川晃太です。 github.com 2022年9月から2023年3月までの7か月間、N予備校 Android向けアプリ改善インターンシップに参加しました。 N予備校とは、2016年にドワンゴからリリースされた、パソコンやスマートフォンから映像授業を受けることができるサービスです。N予備校 Androidアプリは現在、Kotlinと呼ばれる、Androidアプリやサーバーサイドの実装に特に用いられているプログラミング言語で、開発が進められています。 インターンでは、このアプリのフロントエンドの開発に着手しました。アプリ内の授業コース選択画面の改善や、UIデザインの刷新、新規画面・コンポーネントの作成、採用技術のリファクタリングなどをタスクとして用意していただきました。 私にとって、初めての就業型のインターンシップだったため、始めた当

    N予備校Androidアプリの改善でインターン生が取り組んだこと - ドワンゴ教育サービス開発者ブログ
    hmiyado
    hmiyado 2023/03/31
    インターン生としてAndroidの学習に始まり、最終的には案件実装にもコミットいただきました。 お疲れ様でした&ありがとうございました!
  • N予備校バックエンドでサーバーサイドKotlin移行を始めました - ドワンゴ教育サービス開発者ブログ

    はじめに 現在、N予備校バックエンドチームでは、現行のRails製アプリケーションからKotlin製の新アプリケーションへ一部移行する計画を始めました。 N予備校サービス構成図 移行の主な対象は、上記の図の紫の部分の 教材管理サービス まわりになります。 移行の目的 今回の移行は、主に次の2つの問題の解決を目指しています。 DBスキーマを含めたモデルの再設計 N予備校はサービスの仕様が十分に固まらないうちから基設計が開始されたため、必要以上の柔軟性を持つ形で設計されている部分も多く、現在の事業ドメインの知識がモデルで十分に表現されているとは言い難い面があります。 特にコンテンツデータ同士の参照関係については、階層構造の大きな変化1にも対応できるように、多くがActiveRecordのポリモーフィック関連を使って実装され、コードやDBスキーマからデータ構造を読み取るのが非常に難しくなってい

    N予備校バックエンドでサーバーサイドKotlin移行を始めました - ドワンゴ教育サービス開発者ブログ
    hmiyado
    hmiyado 2023/03/23
    サーバーサイドKotlin移行するにあたっての背景やKotlinの選定理由、実装面でのアーキテクチャやライブラリについてまとまっています。新しく採用ポジションもオープンしています!
  • Androidアプリエンジニアから見たiOSアプリ開発 - ドワンゴ教育サービス開発者ブログ

    N予備校iOSアプリ開発チームのyoppieです。 筆者のN予備校での経歴は Androidアプリ開発チーム 2021年4月 - 2022年3月 iOSアプリ開発チーム 2022年4月 - 現在 です。iOSアプリ開発にチャレンジしたくなり、Androidアプリ開発からiOSアプリ開発に移りましたが、iOSアプリ開発とAndroidアプリ開発(以下I/A)でのさまざまな違いがあり、苦労しました。(iOSアプリ開発チームに移り10ヶ月経ちますが、今も苦労しています...) I/Aでのさまざまな違いがありますが、この記事では筆者が特に違いを感じた点をまとめています。 I/Aどちらかのエンジニアの方がもう一方に移りたて、もしくは移ろうか迷っている方に向けた記事となっています。 IDEに関連した各種バージョン 一般的にXcodeでiOSアプリ開発を行い、Android StudioでAndroid

    Androidアプリエンジニアから見たiOSアプリ開発 - ドワンゴ教育サービス開発者ブログ
    hmiyado
    hmiyado 2023/01/19
    AndroidアプリからiOSアプリ開発に移ったときに苦労したことや違いを感じた点についてまとめていただきました。特にIDE、依存ライブラリの管理、レイアウト作成について説明があります。
  • N予備校の就業型インターンシップに参加してきました! - ドワンゴ教育サービス開発者ブログ

    はじめに 動機 インターンシップ参加までの流れ 期間 就業環境 開発環境 業務内容 メインのタスクへの準備 メインのタスク「未送信解答救済機能の追加」 最後に はじめに 修士1年 (インターンシップ参加当時) の杉水俊輝です。 2022年の10月から12月までの3ヶ月間 N予備校 PCWeb フロントエンドチームの就業型のインターンシップに参加させていただきました。 github.com 動機 応募の動機としては、サマーインターンシップなど数日から数週間のインターンシップに参加する中で、それらのインターンシップでは、インターンシップ用に用意された課題が多く*1、実際に動くサービスに関わりたい、そして、それを通して今の自分のレベルがどの程度なのか (何ができて、何ができないのか) を明確にしたいなどと思っていました。それに加え、普段の Web 開発でフロントエンドの開発をする際に TypeS

    N予備校の就業型インターンシップに参加してきました! - ドワンゴ教育サービス開発者ブログ
    hmiyado
    hmiyado 2022/12/23
    インターン体験記として、インターンの参加動機から環境、実際にやったこと、感想を書いていただきました 🎉 インターンお疲れさまでした!
  • Android アプリをマルチモジュールにしたときのCI環境を整える - ドワンゴ教育サービス開発者ブログ

    この記事は ドワンゴ Advent Calendar 2022 の 21 日目の記事です。 N予備校 Android アプリでは、コードの依存関係を明確にして、ビルドの速度を向上させるためにマルチモジュール構成を採用しています。マルチモジュールを導入した経緯やモジュール構成については以下の記事にまとめていますので、そちらをご覧ください。 blog.nnn.dev マルチモジュールに移行するにあたって、CI 環境の整備に非常に苦労しました。インターネット上には、マルチモジュールのアプリを CI でテストする方法についての情報が少なかったのも大変でした。 この記事では、アプリをマルチモジュールに移行するにあたって CI 環境を変えた経緯をまとめつつ、各 CI 環境でマルチモジュールのテストをする設定ファイルなどを記載します。これからアプリをマルチモジュールに変えていく方々のお役に立てれば幸いで

    Android アプリをマルチモジュールにしたときのCI環境を整える - ドワンゴ教育サービス開発者ブログ
    hmiyado
    hmiyado 2022/12/21
    「マルチモジュール」x「Jetpack Compose のテスト」のCI環境構築について試行錯誤の過程をまとめていただきました 👀
  • N予備校で利用しているAWS CodeBuildについて - ドワンゴ教育サービス開発者ブログ

    この記事は、ドワンゴ Advent Calendar 2022の8日目の記事です。 N予備校では、過去の記事でも触れた通りAWS CodeBuildを日常に利用しています。 この記事では、導入した経緯や実際の利用例などについてご紹介できればと思います。 AWS CodeBuildを導入した経緯 開発当初についてはGo製のCIツールであるDroneを利用しており、v0.5からv0.8まで利用していました。 Droneを利用していた際にはたびたび以下のような事象に遭遇しました。 サーバーがなんらかの理由でやたら停止してしまう cacheがよく壊れる エージェント数が十分に確保できておらずビルド開始まで待たされる 構築したインフラ起因での問題も多数ありましたが、開発を進める上で障害にはならないもののやや開発者体験を損なうという、なかなかイマイチな環境の中で開発していたかと思います。 Drone自

    N予備校で利用しているAWS CodeBuildについて - ドワンゴ教育サービス開発者ブログ
    hmiyado
    hmiyado 2022/12/08
    AWS CodeBuild の導入経緯や利用例についてです 👀