タグ

ブックマーク / blog.studysapuri.jp (20)

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

    こんにちは。SREのkyontanです。Rubyが大好きなのでRubyの話をします。ちなみにリクルートはRubyKaigi 2024へGold Sponsorとして協賛しています! *1。ぜひ沖縄でお会いしましょう。 これはあるアプリケーションのメモリ消費量を示すグラフなのですが、まさかgemを入れ替えるだけでこんなに嬉しい変化が見られるとは思っていませんでした。今日はそんなgemの話をします。 話は遡って2023年4月のある日、インターネットを眺めていたところ、ShopifyがpitchforkというOSSを公開したという情報が目に留まりました。 調べてみると、どうやら著名なRackサーバー実装の1つであるunicornの派生版であり、メモリ使用量の削減に特化しているらしいのです。 github.com これはスタディサプリ小中高のあのリソースドカいマイクロサービス第一位である api

    スタディサプリ最大のRailsアプリケーションにYJIT+pitchforkを導入してメモリ使用量を劇的に削減するまで - スタディサプリ Product Team Blog
    ryshinoz
    ryshinoz 2024/04/04
  • Ruby 3.2にアップデートするときにつまづいたポイント - スタディサプリ Product Team Blog

    こんにちは、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が使えるべきで、当たり前ですが最新バージョンの新機能をうまく使っていって仕事を進めることができるのはとても気持ちいいですよね。逆に、最新バージョンが使えないならば、今後

    Ruby 3.2にアップデートするときにつまづいたポイント - スタディサプリ Product Team Blog
    ryshinoz
    ryshinoz 2023/03/17
  • Sentry の運用を最適化して継続していく - スタディサプリ Product Team Blog

    こんにちは。フロントエンドエンジニアの @sakamuuy です。 私たちのチームではエラートラッキングに Sentry というサービスを利用しています。この運用を開始して半年が経過しました。 今回は私が所属するフロントエンドチームでのSentry運用について、苦労したこととその打ち手についてお話したいと思います。 はじめに エラーを検知し重大なバグなどに早めに気づくことは、Sentryを運用する一つの目的だと思います。 そのためには未解決のエラー件数をなるべく少なくし、発生したエラーを監視できている状態を保つことが必要だと考えています。この状態を保てるように運用で工夫していることについてお話します。 チーム チームでの運用についてお話する前に、私の所属しているtara学習コアチーム (taraとはスタディサプリ中学講座のリニューアルプロジェクトの通称です) についてお話します。 tara

    Sentry の運用を最適化して継続していく - スタディサプリ Product Team Blog
    ryshinoz
    ryshinoz 2022/10/03
  • Rubyのコードの書き方 - スタディサプリ Product Team Blog

    こんにちは、ujihisa といいます。現在スタディサプリのProduct Platform の Software engineerとしての仕事を行っています。先月から社内留学で、開発支援チームからコーチングチームに一時的に移籍して、そちらの仕事をやっています。 Rubyのコードの書き方 まずは全体的なコーディングスタイルなどについて。 現在社内で統一的に使用しているコーディングスタイルの標準化などはとくに行われておりません。各チームごとに、それぞれのチームが開発運用している (= ownershipをもっている) コンポーネントそれぞれに対して個別のRuboCop設定などはあります。また、複数のチームの境界にある、歴史的な共有サービスに関しては (そう、まだあります、そしてこれは今後もかなり長いあいだ付き合っていくことになるでしょう) testdouble/standard というTes

    Rubyのコードの書き方 - スタディサプリ Product Team Blog
    ryshinoz
    ryshinoz 2022/07/27
    ベーコンに注目してしまった
  • Terraform の CI を AWS CodeBuild から GitHub Actions + tfaction に移行しました - スタディサプリ Product Team Blog

    こんにちは。 SRE の @suzuki-shunsuke です。 Terraform の CI を AWS CodeBuild (以下 CodeBuild) から GitHub Actions + tfaction に移行した話を紹介します。 これまでの Terraform Workflow (CodeBuild) 弊プロダクトの Terraform の CI に関しては過去の記事でも何度か紹介していますが、 元々 CodeBuild 上で CI を実行していました。 かつては CircleCI 上で実行していましたが、 CodeBuild に移行しました。 blog.studysapuri.jp CodeBuild に移行した理由は大きく 2 つありました。 Security 永続的な Access Key を発行することなく AWS のリソースを管理できる GCP に関しても Wor

    Terraform の CI を AWS CodeBuild から GitHub Actions + tfaction に移行しました - スタディサプリ Product Team Blog
    ryshinoz
    ryshinoz 2022/02/04
  • 〜その意思決定を刻め〜「アーキテクチャ・デシジョン・レコード(ADR)」を利用した設計の記録 - スタディサプリ Product Team Blog

    こんにちは。スタディサプリのWeb開発をやっている@highwideです。 今日は、自分の所属する"コーチングチーム"(個別指導コースや合格特訓コースの機能開発を行っています)が、最近のプロジェクトで利用した「アーキテクチャ・デシジョン・レコード」、通称「ADR」について紹介したいと思います。 アーキテクチャ・デシジョン・レコード(ADR)とは 「ADR」「アーキテクチャ・デシジョン・レコード」という概念を知ったのは、社内で行っていた「Design It! プログラマーのためのアーキテクティング入門」(以後「Design It!」)の読書会でのことでした。 www.oreilly.co.jp 最初にそのキーワードが登場する「11.2.3 必要なときだけ形式的な記述に投資する」では、「"膨大な量のドキュメントになる傾向"がある形式的なドキュメンテーション」に対比して、以下のように紹介されます

    〜その意思決定を刻め〜「アーキテクチャ・デシジョン・レコード(ADR)」を利用した設計の記録 - スタディサプリ Product Team Blog
    ryshinoz
    ryshinoz 2021/04/06
  • SRE Team のオンボーディングのいま - スタディサプリ Product Team Blog

    こんにちは。SRE の @chaspy です。 Quipper の SRE Team ではじめて「オンボーディング」と呼ばれるものを行って約2年経ちました。 quipper.hatenablog.com その後、3人の仲間が入社し、そのたびにオンボーディングプロセスを改善してきました。 記事では、SRE Team のオンボーディングプロセスの"いま"を振り返るとともに、その効果や意義を、オンボーディングを受けたメンバーからのコメントを交えて紹介したいと思います。 オンボーディングの目的 あらためてオンボーディングの目的について言語化しておきます。これは今も昔も変わっておらず、「New Joiner の早期の戦力化」だと思っています。 早期の戦力化のためには何が必要か、ということを考えると、現在のチームのミッションから普段の業務へブレークダウンし、それらをスムーズに遂行するために何が必要か

    SRE Team のオンボーディングのいま - スタディサプリ Product Team Blog
    ryshinoz
    ryshinoz 2021/03/17
  • カジュアル面談への扉 - スタディサプリ Product Team Blog

    こんにちは、記事では弊社のカジュアル面談についてライトに書いてみました。文字数は5800字程度ですので読了には5~10分ほどを要すると思われます。 対象読者 Quipperのカジュアル面談に来てみようと思っている方 他社のカジュアル面談がどのような感じか知りたい方 言うまでもないかもしれませんが弊社のやり方が唯一の正解ではありませんし、完成形でもありません。とはいえ現時点で獲得しえたカジュアル面談のノウハウを世に出すことで業界全体の採用活動のレベルの底上げに寄与していきたい気持ちがあります! カジュアル【casual】[形動]格式ばらず、くつろいでいるさま。 カジュアル面談とは? 初めに言葉の定義を合わせていきます。 弊社 Quipper は面接・面談をより良いものにするために東京オフィス採用面接ガイドというものを公開しています。(同ガイドに関しての詳細はより良い面接を実現するために "

    カジュアル面談への扉 - スタディサプリ Product Team Blog
    ryshinoz
    ryshinoz 2020/02/06
  • Prefer ISO 8601 - スタディサプリ Product Team Blog

    01/02/03 という日付を見たときに、どう読み取りますか? 著者 ujihisa はこれを素直に 2003年1月2日と読み取りますが、人によっては 2001 年 2 月 3 日 2003 年 2 月 1 日 平成元年 2 月 3 日 令和元年 2 月 3 日 などと読み取ることもあるでしょう。日では年/月/日が普及していますが、英語などから順序を無視した機械的な翻訳の日付でまれによくある「1月2日 2003年」みたいな表記を見すぎてしまった人は月/日/年みたいに読んでしまうかもしれません。 ところで私はカナダに住んでいるのですが、カナダという国はこのようにスラッシュ区切りの日付を以下の 3 パターンのいずれかで読みとります。 月/日/年 年/月/日 日/月/年 https://commons.wikimedia.org/wiki/File:Date_format_by_country

    Prefer ISO 8601 - スタディサプリ Product Team Blog
    ryshinoz
    ryshinoz 2020/01/24
  • Google Cloud Run で社内フリードリンク在庫判定ボットを作ってみた。 - スタディサプリ Product Team Blog

    はじめまして、データプロダクト開発チームの@yuu_itoです。 一緒に仕事をしている@toohskとフリードリンクの在庫判定をするSlackボットを作成しましたので紹介します。 フリードリンクとフリードリンク在庫判定ボットとは システム構成 Google Cloud Run について Google Cloud Functions から Cloud Run に移行するためにしたこと 1. Dockerfileの追加 2. Pythonコードの修正 画像分類モデルについて 動作結果 ハマったところ まとめ フリードリンクとフリードリンク在庫判定ボットとは Quipperでは福利厚生の一環として、社内でフリードリンクが提供されています。 フリードリンクの冷蔵庫はオフィスエリアの一角にあり定期的に充填されています。 既にWebカメラを搭載したRaspberry Piで定期的に様子を撮影しており、

    Google Cloud Run で社内フリードリンク在庫判定ボットを作ってみた。 - スタディサプリ Product Team Blog
    ryshinoz
    ryshinoz 2019/10/04
  • Web Developer も知っておきたい Kubernetes における Sidecar Pattern と Ambassador Pattern - スタディサプリ Product Team Blog

    Site Reliability Engineering チームの @yuya-takeyama です。 年末年始頃は React Native でのアプリ開発をやっていた気がしますが、「スキルを Web 開発から SRE の領域まで広げたい」という以前からの私自身の思いと、「Kubernetes による Microservices 基盤を作っていくメンバーがもっと必要」「Microservices を技術面だけでなく組織面でも Production Ready な形でやっていく上で Developer と SRE のつなぎ役が必要」という会社の状況が一致したので、異動して AWS, Kubernetes または MongoDB などと向き合っています。 3 行でまとめ Sidecar Pattern はアプリケーションのコンテナから再利用可能な部分をもう一つのコンテナとして切り出すパター

    Web Developer も知っておきたい Kubernetes における Sidecar Pattern と Ambassador Pattern - スタディサプリ Product Team Blog
    ryshinoz
    ryshinoz 2019/06/27
  • QuipperのWebエンジニア採用におけるコードテスト - Quipper Product Team Blog

    こんにちは、Web エンジニアの @kechol です。 Quipper では現在、ブログを再開したり StudySapuri Meetup(Product 回、Data 回)を開催したりと、採用活動に力を入れています。今日はそんな採用活動について、僕も関わっている Web エンジニアの採用プロセスの裏側を少しご紹介したいと思います。 TL;DR Quipper における Web エンジニア採用プロセスにおいては、コードテストを実施しており、そのプロセスは非常に重要なものだと考えている これまでアプリケーションを書いてもらうようなテストを実施していたが、候補者・採用メンバー双方の負担が大きく、改善の余地があった それを受けて、より小さく、実務に近いコードでテストできるようにコードテストを改善した Quipper における Web エンジニアの採用プロセス Quipper における Web

    QuipperのWebエンジニア採用におけるコードテスト - Quipper Product Team Blog
    ryshinoz
    ryshinoz 2018/10/11
  • React Nativeハイブリッドアプリへの挑戦 ~ Part3: 振り返り/今後 ~ - スタディサプリ Product Team Blog

    エントリは3部作のPart3となっております。 Part1: Monorepo/CI Part2: 導入/Bridge Part3: 振り返り/今後 モバイルエンジニアの@hotchemiです。 Part1、2では実際にインテグレーションを進めてきた中で得られた知見を公開してきましたが、今回は半年程の運用を経て我々は当初の目的を達成できているのか、という事に関しての振り返りと今後について共有できればと思います。 振り返り 現状を軽く復習しておくと私達は今年の初頭からハイブリッドスタイルの開発を初め、現在のコード比率はNative75%, React Native 25%程となっています。 Good まず、Part1で宣言した3つの目標に関して振り返ってみます。 モバイルエンジニア不足の解消(◎) 達成する事ができました。一例を紹介すると現在Quipperには3名のiOSエンジニアがいます

    React Nativeハイブリッドアプリへの挑戦 ~ Part3: 振り返り/今後 ~ - スタディサプリ Product Team Blog
    ryshinoz
    ryshinoz 2018/09/12
  • yatteiki.fmスポンサーの舞台裏 - スタディサプリ Product Team Blog

    やっていき手の@hotchemiです。 現在、新気鋭podcast集団yatteiki.fm様との協賛企画が絶賛進行中です。Ep55, 56の感想を#yatteikifmハッシュタグをつけてツイートすると抽選で30名様にオリジナルボールペンをプレゼントという事ですので是非是非感想をツイート頂ければと思います! 【プレゼントキャンペーン実施中🍁】 リスナー感謝企画!30名様にオリジナルボールペンをプレゼント! 応募方法は #yatteikifm をつけて55, 56回の感想ツイートをするだけ。 企画はQuipperさんのご協賛で実現しました。勉強の秋、このペンと一緒に積ん読を崩しましょう! 👉https://t.co/h4A4fbrMfx pic.twitter.com/TSfnFEsRGA— yatteiki.fm やっていき手のためのPodcast (@yatteikifm) Se

    yatteiki.fmスポンサーの舞台裏 - スタディサプリ Product Team Blog
    ryshinoz
    ryshinoz 2018/09/10
  • Kubernetes導入で実現したい世界とその先にあるMicroservices - スタディサプリ Product Team Blog

    はじめに CTO兼SREエンジニアリングマネージャーの中野です。ここしばらくの間、CTO/SREエンジニアリングマネージャーとして注力しているKubernetes導入について紹介したいと思います。 今回は、Kubernetes自体がどういうものなのかということより、それをツールとしてどう使い、それでどういう世界を実現したいのかみたいなところを中心に紹介できたらと思います。 まず現在の状況ですが、Quipperでは、大きく分けてスタディサプリの小中高校生向けと日以外向けの2つのサービスを展開しています。サービスとしての構成はほぼ同じですが、基盤としては別々のAWSアカウントで運営されています。このうち日国外向け環境では、Kubernetes化がほぼ完了というステータスになっています。目下、スタディサプリも移行中です。 Kubernetes化以前は、Deis(Herokuクローン的なもの)

    Kubernetes導入で実現したい世界とその先にあるMicroservices - スタディサプリ Product Team Blog
    ryshinoz
    ryshinoz 2018/08/23
  • DDDによる関心の分離 - スタディサプリ Product Team Blog

    Web Engineer の @wozaki です。 スタディサプリの合格特訓コースの機能開発・保守が主な業務です。 今年3月に開催された Rails Developer Meetup 2018 で、弊社の @kyanny が Quipper における「関心の分離」の歴史 をプレゼンしました。 プレゼンでは、モノリシックなコードベースを「関心の分離」により保守性を高めた事例をご紹介しました。「分断されたモノリス」に共感された方も多かったのではないでしょうか。 「分断されたモノリス」がちょっと流行ってうれしい😄— Kensuke Nagae (@kyanny) 2018年3月27日 記事では「関心の分離」事例を、ドメイン駆動設計(以下、DDD)の観点からご紹介します。 対象読者 モノリシックで大規模なアプリケーションを保守している方 DDD の具体例を探している方 ※ 注意点 DDDの詳

    DDDによる関心の分離 - スタディサプリ Product Team Blog
    ryshinoz
    ryshinoz 2018/07/27
  • Jasper。プロダクトマネージャーがボトルネックとならないための最高のツール - スタディサプリ Product Team Blog

    Quipper でプロダクトマネージャーをしている @daishi-kayano です。担当はスタディサプリ大学受験講座のBtoC領域と、ネイティブアプリです。 今回は弊社がとてもお世話になっている GitHub issue管理ツール Jasper について、私なりの活用法を、感謝を込めてご紹介します。 QuipperでのGitHub Issueの使い方 前提として、弊社では国内・海外問わず、ほぼ全員がGitHub上で仕事のやりとりをしています。*1 開発の仕様の議論はもちろんのこと、Bizの企画の議論、カスタマーからのお問い合わせの調査、コーポレートスタッフからのお知らせも、全てがGitHub Issuesでのやりとりです。 GitHub Issuesさえ見えてけば、隣のチームのこと、海外拠点のことも知ることができます。 全てがissueで進むので、多くのチームが進捗をGitHub Pr

    Jasper。プロダクトマネージャーがボトルネックとならないための最高のツール - スタディサプリ Product Team Blog
    ryshinoz
    ryshinoz 2018/06/29
  • モバイルエンジニアが H.265/HEVC 使った方がいい理由(わけ) - スタディサプリ Product Team Blog

    こんにちは。モバイルエンジニアの@daisukefujiです。 少し前になりますが、WWDC 2017 にてH.265/high-efficiency video coding(HEVC) のサポートが発表されました。 iOS デベロッパーの方はご存知だと思いますが App Store審査ガイドライン に以下のビデオストリーミングコンテンツについての規定があります。 2.5.7 携帯電話ネットワークを介した10分以上のビデオストリーミングコンテンツにはHTTP Live Streamingを使用し、ベースラインの192 kbpsのHTTPライブストリーミングを含める必要があります。 ここで唐突に「ベースライン」という用語が使われていますが、これは「H.264 Baseline profile」もしくは「MPEG-4 Part 10 Advanced Video Coding の Basel

    モバイルエンジニアが H.265/HEVC 使った方がいい理由(わけ) - スタディサプリ Product Team Blog
    ryshinoz
    ryshinoz 2018/06/13
  • エンジニアを魅了する次世代 BI ツール『Looker』を Quipper が導入した理由(わけ) - スタディサプリ Product Team Blog

    こんにちは、データグループのマネージャーをやっています beniyama と申します。 先の記事『プロダクトの「負債」を「機能」と呼び直す 〜A/Bテストを用いた"価値"の定量化〜』でも触れられていますが、データグループではデータ分析基盤の構築(参考資料)からデータ分析、あるいは学習データを活用した研究開発までスタディサプリのデータに関わることほとんど全てを担当しています。 プロダクトや事業 KPI の社内向けモニタリング環境の構築・整備も行なっているのですが、今回、既存の環境を刷新して Looker というまだ日ではほとんど無名?のツールを導入することにしましたのでその経緯をお話ししつつ、今後国内でもユーザーが増えていくといいなという願いを込めて1エンジニアとして興奮したポイントを書き連ねていこうと思います。 最初の1年間は DOMO を導入して運用 スタディサプリではもともと各種 K

    エンジニアを魅了する次世代 BI ツール『Looker』を Quipper が導入した理由(わけ) - スタディサプリ Product Team Blog
    ryshinoz
    ryshinoz 2018/06/05
  • QuipperにおけるTerraformの運用 - スタディサプリ Product Team Blog

    こんにちは、Engineeringチームの石村(kamatama41)です。Engineeringチームの主な役割はインフラ構築や監視、パフォーマンス改善などのいわゆるDevOpsやSREと言われる領域になります。 Quipperでは現在グローバル向けであるQuipper (School, Video)と日向けのスタディサプリという二つのプロダクトを運用しており、それらのプロダクトはAWS上に構築され、Terraformを使って構成管理をしています。そこで、私達がTerraformを運用するために工夫している点を紹介したいと思います。 Terraformとは? Vagrantなどを提供するHashiCorp社製のインフラ構成管理ツールで、AWSGCPなどが提供している各種クラウドサービスをリソースという単位で構築、コード化出来るツールになります。 (AWSのEC2インスタンスを5台立ち

    QuipperにおけるTerraformの運用 - スタディサプリ Product Team Blog
    ryshinoz
    ryshinoz 2016/10/24
  • 1