スタディサプリ Product Team Blog

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

GraphQLで極力GET Requestを使いつつRequest-URI Too Largeを回避したい

URL長によるGraphQL Requestの失敗とApollo Linkによる解決方法を紹介します。

チーム横断組織の活動を成功へ導くファシリテーション技術

こんにちは。ソフトウェアエンジニアの @ttokutake です。 今回はスタディサプリ小中高プロダクト開発部の技術戦略横断ワーキンググループをリードしていたときに 実践していたことや気をつけていたことを書き出してみようと思います。 もう少し具体的に言う…

スタディサプリのProduct Platform Engineer ポジションのご紹介

はじめに こんにちは、小中高プロダクト基盤開発グループの @kazu9su です。 この記事では、小中高プロダクト基盤開発グループのProduct Platform Engineer(プロダクトプラットフォームエンジニア)とは何をするポジションなのかを具体例を交えて紹介させてい…

Darklaunchという便利なものと、その未来

Darklaunchという便利なものと、その未来 3行要約 スタディサプリのRubyバックエンドで気軽に誰でも使える、"Darklaunch"という Feature toggles 機構がある 4年強ほど運用してきて、様々な知見、多様なユースケース、問題などが明らかになった 知見を活かし…

社内勉強会がきっかけでメモ帳機能を実装した話 with PencilKit

こんにちは、スタディサプリ開発チーム iOS エンジニアの @m-sugawara です。 スタディサプリの iOS アプリでは2~3ヶ月前に PencilKit を使ったメモ帳機能を公開したのですが、今回はその機能の開発〜公開まで至った流れについてご紹介したいと思います。 (…

スタディサプリ中学講座iOSアプリの開発環境

はじめまして!2022年の9月の中頃にジョインしたiOSエンジニアの@komajiです。まだ歴が浅くキャッチアップしている最中ではありますが、私が担当しているスタディサプリ中学講座のiOSアプリが2022年12月現在どのような環境で開発されているのかを紹介してい…

CQRS なレコメンドシステムをGCP で構築した話

こんにちは、データエンジニアの @masaki925 です。 今年の春リニューアルされたスタディサプリの中学講座にて、レコメンドシステムを新規構築しました。 そのアーキテクチャが、当初意図していなかったものの、結果的にはCQRS (Command Query Responsibilit…

@graphql-codegen/typescript-react-apolloとの思い出

プロジェクト内で使っている @graphql-codegen/typescript-react-apollo package との思い出を書き綴りました。

SLO の監視に Burn Rate Monitoring を導入してみた話

こんにちは。スタディサプリ小中高 / Quipper SREの@kyontanです。 この記事は Recruit Engineers Advent Calendar 2022 の1日目の記事です。 開発チームが事実に基づいて(= fact-basedな)意思決定をできるようにするための一助として、SREチームではSLO (Se…

Xcode の Test Repetition 機能を利用して flaky test を自動リトライする

こんにちは、iOS エンジニアの @manicmaniac です。 現在スタディサプリ iOS アプリ開発チームのエンジニアリングマネージャをしています。 「スタディサプリ」ブランドで出ているアプリは数多くあるのですが、今回は今年リリースされたばかりの「スタディサ…

スタディサプリのInternal Platform開発についてのご紹介

こんにちは、小中高プロダクト基盤開発グループの @kazu9su です。 この記事では、チームで取り組んでいるInternal Platform開発についてご紹介できればと思います。 Internal Platformとは AWS, GCP, Shopifyのような、SaaS/IaaS/PaaSとして提供され、それ…

チームにジョインして驚いた3つのこと

こんにちは。10月にAndroidエンジニアとしてジョインした@morux2です。スタディサプリ中学講座の開発に携わっています。今回はオンボーディングの締めくくりとして、チームに抱いた率直な印象をお伝えできればと思います。 1. オープンコミュニケーション チ…

技術戦略横断ワーキンググループの活動報告

こんにちは。ソフトウェアエンジニアの @ttokutake です。 この記事では、スタディサプリ小中高プロダクト開発部の技術戦略グループの活動内容を紹介していこうと思います。 「いきなり何ですか?」と思った方がほとんどだと思われますので、まずは「技術戦…

Next.js 製 Web フロントエンドの CI ビルド時間を 1/3 にした話

こんにちは、 Web フロントエンドエンジニアの @progfay です。 今回は PR に紐づいたプレビュー環境のビルドに 10 分半かかっていたところを 3 分半ほどまでに短縮した改善活動についてお話しします。 技術改善 Day 私の所属するスタディサプリ中学講座の開…

Google Play In-App Reviews API の導入により Google Play Store 評価を1ヶ月で2.5から4.5に改善した話

こんにちは。Android エンジニアの @omtians9425 です。スタディサプリ中学講座の開発に携わっています。 今回は、 Google Play In-App Reviews API の導入により、スタディサプリ中学講座の Google Play Store 評価を4.5(2022年10月7日時点)に改善したこ…

Sentry の運用を最適化して継続していく

こんにちは。フロントエンドエンジニアの @sakamuuy です。 私たちのチームではエラートラッキングに Sentry というサービスを利用しています。この運用を開始して半年が経過しました。 今回は私が所属するフロントエンドチームでのSentry運用について、苦労…

FactoryBotでのデータ生成を今一度見直す

FactoryBotでのデータ生成を今一度見直す こんにちは。 プロダクトプラットフォームチームの@kazu9suです。 今回は、DX(Developer Experience)改善活動の一環として、テストにおけるデータ生成を見直したお話をしたいと思います。(所要時間5分程度で読める内…

なぜSeleniumを選ばなかったのか~AutifyとMagicPodを選びました~

QA

こんにちは。QA Engineerの@testtattoです。 今回はE2Eテストの自動化にあたって、どういった考えでツール選定を行ったのかを話したいと思います。 対象読者 以下に興味や関心を持つ方を対象読者として想定しています。 E2Eテスト自動化によって課題を解決し…

Engineering Manager のしごと - スタディサプリ小中高 SRE チームの場合 -

こんにちは。SRE Team の @chaspy です。次の10月で Engineering Manager をつとめて1年になります。 本記事ではもしかするとメンバーからわかりづらい Engineering Manager のしごとについて、昨年10月からの約1年間を振り返りながら説明しようと思います。…

Jetpack Compose を使って実際に画面を作ってみて

こんにちは。Android アプリ開発者の geckour です。 前回はデザインシステムの実装についての話をしましたが、今回はそちらを実際に運用してみた中間報告をしたいと思います。 はじめに 前回は、Jetpack Compose によってデザインシステムを構築するところ…

GitHub Insightsのおかげで効果的な振り返りができた話

(この記事は約5分で読めます) こんにちは、スタディサプリ TPM(Technical Product Manager)の@risa-hayashi です。 振り返りにGitHub Projects(beta)のInsightsという機能を利用してみたところ、振り返りが効果的にできるようになったのでその運用方法や…

Google Calendar の speedy meeting でミーティング間の休憩を確保しよう

はじめに こんにちは。SRE Team の @chaspy です。今日は小ネタで失礼します。 リモートワークが普通になり早2年。オンラインミーティングもまた当たり前になり、会議室の確保や移動にかかる時間は無くなりました。物理的な制約から解放され、必要な時に必要…

Rubyのコードの書き方

こんにちは、ujihisa といいます。現在スタディサプリのProduct Platform の Software engineerとしての仕事を行っています。先月から社内留学で、開発支援チームからコーチングチームに一時的に移籍して、そちらの仕事をやっています。 Rubyのコードの書き…

「スタディサプリ 中学講座」のSwiftUI x In-App Purchase設計と結合テストのノウハウ

こんにちは!iOSエンジニアの @chuymaster です。今回は私たちのチームが2月にリリースした「スタディサプリ 中学講座」のIn-App Purchase(IAP)の実装について書きたいと思います。SwiftUI x IAPの事例をお探しの方必見です! 背景 「スタディサプリ 中学…

スムーズな開発体験を支えるデータベースリストアの仕組み

こんにちは。SRE の @int128 です。 背景 スタディサプリではいろいろな役割の人が協力してプロダクトを開発していくための文化と仕組みがあります。 例えば、Pull Request を作成すると自動的にプレビュー環境がデプロイされる仕組みや本番相当のデータで動…

縦書き学習コンテンツを実現する際に利用した縦書き CSS プロパティとその奥深さ

こんにちは。スタディサプリで Web Engineer をしている@indigolainです。最近はフロントエンドの割合を高めに開発をしています。 今回はスタディサプリで提供している学習コンテンツの中でも特徴的な縦書き学習コンテンツに関して、それを実現する上で利用…

SwiftUI.NavigationView のバックボタンをカスタマイズする方法

こんにちは。iOS エンジニアの @_nkmrh です。 最近、Full SwiftUI で開発したスタディサプリ 中学講座をリリースし、アプリ開発の醍醐味を味わっています。 はじめに 本稿では、スタディサプリ中学講座 iOS アプリで実装した SwiftUI の NavigationView の…

SwiftUIで対応しきれずUIKitを使ったコンポーネントのまとめ

こんにちは、iOSエンジニアの @elliekwon です。去年のiOSDC Japan 2021「スタディサプリ」がFull SwiftUIを選択した先に見えてきたものの発表で紹介させて頂いた通り、SwiftUIで開発してきた「スタディサプリ中学講座」ですが、SwiftUIでは対応しきれず、ご…

New Relic で Prisma のパフォーマンスを計測してみた

スタディサプリ中学講座では、バックエンドの一部に TypeScript x GraphQL x Prisma を採用しており、パフォーマンスの計測などに New Relic を用いています。New Relic は Prisma を正式にサポートしていないため、導入するためには自分たちで実装する必要…

iOS バージョン による SwiftUI の機能差分・制限まとめ

こんにちは。iOS エンジニアの wadash です。先月2022年2月に無事リリースした「スタディサプリ 中学講座」のチームで開発に携わっています。 今回は iOS バージョンによる SwiftUI の挙動差異と制限のまとめをご紹介します。 SwiftUI の採用とサポートバー…