サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
CES 2025
blog.studysapuri.jp
こんにちは。@chaspyです。『スタディサプリ 小学・中学・高校講座(以下、スタディサプリ小中高)』の開発部長をしています。この記事はスタディサプリProduct Team Advent Calendar 2024の25日目の記事です。 まずはじめに、このアドベントカレンダーを執筆してくださった皆さん、そして運営をしていただいたEngieering Office Team*1の皆さん、レビューいただいた広報関係者の皆さん、本当にありがとうございました。はじめての取り組み、かつ急に決まったにも関わらず、無事全ての枠が埋まり、公開できたことを嬉しく思います。この場を借りてお礼申し上げます。 本稿では、10月頃に社内で私が発表させていただいた「開発組織が事業貢献するには」という話を中心に、生成AIの活用や今後のプロダクト開発の展望など話を入れながら今年の締めくくりにできたらと思います。 開発組
こんにちは。スタディサプリ小学・中学講座の Engineering Manager をしている @ywada526 です。 今回は、現在時刻に依存する機能の動作確認コストを下げる基盤について紹介します。この基盤は、社内ではコード上の名前をとって「Time Injection」という愛称 1 で呼ばれています。この記事内でも Time Injection という名前を使って説明します。 みなさんは、現在時刻に依存する機能の動作確認や品質保証はどのように行なっていますか。「時刻を固定した環境を用意する」「データを弄る」「ユニットテストで担保するから動作確認はしない」「コードをじっと見つめて問題ないと言い切る 2」など色々あると思います。これまで、スタディサプリ小学・中学講座でも同様の手段で動作確認を行なってきましたが、動作確認コストが課題であったため、Time Injection を導入するこ
はじめに こんにちは、スタディサプリのプロダクト基盤...その中でも特に動画基盤の開発を行っている @highwide です。 これは スタディサプリProduct Team Advent Calendar 2024 16日目の記事です。 今日は動画基盤チームで利用しているFastlyの構成や、我々がハマってしまった落とし穴について書きたいと思います。 これは自分で掘った穴にハマっている長男です 動画基盤におけるFastlyの使い方 スタディサプリでは、動画の配信はFastlyを通じてHLS(HTTP Live Streaming)*1によって行っています。 HLSでは、動画再生のために必要なファイルを列挙したマニフェストファイル(m3u8)と、動画コンテンツそのものであるセグメントファイルの組み合わせによって動画の視聴を実現します。 スタディサプリでは、学習コンテンツに紐づく動画のメタデ
スタディサプリでソフトウェアエンジニアやエンジニアリングマネージャをやっている @pankona です。 Go 1.24 でツールのバージョン管理が便利になりそうという話をします。 (Go 1.23 現在) go install という便利なコマンドがある Go 1.24 の話をする前に、go install というコマンドの現状について簡単に触れておきます。 Go で書かれたツールのうち、所定の条件を満たすものは go install コマンドでインストールすることができます。たとえば goimports であれば、 go install golang.org/x/tools/cmd/goimports@latest というコマンドを実行することで我々のPCにインストールされ、使うことができるようになります。たいへん簡単で便利です。 インストールするツールのバージョンを指定したい場合はど
こんにちは。SRE の @int128 です。 スタディサプリのプロダクト開発では GitHub Actions を積極的に導入しています。本稿では、日常の風景に溶け込んでいる GitHub Actions を紹介します。 プロダクトの開発運用を支える GitHub Actions リポジトリとオーナーシップ 我々は monorepo を採用しており、すべてのマイクロサービスを同じリポジトリで管理しています。リポジトリのディレクトリ構成は下図のようになっています。 . ├── .github/workflows/ │ ├── マイクロサービス--test.yaml │ ├── マイクロサービス--deploy.yaml │ ├── ... │ └── reusable--横断的関心事.yaml ├── マイクロサービス/ │ ├── README.md │ ├── プロダクションコード..
こんにちは。スタディサプリの小中新規開発チームで Web エンジニアをしている @YutaUra です。 昨今の JavaScript を利用する開発では source maps の存在が欠かせません。今回の記事では、私たちが直面した source maps が壊れてしまう場面と、 source maps を壊さないために取り組んでいることについて話したいと思います。 source maps とは source maps に関しては web.dev の What are source maps? がとてもわかりやすいと思います。 簡単に説明をすると、 JavaScript(TypeScript, JSX 含む) を利用する開発ではトランスパイルやバンドルなどによって、元のファイルとは異なる JavaScript に変換して実行させることがしばしばあります。その際に、変換後のファイルと変換前
はじめに こんにちは! 私は教育支援小中高プロダクト開発部に所属し、スタディサプリの小中学生向けサービスの開発・運用を担当しています。 今回は、GitHub Actions で異なる Workflow 間で Artifact をやり取りする方法について解説します。 業務の中で、異なる Workflow 間での Artifact のやり取りが必要な場面があり、少々手間がかかりました。 Artifact とは? まず、Artifact とは GitHub Actions における実行結果のファイルやデータのことを指します。 Workflow が実行されると、生成されたビルド結果やテストレポート、ログファイルなどが保存されることがありますが、これらを他のジョブや Workflow に渡すために保存したものが「Artifact」です。 例えば、ビルド結果のバイナリといった Workflow の成果
はじめに こんにちは。スタディサプリでプロダクトプラットフォームの開発を行っている @highwide です。 この度、スタディサプリの開発メンバーで技術評論社様の「Software Design 2024年9月号」の第一特集「実例から学ぶ!GraphQLでアプリケーション開発 現場における使いこなし方を徹底チェック」を執筆しましたので、紹介させていただきます。 gihyo.jp 記事の内容について 全5章の構成で、下記のような章立てとなっています。 第1章「GraphQLとは - 利点・注意点を整理して輪郭をつかむ」(@ywada526) 第2章「GraphQL導入 - クエリを書いてデータ取得を試してみよう」(@YutaUra) 第3章「サーバサイドの実装 - TypeScript+Apollo Serverでサーバを構築する」(@y-kaanai) 第4章「クライアントアプリケーショ
こんにちは。@chaspyです。 先日こちらのイベントで登壇してきました。 findy.connpass.com 発表資料はこちらです。 概要については以下の @aoi1 さんの以下のブログも参照ください。 blog.studysapuri.jp 内容は資料を見ていただきたいですが、ポイントとしては以下になります。 基本的には検索システムと捉えている AI Search がクエリの生成と検索結果から回答生成を行っている そのため、E2E で評価しないと実際のアプリと同様の回答が得られない 若干高コストにはなるが、E2E で簡易的はリグレッションテストを行っている とにかく素早くフィードバックサイクルを回すことが重要(ソフトウェア開発と同じ) ユーザに使ってもらい、評価する、自分でテストを回して、修正する、を繰り返す 評価手法にこだわるよりは改善を繰り返す方が大事 また、アーキテクチャの補足
はじめに スタディサプリ小学・中学講座を開発している Android エンジニアの @maxfie1d です。 スタディサプリ小学・中学講座ではデザイナーがFigmaで作成したデザインデータをもとにエンジニアがUIのコードを書いています。 UIのコードを書くことはとてもクリエイティブで楽しい作業ですが、一方でUIにたくさんあるプロパティを読み取りながらコードに反映するのはそれなりに時間がかかり面倒でもあります。 この面倒な「デザインからコードを起こす作業」を効率化できないかどうかを考え、Figma の Code Connect と Code Generation APIを導入したのでご紹介します。 デザインからコードを起こす作業の課題 デザインからコードを起こす作業の課題について具体例をもとに説明します。 例えば小学講座で利用しているMainButtonコンポーネントには Size Sty
こんにちは。スタディサプリのQAチームです。 今回のBlogではスタディサプリで実施している自動化テストの一部の取り組みについて紹介させていただきます。 なお、スタディサプリQAチームの特性を活かし、本記事については日英中3言語で記載します。より多くのオーディエンスに読んで頂ければ嬉しいです。 自動化する動機 まず、なぜ自動化テストを導入するのでしょうか。 1. 新規機能が追加される度に、既存機能への影響を確認するための回帰テストをしなければなりません。 2. 繰り返し同じテストを手動実行することにより、テストコストが増加します。 3. 人間が実施すると、人為的ミスによる不具合の検出漏れが発生してしまう可能性が否定できません。 そのため、品質を担保した上でより早くリリースすることを目的とし自動化を導入しました。 現在の開発およびテストフロー QAが回帰テストの自動化テストスクリプトをGit
RAGを使った社内ドキュメント検索Botの構築 こんにちは!スタディサプリのSREをしている@_a0iです。みなさん、生成AI使っていますか〜!? ChatGPT, Graffer AI Studio, Microsoft Copilotなど企業で使える生成AIはさまざまだと思います。 しかし、仕事で生成AIを使う際にこれらでは物足りないと思うことはありませんか?一般的な回答ではなく、仕事に特化した回答を生成してほしい、そう思ったことはないでしょうか。 今回Retrieval-Augmented Generation(通称RAG)を使って社内のドキュメントを自然言語で検索できるSlack botを作ってみました。この記事ではそのプロジェクトの背景、システム構成、工夫ポイント、効果と課題について紹介します。 RAGを使った社内ドキュメント検索Botの構築 背景 RAGとは システム構成 詳細
こんにちは、モバイルアプリエンジニアの @mtbhiro です。現在はスタディサプリ for SCHOOL(以下 forSCHOOL )1というプロダクトのモバイルアプリ開発を行っています。 Flutter による forSCHOOL アプリのフルリプレースプロジェクトを、2023年8月に Android アプリを、2023年12月に iOS アプリをリリースすることで完遂しました! この記事ではどのような背景や目的でリプレースを行うことになったのか、どのようなプロジェクト管理を試みたのか、そして最終的にどのような結果が得られたのかについて紹介します。 forSCHOOL アプリについて 開発チームが抱えていた課題 開発リソースの確保が困難 プラットフォーム間の仕様差分によるコスト Flutter導入にあたって アプリの特徴とFlutterの制約 開発メンバーと会社体制 新規開発やリスクを
こんにちは。スタディサプリの小中新規開発チームで Web エンジニアをしている @YutaUra です。 去年の4月に新卒で入社をしまして約 1 年が経ちました。インターン生時代にもブログを書いているのでご興味あれば合わせてご覧ください。 GraphQL と Persisted Query スタディサプリ小中講座ではデータ通信に GraphQL を採用しています。 GraphQL を利用することで、クライアントはスキーマに定義された範囲で自由にデータを取得することができます。 query GetUser { user { name age } } また、 GraphQL はデータのグラフ構造に基づいて関連する複数のデータを一度に取得することができます。 query GetUser { user { name age posts { title content } } } GraphQL の
スタディサプリ小学・中学講座を開発している Android エンジニアの @maxfie1d と @omtians9425 です。 2024年2月26日にスタディサプリ小学・中学講座をAmazonアプリストアにて配信を開始致しました。 すなわち今後は Fire タブレット においてもスタディサプリ小学・中学講座をお使いいただくことができます!本記事では Amazon アプリストアでの配信にあたり必要な開発や Tips についてお届けします。 学習を始める方におすすめの端末をご紹介|スタディサプリ Fire タブレット、Amazon アプリストアとは Fire タブレットは Amazon から発売されているタブレットで、代表的な Fire HD 10 などに加えてキッズモデルもラインナップされています。 OS には Fire OS が採用されています。Android をベースにした OS で
こんにちは。SREのkyontanです。Rubyが大好きなのでRubyの話をします。ちなみにリクルートはRubyKaigi 2024へGold Sponsorとして協賛しています! *1。ぜひ沖縄でお会いしましょう。 これはあるアプリケーションのメモリ消費量を示すグラフなのですが、まさかgemを入れ替えるだけでこんなに嬉しい変化が見られるとは思っていませんでした。今日はそんなgemの話をします。 話は遡って2023年4月のある日、インターネットを眺めていたところ、ShopifyがpitchforkというOSSを公開したという情報が目に留まりました。 調べてみると、どうやら著名なRackサーバー実装の1つであるunicornの派生版であり、メモリ使用量の削減に特化しているらしいのです。 github.com これはスタディサプリ小中高のあのリソースドカ食いマイクロサービス第一位である api
こんにちは、@chaspyです。プロダクト開発部の部長をしています。 スタディサプリ小中高の開発組織では、Engineering Manager (以降 EM と記す) という役割があります。*1 その役割は、エンジニアリングマネージャ/プロダクトマネージャのための知識体系と読書ガイド を引用させてもらうと、People Management + Technology Management を主に担ってもらっています。*2 ありがたいことに、ここ数年で新たに EM にチャレンジしてもらえる機会が増えました。本稿ではそんな EM の活躍をサポートするオンボーディングの仕組みについて説明します。 メンバーのオンボーディングとの違い 任用直後にグレード設定という重要な仕事がある (主に人事の内容は)秘匿された情報が多く、引き継ぎの重要性が高い 新任 EM を迎える絶対数が(相対的に)少ない EM
こんにちは。@chaspy です。プロダクト開発部の技術戦略グループのマネージャをしています。 技術戦略グループでは、日頃開発する上での課題の投げ込みや議論、解決するための計画をボトムアップで行っています。技術戦略グループの活動については過去のアウトプットもご覧ください。 blog.studysapuri.jp また、本稿のテーマである、組織やシステムの状況を把握するための Fact 収集については技術戦略 DevOps WG が担当しています。以前発表した資料もご覧ください。 このように、技術戦略グループではエンジニア1人1人が課題だと思うことを表明、宣言し、その課題をトリアージすること、および課題を評価するための Fact の発見・提供を行う仕組みが組織としてボトムアップで行える状態になっています。一方、開発部長として、事業戦略と結びつける形で技術戦略を策定する際には、現場のエンジニア
スタディサプリでエンジニアリングマネージャー等をしている @pankona です。 スタディサプリ (小中高、English) では GitHub Copilot for Business を使っています。本稿では、GitHub Copilot for Business を導入した背景と、導入後の活用方法について紹介します。 GitHub Copilot for Business とは GitHub Copilot 公式サイト: https://github.com/features/copilot もはや説明不要かもしれませんが、GitHub Copilot はいわゆる AI プログラミングアシスタントです。ソースコードやドキュメントを書いているときに、前後の文脈を考慮してコードを補完してくれる機能です。 個人向けのプランと企業向けのプランが存在し、企業向けのプランは GitHub Co
この記事は Enginnering Manager Advent Calendar その2の1日目の記事です。(大遅刻しました) こんにちは。@chaspy です。10月からスタディサプリ小中高*1プロダクト開発部の部長をしています。 本記事では、我々の組織で取り組んでいる技術戦略の現状と今後についてお伝えします。 技術戦略とは何か スタディサプリ小中高の技術戦略 開発比率適正化 課題発見と改善サイクルの確立 直近の取り組み ガイドラインの策定 マイクロサービスの命名 今後追加が予定されているもの monolith の方針検討 共有データベースに対する Model 層の管理方針 api endpoint ごとのオーナーシップ策定 技術戦略グループとして実現したいこと おわりに 技術戦略とは何か ざっくりいうと、事業計画に対して、技術投資をどこにするのか、しないか、です。"技術"投資と言って
最終更新日: 2024年05月07日(火) 1. ご挨拶 2. 本記事執筆のモチベーション 3. ワークショップを通じて得たフィードバック 3-1. Pains -過去抱えた/現在進行形で抱えている辛み- 3-2. Approaches/Solutions -Pains を解消するために取った方策や導き出した解決策- 3-2-1. えいやで場所を決め打ちしてしまう(e.g., GitHub Wiki + Google docs しか使わない) 3-2-2. 個人的に、2023/12/05時点で〜みたいな書き方を心がけている 3-3. Tips -効果的な手法- 4. オーディエンスからの反響 4-1. 気づきや学び・NEXT ACTIONS 4-2. プレゼンター(@hayat01sh1da)へのフィードバック 4-3. Slack での反応 5. おわりに 1. ご挨拶 初投稿となります
スタディサプリにおけるKarpenterの導入トラブル振り返り こんにちは。スタディサプリ小中高SREの@aoi1です。 スタディサプリでは、Kubernetesを利用しているのですが、Nodeの運用自動化のために2023年3月から本番環境を含む全環境でKarpenterを導入しています。 Karpenterのおかげで開発者体験を向上させることができたり、コスト削減を行うことができました。便利で良いことが沢山ある一方、本番環境で問題が発生するなどいくつかハマったこともありました。 本ブログでは私たちがハマったポイントを通じて、Karpenterの導入を検討している方、あるいは既に本番環境でKarpenterを運用している方にとって参考になればと思います。 Karpenterとは KarpenterはAmazon Web Sevice(AWS)が開発しているOSSで、「Karpenter s
スタサプ小中高を開発している Android エンジニアの@maxfie1d、@morayl とスタサプ ENGLISHを開発している Android エンジニアの田村です。 GitHub Actions(以下 GHA) はアプリをビルドしたりストアに配信したりすることに使えるのはもちろん、もっともっと色々なタスクを自動化することができます。本記事では Androidチームによる GHA を使った自動化レシピをご紹介します。 まずはスタサプ小中 Android版での取り組みを紹介します。 自動でラベルを付与する 2023年9月に リニューアルをしたスタディサプリ 小学講座をリリースしました。アプリとしてはスタディサプリ 中学講座 と同じで 1アプリ内に中学生向けの機能と小学生向けの機能があります。 コードは中学生向けの機能と小学生向けの機能で大きく original/ elementary
こんにちは、Androidエンジニアの@morux2です。本記事ではJetpack Composeでスポットライト機能を実装する方法を紹介します。 はじめに スポットライトは、特定の要素を目立たせることでユーザーの行動を促す機能です。スタディサプリ中学講座のオンボーディング画面にも採用されており、現在カスタムViewからの移行を進めています。 スタディサプリ中学講座のオンボーディング 今回は実装を3つのステップに分けて紹介します。 実装の3ステップ 画面全体を半透明の黒いViewで覆う スポットライトを当てたい要素の長方形の座標を取得する 取得した座標に沿って黒いViewを切り抜く 参考にさせていただいた記事はこちらになります。 スポットライト機能の実装 1. 画面全体を半透明の黒いViewで覆う まずCanvasを使用して半透明の黒いViewを作成します。 @Composable fun
こんにちは。スタディサプリの小中高プロダクト基盤開発グループでProduct Platform Engineer兼テックリードをやっている@tooooooooomyです。 今回は、WebアプリケーションにGoの並行処理機構を導入してSLOを改善し、WebAPIを100倍速くした話をしたいと思います。 前提条件 システムを0から作らない場合、アーキテクチャの改善の際には前提条件が付きものです。そこでまずは今回のシステムの前提条件をお話します。 対象となるシステムと、アーキテクチャ 今回対象とするシステムは、ここでは security-tracker と呼び、Webアプリケーション本体はGoで書かれています。 スタディサプリの各アプリケーションにおけるユーザーのログ1を、Amazon Kinesis Firehoseを通して、リクルート全体のセキュリティチームが管理するS3バケット(スタディサ
こんにちは。@chaspy です。 9/13 に開催された GraphQL Tokyo にて弊社九段下オフィスの会場を提供させていただきました。 www.meetup.com 九段下オフィスについて 九段下駅から徒歩3分でとっても便利な立地です。 goo.gl 以下の記事も合わせてご覧ください。 www.recruit.co.jp 当日は30名近くの方が参加されました。 発表について なんと今回はオープンソース開発者グループ The Guild のメンバーである Laurin Quast さんがドイツから東京に来てトークをしてくださりました。 彼のトークテーマでもある graphql-code-generator はスタディサプリの開発でも利用しており、無くてはならない OSS の一つです。 時刻 time 内容 contents 18:30 - Door open 受付開始 19:00
こんにちは。スタディサプリでプロダクトプラットフォームの開発を行っている @highwide です。 少し前の話になってしまいますが、2023-07-27に行われた「Developers Summit 2023 Summer」(以下、「デブサミ」と書きます)にて「アーキテクチャデシジョンレコード」(ADR)についての発表をしましたので、その報告をさせていただきます。 「日々の意思決定の積み重ねを記録するアーキテクチャ・デシジョン・レコード」というタイトルで発表しました。 発表資料はこちらです。 また、デブサミのサイトでは、発表の当日の録画が見られるようです。 途中、自分の声に反応してしまったApple Watchに焦る様子なども見られるかと思います...(恥ずかしい...) codezine.jp ベストスピーカー賞受賞 🎉 また、この度、本カンファレンスにおけるベストスピーカー賞(1位
小中新規開発グループ (a.k.a. tara チーム) の qsona です。 tara チームでは、スタディサプリ中学講座というプロダクトを開発しており、約1年前 (2022-02) に本リリースして以来、継続してプロダクト開発を続けています。 tara チームのプロダクト開発は、基本的にスクラムの手法にのっとる形で行っています。ビジネス的な境界により分けられた3つのスクラムチームが存在します。 スクラムの運用については、それぞれの現場において悩みごとが起きがちだと思いますが、tara チームでもご多分に漏れず、うまくいっていること・いっていないことが存在します。今回は、その3つのうちの1つのチームである「学習コアチーム」において存在した、Sprint Planning に関する (あるいはそこから掘り出された) 課題と、それに対してどう対処したかについて書きたいと思います。 なお、本
こんにちは、Web Engineer の @wozaki です。 今回は、採用プロセスの改善として、職務経歴書に記載いただきたいことを公開した背景をご紹介します。 概要 職務経歴書に、採用チームとして期待する情報が不足していることがある 不足すると、以下の課題が発生することがある 書類選考は通過するが、その後の選考でミスマッチと分かる (経歴書が充足していたら、より早期にミスマッチが分かったかもしれない) 面接の前に経歴に踏み込んだ質問を設計できずに、面接時間内でマッチしているか情報を引き出す難易度が上がる 既存の対策として、情報の追記をお願いすることがある 新たな対策として、記載いただきたいことを ガイドとして公開 することにした 記載いただきたいこと 早期ミスマッチ解消の必要性 Web Engineer の採用は競争が激化している肌感があります。 応募者の方々にとっても、様々な企業の中
次のページ
このページを最初にブックマークしてみませんか?
『スタディサプリ Product Team Blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く