ドワンゴに関するhmiyadoのブックマーク (37)

  • Zod を使って CSV からの入力データをバリデーションする - ドワンゴ教育サービス開発者ブログ

    こんにちは、バックエンドエンジニアの日下です。 CSV から JSON へ変換するスクリプトを、TypeScript で実装する機会がありました。 今回は、CSV のデータのバリデーションに Zod を使った話をします。 スクリプトの目的 システム間のデータ連携が目的です。 連携元のシステムから CSV 出力されたデータを、連携先のシステムで利用する JSON へ変換します。 また、JSON への変換以外にも以下の要件があります。 CSV のデータをバリデーションする 連携先のシステムで利用できるデータであることを保証するために、バリデーションを実行します。 バリデーション失敗時に、日語のエラーメッセージを表示する スクリプトの実行は業務担当のエンドユーザーが行うため、日語のエラーメッセージを表示します。 CSV の読み込み 元データとなる CSV の読み込みは、csv-parse を

    Zod を使って CSV からの入力データをバリデーションする - ドワンゴ教育サービス開発者ブログ
    hmiyado
    hmiyado 2024/05/22
    Zod でCSVパースだけでなく、関連ツールも利用することでエンドユーザー向けの日本語エラーメッセージもシュッと出せるのは良いですね 👍
  • 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 移行をしっかりドキュメントやソースコードを読み込みながら進めていった話です 👀
  • 初めてのスクラムをやってみての反省点 - ドワンゴ教育サービス開発者ブログ

    はじめに こんにちは、lenです。 現在自分はバックエンドセクションのメンバーとともにある改善プロジェクトに参画しております。 そのプロジェクトでは、スクラムを用いてプロジェクトを進めていますが、初めてのスクラムだったので困ったことや反省点についてお話していきます。 スクラムについて スクラムをするにあたり、弊社のエンジニア研修での課題図書でもある SCRUM BOOT CAMP THE BOOK(翔泳社) をあらためて読み直しました。 そこでは、スクラムとは以下の特徴があると述べられています。 要求を価値やリスクや必要性を基準にして並べ替えて、その順にプロダクトを作ることで成果を最大化します。 スクラムでは固定の短い時間に区切って作業を進めます。 現在の状況や問題点を常に明らかにします。 定期的に進捗状況や作っているプロダクトで期待されている成果を得られるのか、仕事の進め方に問題はないか

    初めてのスクラムをやってみての反省点 - ドワンゴ教育サービス開発者ブログ
    hmiyado
    hmiyado 2023/05/17
    新しいプロジェクトでスクラム開発を取り入れた際の知見について記事がでました。運用ややって良かったこと、反省点についてまとまっています。
  • 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の選定理由、実装面でのアーキテクチャやライブラリについてまとまっています。新しく採用ポジションもオープンしています!
  • 開発者ブログ運営2年目の取り組み - ドワンゴ教育サービス開発者ブログ

    この開発者ブログの運営体制を作ってから2年が経ちました。 2年目には開発者ブログの運営・執筆体制を固めるような施策をいくつか実施しました。 それら施策と、2年目に得られた成果について紹介します。 1年目の取り組みは以前の記事で紹介しています。 基礎的な運営体制は1年目に確立していますので、興味のある方はそちらもご確認ください。 2年目の取り組み 記事の公開予定カレンダー CI環境の整備 「技術ブログ」から「開発者ブログ」に用語を統一 PVなど数値の取得 成果 執筆者の拡大、記事の増加 ストック記事の活用 We are hiring! 2年目の取り組み 2年目には以下のような施策を実施しました。 執筆者の拡大や、それに伴う編集体制を整備しました。 記事の公開予定カレンダー CI環境の整備 「技術ブログ」から「開発者ブログ」に用語を統一 PVなど数値の取得 記事の公開予定カレンダー 記事の公開

    開発者ブログ運営2年目の取り組み - ドワンゴ教育サービス開発者ブログ
    hmiyado
    hmiyado 2023/02/01
    開発者ブログ運営2年目の取り組みや成果について記事にまとめました。執筆者や記事本数が1年目より増えており、着実にアウトプットの文化が広まっていると感じています。よかったら詳細ご覧ください!
  • 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 の導入経緯や利用例についてです 👀