サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
GPT-4o
tech.studyplus.co.jp
こんにちは、スタディプラスのカンファレンス/OSSサポートチーム、菅原です。 RubyKaigi 2024がいよいよ来週開催に迫ってきました! 今年もスタディプラスはRubyKaigi 2024にゴールドスポンサーとして協賛しています。 rubykaigi.org 今年は沖縄県那覇市で開催ということで、現地の食事や景色など行くだけで楽しめそうですね。 弊社からも4名のエンジニアが現地参加予定です。見かけたらお声がけいただけると嬉しいです。 RubyKaigi 2024とは? RubyKaigiは、Rubyプログラミング言語に関する国際会議です。 最新の技術について議論する場であり、Rubyの将来について議論する世界最大のRubyコア開発者の集まりです。 それだけでなく日本語と英語でのコミュニティハブとして重要な役割を果たしています。 講演者には、Rubyの生みの親であるまつもとゆきひろ(M
こんにちは、SREグループの 水口 です。 この記事では、スタディプラスが運営する「Studyplus Engineering Podcast」の公開までに行なっているPodcastのShow Notesを作成する過程について紹介します。 Show Notesと生成AI活用のモチベーションについて Show NotesとはPodcastのエピソード内で何が起こったかを詳細にまとめたもので、一般的には以下の内容が記載されます。 トピックの要約 言及された話題に関するリンク Podcastの聴取や購読などのCTA(Call To Action / 行動喚起) また、収録・編集ツールを提供するRiversideのブログに記載されている解説が明快だったためこちらも引用させてもらいます。 Podcast show notes are a comprehensive write up of what
こんにちは。サーバーサイドグループの山田です。 先日StudyplusのRailsアプリケーションのRubyを3.3にアップデートしました。 Ruby3.3ではYJITによるパフォーマンス改善が目玉の1つですが、弊社のアプリケーションでどのような変化があったかを報告します。 前提 本記事で記載している集計データは以下のようなアプリケーションおよび条件で取得しています。 Studyplusのマイクロサービス群の中で最も規模の大きなRailsアプリケーション Railsバージョンは7.1.3 Ruby3.2.2でYJIT有効化済みの状態からRuby3.3.0にアップデートした際の変化 APIリクエストを集計の対象とし、非同期処理などは対象外 --yjit-exec-mem-sizeや --yjit-call-threshold はデフォルト設定のままYJITを有効化 APIレスポンスタイムの変
こんにちは。ウェブアプリケーショングループのエンジニアの川井です。 最近、新しいプロジェクトを立ち上げる際、開発を始める前に新しい仕様や設計に関する整理やコミュニケーションを強化するため、モブ設計を導入しました。この記事では、モブ設計の概要と実施方法について紹介します。 背景 新しいプロジェクトを始める際、従来は1人のエンジニアが最初の段階の設計と仕様の整理を担当し他のメンバーにレビューしてもらってました。 このやり方では以下の問題がありました。 設計を担当するメンバーの大きな負担になっていた。 設計の検討や仕様の整理もそのメンバーに属人化していた。 設計に関してチーム内でのコミュニケーションが不足していた。 この問題を解決するため、モブ設計を実施してみました。 モブ設計とは チームではモブプログラミングを過去に実施したことがあり、そこではチーム全員で同期的にコミュニケーションを取りながら
こんにちは。サーバーグループ エンジニアの山田です。 今回はRails7.0からRails7.1へのアップグレードを行なった際に、ActiveRecord Encryptionで発生したエラーとその対応について紹介します。 同様のエラーに遭遇した方の参考になれば幸いです。 ActiveRecord Encryptionによる属性の暗号化 決定論的暗号化と非決定論的暗号化 発生した事象 エラーの原因 SHA256に変わった経緯 対応方法 hash_digest_class support_sha1_for_non_deterministic_encryption 採用した方法 まとめ ActiveRecord Encryptionによる属性の暗号化 本題に入る前の前提知識としてActiveRecord Encryptionについてふれます。 ActiveRecordでは属性を暗号化して保存す
こんにちは。ウェブアプリケーショングループのエンジニアの川井です。 今回はReactアプリケーションの再描画を抑えるために、画面をいくつかのパーツに分け、各パーツごとにルーティングを管理するようにした話を紹介します。 背景 Studyplus for SchoolではReactとReact Routerを利用してSPAを実装しています。Reactを使ってSPAを実装する際にはReact Routerを使ってルーティングを管理することが多いです。React Routerの主な機能としてはURLに応じて表示するコンポーネントを切り替えることです。以下のようにReact Routerが提供しているSwitchとRouteコンポーネントを使って表示するコンポーネントの切り替えができます。 reactrouter.com <Switch> <Route path={"/home"}> <HomePa
こんにちは、サーバーサイドグループの五十嵐です。 今年の4月に弊社に転職して初めて技術ブログを書きます。 今回はAPIドキュメントの作成ツールとしてGemrspec-openapiを導入した話について書いてみます。 弊社では以前からOpenAPIを導入しドキュメント管理を行なってきました。 しかし、OpenAPIを導入する前からあったAPIに対するドキュメントは不足していたり内容が不十分なものもありました。 このようなツールは導入当初はモチベーションが高くても、年月が経つ内にモチベーションが低下したり、メンバーが変わることで存在自体なかったことになったりはよくあることだと思います。 実際にOpenAPIは全て手で書こうとするとはっきり言って非常にめんどうで、そこそこ工数もかかります。 API新規作成時は自分で必要な情報がわかっているので書きやすいですが、既存のAPIで新しくドキュメントを作
こんにちは。クライアントグループの上原です。 StudyplusのFlutterアプリでの開発には、go_routerが利用されています。 今回は、利用していて感じたどういう状況でどの方法を利用して画面遷移時にパラメーターを渡すのが良いのかを紹介します。 また、上記のやり方をgo_router_builderを利用して行った場合に、安全にデータをやり取りする方法も紹介します。 利用したFlutterのバージョンは、3.13.7です。 利用したライブラリのバージョンは、下記になります。 ライブラリ名 バージョン go_router 12.0.1 go_router_builder 2.3.4 画面遷移時のパラメーターの渡し方について パスパラメーター クエリパラメーター Extraパラメーター go_router_builderを利用した型安全なパラメーターの渡し方 事前準備 TypedGo
こんにちは。ForSchool事業部サーバーサイドエンジニアのましばです。 今回はDocker + Rails + MinIOを利用して、開発環境でもS3のようなファイルアップロードを行うことができる環境を構築します。 同様の内容を取り扱った記事は複数存在しますが、少し古いものもあったので整理も込めて記事にします。 MinIO 環境 docker-composeで環境を構築 MinIOへアクセスしてみる ブラウザからアクセスしてバケットを作成する Railsからファイルをアップロードする コンテナ起動時にバケットを作成する 終わりに MinIO MinIOはS3と互換性のあるストレージサービスです。 公式サイトではクラウド上での利用を推していますが、ブラウザからストレージ内のファイルを閲覧できたりCLIツールが存在したりとローカル環境でも使いやすいサービスです。 min.io GitHub
プロダクト部クライアントグループの明渡です。 昨年9月から今年4月半ばまで産育休をとり、約1年ぶりの当番ブログです。 産んだ子どもは1歳になりました。食欲魔人という文言がしっくりくる食べっぷりで、成長曲線の上辺すれすれで推移しております。 今回は、同チームに所属している隅山がFlutterKaigiのプロポーザルへ提出したものの、残念ながら不採択だった内容を一部供養します。 fortee.jp 内容としては、Add-to-appを導入済みのStudyplus iOSアプリにてFlutterのバージョンを3.7系から3.10系へアップデート作業中に直面した事象と対処方法です。 なお、Flutterのバージョンアップデート作業自体は滞りなく完了し、発生した事象はAdd-to-app内の参照先モジュールにおける機能追加もまとめて取り込んだことが起因でした。 環境 動作環境 ライブラリの管理方法
SREグループの菅原です。 9/29(金)に九段会館テラスにて開催されたSRE NEXT 2023に参加しました。 ちょっと遅くなってしまいましたが、カンファレンスやセッションの感想についてレポートします。 SRE NEXT 2023とは 信頼性に関するプラクティスに深い関心を持つエンジニアのためのカンファレンスです。 同じくコミュニティベースのSRE勉強会である「SRE Lounge」のメンバーが中心となり運営・開催されます。 (公式Webサイトより引用) 感想 菅原 今年は九段下会館テラスということでレトロモダンに統一され、とても素敵な会場でした。 会場で視聴したのですが、登壇者の紹介やセッション前のカウントダウン映像などスタイリッシュで過去1番カッコいいカンファレンスでした。 プロダクトオーナーの視座から見た信頼性とオブザーバビリティ youtu.be speakerdeck.com
Amazon CloudWatchの費用を半額削減した話 こんにちは。スタディプラスのSREグループの蜂須賀です。 今回はAmazon CloudWatchの費用を半額削減した話を紹介します。 Amazon CloudWatchの費用を半額削減した話 経緯 CloudWatch Metric Streamsの試験導入 背景 試験導入の結果 実施内容 不必要なリージョンを除外する 不必要なサービスを除外する 不必要なリソースを除外する まとめ 経緯 スタディプラスでは主にAWSでシステムを構築しており、そのモニタニングツールとしてはDatadogを使用しています。 2023年初頭にCloudWatchの費用が昨年比で2倍に増加していたことをグループ内で問題視していました。 調査したところ、DatadogのAWSインテグレーションによるメトリクスの収集で発生する費用が、CloudWatchの費
こんにちは。QAエンジニアの和田谷です。 残暑続く中ですが相も変わらずサウナは最高です。 今回は「アジャイル開発におけるQAエンジニア」について私がQAとして行ってきた活動をお話しできればと思います。*1 そもそもアジャイル開発とは? アジャイル(Agile)とは、直訳すると「素早い」「機敏な」「頭の回転が速い」という意味です。 システムやソフトウェア開発におけるプロジェクト開発手法の1つで、小単位で実装とテストを繰り返して開発を進めていきます。 アジャイル開発に対してQAとして最初に感じたこと 初めてアジャイル開発という言葉を聞いたのは今から7年ほど前で、当時はそもそも「アジャイル」って何?という状態でした。 そしてアジャイル開発が小単位で短い期間での対応の為、必然的にQA期間も短くなり、品質保証を行いながら進めることが困難なのではないかという不安しかありませんでした。 しかしQAである
こんにちは!クライアントグループの後藤です。 この度、9/14(木)~16(土)にベルサール渋谷にて開催されたDroidKaigi 2023に参加しましたので、その様子をお伝えします。 はじめに 弊社スタディプラス株式会社は、サポータースポンサーとしてDroidKaigi 2023に協賛させていただきました。今年は弊社から2名がスポンサーチケットを利用して参加しています。 また、今年の6月まで弊社にモバイルアプリエンジニアとして在籍していた中島さんが、Flutterのアプリ内課金実装についてのセッションで登壇しました。視聴していただいた皆さん、ありがとうございました! Flutterにおけるアプリ内課金実装 -Android/iOS 完全なる統一- | DroidKaigi 2023 感想 今回参加した2名は、今年の4月に入社したばかりの新人でAndroidアプリ開発の経験がほとんどない後
こんにちは。スタディプラス SREグループの水口です。 この記事では当社が2023年上半期にAWSコストを削減した取り組みを紹介します。 2022年から円安が続いており、当社のAWSコストにも大きな影響を与えています。この課題は優先順位の高いものとして認識されていました。断続的な改善を続けており、特に2023年3月から6月にかけて、より重点的に取り組みました。その結果、前年度と同様の利用状況の月と比較してAWSコストを約3割削減できました。 また、為替レートの差を考慮しなくても大幅なAWSコストの削減に成功しています。2022年1月には米ドル対円相場が110円台であったことを思い出すと、当時の為替レートは夢のようなものだったと感じますね。 この記事では2023年上半期のコスト最適化策に焦点を絞って紹介します。 基本方針 費用対効果の高いリソースに優先的に手を入れる サービスの信頼性を損なわ
こんにちは。開発部エンジニアの石上です。会社のブログ記事を書くのが久しぶりすぎて、ここにいつも書いていたちょっとした日常エピソードも何を書いたらいいのかわからなくなっています。ここに悩んでも仕方ないので、本題に入ります! 今回は、 Studyplus for Schoolの新機能開発において、Rails製のバックエンドとReact製のフロントエンドをどう並行して開発しているかを紹介します。 APIと画面を並行して開発したい Studyplus for Schoolのシステムには、主にRails製のバックエンドとReact製のフロントエンドがあります。基本的に画面はAPIを叩いてデータを取ってきます。代わりの仕組みを用意せずにやると、APIができるまで、データがあるときの表示ができません。この制限は、開発を遅くしてしまいます。 そこで、なるべくこういった待ちを発生させずに機能実装を進められる
はじめに こんにちは。開発部の大石です。2019年5月にスタディプラスへ入社してから、もうすぐ丸4年になります。入社した時に高校生だった長男が就職し、中学生だった次男は大学生になりました。 そんな私ですが、昨年4月からはソフトウェア事業本部 開発部の部長/VPoEというポジションを担当しており、一昨年からソフトウェアエンジニア(以下、エンジニアと略します)の採用責任者を兼任しております。 今回はこれまでカジュアル面談させていただいた候補者の方からよく聞かれる質問をピックアップしまして、普段私がどのように答えているか紹介します。 なお、候補者の方からの質問は採用ピッチに書かれている内容に関する質問もありましたので、参考までにリンクしておきます。当社のエンジニア職にご興味がありましたらぜひこちらもお読みください。 今回紹介する質問はいくつかのカテゴリに分けています。 はじめに カジュアル面談で
1人目QAエンジニアとして最初に行ったこと こんにちは。QAエンジニアの和田谷です。最近のご褒美は月2回のサウナで、溜まりに溜まったものを汗と一緒に流すことに全力を尽くしてます。 1人目QAエンジニアとして最初に行ったこと QAエンジニア導入の背景 ▼サービスの仕様把握 ▼テストプロセスを導入するためのプロセス提案/運用 ▼テストエンジニア/QAエンジニアに関しての啓蒙活動 最初の取り組み後の課題 今後 QAエンジニア導入の背景 今までは開発、企画者でのテストを行ってきましたが、プロダクトの品質保証がされているのか不明確であるという課題がありました。その課題を解消すべく1人目のQAエンジニアを採用することになり、私がそのポジションに就くことになりました。 QAエンジニアとして私が行ったことを大きくまとめると以下の3点となります。それぞれ実施した内容を説明します。 サービスの仕様把握 テスト
こんにちは。2022年7月に入社したサーバーサイドエンジニアの青山です。 今回は入社してからやってきたことの1つとして、同じグループの山田と一緒にAmazon RDSのPerformance Insightsを利用してアプリケーション側からDBの負荷を改善した話をします。 ※改善するにあたり複数の対応をしましたが個々の対応の詳細については書いていないのでご注意下さい。 はじめに Performance Insightsを利用して調査 データベース負荷の確認 トップSQLの確認 ボトルネックの解消 改善した結果 DBのCPU負荷削減 データベース負荷削減 Amazon RDSの費用削減 おわりに はじめに Studyplusはサービスの性質上、受験シーズンにかけてユーザー数や利用頻度が増加していく傾向にあります。そのような背景もあり、私が入社して数ヶ月が経った頃から徐々にDBへの問い合わせで
こんにちは。サーバーサイドエンジニアの山田です。 Rubyに型システムが入ってからしらばく経ちましたが、弊社のRailsプロジェクトの一部でもRBSを導入しました。 そのことについて昨年行われたKaigi on Rails 2022にて「RBSとSteepで始める型のあるRails開発とその運用」というタイトルで発表しました。 この記事では発表の内容についてあらためて整理した内容やその後の状況について紹介します。 記事の目的 RBSを導入した背景 対象となるRailsアプリケーション どうやって進めたか RBSの分類 ディレクトリ構成 自作クラス・モジュールなどのRBS GemのRBS(RBS Collectionにあり) GemのRBS(RBS Collectionになし) 当初の運用ルール 変更後の運用ルール RBS Railsから生成されるRBS 標準ライブラリのRBS CIの導入
こんにちは。スタディプラスのSREグループの水口です。 2022年5月に入社してからStudyplus Engineering Podcastには何度か出演しておりましたが、テックブログは今回初めて書きます。 この記事では、SidekiqをKubernetes(Amazon EKS)で動作させる際、Graceful Shutdownさせるために必要な前提知識を整理します。 背景 Sidekiqプロセスの停止 SIGTERM + timeout オプション Kubernets Podの停止 Deploymentのマニフェストについて terminationGracePeriodSecondsについて Kubernetes Nodeの停止 Cluster Autoscaler について Amazon EC2 スポットインスタンス について 【参考】既存実装について おわりに 【宣伝】Podca
チームとしてモブプログラミングを始めてみました こんにちは。ウェブアプリケーショングループのエンジニアのましばです。 早いものでもう2022年も終わりが近づいてきました。 今回は、チームでモブプログラミングに取り組みはじめた件について記事にします。 チームとしてモブプログラミングを始めてみました 背景 進め方 良かった点 知識の共有 チーム内のコミュニケーション 課題 時間や変更の管理 事前の段取りがもう少し必要 おわりに 背景 少し前にチーム体制の変更があり、別々のプロダクトを担当していた2つのチームが合流することになりました。 どうしてもプロダクトに関するメンバーの知識の偏りがあるので、仕様の議論や複雑なタスクの担当などが特定のメンバーに集中してしまうという問題がありました。 そのような状態を解決することを目的として、チーム全員でモブプログラミングを定期的に実施してみることになりました
こんにちは。 スタディプラスのカンファレンス/OSSサポートチームです。 スタディプラスは2021年度に引き続き、今年度も会社としてOSSに寄付をしました。 opencollective.com github.com 寄付の取り組み 「なぜOSSへの寄付をするのか」については、昨年度のブログをぜひご確認ください。 日々の開発で利用しているOSSへの感謝や、細やかでもOSSのメンテナンスが続くよう、サポートしたいという気持ちは変わりません。 tech.studyplus.co.jp OSSへの寄付をしたあと、社内において大きく変わったことはありません。 むしろ、たった一度の機会でしたが、寄付をすることが当たり前になったように思います。 今後も、この活動を社内で周知し、続けていきたいなと思っています。 サポートした活動 昨年度に引き続き、今年度も社内からサポートしたいOSSについて意見を募りま
こんにちは。Studyplus事業部 サーバーサイドエンジニアの山田です。 普段はバックエンドのRailsアプリケーションの開発をしていることが多いですが、今回はここ最近取り組んでいるデータ分析基盤の改善について紹介していきます。 はじめに データ分析基盤の現状と課題 データの収集や抽出に無駄が発生しやすい 改善が局所最適になりやすい/改善自体がおこなわれにくい 何から取り組んだか 全体構成を把握 課題のヒアリング 改善する課題/施策を選択する BigQueryのデータの使いづらさと料金面の課題 データウェアハウスの作成 よく使われているデータ/SQLを抽出する クエリのスケジュール実行 利用状況のモニタリング 改善後 データの容量の課題 クエリの複雑さの課題 継続的な改善が必要 終わりに はじめに スタディプラスではユーザーの学習記録をはじめ様々なデータを蓄積しており、それらのデータを活
こんにちは。 モバイルクライアントグループの若宮(id:D_R_1009)です。 最近、スプラトゥーン3のバイトにハマっています。 全ステージでんせつ200を達成できたので、400を目指して日々クマサン商会に入り浸っております。 さて、スタディプラスではFlutter Webを採用しています。 FlutterによるMobile向けとWeb向けの開発では、画面遷移の考え方を変える必要があります。 今回は、開発チームで採用しているgo_routerの使い方を紹介しつつ、Flutter Webにおける宣言的Navigationを紹介します。 pub.dev go_router 宣言的Navigation context.push と context.go A: 手続き的Navigation B: 宣言的Navigation URLによる遷移 おわりに Mobileでgo_routerを使うかどう
こんにちは。 スタディプラスのカンファレンス/OSSサポートチーム、冨山です。 スタディプラスは、2022年11月10日~11日にオンラインで開催されるRubyWorld Conference 2022に、シルバースポンサーとして協賛します。 2022.rubyworld-conf.org RubyWorld Conference 2022とは? プログラミング言語「Ruby」の国内最大のビジネスカンファレンスです。 Rubyの生みの親であるまつもとゆきひろさんやRubyおよびRailsのコミッターであるAaron Pattersonさんの基調講演が企画されています。 【概要】 主催 :RubyWorld Conference開催実行委員会 開催日:2022年11月10日(木)~11日(金) 会場 :島根県立産業交流会館「くにびきメッセ」 公式HP:https://2022.rubywor
こんにちは。開発部エンジニアの石上です。最近は息子とプラレールで遊ぶのが楽しいです。先日、社内のSlackでおすすめされていて気になっていた自動ターンアウトレールなるものを買ってきました。走るごとに進行方向が切り替わって、とても楽しいです。 さて、今回はGitHub Discussionsによって開発チーム間の非同期コミュニケーションを実現した取り組みについてご紹介します。新しいプロジェクトで仕様を固めるのが難しい、開発者が多くてAPIの認識合わせに時間がかかるなど、新機能開発時の認識合わせで困っている方に、こういうやり方もあるのかと参考にしていただけたら幸いです。 3行で 忙しい方向けの3行要約です。興味があったら中身も読んでみてください。 開発の認識合わせが難しい GitHub Discussionsで相談や議論しながら進めた 非同期かつ図を用いたコミュニケーションで効率的に認識を合わ
スタディプラスでSREをしてます、ksugaです。 最近は寒くて、電気毛布が欠かせません。寝るとき足元に電気毛布を敷いて寝ると睡眠が深く、疲れが取れます。 毎年恒例になっている「スタディプラスを支えるインフラ技術」を書いていたら公開が年明けになってしまいました。振り返りも兼ねて2021年に何していたかブログを書いたので良ければご一読ください。 昨年までの記事はこちらです。 tech.studyplus.co.jp tech.studyplus.co.jp はじめに システム構成 セキュリティ 利用中の主なAWSリソース 構成管理 CI/CD 監視・検知 その他 最後に はじめに 弊社には大きく分けて以下3つのサービスがあります。 学習管理SNS「Studyplus」 教育機関向け学習管理サービス「Studyplus for School」 参考書読み放題アプリ「ポルト」 今回も「Study
お久しぶりです。SREグループの菅原です。 おすすめのアイスはオハヨー乳業のBRULEEです。夏場は1日にアイスをいくつも食べてしまいました。もう末期ですね。 弊社ではポストモーテムをバックエンド(サーバーサイド+SRE)で運用して3年経ちました。2019年のSREチームを立ち上げ直後から導入しており、そこで作った運用ルールを基に現在も引き続き運用しております。今回は弊社のポストモーテムについて詳しくご紹介します。 目次 ポストモーテム導入で何を解決したかったのか? 障害対応のドキュメントが単なる作業証跡だった 障害対応を率先して行うメンバーに偏りがあった システムの理解度に差が生まれがちだった ポストモーテムの布教 ポストモーテムのルール作成 ポストモーテムを書くべきインシデントの基準 ポストモーテムのレビュー ポストモーテムの運用 ポストモーテムの担当者 ポストモーテムの実施タイミング
次のページ
このページを最初にブックマークしてみませんか?
『Studyplus Engineering Blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く