サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
GPT-4o
blog.nnn.dev
はじめに 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(翔泳社) をあらためて読み直しました。 そこでは、スクラムとは以下の特徴があると述べられています。 要求を価値やリスクや必要性を基準にして並べ替えて、その順にプロダクトを作ることで成果を最大化します。 スクラムでは固定の短い時間に区切って作業を進めます。 現在の状況や問題点を常に明らかにします。 定期的に進捗状況や作っているプロダクトで期待されている成果を得られるのか、仕事の進め方に問題はないか
はじめに 問題点 ベンチマークテスト(Sampleコードで実演) 計測方法 パターン1: Identifiableに適合したデータのリスト表示 ベンチマークスコア パターン2: リスト内ボタンの表示 ベンチマークスコア ベンチマーク結果 問題発覚と調査 解決方法 改善とその結果 パターン3: UIViewControllerRepresentableを利用したリスト表示 パターン4: 従来通りのUIKitのUITableViewを利用したリスト ベンチマーク結果 改善の結果 総括 We are hiring! N予備校春の入学無料キャンペーンのお知らせ はじめに こんにちは。N予備校iOSアプリ開発チームです。 以前、N予備校iOSアプリへ SwiftUI を導入するまでの道のりについてという記事を書かせていただきました。今回は導入しSwiftUI化を一部の画面で行った結果、どうなったかを
はじめに 富山大学大学院 修士1年(2022年度現在)の吉川晃太です。 github.com 2022年9月から2023年3月までの7か月間、N予備校 Android向けアプリ改善インターンシップに参加しました。 N予備校とは、2016年にドワンゴからリリースされた、パソコンやスマートフォンから映像授業を受けることができるサービスです。N予備校 Androidアプリは現在、Kotlinと呼ばれる、Androidアプリやサーバーサイドの実装に特に用いられているプログラミング言語で、開発が進められています。 本インターンでは、このアプリのフロントエンドの開発に着手しました。アプリ内の授業コース選択画面の改善や、UIデザインの刷新、新規画面・コンポーネントの作成、採用技術のリファクタリングなどをタスクとして用意していただきました。 私にとって、初めての就業型のインターンシップだったため、始めた当
はじめに 現在、N予備校バックエンドチームでは、現行のRails製アプリケーションからKotlin製の新アプリケーションへ一部移行する計画を始めました。 N予備校サービス構成図 移行の主な対象は、上記の図の紫の部分の 教材管理サービス まわりになります。 移行の目的 今回の移行は、主に次の2つの問題の解決を目指しています。 DBスキーマを含めたモデルの再設計 N予備校はサービスの仕様が十分に固まらないうちから基本設計が開始されたため、必要以上の柔軟性を持つ形で設計されている部分も多く、現在の事業ドメインの知識がモデルで十分に表現されているとは言い難い面があります。 特にコンテンツデータ同士の参照関係については、階層構造の大きな変化1にも対応できるように、多くがActiveRecordのポリモーフィック関連を使って実装され、コードやDBスキーマからデータ構造を読み取るのが非常に難しくなってい
この開発者ブログの運営体制を作ってから2年が経ちました。 2年目には開発者ブログの運営・執筆体制を固めるような施策をいくつか実施しました。 それら施策と、2年目に得られた成果について紹介します。 1年目の取り組みは以前の記事で紹介しています。 基礎的な運営体制は1年目に確立していますので、興味のある方はそちらもご確認ください。 2年目の取り組み 記事の公開予定カレンダー CI環境の整備 「技術ブログ」から「開発者ブログ」に用語を統一 PVなど数値の取得 成果 執筆者の拡大、記事の増加 ストック記事の活用 We are hiring! 2年目の取り組み 2年目には以下のような施策を実施しました。 執筆者の拡大や、それに伴う編集体制を整備しました。 記事の公開予定カレンダー CI環境の整備 「技術ブログ」から「開発者ブログ」に用語を統一 PVなど数値の取得 記事の公開予定カレンダー 記事の公開
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
はじめに 動機 インターンシップ参加までの流れ 期間 就業環境 開発環境 業務内容 メインのタスクへの準備 メインのタスク「未送信解答救済機能の追加」 最後に はじめに 修士1年 (インターンシップ参加当時) の杉水俊輝です。 2022年の10月から12月までの3ヶ月間 N予備校 PCWeb フロントエンドチームの就業型のインターンシップに参加させていただきました。 github.com 動機 応募の動機としては、サマーインターンシップなど数日から数週間のインターンシップに参加する中で、それらのインターンシップでは、インターンシップ用に用意された課題が多く*1、実際に動くサービスに関わりたい、そして、それを通して今の自分のレベルがどの程度なのか (何ができて、何ができないのか) を明確にしたいなどと思っていました。それに加え、普段の Web 開発でフロントエンドの開発をする際に TypeS
この記事は ドワンゴ Advent Calendar 2022 の 21 日目の記事です。 N予備校 Android アプリでは、コードの依存関係を明確にして、ビルドの速度を向上させるためにマルチモジュール構成を採用しています。マルチモジュールを導入した経緯やモジュール構成については以下の記事にまとめていますので、そちらをご覧ください。 blog.nnn.dev マルチモジュールに移行するにあたって、CI 環境の整備に非常に苦労しました。インターネット上には、マルチモジュールのアプリを CI でテストする方法についての情報が少なかったのも大変でした。 この記事では、アプリをマルチモジュールに移行するにあたって CI 環境を変えた経緯をまとめつつ、各 CI 環境でマルチモジュールのテストをする設定ファイルなどを記載します。これからアプリをマルチモジュールに変えていく方々のお役に立てれば幸いで
この記事は、ドワンゴ Advent Calendar 2022の8日目の記事です。 N予備校では、過去の記事でも触れた通りAWS CodeBuildを日常に利用しています。 この記事では、導入した経緯や実際の利用例などについてご紹介できればと思います。 AWS CodeBuildを導入した経緯 開発当初についてはGo製のCIツールであるDroneを利用しており、v0.5からv0.8まで利用していました。 Droneを利用していた際にはたびたび以下のような事象に遭遇しました。 サーバーがなんらかの理由でやたら停止してしまう cacheがよく壊れる エージェント数が十分に確保できておらずビルド開始まで待たされる 構築したインフラ起因での問題も多数ありましたが、開発を進める上で障害にはならないもののやや開発者体験を損なうという、なかなかイマイチな環境の中で開発していたかと思います。 Drone自
2022年度のドワンゴ新卒採用がはじまりました。 ニコニコ、教育、DMV(Dwango Media Village)と3つの事業で新卒を募集しています。 saiyo.dwango.co.jp 教育事業でも引き続き新卒を募集しています。 2022年度は3人の新卒が配属されました(年度によって配属人数や配属チームは異なります)。 この記事では新卒の方向けに、ドワンゴの教育事業について、いくつかの資料を通して紹介します。 教育事業についてインプットした上で、興味をもっていただけるとうれしいです! サービスについて 新卒として入社したら 各チームの様子 フロントエンド Webフロントエンド iOSアプリ Androidアプリ バックエンド フロンティア企画開発 We are hiring! サービスについて www.nnn.ed.nico ドワンゴの教育事業では、「未来の当たり前の教育をつくる」と
はじめに 配属研修の課題について エンジニア新入社員研修の個人課題:「JavaScriptでの開発」 配属研修課題1:「RailsでAPIサーバのみ構築」 配属研修課題2:「Railsでフロントエンドも含めた開発」 作ったアプリケーションの概要 JavaScript・Expressで開発した時との違いに関する感想 letやconstが要らない変数定義 falsyな値の違い ブロックをそのまま変数に代入できない 暗黙のreturn 条件文の後置 フレームワークの機能が豊富 ディレクトリ構造の一貫性 リソースベースルーティング 課題を取り組みながら学んだこと OpenAPIを使ったAPI定義ファイルの作成 N+1問題対策 テストコードに関する考えの変化 おわりに We are hiring! サムネイル画像 はじめに こんにちは。2022年4月に新卒で入社しました教育事業本部サービス開発部バッ
はじめに 導入に向けて検討したこと 流れ 1. UIKit 及び Storyboard をどのように置き換えるのか 2. 書き慣れた MVVM パターンを維持できるのかどうか 3. 既存のプロジェクト構成でもスムーズに導入できるのか 4. アプリのサポートOSが iOS14.0+ だが、 SwiftUI 特有の苦しみは問題なさそうか 5. 本当に開発効率は向上できるのか 導入決定後から本格対応までにやったこと 流れ 1. 画面構成がシンプルで、利用頻度の低い設定画面の SwiftUI 化 2. チーム勉強会の時間を使って一緒に学習 実践 移行計画 成果 おわりに We are hiring! はじめに N予備校 iOS アプリ 開発チームでは、長い間 UIKit & Storyboard & RxSwift & MVVM で開発してきました。 以前から「Storyboard やめたい!」「
こんにちは、N予備校 Android アプリ開発チームの @hiraike32 です。 株式会社ドワンゴは DroidKaigi 2022 の SUPPORTER としてスポンサーになりました。 droidkaigi2022 DroidKaigi はエンジニアが主役の Android カンファレンスで、Android 関連の開発に関わる多くの人々が参加しています。DroidKaigi 2022 は 2022 年 10 月 5 日(水)〜 7 日(金)の 3 日間に渡って開催され、最初の 2 日間は東京ドームシティにてオフラインでも開催されます。 弊社では過去に以下のような形で協賛を行なってきました。 DroidKaigi 2017:POWER SUPPLY SPONSORS(電源スポンサー) DroidKaigi 2019:TECHNICAL SUPPORT FOR NETWORK Dro
技術ブログで公開する記事の品質を安定させ、効率的に執筆できるよう、 CI の導入に着手しました。 技術ブログを継続的に運営する中で、多くのメンバーが執筆に参加しています。 多様な視点の記事を公開できる一方で、技術ブログ全体として一定の品質を担保する必要があります。 人の目でレビューすることはもちろん必要ですが、中でも自動化可能な部分は機械に任せられるように環境整備を進めています。 この記事では、CIの環境や検証内容についてお伝えします。 CIの環境 記事の執筆にあたっては、過去の記事にもある通り一部Google Docsで執筆されている記事を除きGithubのリポジトリでバージョンを管理しています。 Github を利用しているということで CI の選択肢としては Github Actions が真っ先に候補となりますが、今回は AWS CodeBuildを採用しました。 AWS Code
はじめに N予備校品質保証チーム(以下品証チーム)の望月です。 ドワンゴには2022年1月に中途入社しました。 組織が立ち上がってから1年半という品証チームに参画後の半年間で、プロダクト/プロセス品質向上の観点で取り組んだ改善活動をご紹介します。 ※表現に関する補足 この記事では、テストや品質に関連する業務を「QA」と表現しています。 目次 はじめに 目次 参画当初の品証チームの状態 改善活動の前に取り組んだこと STEP1:整理の方針を決める STEP2:課題を洗い出す STEP3:課題をカテゴリごとに分類分けする STEP4:課題改善の取り組み内容と実施効果を整理する STEP5:総合的な判断で課題の優先度を決める STEP6:担当者をアサインし、改善活動を実施する 改善活動の取り組み 1.各クライアントチームへの品証メンバー参画 2.テストデータの整備 3.リグレッションテストのメン
はじめに テストコード一般の考え方 壊れにくいテストを書く 実装した通りに動作することではなく、仕様通りに動作することをテストする テストコードはシンプルにわかりやすく書く 失敗の原因がわかりやすくなるように意識する RSpecの書き方 テストケース名をitの引数で明記する letよりもlet!を使う 通常の変数と同じ方針に基づいてlet!を利用する subjectを使わない 不要なcontextでのネストを避ける matcherを適切に使い分ける factoryのデフォルト値に依存しないテストを書く 参考にしたブログ記事等 付録:RuboCop設定 We are hiring! サムネイル画像 はじめに テストコードを書く習慣も、近年ではかなり一般的なものになってきました。 ドワンゴ教育事業のバックエンドチームでも自発的にテストコードを書く文化は根付いており、実際に計測はしていませんが、
はじめに この記事では、 N予備校で提供している VR 教材を利用した バーチャル学習について、体験のポイント、及びそれを実現するシステム構成と開発の工夫点をお伝えします。 全体を通して、 VR 教材を利用し始めるまでのサポートと、マルチデバイスで VR 教材も通常教材もシームレスに連携した点がポイントです。 これらを体験と開発の両面からお伝えします。 はじめに VR 教材とは 全体のシステム構成 体験のポイント VR学習を利用する2つのユーザー 複雑さを下げるキーポイント (1) VR学習の利用開始 (2) シームレスなVR教材利用 体験実現のための詳細設計 認証・認可 アカウント連携 VirtualCast からの N予備校の利用 シームレスな利用(教材連携)の技術 おわりに We are hiring! VR 教材とは 最初に、N予備校で提供している VR 教材がどのようなものか説明
N予備校 Android アプリ は 2016 年 4 月にリリースされてから執筆時点(2022 年 8 月)まで、6 年以上に渡って開発・運用されてきました。この 6 年間で Android まわりでは新しい技術が続々と登場し、古い技術が次々と非推奨になっていきました。 この記事では、技術の変化が激しかった 6 年間で、Android チームが開発環境の改善に対してどのように取り組んだのかをまとめます。同じく技術の変化と闘っているみなさんの参考になればと思います。 アーキテクチャを整備する(2017 年 2 月 ~ 2021 年 4 月) Kotlin を導入する(2017 年 4 月 ~ 2020 年 9 月) Jetpack Navigation を導入する(2020 年 1 月 ~ 2021 年 4 月) Single Activity にする(2021 年 7 月 ~ 2021
はじめに 昨今Webに限らずあらゆる事業領域において、蓄積されたデータの活用は必要不可欠、やっていて当たり前なものになってきているかと思います。これまでこのブログではあまりそういう話題に触れてこなかったこともあり、本稿では改めてドワンゴ教育サービスにおけるデータの活用に関する取り組みについて、概要レベルにはなりますがご紹介したいと思います。 はじめに N予備校における従来のデータの取り扱い 現在の取り組み 本番環境のデータのBigQueryへの蓄積 データ活用のプロトタイピング そのほかのデータ活用に関連する取り組みや展望 N予備校のアーキテクチャ・パイプラインの検討 分析対象のデータ拡充 データの管理体制 機械学習技術等の活用 おわりに We are hiring! N予備校における従来のデータの取り扱い まず従来から行われているN予備校におけるデータ活用の取り組みについて紹介します。現
はじめに サービス構成 レポジトリ一覧 サーバー側Railsアプリ クライアント側Railsアプリ 開発の流れ 利用ツール swagger-cli committee-rails 不具合1: ファイルの分割 不具合2: $refとnullableの同時使用 json-schema openapiの記法に合わせた機能拡張 openapi-generator-cli (Ruby client) 不具合1: 中途半端な型チェック 不具合2: oneOf/anyOfに非対応 factory_bot 終わりに We are hiring! はじめに 前回の記事では、OpenAPIで新しいウェブAPIを定義する際に、yamlのままで読みやすいようにファイル構成等を工夫した話をしました。 今回はそのAPIスキーマを使って、Railsでスキーマ駆動開発を実現するにあたって利用しているツール類についてお話し
ドワンゴ教育事業Webフロントエンドチームの berlysia です*1。 はじめに この記事では、日本語の縦書きHTMLにおいて、「ある1文字が縦組みのなかで違和感なく縦書きとして表示される」とはどのように成り立っているのか、意図しない表記になりやすい文字とその理由について紹介します。 最後まで読むと、縦書き時の文字の縦横に関する問題をたちどころに分解できるようになるはずです。とりあえずフォントのせいだろうかと疑う日々には、これでおさらばしましょう*2。 はじめに N予備校における日本語縦書きHTML CSS の関連仕様 日本語の一般的な縦書きに設定する うまくいかないことが起こりやすい文字たち うまくいかない文字がうまくいかない理由を理解する 縦書きを考慮した文字の周りの方向の定義 CSS における縦書きでの文字の縦横 upright typesetting sideways type
N予備校はドワンゴのエンジニア新入社員研修でも使われています。 入社される方は得意な技術領域や力量が様々です。 N予備校を活用することで、基礎的な知識を獲得し、後の研修や業務でも活かせるようにしています。 この記事では、ドワンゴのエンジニア新入社員研修の担当者青木からのヒアリングをもとに、N予備校を研修で活用するメリットやポイントについて説明します。 N予備校の活用に限らず、ドワンゴの新入社員研修について興味のある方は青木が記した2021年度 エンジニア新入社員研修のご紹介も併せてご覧ください。 研修でのN予備校の活用 N予備校では、プログラミング未経験の高校生が、IT企業にWebエンジニアとして就職できるレベルになることを目指した教材・カリキュラムを提供しています。 初級者から上級者まで幅広く学ぶことができますので、新入社員のみなさんも自分のレベルに合わせて学習を進めることができます。
はじめに 初めまして。2021年4月に新卒で入社いたしました教育事業本部サービス開発部バックエンドセクションの len です。 今回は教育事業本部の新卒メンバーとして join してから1年で取り組んできた研修についてお話しします。 メンターにサポートいただきながら研修を進めて参りました。メンター視点の記事はこちらになります。 新卒エンジニアのメンターとして1年間取り組んだこと 全社エンジニア新入社員研修 入社してすぐ全業種に向けたビジネスマナー研修や事業説明があり半月経ったあたりでエンジニア向けの研修が6月末まで行われました。 この研修では基本的な技術の取得や学んだ技術を使って個人やチームなどでアプリを作成するといった内容でした。 こちらの研修の1つである基礎研修では、N予備校の教材を使い、web に関する基礎的な技術を学びました。 それと同時に読書会もあり、読んだ技術書の内容をN予備校
はじめに こんにちは。私はN予備校のバックエンド開発に携わっています。 N予備校バックエンドでは2021年度に1名の新卒エンジニアが配属となりました。 ドワンゴの新卒エンジニアはエンジニア研修を受けたあと、配属された部署で個別研修や実際の業務を通じてOJTを受けます。 本記事では、メンターとして2021年度新卒エンジニアが入社してから1年のあいだに行ったフォローアップについてまとめます。 メンティーの len さんが執筆した記事は こちら になります。 新卒エンジニア研修の内容については、別の方がまとめた記事を公開しています。 2021年度 エンジニア新入社員研修のご紹介 ドワンゴ21新卒がフルリモートでの入社から機能をリリースするまで メンティー入社前 メンティーが入社するまでは、パーソナリティの把握に務めました。 パーソナリティを把握しておくことで、苦手な部分をメンターが迅速にサポート
こんにちは。 N予備校の開発チームではこの4月に企画開発チームが発足しました。 この記事では、N予備校での企画開発の紹介と、でN予備校の企画開発エンジニアって何してるの? という1つの例として、私自身がN予備校の企画に関わってきた中での気づきなどをお伝えします! 目次 目次 N予備校の企画開発 次世代N予備校の企画の進め方 企画者としてここ1年で発想を変えたこと 「ユーザー目線で考える」 エンジニアが企画をやる中で意識したこと 「簡易なプロトタイプを作って企画に生かす」 エンジニア && 企画者として考える 「小さく作ってリリースして、どんどん良くしていく」という開発 企画開発していこう! We are hiring! N予備校の企画開発 N予備校は6年前のサービスリリース時からN高等学校/S高等学校を支えるサービスとして展開してきました。 リリースしてからはN高等学校の単位認定授業をN予
一行要約 はじめに Readable OpenAPIとは? 既存ルールの不満点 不満点1: 標準仕様外の分割を行っている 不満点2: ディレクトリ階層が深い 不満点3: 1つのAPI定義を参照する際にたくさんのファイルを参照する必要がある 不満点4: コンポーネントスキーマの同一性が不明瞭 新ルールで工夫した点 工夫1: operationIdと対応したパス定義のファイル名を採用し、フラットなディレクトリ構造を実現した 工夫2: パス定義ファイルに含まれる情報量を増やした 工夫3: 再利用性を重視したcomponent定義 できなかったこと、やらなかったこと、やりたいこと 定義ファイルのhttpメソッドごとの分割ができなかった ルートの定義ファイルにcomponentディレクティブを置かなかった exampleの定義は余力があればやりたい おわりに We are hiring! 脚注 一行
本稿では、Javaと独自フレームワークで構築された現行の教務システムをTypeScriptとNext.jsで構築された次世代教務システムへと移行していく過程で取り組んでいることを紹介していきます。 はじめに こんにちは。N 高等学校 / S 高等学校の教務システム開発チームの邑本です。ドワンゴでは、N予備校のシステムだけでなくN高等学校とS高等学校の教務システムも開発しています。本稿では、今まであまり触れてこられなかったN高、S高の教務システムについてお話しようと思います。 現在、教務システムの開発チームでは、Javaで構築されている現行の教務システムからTypeScript/Next.jsベースの次世代教務システムへの移行を試みています。 現行の教務システムの機能は多岐に渡るため、 既存業務の見直しによる変更がある場合 新規で機能を開発する場合 に限って次世代教務システムで開発し、小さな
はじめに ドワンゴ教育事業 Web フロントエンドチームの berlysia です。 ドワンゴ教育事業が提供するオンライン学習サービス『N予備校』は、この 4 月でリリース 6 周年を迎えました。N 予備校の Web フロントエンドはリリース以来、全面的な書き換えを行い、今も続けています。 この記事では書き換えに伴う N 予備校の Web フロントエンド実装の変遷を説明し、これら書き換えの経験やWebフロントエンドという領域の性質を踏まえて、すべてを書き換え続ける選択をしていることを述べます。 この記事は berlysia が他社様イベント*1にて発表させていただいた話題を元に再構成しています。 speakerdeck.com ※JSConf JP 2021 で発表させていただいた事例とは異なるコードを対象にしています。 はじめに 実装の 5 つの世代 v1 v2 v3 v3(TypeSc
次のページ
このページを最初にブックマークしてみませんか?
『ドワンゴ教育サービス開発者ブログ』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く