サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
体力トレーニング
blog.studysapuri.jp
はじめに こんにちは。スタディサプリでプロダクトプラットフォームの開発を行っている @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
こんにちは、モバイルアプリエンジニアの @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 の採用は競争が激化している肌感があります。 応募者の方々にとっても、様々な企業の中
はじめに こんにちは!スタディサプリで開発者をしている @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 です。 今回はスタディサプリ小中高プロダクト開発部の技術戦略横断ワーキンググループをリードしていたときに 実践していたことや気をつけていたことを書き出してみようと思います。 もう少し具体的に言うと、ワーキンググループの活動においてどのようにファシリテーションを工夫したかという内容になります。 技術戦略横断ワーキンググループとは 詳しくは以前書いたブログ 技術戦略横断ワーキンググループの活動報告 の この部分 をお読みいただければと思います。 改めて簡単にグループについての説明をすると、以下のような感じです。 「組織横断で解決すべき技術課題にメスを入れていく」のが技術戦略グループ 技術戦略グループの中にいくつかのワーキンググループがある 「特定の分野に限らない課題・議題を取り扱う」のが技術戦略横断ワーキンググループ 技術戦略グループ
次のページ
このページを最初にブックマークしてみませんか?
『スタディサプリ Product Team Blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く