スタディサプリ Product Team Blog

株式会社リクルートが開発するスタディサプリのプロダクトチームのブログです

Engineering

小学背景デザインのご紹介と実装上の工夫

こんにちは。iOS エンジニアの @_nkmrh です。 今回は『スタディサプリ 小学講座』の背景画面のデザインについてご紹介します。 1 月から 12 月までの季節感やイベントを踏まえた複数バリエーションの背景をいかに効率よく実装したか、デザイナーとのコミュ…

開発組織が事業貢献するには

こんにちは。@chaspyです。『スタディサプリ 小学・中学・高校講座(以下、スタディサプリ小中高)』の開発部長をしています。この記事はスタディサプリProduct Team Advent Calendar 2024の25日目の記事です。 まずはじめに、このアドベントカレンダーを執…

oapi-codegen の strict-server オプションを使ってより硬くサーバーサイドを実装する

スタディサプリ小中高でエンジニアリングマネージャーやソフトウェアエンジニアをしている @pankona です。 本稿では oapi-codegen の strict-server オプションを使った開発事例を紹介します。 OpenAPI と oapi-codegen OpenAPI とは、Web API の仕様を記述…

『プログラマが知るべき97のこと』に学ぶ5つの金科玉条

『プログラマが知るべき97のこと』を通読して得た特に重要な5つの教訓を筆者の独断と偏見と好奇でピックアップしました。

将来のプロダクト状態を考えて技術改善を計画する

スタディサプリ小学・中学講座の iOS アプリエンジニアをしている @komaji です。本稿は スタディサプリProduct Team Advent Calendar 2024 15日目の記事で、私が所属する iOS チームでの技術改善の取り組み方について紹介していきます。 技術改善を計画する…

おそらく Go 1.24 からツールのバージョン管理を go.mod で行うためのコマンドが導入されます

スタディサプリでソフトウェアエンジニアやエンジニアリングマネージャをやっている @pankona です。 Go 1.24 でツールのバージョン管理が便利になりそうという話をします。 (Go 1.23 現在) go install という便利なコマンドがある Go 1.24 の話をする前に、…

スタディサプリの開発運用を支える GitHub Actions

こんにちは。SRE の @int128 です。 スタディサプリのプロダクト開発では GitHub Actions を積極的に導入しています。本稿では、日常の風景に溶け込んでいる GitHub Actions を紹介します。 プロダクトの開発運用を支える GitHub Actions リポジトリとオーナ…

Jetpack Compose の Canvas でお絵描き機能を実装する

こんにちは、Androidエンジニアの@morux2です。スタディサプリ小学講座には、子どもがお絵描きツールで保護者とコミュニケーションを取れる「きょうもできた!」機能があります。本記事では、この機能の実装詳細をご紹介できればと思います。 「きょうもでき…

GitHub Copilot の Usage API を叩いてみた結果を味わう

本稿は スタディサプリProduct Team Advent Calendar 2024 2日目の記事です。 スタディサプリでソフトウェアエンジニアやエンジニアリングマネージャをやっている @pankona です。GitHub Copilot Usage API を味わってみた話をします。 GitHub Copilot は便…

DroidKaigi 2024 で GraphQL クライアント実装について登壇しました

こんにちは、Androidエンジニアの@morux2です。先日 DroidKaigi2024 にて、「GraphQLの魅力を引き出すAndroidクライアント実装」という発表を行いましたので、その報告をさせていただきます。 2024.droidkaigi.jp 発表資料はこちらになります。 speakerdeck.…

スタディサプリ小中高における AI 活用の現在

こんにちは。@chaspy です。スタディサプリ小中高の開発部長をしています。 AI の変化の勢いは凄まじいですよね。この1年で随分環境が変わったように思います。本記事では私たちが AI をどのように活用してきたか、これからどう活用しようとしているかについ…

GraphQL Trusted Documents の実装パターンを Signed Query に移行しました (Android編)

こんにちは、Androidエンジニアの@morux2です。スタディサプリ小学・中学講座ではデータ通信にGraphQLを採用しており、開発者が信頼したクエリのみを処理する仕組みとしてTrusted Documentsを実装しています。この度、従来のPersisted QueryからSigned Query…

dep-doctor による archived / not-maintained な依存ライブラリ検出の仕組み

こんにちは。@chaspyです。技術戦略グループのマネージャをしています。 本記事では dep-doctorという依存ライブラリのメンテナンス状態をチェックするツールを活用した事例を紹介します。 依存ライブラリのメンテナンス状態を確認したい スタディサプリ小中…

エンジニアブランディングチームのご紹介

こんにちは、@chaspy です。エンジニアブランディングチームをやってます。 本記事では、先日参加した LT の紹介を通じて、ブランディングチームの活動内容を紹介していきたいと思います。 LT してきました smarthr.connpass.com こちらのイベントにお邪魔し…

スタディサプリ最大のRailsアプリケーションにYJIT+pitchforkを導入してメモリ使用量を劇的に削減するまで

こんにちは。SREのkyontanです。Rubyが大好きなのでRubyの話をします。ちなみにリクルートはRubyKaigi 2024へGold Sponsorとして協賛しています! *1。ぜひ沖縄でお会いしましょう。 これはあるアプリケーションのメモリ消費量を示すグラフなのですが、まさか…

Engineering Manager のオンボーディング

こんにちは、@chaspyです。プロダクト開発部の部長をしています。 スタディサプリ小中高の開発組織では、Engineering Manager (以降 EM と記す) という役割があります。*1 その役割は、エンジニアリングマネージャ/プロダクトマネージャのための知識体系と読…

スタディサプリ小学・中学講座にRoborazziを導入して半年が経過しました

こんにちは、Androidエンジニアの@morux2です。 スタディサプリ小学・中学講座では、Visual Regression Test (以下 VRT)を実施しています。VRTは画像比較によるUIの回帰テストです。変更前後のコードそれぞれに対する画面のスクリーンショットを比較し、意図…

技術戦略策定のための Fact 収集術

こんにちは。@chaspy です。プロダクト開発部の技術戦略グループのマネージャをしています。 技術戦略グループでは、日頃開発する上での課題の投げ込みや議論、解決するための計画をボトムアップで行っています。技術戦略グループの活動については過去のアウ…

GitHub Copilot for Business 使っています

スタディサプリでエンジニアリングマネージャー等をしている @pankona です。 スタディサプリ (小中高、English) では GitHub Copilot for Business を使っています。本稿では、GitHub Copilot for Business を導入した背景と、導入後の活用方法について紹介…

入稿devsチームで、校閲PDF出力機能のリニューアルをおこなった話【1/2 入稿ドメインとは?〜開発事例編】

こんにちは、スタディサプリで開発をしている @motorollerscalatron です。 私は、5 年前に web エンジニアとしてスタディサプリに join していますが、今年に入ってから、今までの社内(中学講座の開発プロジェクト(通称 tara、最近は 小学講座も加わってい…

SLI の計測のために Envoy や service mesh を選択しなかった理由

こんにちは。スタディサプリの小中高プロダクト開発部で主にコミュニケーション機能の開発をしている @snowfield702 です。 今回はスタディサプリで SLI の計測に Envoy と service mesh を使うのをやめて Datadog APM を利用することにしたという話をしたい…

単一アプリでユーザに応じた機能切り替えを実現するために

はじめに iOSエンジニアのkomajiです。2023年9月に「スタディサプリ 小学講座」をリニューアルし、既存の「スタディサプリ 中学講座」アプリに組み込む形でリリースしました。 この小学講座は既存の中学講座とは機能が全く異なっていますが、単一アプリで両…

Firebase Remote Config の変更内容を Slack に通知する

こんにちは、@manicmaniac です。スタディサプリ iOS アプリ開発チームのエンジニアリングマネージャーをしています。 小ネタみたいな話ではありますが、Firebase Remote Config の変更を Slack に通知するようにしたらちょっと便利だったので記事にしようと…

WebアプリケーションにGoの並行処理アーキテクチャを導入してSLOを改善し、WebAPIを100倍速くした話

こんにちは。スタディサプリの小中高プロダクト基盤開発グループでProduct Platform Engineer兼テックリードをやっている@tooooooooomyです。 今回は、WebアプリケーションにGoの並行処理機構を導入してSLOを改善し、WebAPIを100倍速くした話をしたいと思い…

スタディサプリ小学・中学講座でRoborazziを導入しました

こんにちは、Androidエンジニアの@morux2です。本記事ではスクリーンショットの撮影にRoborazziを導入した経緯をご紹介できればと思います。 はじめに きっかけ RoborazziとPaparazziの比較 書きやすさ 複数端末での撮影 スクロールした画面の撮影 Showkase…

GraphQL Tokyo Meetup #21 で会場スポンサーしました #GraphQLTokyo

こんにちは。@chaspy です。 9/13 に開催された GraphQL Tokyo にて弊社九段下オフィスの会場を提供させていただきました。 www.meetup.com 九段下オフィスについて 九段下駅から徒歩3分でとっても便利な立地です。 goo.gl 以下の記事も合わせてご覧ください…

Developers Summit 2023 SummerでADRについて発表しました & ベストスピーカー賞を受賞しました🎉

こんにちは。スタディサプリでプロダクトプラットフォームの開発を行っている @highwide です。 少し前の話になってしまいますが、2023-07-27に行われた「Developers Summit 2023 Summer」(以下、「デブサミ」と書きます)にて「アーキテクチャデシジョンレコ…

会社ブログの更新を継続するための取り組み

こんにちは。Webアプリケーションエンジニアの @ttokutake です。 スタディサプリでは定期的にプロダクトブログを更新するようにしています。 他社様と比較すると更新頻度は少ないかもしれませんが、少なくとも月に1回程度の更新をするように頑張っています…

Jetpack Composeでスポットライト機能を実装する

こんにちは、Androidエンジニアの@morux2です。本記事ではJetpack Composeでスポットライト機能を実装する方法を紹介します。 はじめに スポットライトは、特定の要素を目立たせることでユーザーの行動を促す機能です。スタディサプリ中学講座のオンボーディ…

GraphQL Type Mergingを利用したサブスキーマをまたがった宣言的スキーマ定義

こんにちは。スタディサプリのWeb開発をやっている @highwide です。 今日は、スタディサプリ中学講座で利用されている、GraphQLにおける「Type Merging」という技術について紹介します。 自分が撮った写真の中でType Mergingっぽいものを探しました Schema …