Studyplus Engineering Blog

スタディプラスの開発者が発信するブログ

Flutterアプリケーションのアーキテクチャ(Studyplusの場合)

こんにちは。 モバイルクライアントチームの若宮(id:D_R_1009)です。 スプラトゥーン3がそろそろですね。アップをしっかりしていきましょう。 さて、モバイルクライアントチームではFlutterをAndroidやiOS、Web向けのフレームワークとして採用しています。 …

コンテナビルドを速くするためのテクニック

こんにちは! SREの栗山です。 最近観て良かった映画は「コーダ あいのうた」です。 今回は弊社で使っているコンテナビルドを速くするためのテクニックを紹介します。 以下のような一般的なテクニックに関しては他でよく紹介されているので今回は割愛します…

seedのベストプラクティス

こんにちは、ForSchoolチームでエンジニアをしている島田です。最近の好きな漫画は「白山と三田さん」です。 今回はStudyplus For School(以下FS)のseed運用について説明します。 FSは以下で構成されたSPAです。 サーバーサイド:Ruby on Rails フロントエン…

Firestoreのカスタムオブジェクト利用時の注意事項

こんにちは、モバイルクライアントグループの隅山です。 今回はCloud Firestore(以下、Firestore)をAndroidアプリに導入した際、難読化問題が発生したのでその対応方法を紹介します。 Firestore自体はとても便利なため、簡単な利用方法も併せて紹介します。 …

Billing Libraryを使ったサブスクリプションのグレード変更をリリースして

こんにちは、モバイルクライアントグループの中島です。 趣味でやってるTCGが、最新のセットで浮世絵サムライニンジャライダーキック合体ロボしながら北斗の拳メタルギアもしつつ、テーマ曲を稲葉浩志と凛として時雨が歌ってて意味がわかりませんでした。 め…

Studyplus iOS/Androidのサブスクリプションをサーバーサイドに実装した話

こんにちは、サーバーグループの中村です。 Horizon Forbidden Westを先日クリアしました! とても面白かったのですが大作オープンワールドゲームをがっつりプレイするのが最近しんどくなってきました。 ですが懲りずにELDEN RINGを買おうか悩んでおります。…

新機能リリース前のStudyplus for Schoolに対してLocustを使った負荷試験を行いました

こんにちは。ForSchool事業部エンジニアの石上です!息子が1歳半になり、お互いなんとなく言ってることがわかるようになってきました。 今回は Studyplus for School の一部のAPIに対して行った負荷試験について書きます。 3 行で リクエストが多くなりそう…

【2021年度】 スタディプラスがスポンサー・協賛したイベントの振り返り!

スタディプラス カンファレンス・スポンサーチーム(ksuga, 若宮(id:D_R_1009), 中村)です。 スタディプラスでは、様々なカンファレンスやOSSのスポンサーを行っております。 2021年度、スタディプラスがサポートをしてきたカンファレンスやOSSを振り返りたい…

Studyplus iOSアプリにasync/awaitを導入してみた

こんにちは、Studyplus事業部モバイルクライアントグループの上原です。 中途入社でiOSエンジニアとして入社して、StudyplusのiOSアプリの開発を主にしています。 また、最近はiOS以外にもFlutterを触り新機能を開発したりしています。 趣味の方では、Apex L…

Rails 7 + Hotwireで実用的なSPAを作ってみた

こんにちは、サーバーグループの市川です。モバイルクライアントグループに所属していましたが、バックエンドの開発を担当することが多くなったので、サーバーグループ異動にしました。 最近、Studyplusブックというサービスをリリースしました。Studyplusア…

Studyplus iOS/Androidでお試し期間のあるサブスクリプション販売始めました

こんにちは、モバイルクライアントグループの明渡です。 2年近く前にStudyplus iOS版のサブスクリプションを実装した際、Appleの課金テスト用Sandboxアカウントが扱いづらかったのですが、iOS 14から改善されていたことを最近知りました。 途中解約ができる…

MinIOを使ってローカル環境でファイルストレージを利用してみる

こんにちは。ForSchool事業部サーバーサイドエンジニアのましばです。 今回はDocker + Rails + MinIOを利用して、開発環境でもS3のようなファイルアップロードを行うことができる環境を構築します。 同様の内容を取り扱った記事は複数存在しますが、少し古い…

スタディプラスを支えるインフラ技術(2021年)

スタディプラスでSREをしてます、ksugaです。 最近は寒くて、電気毛布が欠かせません。寝るとき足元に電気毛布を敷いて寝ると睡眠が深く、疲れが取れます。 毎年恒例になっている「スタディプラスを支えるインフラ技術」を書いていたら公開が年明けになって…

KotlinとSwiftとDartの標準的な日付変換を比べてみる

こんにちは。 最近はヨッシーストーリーを進めています、若宮(id:D_R_1009)です。 Studyplusでは、いくつかの画面で日付を扱っています。 私はAndroidとiOSをKotlinとSwift、そしてDartで書く毎日を送っています。 そうなると、特に日付の操作で「この言語、…

私がStudyplusに入社して2年半が過ぎました

こんにちは。Studyplus事業部モバイルクライアントグループの大石です。 先日、古代戦士ハニワットというコミック作品の色紙オークションという企画があり、無事落札できました。 作者の武富健治先生に好きなキャラクターをリクエストして直筆で描いてもらえ…

スタディプラスはKaigi on Rails 2021にゴールドスポンサーとして協賛しました!

スタディプラスはKaigi on Rails 2021のゴールドスポンサーとして協賛させていただきました。 Kaigi on Railsではrebako(https://rebako.io/)で企業ブースや発表者への質疑応答などを行っていてオンラインカンファレンスとして新たな取り組みをしていて面白…

DroidKaigi 2021に参加した感想

こんにちは、Pixel 3aユーザーの若宮(id:D_R_1009)です。 早速Android 12を入れて、毎日使っています。 あっという間の3日間でしたが、DroidKaigi 2021が開催されました! 今回は、3日間の振り返りと感想をまとめておきたいと思います。 感想 隅山 今回、「マ…

Sidekiq Enterpriseの同時実行数制御を理解する

こんにちは。サーバーサイドグループの山田です。 最近クロスバイクを買って自転車で走ることにはまっています。 弊社ではRailsアプリケーションの非同期処理やバッチ処理でSidekiq/Sidekiq Enterpriseを使用しています。 tech.studyplus.co.jp Sidekiq Ente…

ちょっとした改善を継続的に消化する取り組み

こんにちは、SREの栗山です。最近好きな小説は「十二国記シリーズ」です。 今回はちょっとした改善を継続的に消化する取り組みに関して書こうと思います。 TL;DR SREチームでは2週間に1回「改善デー」を設けている 「改善デー」では1日で終わるようなちょっ…

スタディプラスはDroidKaigi 2021にSUPPORTERSとして協賛します

こんにちは! スタディプラスの若宮(id:D_R_1009)です。 最近はポルノグラフィティのサウダージをよく聴いています。 さて、ついに! 色々とあって大変でしたが! DroidKaigi 2021が10月19日から始まります! そして、スタディプラスは昨年に引き続きスポン…

iOSDC Japan 2021に参加しました

こんにちは、モバイルクライアントグループの大石(id:k_oishi)です。 2021/9/16~18に開催されたiOSDC Japan 2021へ参加した件をブログにします。 今回、弊社はシルバースポンサーとしてスポンサードしており、レギュラートーク(20分)での登壇が1名、他のメン…

突撃!隣のRubyGems

こんにちは、スタディプラスの島田です。好きな漫画は「葬送のフリーレン」です。 はじめに スタディプラスでは、Railsで開発しているプロダクトが2つあります。 Studyplus Studyplus for School それぞれのプロダクトはサービスの性質や歴史が異なり、別な…

スタディプラスはRubyKaigi Takeout 2021にPlatinum Sponsorsとして協賛しました!

こんにちは。サーバーグループの山田です。 最近好きな漫画は「アオアシ」です。 スタディプラスはRubyKaigi Takeout 2021にPlatinumスポンサーとして協賛させていただきました!今年で3回目のスポンサーとなります。 弊社スタディプラスもRubyKaigiにプラチ…

対話を頑張らなくても作れるSiri Shortcuts向けIntents App Extension スライド書き起こしと補足

こんにちは、モバイルクライアントグループの明渡です。 iOSDC Japan 2021に採択していただいた、「対話を頑張らなくても作れるSiri Shortcuts向けIntents App Extension」のトーク収録を終えました! 数えてみると、合計6回ほど収録し直していました。 1週…

画面回転対応で対応すること

こんにちは、モバイルクライアントグループの隅山です。 最近フィットネスバイクを購入し、運動不足の解消を心がけています。 今年の6月より、AndroidのStudyplusアプリはタブレットでの動作を前提とした実装に切り替えました。 タブレットでも快適に利用で…

StudyplusはiOSDC Japan 2021にシルバースポンサーとして協賛します

こんにちは、モバイルクライアントグループの大石です。 好きな漫画は最近モーニングにて連載再開した「望郷太郎」です。 Studyplusは2021年9月16日からオンライン開催されるiOSDC Japan 2021にシルバースポンサーとして協賛します。 iosdc.jp 弊社のiOSエン…

Billing Library v4.0.0 への更新

こんにちは、モバイルクライアントグループの中島です。 最近、ディスプレイの上に引っ掛けて物を置けるようにするボードを買いました。思ったより便利に小物を置けるので良さげです。 さて、今回は Google Play Billing Library (以下Billing Library) を、…

スタディプラスはRSpecに寄付しました

こんにちは、ForShcool事業部の島田です。好きな漫画は「ドラフトキング」です。 スタディプラスではこの度、会社として RSpec に寄付をしました。 rspec.info なぜOSSへ寄付するのか 2020年12月からGitHub Sponsorsで、企業がOSSのスポンサーをすることが可…

7月にLT大会を開催しました。

はじめまして、Studyplus事業部サーバーサイドエンジニアの中村です。 今年4月から入社し、Studyplusアプリのサーバーサイド開発に参加しました。 よろしくお願いします! 今回は、こちらの記事でも少し紹介している LT大会を7月に実施しましたので、詳しく…

Flutterの状態管理とViewの更新

こんにちは。モバイルクライアントグループの若宮(id:D_R_1009)です。 最近スタンディングデスクを導入しました。業務時間中はずーっとスタンディング状態で、疲れたら業務終了な感じでやってます。 スタディプラスでは一部のプロダクトでFlutterを採用して…