サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
都知事選
tech.studyplus.co.jp
スタディプラスメンバーの作業環境事情 こんにちは。ForSchool事業部の田口です。 COVID-19の影響で在宅勤務になってしばらく経ちましたが、みなさんいかがおすごしでしょうか。 スタディプラスでは以前からリモートワークが可能でしたが、今回の騒動で原則在宅勤務となりました。 そして、会社の好意により5月の給与振込日に在宅勤務手当が振り込まれました。在宅勤務が続く中でこのような手当がいただけるのはありがたいですね。 元々リモートワークを行っていたメンバーならまだしも、今回の騒動でほとんど経験のない在宅勤務を行う必要が出てきたという方も多いと思うので、今回は在宅勤務に馴染みのある職種以外の方も含めてスタディプラスのいろんな職種の方の在宅作業環境を紹介しようと思います。 この記事では、作業環境を紹介してくれるみなさんに作業環境の写真を提供していただき、各メンバーに (もしあれば)こだわって
こんにちは、SREチームの菅原(id:ksugahara08)と栗山(id:shepherdMaster)です。 新型コロナウイルスが流行して世の中では外出自粛になる中、Studyplusは例年以上に多くのユーザー様に利用していただく機会を得ました。それに伴って4月からサーバーへのアクセスが増えていき、5月にはコロナ前と比べて約2倍のリクエスト数がAWS ALBに来るようになりました。 リクエスト数が増えた結果何が起きたかというと、タイトルからお察しの通りAmazon AuroraのCPU負荷が上がり、頻繁にアラートが発砲されるようになりました。 EC2に関してはAutoScalingを設定していたため負荷に応じてスケールアウトしていたのですが、Auroraに関してはインスタンス数固定で運用してきたため、このようなことが起きるようになりました。 そこでサーバーサイド+SREチームでは他の作
こんにちは、スタディプラスの須藤(id:kurotyann)です。 昨年の9月にFlutterとFirebaseで新規サービス「ポルト Porto」をリリースしました。 tech.studyplus.co.jp ポルトはアプリ内課金を未実装でローンチしました1。ローンチ時の決済手段は、Stripeを使ったWebクレジット決済(月額制で無料トライアル14日間)のみです。 高校生をメインターゲットとしながらもアプリ内課金がないのは大きな課題であったため、今年の2月25日にアプリ内課金をリリースしました。 そこで、今回は「FlutterとFirebaseに焦点をあてて」アプリ内課金の定期購入の実装ポイントを紹介します。 1. 技術選定 システム構成図 まず、システム構成図で全体像を示します。 アプリ内課金(定期購入) 定期購入のステータス変更通知 Flutter(アプリ側) Flutterにはア
SREチームの栗山(id:shepherdMaster)と菅原(id:ksugahara08)です。 年末ということもあり、弊社SREチームが2019年に行ってきた取り組みの中で大きめのトピックを紹介したいと思います。 本来ならもっともっと書きたいことがあるのですが、今回はスタディプラスのSREチームが何をやってきたのか概要がわかるように書いていきたいと思いますのでぜひ最後まで読んで頂けるとありがたいです。 SREチーム発足 SREという職種の共有会 ポストモーテム導入 脱AWS Elastic BeanstalkとKubernetes移行 Terraform移行 ログ収集基盤改善 Rubyバージョンアップ jemallocの導入 勉強会開催 Kubernetesハンズオン Kubernetetsの各機能の勉強会 コンテナ監視ツール勉強会 サービスメッシュ勉強会 CI/CD勉強会 AWS
こんにちは、スタディプラスの須藤(id:kurotyann)です。 タイトルどおり、9/17にFlutterとFirebaseで新しいサービスをリリースしました。 サービス名は「ポルト(Porto)」です。 受験生に人気の参考書を月額980円でスマホで読める電子参考書サービスです。 iOSとAndroidで利用でき、無料で読める参考書もあります。受験生でない方も試しにインストールしてみてください。 ポルト 大学受験向けの参考書が読み放題 Studyplus Inc.教育無料apps.apple.com play.google.com 【公式】ポルト 参考書読み放題サービス【14日間無料体験のお申し込みはこちら】 さて、リリースされたばかりのポルトですが、今回のブログでは以下の3点を書きます。 「(1) 技術スタック」 「(2) 開発期間」 「(3) FlutterとFirebaseで開発を
こんにちは、スタディプラスの栗山(id:shepherdMaster)です。 みなさんは社内でどんなプロジェクト・タスク管理ツールを使ってますでしょうか? 今回はスタディプラスで最近使い始めたプロジェクト・タスク管理ツールのmonday.comを紹介したいと思います。 Taskworld時代 社内では以前はTrelloに似たカンバン形式のプロジェクト・タスク管理ツールのTaskworldを使っていました。 しかしTaskworldは使い続けていると動作が重くなってきたり、たびたびTaskworldに障害が発生したり、Slackへ簡単に通知連携できなかったり、そもそもツールとして使いづらかったりと不満が上がっていました。 そのため新しいプロジェクト・タスク管理ツールを選定することになりました。 新しいプロジェクト・タスク管理ツールの選定 社内で新しいプロジェクト・タスク管理ツールを選定するた
Androidチームの若宮(id:D_R_1009)です。 今朝方、Twitterを眺めていたら下記のツイートが目にとまりました。 ここ最近、超絶便利に感じていた Pull Reminders が GitHub に買収されて、誰でも自由に使えるようになったみたいだ。 GitHub + pull request でチーム開発をしていて、Slack も使っているところであれば、とりあえず試してみると良いと思う。https://t.co/xvHdkDu7YR— suzuki (@suzuki) June 17, 2019 「これは便利そうだ!」と感じたため社内Slackに投稿し、 利用を開始したところ 期待以上の便利さだったので、本ブログでも紹介したいと思います。 Pull Pandaとは https://pullpanda.com/ GitHubのリリースでは下記のように紹介されています。 W
こんにちは,For School事業部のid:atomiyamaです. 現在Studyplus for Schoolはサービスのフルリニューアルを行っています. 弊サービスはこれまでRailsでslimを使いViewを提供してきましたが,今後より良い体験をユーザーへ届けるためにリニューアルを行いサーバーサイドとクライアントサイドを分離しました. リニューアルに向けて現在サーバーサイドはRailsでJSON APIサーバーの開発を行っており,その中で導入したスキーマ駆動開発の話をします. TL;DR 技術スタックはOpenAPI3.0, swaggerUI,committee クライアントサイド開発者と連携してJSONスキーマを仮決定する. サーバーサイドの開発者はRailsコントローラにそのJSONをべた書きした仮実装を行う. クライアントサイド,サーバーサイドの開発者が互いにフィードバッ
こんにちは、Androidチームの若宮(id:D_R_1009)です。 先日、JasperというOSSライブラリをリリースしました! github.com 今回は開発目的やモチベーション、今後の方針などを記したいと思います。 Jasperとは Jasperを作成した理由について 多くの人の目を通してUIコンポーネントの質を高める 様々な要望を想定することでAPI設計を洗練させる 依存関係をクリーンな状態に保つ Jasperの今後 終わりに Jasperとは スタディプラス Androidアプリ内で利用しているUIパーツをベースに開発した、UIコンポーネントライブラリです。 2019年3月時点ではJasper-BottomNavigationViewのみとなりますが、今後ゲージやグラフなどのパーツを追加する予定です。 Jasperを作成した理由について 遡ること2016年、Androidアプ
スタディプラスでサーバーサイドを担当している花井です。 先日田口さんが投稿したこちらのプロジェクトで、実験的にCloud Firestore / Cloud StorageとRailsでAPIを構築したので、その顛末を紹介します。 Firestoreの理由 今回のプロジェクトの要件に、一度データを入稿してしまえば変更はほとんど必要ないような要件がありました。 極端なことを言えば、yamlかjsonファイルをマスタデータとして扱うという選択でもよかったのですが、それだと変更のたびにデプロイが必要なのとスケールするかが心配でした。 また、普段AWSを使っているので単純にGCP環境を使う実績解除という意味あいも多分にありました。そんなわけで、画像の置き場としてCloud Storage、データベースがわりにCloud Firestore を使う構成になりました。 Railsから使う instal
こんにちは。 入社して一ヶ月が経過したiOSエンジニアの弘田です。 今回はUIPickerViewをキーボードの様に表示する方法を解説します。 なぜそんなことをするの? 昔のiPhoneでしたら画面の中心などにUIPickerViewを表示しても画面サイズが小さかったので片手で操作できていましたが、最近は大画面化が進み片手での操作が難しくなってきました。 操作性を損なわずにUIPickerViewを使用してもらう為にも今回の方法が役にたつと思います。 Human Interface GuidelinesでもPickerついて触れているページがありこの様な記載があります。 Avoid switching screens to show a picker. A picker works well when displayed in context, below or in close prox
こんにちは、CTOの島田です。 今回は、StudyplusのDBのmigrationで発生した問題とその解決ステップを説明したいと思います。 前提 schema.rbでの運用 ridgepoleの導入 "0000-00-00 00:00:00" 問題 問題の原因は? 暫定対応 問題の解消 あるべき姿 まとめ 前提 まずは前提。 Aurora MySQL 5.7 Rails 5.1.6 (対応当時。今は5.2.2) schema.rbでの運用 Studyplus本体のmigrationは、色々な経緯によって2018年5月まで、いわゆるRailsのmigration の作法とは異なる方法で運用されてました。 schema.rb でスキーマの状態を管理してはいたのですが通常とはやや異なる管理がされていました。 以下、改変して一部抜粋。 ActiveRecord::Schema.define do
こんにちは。Studyplus開発部の田口です。 新規で立ち上がった開発プロジェクトにVueとVuexを採用してみたので、今回はその所感を書こうと思います。 Vue/Vuexの採用理由 今回のプロジェクトで開発するのは、Studyplusのアプリ内ブラウザのWebViewページです。 プロジェクトを開始するにあたって、アプリケーション自体は小規模で、画面の遷移がありつつサーバーとの通信を極力避けユーザーの入力情報を保持したいため、SPAで開発することにしました。 開発にあたって、 モダンな技術を採用し、社内に知見を貯めたい フロントエンドの専任がチームにいないため、専任でないエンジニアがコードを読むときなるべくコストがかからない (上記に関連して)日本語のドキュメントがあるとよい メインで開発を行う自分が過去に少しだけFluxアーキテクチャを触ったことがある という理由でVueとVuexの
はじめまして、for School事業部のサーバーサイドエンジニアの冨山です。 今回はfor SchoolのリニューアルにおいてAPIでリアルタイムなデータをページネーションする上でJinraiというカーソルベースのページネーションライブラリを開発しました。 今回はその開発の経緯や直面した課題についてお話していきたいと思います。 TL:DR ページベースのページネーションだとクライアントへ渡すデータに重複が発生する。 基点となるレコードを示すカーソルをクライアントへ渡すことでOFFSETを意識することなく特定の範囲のデータを取得できる。 IDをクライアントに渡したくない場合、カーソルとして渡す値がユニークで無いとクライアントに渡らない情報が発生する。 ソートキーの値が重複する場合IDでもソートすることで上の問題が解決する Jinraiの使い方 class Post < Applicatio
次のページ
このページを最初にブックマークしてみませんか?
『Studyplus Engineering Blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く