サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
円安とは
blog.studysapuri.jp
こんにちは。スタディサプリの小中新規開発チームで Web エンジニアをしている @YutaUra です。 去年の4月に新卒で入社をしまして約 1 年が経ちました。インターン生時代にもブログを書いているのでご興味あれば合わせてご覧ください。 GraphQL と Persisted Query スタディサプリ小中講座ではデータ通信に GraphQL を採用しています。 GraphQL を利用することで、クライアントはスキーマに定義された範囲で自由にデータを取得することができます。 query GetUser { user { name age } } また、 GraphQL はデータのグラフ構造に基づいて関連する複数のデータを一度に取得することができます。 query GetUser { user { name age posts { title content } } } GraphQL の
こんにちは。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年02月27日(月) 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バケット(スタディサ
こんにちは。スタディサプリでプロダクトプラットフォームの開発を行っている @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 の採用は競争が激化している肌感があります。 応募者の方々にとっても、様々な企業の中
はじめに こんにちは!スタディサプリで開発者をしている @pankona です。今日は、最近スタディサプリでも頻繁に使われるようになってきた Go 言語の話をします。 先日、GitHub 上の gorilla/mux リポジトリがアーカイブされました。gorilla/mux は Go 言語での HTTP ルーター選択肢の一つで、シンプルながら必要十分なルーティング機能を提供するライブラリです。主観的な見解かもしれませんが、このライブラリは広く使われ、支持を得ていたと感じています。私のお気に入りのライブラリの一つでもあります。スタディサプリで稼働している一部のマイクロサービスでは現在も gorilla/mux を使用しています。 ライブラリがアーカイブされるということは、その開発が停止し、新機能の追加やセキュリティアップデートが提供されなくなるということです。また、新しい Go のバージョン
EKS上でKubecostの検証 初めまして、今回 RECRUIT Job for Student 2022 Autumn Engineer に参加させていただいていた@masaki12-sです。 私は本アルバイトでスタディサプリ小中高のSREチームに配属され、Kubecostと呼ばれるツールの調査を行いました。本記事ではEKS上でのKubecostの導入から調査の結果を軽くまとめています。 本記事での貢献 EKS上へのKubecostの導入方法(Cost&Usage Report統合は未完了) Kubecostの概要や詳細についての説明 調査のきっかけ スタディサプリ小中高では複数のマイクロサービスで構成されていて、各チームがそれぞれマイクロサービスを開発運用しています。 開発運用をしていく中で各チームがマイクロサービスにかかるコストを把握することができれば、どの部分でコストが発生してい
こんにちは。Webフロントエンドエンジニアの @kamatte-me です。 私は2022年11月にスタディサプリ開発チームに転職してきました。入社してまず驚いたのが、開発を行う上での仕組みや体制が非常に充実していることです。 Kubernetes環境 スタディサプリでは、インフラ基盤を全てKubernetesで構築しています。 本番環境や検証環境だけでなく、個人の開発環境までもです。各人に対して専用のNamespaceが発行されています。 スタディサプリのシステムは数多くのアプリケーションが複雑に連携して成り立っています。もしホストマシン上にこの開発環境を構築しようとすると、多くのマシンリソースを消費してしまうのはもちろんのこと、各アプリケーションの言語 / ライブラリバージョンの更新などにも頻繁に追従する必要があり、多大なストレスがかかります。 一方、Kubernetesで構築された開
こんにちは。Webアプリケーションエンジニアの @ttokutake です。 今回はスタディサプリのWebアプリケーション開発がどのように行われているかをざっと紹介したいと思います。 スタディサプリ 大学受験講座 の開発の話がメインです。 スタディサプリ 中学講座 は今回の話とはやや異なる部分もあるため、それはまた別のブログ記事で紹介されるかもしれません! スタディサプリ ENGLISH は全く別物のシステムです。 そちらの開発については こちらのサイト のブログ記事を読むといろいろと雰囲気が掴めそうです。 Webサービスの構成 まずはWebサービスの構成を紹介します。 右半分にはDBを共有している複数のWebアプリケーションが描かれています。 これらは歴史の長いWebアプリケーションがそれなりにあり、いわゆる「分断されたモノリス」状態となっています。 左半分にはマイクロサービス群が描かれ
こんにちは、ujihisa といいます。現在スタディサプリのProduct Platform Team で Product Platform Engineerとして仕事を行っています。 Ruby 3.2 3ヶ月ちょっと前の2022-12-25 (JST) に、Ruby 3.2.0がリリース されました。2023-03-05現在の最新安定版はRuby 3.2.1です。 スタディサプリではRailsなどのwebアプリケーションが26個あり、それ以外も含めると全部で29個のRubyのプロジェクトがあります。記事執筆現在、これらの中で最も古いRubyバージョンは3.0.4です。 一般に、プロジェクトでは常に最新のバージョンのRubyが使えるべきで、当たり前ですが最新バージョンの新機能をうまく使っていって仕事を進めることができるのはとても気持ちいいですよね。逆に、最新バージョンが使えないならば、今後
こんにちは。Androidエンジニアの@morux2です。先日スタディサプリ中学講座にまなレポ機能が追加されました🎉 まなレポは学習状況・学習履歴を確認できる機能です。リアルタイムで学習状況が表示されるので、学習後すぐに成果の振り返りをしていただくことができます。 この記事ではまなレポ機能の実装の裏側をご紹介します。画面はJetpack Composeで構築しています。 まなレポ画面 まなレポ画面の概要 画面要件は大きく2つあります。 日と週のタブを切り替えて、日次・週次の学習履歴を確認できる タブがSticky Headerになる(スクロールするとステータスバーの下にタブが張り付く) ここからは2つの画面要件をどう実現したかお話ししていきます。 Sticky Header Jetpack Composeでタブを切り替えられるようにする タブにはTabRowを用いています。選択されたタブ
こんにちは、 Web フロントエンドエンジニアの @progfay です。 今回はプロジェクトで遭遇した URL 長による GraphQL Request の失敗と Apollo Link による解決方法を紹介します。 引数に配列を受け取る GraphQL field 私の所属するスタディサプリ中学講座の開発プロジェクト (通称: tara) では通信に GraphQL を採用しています。 その中で、以下のような field を実装しています。 type Query { entities(ids: [ID!]!): [Entity!]! } これに対して、以下のような Query を叩きます。 query specificEntities($ids: [ID!]!) { entities(ids: $ids) { name } } Request-URI Too Large ある日、この
こんにちは。ソフトウェアエンジニアの @ttokutake です。 今回はスタディサプリ小中高プロダクト開発部の技術戦略横断ワーキンググループをリードしていたときに 実践していたことや気をつけていたことを書き出してみようと思います。 もう少し具体的に言うと、ワーキンググループの活動においてどのようにファシリテーションを工夫したかという内容になります。 技術戦略横断ワーキンググループとは 詳しくは以前書いたブログ 技術戦略横断ワーキンググループの活動報告 の この部分 をお読みいただければと思います。 改めて簡単にグループについての説明をすると、以下のような感じです。 「組織横断で解決すべき技術課題にメスを入れていく」のが技術戦略グループ 技術戦略グループの中にいくつかのワーキンググループがある 「特定の分野に限らない課題・議題を取り扱う」のが技術戦略横断ワーキンググループ 技術戦略グループ
はじめに こんにちは、小中高プロダクト基盤開発グループの @kazu9su です。 この記事では、小中高プロダクト基盤開発グループのProduct Platform Engineer(プロダクトプラットフォームエンジニア)とは何をするポジションなのかを具体例を交えて紹介させていただければと思っています。 1. Daily Standup and Service Monitoring 仕事が始まってしばらくしたら、Daily Standup(進捗状況について話し合い、障害を特定するための短い毎日のミーティングです)を行い、雑談をしたり、みんなの予定やSprint Backlog を確認したりします。 Sprint Backlogの様子 その後、担当サービスのモニタリングを行います。 小中高プロダクト基盤開発グループでは、 認証ログサービス 同意証跡サービス のようなサービスをいくつか持ってお
Darklaunchという便利なものと、その未来 3行要約 スタディサプリのRubyバックエンドで気軽に誰でも使える、"Darklaunch"という Feature toggles 機構がある 4年強ほど運用してきて、様々な知見、多様なユースケース、問題などが明らかになった 知見を活かして、近い将来Darklaunch v2というのを社内で作って公開予定 (HTTP APIであり、Rubyバックエンドだけでなく全環境から直接利用可能) Feature togglesとは Feature togglesとかFeature flagsとかchankoとかcanary releaseとかA/BテストとかlaunchdarklyとかflipperとかDarklaunchなどという言葉を見聞きした機会のある方は多いと思います。ちょっとそれぞれレイヤーやカバレッジは違いますが、ようするに「コードの変更
はじめまして!2022年の9月の中頃にジョインしたiOSエンジニアの@komajiです。まだ歴が浅くキャッチアップしている最中ではありますが、私が担当しているスタディサプリ中学講座のiOSアプリが2022年12月現在どのような環境で開発されているのかを紹介していきます。 開発体制 スタディサプリ中学準備講座は、Web, iOS, Androidの3プラットフォームで提供しており、開発チームは以下の縦割りの3チームに分かれています。 growthチーム: サービス全体の利用促進 learning-encourageチーム: 学習促進 learning-coreチーム: 学習体験の向上 iOSエンジニアは、私が所属しているgrowthチームとlearning-encourageチームに2名ずつ所属しております。learning-coreチームは前述した通り学習体験の向上を担うチームですが、ネイ
こんにちは、データエンジニアの @masaki925 です。 今年の春リニューアルされたスタディサプリの中学講座にて、レコメンドシステムを新規構築しました。 そのアーキテクチャが、当初意図していなかったものの、結果的にはCQRS (Command Query Responsibility Segregation) パターンと呼べるものになっていました。 本記事では、CQRS の特徴に則って当該アーキテクチャを紹介しつつ、今後に向けて考察します。 CQRS パターン + イベントソーシング なぜCQRS + イベントソーシングか 1. 分析用の学習ログと、レコメンドシステム用の学習ログは分けたい 2. 直前の学習状況をリアルタイムに反映したレコメンドをしたい 3. レコメンドロジックはルールベースで開始し、ログが溜まったのちに機械学習(ML) ベースに移行したい 4. 学習ログはスナップショ
こんにちは、 Web フロントエンドエンジニアの @progfay です。 この記事は Recruit Engineers Advent Calendar 2022 の 12 日目の記事です。 今回はプロジェクト内で使っている @graphql-codegen/typescript-react-apollo package との思い出を書き綴っていきます。 出会い 私の所属するスタディサプリ中学講座の開発プロジェクト (通称: tara) では通信に GraphQL を採用しています。 また、 GraphQL Code Generator を使って GraphQL にまつわる型や関数の生成を行なっています。 Web Frontend では API Client として Apollo Client を使用しており、 TypeScript と React と Apollo Client を合わ
こんにちは。スタディサプリ小中高 / Quipper SREの@kyontanです。 この記事は Recruit Engineers Advent Calendar 2022 の1日目の記事です。 開発チームが事実に基づいて(= fact-basedな)意思決定をできるようにするための一助として、SREチームではSLO (Service Level Objective)が設定されていることをサービス公開時の要件としています。 スタディサプリ小中高におけるSLOの運用については、以前弊チームの@chaspyが SRE NEXT 2020 で「SLO Review」というタイトルで登壇しました #srenext という記事を書いているので、こちらもご参照ください。 本記事では、これまでしきい値によるアラートを設定していたSLOについて、Burn Rateによるモニタリングを試してみたので、ざっ
こんにちは、iOS エンジニアの @manicmaniac です。 現在スタディサプリ iOS アプリ開発チームのエンジニアリングマネージャをしています。 「スタディサプリ」ブランドで出ているアプリは数多くあるのですが、今回は今年リリースされたばかりの「スタディサプリ 中学講座」というアプリについて書きます。 flaky test とは タイトルにある flaky test について、先に説明します。 2016 年の Google Testing Blog の記事によると、flaky test とは同一のコードで成功と失敗の両方の結果を生むものとされています。 We define a "flaky" test result as a test that exhibits both a passing and a failing result with the same code. こうなっ
次のページ
このページを最初にブックマークしてみませんか?
『スタディサプリ Product Team Blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く