スタディサプリ Product Team Blog

https://blog.studysapuri.jp/

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

フィード

記事のアイキャッチ画像
dep-doctor による archived / not-maintained な依存ライブラリ検出の仕組み
はてなブックマークアイコン 1
スタディサプリ Product Team Blog
こんにちは。@chaspyです。技術戦略グループのマネージャをしています。 本記事では dep-doctorという依存ライブラリのメンテナンス状態をチェックするツールを活用した事例を紹介します。 依存ライブラリのメンテナンス状態を確認したい スタディサプリ小中高では、言うまでもなく多くの OSS / ライブラリに支えられています。しかし、それらのライブラリがメンテナンスされなくなってしまったとしたら、以下のリスクが存在します。 セキュリティ: 既知の脆弱性が修正されない可能性があります。新たに発見された脆弱性に対して、パッチが提供されないため、プロジェクトがセキュリティ上の危険にさらされる可能…
4日前
記事のアイキャッチ画像
スタディサプリ中学講座で市区町村データの更新を行いました
スタディサプリ Product Team Blog
こんにちは。教育支援小中高プロダクト開発部の @mtgto です。スタディサプリで小中学生向けサービスのバックエンド開発を担当しています。 今回は業務上で行った市区町村のデータの更新作業でわかった市区町村の再編処理について紹介します。 スタディサプリ中学講座では、利用者が通っている中学校で利用されている教科書を選ぶことで教科書に対応した定期テスト厳選予想問題が利用できるサービスを提供しています。 https://studysapuri.jp/course/junior/ 利用者が通っている中学校を都道府県と市区町村で絞り込める情報をデータベースに記録しておくことでスムーズに中学校が選択できるよ…
7日前
記事のアイキャッチ画像
Signed Query は GraphQL の Trusted Document の新しい実装パターンです
はてなブックマークアイコン 35
スタディサプリ Product Team Blog
こんにちは。スタディサプリの小中新規開発チームで Web エンジニアをしている @YutaUra です。 去年の4月に新卒で入社をしまして約 1 年が経ちました。インターン生時代にもブログを書いているのでご興味あれば合わせてご覧ください。 GraphQL と Persisted Query スタディサプリ小中講座ではデータ通信に GraphQL を採用しています。 GraphQL を利用することで、クライアントはスキーマに定義された範囲で自由にデータを取得することができます。 query GetUser { user { name age } } また、 GraphQL はデータのグラフ構造に…
14日前
記事のアイキャッチ画像
鼻をきかせろ!エンジニアバックグラウンドのないTPMが出せる価値について
スタディサプリ Product Team Blog
こんにちは、スタディサプリTPM(Technical Product Manager) *1 の nozomikajimoto です。 突然ですが、私はエンジニアのバックグラウンドがありません。スタディサプリのTPMはエンジニア経験のあるメンバーがほとんどなので、少し変わったタイプだと自負しています。とはいえ、エンジニアバックグラウンドがなくとも、TPMとして価値を出せています。 本稿では、エンジニアバックグラウンドがないTPMが発揮できるバリューと課題、その課題を解決する方法について綴ります。 今後のキャリアとしてTPM(ないしPdM)を考えている方の参考になれば幸いです。 今までのキャリア…
25日前
記事のアイキャッチ画像
Amazon アプリストアでスタディサプリ小学・中学講座を公開するまで
スタディサプリ Product Team Blog
スタディサプリ小学・中学講座を開発している Android エンジニアの @maxfie1d と @omtians9425 です。 2024年2月26日にスタディサプリ小学・中学講座をAmazonアプリストアにて配信を開始致しました。 すなわち今後は Fire タブレット においてもスタディサプリ小学・中学講座をお使いいただくことができます!本記事では Amazon アプリストアでの配信にあたり必要な開発や Tips についてお届けします。 学習を始める方におすすめの端末をご紹介|スタディサプリ Fire タブレット、Amazon アプリストアとは Fire タブレットは Amazon から発…
1ヶ月前
記事のアイキャッチ画像
スタディサプリ最大のRailsアプリケーションにYJIT+pitchforkを導入してメモリ使用量を劇的に削減するまで
スタディサプリ Product Team Blog
こんにちは。SREのkyontanです。Rubyが大好きなのでRubyの話をします。ちなみにリクルートはRubyKaigi 2024へGold Sponsorとして協賛しています! *1。ぜひ沖縄でお会いしましょう。 これはあるアプリケーションのメモリ消費量を示すグラフなのですが、まさかgemを入れ替えるだけでこんなに嬉しい変化が見られるとは思っていませんでした。今日はそんなgemの話をします。 話は遡って2023年4月のある日、インターネットを眺めていたところ、ShopifyがpitchforkというOSSを公開したという情報が目に留まりました。 調べてみると、どうやら著名なRackサーバー…
1ヶ月前
記事のアイキャッチ画像
エンジニアブランディングチームのご紹介
スタディサプリ Product Team Blog
こんにちは、@chaspy です。エンジニアブランディングチームをやってます。 本記事では、先日参加した LT の紹介を通じて、ブランディングチームの活動内容を紹介していきたいと思います。 LT してきました smarthr.connpass.com こちらのイベントにお邪魔し、LT してきました。「技術広報」「DevRel」の界隈の勉強会には初参加で、個人的に新鮮でした。(エンジニアは少数だった模様) イベントを主催してくださった皆さん、ありがとうございました。この場を借りてお礼申し上げます。 エンジニアブランディングチームについて Engineer 中心に活動しており、専任の広報担当者はい…
1ヶ月前
記事のアイキャッチ画像
何もしてないのにプログラムが完成する不思議な話
スタディサプリ Product Team Blog
はじめに こんにちは。スタディサプリのiOSアプリの開発に携わっているk-koheyです。突然ですがみなさんは、「なにもしとらんのに壊れた」という言葉を聞いた事はありますか??ソフトウェア開発の現場では、ついさっきまで正常に動いていたプログラムが急に動かなくなる事があります。奇妙な事にキーボードやマウスに全く触っていないのに、突然プログラムの動作が変わってしまうのです*1。その結果納期に遅れが出たり、最悪な事に開発が進まなくなってしまう事もあるとかないとか....。「なにもしとらんのに壊れた」はこのような不思議な現象に遭ったときによく使われます。 私は今、この現象に取って代わる新しい現象に遭遇…
1ヶ月前
記事のアイキャッチ画像
Engineering Manager のオンボーディング
スタディサプリ Product Team Blog
こんにちは、@chaspyです。プロダクト開発部の部長をしています。 スタディサプリ小中高の開発組織では、Engineering Manager (以降 EM と記す) という役割があります。*1 その役割は、エンジニアリングマネージャ/プロダクトマネージャのための知識体系と読書ガイド を引用させてもらうと、People Management + Technology Management を主に担ってもらっています。*2 ありがたいことに、ここ数年で新たに EM にチャレンジしてもらえる機会が増えました。本稿ではそんな EM の活躍をサポートするオンボーディングの仕組みについて説明します。 …
1ヶ月前
記事のアイキャッチ画像
スタディサプリ小学・中学講座にRoborazziを導入して半年が経過しました
スタディサプリ Product Team Blog
こんにちは、Androidエンジニアの@morux2です。 スタディサプリ小学・中学講座では、Visual Regression Test (以下 VRT)を実施しています。VRTは画像比較によるUIの回帰テストです。変更前後のコードそれぞれに対する画面のスクリーンショットを比較し、意図しない差分を検知することができます。*1 今回はスクリーンショットの撮影にRoborazziを導入して半年が経過したので、現状の運用やTipsを共有できればと思います。なお、執筆当時のRoborazziのバージョンは1.9.0です。 VRTの運用 構成 実行タイミング 撮影内容 実行時間 RoborazziのT…
1ヶ月前
記事のアイキャッチ画像
技術戦略策定のための Fact 収集術
スタディサプリ Product Team Blog
こんにちは。@chaspy です。プロダクト開発部の技術戦略グループのマネージャをしています。 技術戦略グループでは、日頃開発する上での課題の投げ込みや議論、解決するための計画をボトムアップで行っています。技術戦略グループの活動については過去のアウトプットもご覧ください。 blog.studysapuri.jp また、本稿のテーマである、組織やシステムの状況を把握するための Fact 収集については技術戦略 DevOps WG が担当しています。以前発表した資料もご覧ください。 このように、技術戦略グループではエンジニア1人1人が課題だと思うことを表明、宣言し、その課題をトリアージすること、お…
1ヶ月前
記事のアイキャッチ画像
A/B テストによるプロダクトエンハンスを支援する PLG(Product Led Growth) Team のご紹介
スタディサプリ Product Team Blog
こんにちは。@chaspy です。本記事で紹介するスタディサプリ中学講座の PLG(Product Led Growth) Team の Engineering Manager をしています。 本記事では、2023年2月に結成したこのチームの活動について紹介します。 スタディサプリ中学講座について PLG Team 発足の理由 なぜ A/B テストをやるのか A/B テストを行う方法 指標設計 事例紹介 学んだこと 指標設計の難しさ 必要なサンプル数を集める難しさ 意思決定を早くするためのモニタリングの重要さ おわりに スタディサプリ中学講座について スタディサプリ中学講座は、中学生向けのオン…
2ヶ月前
記事のアイキャッチ画像
detekt × Dangerで、プルリクコメントにルール名を表示する
スタディサプリ Product Team Blog
こんにちは。スタディサプリ Androidエンジニアの@morayl です。 本記事では、Kotlinの静的解析ツールであるdetektの解析結果をDangerでプルリクにコメントする際に、ルール名も一緒にコメントするためにしたことを紹介します。 Dangerの基礎言語であるRubyは初心者なので、有識者から学びながらトライしました。 背景と結果 私が所属するチームでは最近、detektを導入し、Dangerを使ってプルリク上にコメントが出るようにしました。 この状態では、detektの指摘コメントだけが出ています。 一見問題無さそうですが、detektの指摘はルールで管理されているため、ルー…
2ヶ月前
記事のアイキャッチ画像
GitHub Copilot for Business 使っています
スタディサプリ Product Team Blog
スタディサプリでエンジニアリングマネージャー等をしている @pankona です。 スタディサプリ (小中高、English) では GitHub Copilot for Business を使っています。本稿では、GitHub Copilot for Business を導入した背景と、導入後の活用方法について紹介します。 GitHub Copilot for Business とは GitHub Copilot 公式サイト: https://github.com/features/copilot もはや説明不要かもしれませんが、GitHub Copilot はいわゆる AI プログラミング…
3ヶ月前
記事のアイキャッチ画像
スタディサプリ小中高プロダクト開発部2023年の登壇資料紹介
スタディサプリ Product Team Blog
こんにちは。技術広報チーム*1の @chaspy です。本記事では2023年に発表されたスタディサプリ小中高の登壇資料を紹介します。 Summary 2023年の登壇は合計19件ありました。 技術領域別の内訳は以下です。どの領域も満遍なく登壇がありました。 技術領域 登壇数 SRE 6 Platform 3 QA 3 iOS 3 Android 2 Web 2 登壇資料の紹介 それでは技術領域別に紹介していきます。 SRE インシデントにどう対応してきたか?各社のポストモーテムから学ぶ Lunch LT 登壇日: 2023/02/09 登壇者: @chaspy 想定読者: ポストモーテムの運用…
3ヶ月前
記事のアイキャッチ画像
スタディサプリ小中高の技術戦略について
スタディサプリ Product Team Blog
この記事は Enginnering Manager Advent Calendar その2の1日目の記事です。(大遅刻しました) こんにちは。@chaspy です。10月からスタディサプリ小中高*1プロダクト開発部の部長をしています。 本記事では、我々の組織で取り組んでいる技術戦略の現状と今後についてお伝えします。 技術戦略とは何か スタディサプリ小中高の技術戦略 開発比率適正化 課題発見と改善サイクルの確立 直近の取り組み ガイドラインの策定 マイクロサービスの命名 今後追加が予定されているもの monolith の方針検討 共有データベースに対する Model 層の管理方針 api end…
4ヶ月前
記事のアイキャッチ画像
社内技術ドキュメンテーションを科学する
スタディサプリ Product Team Blog
部署内の技術トーク会にて、理想的なドキュメンテーションにおいて回避不可能なトレードオフと、それを踏まえた実践的な手順を発表しました。その際のワークショップで得た他エンジニアが持つ Pains や知見、そして彼らからの反響を共有致します。
4ヶ月前
記事のアイキャッチ画像
入稿devsチームで、校閲PDF出力機能のリニューアルをおこなった話【2/2 振り返り編】
スタディサプリ Product Team Blog
こんにちは、スタディサプリで開発をしている @motorollerscalatron です。 前編では、「入稿」「校閲」ドメインの発足からサブチームへの切り出しと、校閲出力サービスのリニューアルのエピソードを技術的観点を交えながら共有させていただきました。この後編では、プロジェクトが完成しきった時点での自身の省みを中心に共有させていただきます。 今回の案件で、問題解決に対して大事だと感じたこと 知識をもっている人をうまく引き込むためには、質問は端折らない ペアプロと壁打ち 少しでも難しく見えてきたら issue を分割・追加/1回で完璧なものを作ろうとしない まとめ 今回の案件で、問題解決に対…
5ヶ月前
記事のアイキャッチ画像
入稿devsチームで、校閲PDF出力機能のリニューアルをおこなった話【1/2 入稿ドメインとは?〜開発事例編】
スタディサプリ Product Team Blog
こんにちは、スタディサプリで開発をしている @motorollerscalatron です。 私は、5 年前に web エンジニアとしてスタディサプリに join していますが、今年に入ってから、今までの社内(中学講座の開発プロジェクト(通称 tara、最近は 小学講座も加わっています) の web アプリケーション開発に比べて、少し細分化されたドメイン領域である「入稿」のコード開発と運用をおこなっています。今回は、その中でNext.jsを使った校閲出力に特化したマイクロサービスを1つ立てることになったプロジェクトが最近完成したので、そのお話をさせてください。 「入稿」というドメイン領域の切り…
5ヶ月前
記事のアイキャッチ画像
スタディサプリにおけるKarpenterの導入トラブル振り返り
スタディサプリ Product Team Blog
スタディサプリにおけるKarpenterの導入トラブル振り返り こんにちは。スタディサプリ小中高SREの@aoi1です。 スタディサプリでは、Kubernetesを利用しているのですが、Nodeの運用自動化のために2023年3月から本番環境を含む全環境でKarpenterを導入しています。 Karpenterのおかげで開発者体験を向上させることができたり、コスト削減を行うことができました。便利で良いことが沢山ある一方、本番環境で問題が発生するなどいくつかハマったこともありました。 本ブログでは私たちがハマったポイントを通じて、Karpenterの導入を検討している方、あるいは既に本番環境でKa…
5ヶ月前
記事のアイキャッチ画像
Android チームが使っている GitHub Actions のユニークな自動化レシピ集🍞👨‍🍳
スタディサプリ Product Team Blog
スタサプ小中高を開発している Android エンジニアの@maxfie1d、@morayl とスタサプ ENGLISHを開発している Android エンジニアの田村です。 GitHub Actions(以下 GHA) はアプリをビルドしたりストアに配信したりすることに使えるのはもちろん、もっともっと色々なタスクを自動化することができます。本記事では Androidチームによる GHA を使った自動化レシピをご紹介します。 まずはスタサプ小中 Android版での取り組みを紹介します。 自動でラベルを付与する 2023年9月に リニューアルをしたスタディサプリ 小学講座をリリースしました。ア…
6ヶ月前
記事のアイキャッチ画像
SLI の計測のために Envoy や service mesh を選択しなかった理由
スタディサプリ Product Team Blog
こんにちは。スタディサプリの小中高プロダクト開発部で主にコミュニケーション機能の開発をしている @snowfield702 です。 今回はスタディサプリで SLI の計測に Envoy と service mesh を使うのをやめて Datadog APM を利用することにしたという話をしたいと思います。 また、スタディサプリ小中高プロダクト開発部では、スタディサプリ ブランドのうちの複数のプロダクトを開発しております。 この記事では「スタディサプリ 小学/中学/高校/大学受験講座」を対象に話をしていきたいと思います。 Envoy を導入した経緯 スタディサプリでは主にマイクロサービスの SL…
6ヶ月前
記事のアイキャッチ画像
単一アプリでユーザに応じた機能切り替えを実現するために
スタディサプリ Product Team Blog
はじめに iOSエンジニアのkomajiです。2023年9月に「スタディサプリ 小学講座」をリニューアルし、既存の「スタディサプリ 中学講座」アプリに組み込む形でリリースしました。 この小学講座は既存の中学講座とは機能が全く異なっていますが、単一アプリで両方の機能を提供しています。これらはユーザの学年に応じて切り替わるようになっているのですが、本記事では、単一アプリでこの機能切り替えをどのようにして実現してきたのかについて紹介します。 小学講座について 小学講座では、子どもが自ら学び、その子に一番合った最高の学習体験が提供されることを目指しています*1。これを実現する仕掛けを組み込むために、小…
6ヶ月前
記事のアイキャッチ画像
SwiftUI: Explicit Identity の正しい使い方と落とし穴
スタディサプリ Product Team Blog
こんにちは。iOS エンジニアの @_nkmrh です。 SwiftUI が発表されてからはや4年が経ち、昨今のプロダクションコードでも多く活用されているのではないでしょうか。 そこで本稿では SwiftUI を活用する上で欠かすことのできない SwiftUI.View の Explicit Identity についておさらいしていきたいと思います。 Explicit Identity とは まずはじめに、SwiftUI の Explicit Identity とはなんなのかを説明しておきたいと思います。 Explicit Identity は SwiftUI が個々のView を識別するため…
6ヶ月前
記事のアイキャッチ画像
デザインをそのままの形でユーザーにお届けするためのデザインQA
スタディサプリ Product Team Blog
スタサプ小中で Android エンジニアをしている石田とデザイナーの竹本です。 2023年9月に リニューアルをしたスタディサプリ 小学講座をリリースしました。小学開発ではエンジニアが実装したアプリの画面をデザイナーがレビューするプロセスを デザインQA という形で明文化したので本記事ではその紹介をしたいと思います。 デザインQA デザインQAの導入経緯 これまでデザイナーが作成したデザインをもとにエンジニアが実装した成果物の確認はお互いによしなにやるという暗黙的な運用になっていました。この運用ではメンバーの裁量に依る部分が大きくなってしまうため、小学開発を機にエンジニアが実装後に必ずデザイ…
6ヶ月前
記事のアイキャッチ画像
Firebase Remote Config の変更内容を Slack に通知する
スタディサプリ Product Team Blog
こんにちは、@manicmaniac です。スタディサプリ iOS アプリ開発チームのエンジニアリングマネージャーをしています。 小ネタみたいな話ではありますが、Firebase Remote Config の変更を Slack に通知するようにしたらちょっと便利だったので記事にしようと思いました。 Firebase Remote Config とは Firebase Remote Config が何か知らない方もいると思うので、公式サイトから引用すると、 Firebase Remote Config Firebase Remote Config は、ユーザーにアプリのアップデートをダウンロー…
6ヶ月前
記事のアイキャッチ画像
WebアプリケーションにGoの並行処理アーキテクチャを導入してSLOを改善し、WebAPIを100倍速くした話
スタディサプリ Product Team Blog
こんにちは。スタディサプリの小中高プロダクト基盤開発グループでProduct Platform Engineer兼テックリードをやっている@tooooooooomyです。 今回は、WebアプリケーションにGoの並行処理機構を導入してSLOを改善し、WebAPIを100倍速くした話をしたいと思います。 前提条件 システムを0から作らない場合、アーキテクチャの改善の際には前提条件が付きものです。そこでまずは今回のシステムの前提条件をお話します。 対象となるシステムと、アーキテクチャ 今回対象とするシステムは、ここでは security-tracker と呼び、Webアプリケーション本体はGoで書か…
7ヶ月前
記事のアイキャッチ画像
スタディサプリ小学・中学講座でRoborazziを導入しました
スタディサプリ Product Team Blog
こんにちは、Androidエンジニアの@morux2です。本記事ではスクリーンショットの撮影にRoborazziを導入した経緯をご紹介できればと思います。 はじめに きっかけ RoborazziとPaparazziの比較 書きやすさ 複数端末での撮影 スクロールした画面の撮影 Showkaseの流用 Roborazziの採用理由 現状の運用 さいごに はじめに スタディサプリ小学・中学講座では、UnitTestに加えてVisual Regression Test (以下 VRT)を行っています。VRTは画像比較によるUIの回帰テストです。変更前後のコードそれぞれに対する画面のスクリーンショット…
7ヶ月前
記事のアイキャッチ画像
GraphQL Tokyo Meetup #21 で会場スポンサーしました #GraphQLTokyo
スタディサプリ Product Team Blog
こんにちは。@chaspy です。 9/13 に開催された GraphQL Tokyo にて弊社九段下オフィスの会場を提供させていただきました。 www.meetup.com 九段下オフィスについて 九段下駅から徒歩3分でとっても便利な立地です。 goo.gl 以下の記事も合わせてご覧ください。 www.recruit.co.jp 当日は30名近くの方が参加されました。 発表について なんと今回はオープンソース開発者グループ The Guild のメンバーである Laurin Quast さんがドイツから東京に来てトークをしてくださりました。 彼のトークテーマでもある graphql-code…
7ヶ月前
記事のアイキャッチ画像
Developers Summit 2023 SummerでADRについて発表しました & ベストスピーカー賞を受賞しました🎉
スタディサプリ Product Team Blog
こんにちは。スタディサプリでプロダクトプラットフォームの開発を行っている @highwide です。 少し前の話になってしまいますが、2023-07-27に行われた「Developers Summit 2023 Summer」(以下、「デブサミ」と書きます)にて「アーキテクチャデシジョンレコード」(ADR)についての発表をしましたので、その報告をさせていただきます。 「日々の意思決定の積み重ねを記録するアーキテクチャ・デシジョン・レコード」というタイトルで発表しました。 発表資料はこちらです。 また、デブサミのサイトでは、発表の当日の録画が見られるようです。 途中、自分の声に反応してしまったA…
7ヶ月前