Studyplus Engineering Blog

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

フロントエンドのCircle CI実行時間を1/3にしました

こんにちは。ForSchool事業部の石上です。先日、コンビニでサクレの梨味を買ってきたところ妻に絶賛されました。今年一番家庭で貢献した日かもしれません。 今回はフロントエンドのCircle CI実行時間を短くしたことについて書きます。 3行で フロントエンド…

Studyplus iOSにおけるコードリファクタリングへの取り組み

Studyplus iOSにおけるコードリファクタリングへの取り組み こんにちは、Studyplus事業部モバイルクライアントグループの上原です。以前はWidgetの実装についてブログを書きましたが、今回はStudyplus iOSで取り組んでいるコードのリファクタリングについて…

Paging 3ライブラリへの更新とKotlin 100%

こんにちは。 AndroidとiOSといろいろやっている若宮(id:D_R_1009)です。 西日本では記録的な早い梅雨入りな一方、会社のある関東ではだいぶ遅れての梅雨入りとなりました。 部屋にこもってAppleやGoogle、Microsoftのカンファレンスを見ることで時間は潰せ…

アプリ画面のライフサイクル管理をAppDelegateからSceneDelegateへ移行した話

こんにちは、Studyplus事業部モバイルクライアントグループの明渡です。 最近、当ブログの当番がチーム単位から個人単位へ変更になりました。 ひとまずブログ執筆をご無沙汰していた順に回るのですが、自分は昨年iOSDCのLT登壇内容まとめ記事以来でした。 iO…

Firebase Functionsのロギングを改善した話

はじめまして、モバイルクライアントグループの市川です。昨年9月からポルトの開発にジョインしました! porto-book.jp ポルトはFlutterとFirebaseで開発しているサービスです。 サーバサイドの処理は全てFirebase Functionsで実装されており、エンドポイン…

入社して1年で見えてきた弊社のすてきなところ

こんにちは、Studyplus事業部サーバーグループの葉坂です。スタディプラスに入社して約1年が経ちました。 そこで、本記事では入社して1年経って見えてきた私の感じる弊社のすてきなところを紹介していきます。タイトルからして会社に忖度している胡散臭い記…

Ruby / Railsにおけるカレンダー機能を振り返る

こんにちは、ForSchool事業部サーバーサイドエンジニアのましばです。 Studyplus for Schoolでは3月にカレンダー機能をリリースしました。 色々と大変なこともあったので振り返りを含めて記事にしたいと思います。 iCalendarについて カレンダー機能では、生…

Kustomize Componentsで構成管理

こんにちは。SREの菅原です。 突然ですがKustomize便利ですよね。 弊社ではKubernetesのManifest管理にKustomizeを使っています。Kustomizeの機能は複数ありどれも便利なのですが、今回はその中でもComponentsという機能を使って便利なのかどうなのかという…

React Query で optimistic-update な UI を実装してみる

こんにちは @okupara です。 去年から Studyplus for School の API 周りの state 管理を Redux から React Query にし始めました。キャッシュや無限スクロールでのリクエストのサポート、ページネーションのサポートなど、隈雑になりがちな処理を抽象化して…

Flutter + Firebase FunctionsでZendesk Supportを活用する

こんにちは、モバイルクライアントグループの若宮(id:D_R_1009)です。 今年もスギ・ヒノキ花粉は辛かったです。自室でPCを見ている時間が長いこともあり、特に目が辛かった年でした。 今回はPortoで昨年11~12月ごろに対応したZendeskへのCSツール移行につい…

Apple M1プロセッサ搭載macbookでの開発環境構築

こんにちは、ForSchool事業部の冨山(@atomiyama1216)です。 好きなエディタはVimです。どんなにVSCodeが流行っても僕はVimを使い続けます。 2021年4月に業務用マシンを買い換えApple M1チップ搭載モデルに買い替えました。 その際環境構築でなかなかに躓いた…

あなたの知らないStudyplusモバイルクライアントグループの世界

こんにちは、モバイルクライアントグループのリーダー大石です。 春から息子が就活を始めたので親としては期待と不安が入り混じる季節です。 今回はモバイルクライアントグループで何をどのような体勢で開発しているか、どのような取り組みをしていたか昨年…

New Relicを活用したアプリケーションのパフォーマンス改善の流れ

こんにちは。サーバーグループ エンジニアの山田です。 サーバーグループの仕事の一つにアプリケーションのパフォーマンス改善があります。 今回は普段行っているRailsアプリケーションのパフォーマンス改善の流れについて紹介します。 遅い処理を見つける …

EKSのCluster AutoscalerでNodeのスケールイン時に502、504エラーがでるのを解消した

チャオ。SREチームの栗山(@sheepland)です。 好きな漫画は「僕の心のヤバイやつ」です。毎回心がバキバキになりながら読んでいます。 今回はEKSでCluster Autoscalerを使った際にNodeがスケールインするタイミングで502、504エラーがでるのを解消した話です…

リモートチームでスクラム開発

こんにちは、ForSchool事業部の島田です。好きな漫画は「王様達のヴァイキング」です。 スタディプラス社では、現在リモートでの開発が主体となっています。その状況の中でStudyplus for School(以下FS)開発チームはスクラムによる開発を進めています。 今回…

Dagger の Assisted Inject 統合とマイグレーション

こんにちは、モバイルクライアントグループの中島です。 年末少し膝を痛めてしまいランニングを中断していたのですが、そろそろ再開していきたい今日この頃。 さて、今回は Dagger が Assisted Inject を統合したことによるマイグレーションについてお話しし…

DropboxのStoreで通信量を削減しました

こんにちは、モバイルクライアントグループの隅山です。 前回は両OS開発についてのブログを書きましたが、今回はDropboxのStoreを用いてAndroidアプリの通信量を削減した話をしていきます。 Storeについて 導入について 導入方法 導入解説 メリット・デメリ…

週1回30分のフロントエンドミーティングを始めました

こんにちは。ForSchool事業部の石上です。ハライチのターンというラジオが好きです。ぜひRadikoで聴いてみてください。 今日は、ForSchool事業部で行っているフロントエンドミーティングという取り組みについて紹介します。 3行で フロントエンドミーティン…

Studyplus iOSアプリでWidgetに対応しました

iOS

初めまして、モバイルクライアントグループの上原です。昨年11月からiOSアプリ開発を担当しています。 最近は、Apex Legendsで目標だったランクのダイヤ4に到達し、ランクのモチベーションが下がりカジュアルをずっと回す日常になりました。 さて、本題に入…

Kubernetes輪講会を開催しました

こんにちは、Studyplus事業部 サーバーサイドエンジニアの葉坂です。 以前弊社の「Kubernetesを本番導入しました」という記事でも紹介していますが、スタディプラスでは2020年9月にKubernetes本番導入を果たしました。 tech.studyplus.co.jp それに伴いサー…

Studyplus AndroidアプリでMAD Scoreを計測してみました

新年あけましておめでとうございます。 モバイルクライアントチームの若宮(id:D_R_1009)です。 お正月にようやくポケモンシールドのチャンピオンを倒しました。 本当に強かった……。 さて、昨年末にMAD Scoreが登場しました。 Are you a... Speed coder with…

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

こんにちは、SREの菅原です。 あっという間に2020年も年末ですね。時が過ぎるのが早い... 今回は今年の振り返りも兼ねて、2020年でSREチームが行ったインフラのリニューアルについて記事にしたいと思います。 以前スタディプラスを支えるインフラ技術(2019年…

LambdaTestでスモークテストをはじめました

こんにちは、Studyplus for School事業部エンジニアの島田です。 もうすぐ2020年も終わりになりますね。 はじめに なぜ導入したか ツール選定 LambdaTestでE2Eテスト(自動テスト) 構成とテストの実行タイミング E2Eテストコード(RSpec)の実装例 リポジトリ構…

AndroidとiOSの両方開発のメリット

こんにちは、モバイルクライアントグループの隅山です。 普段はAndroid開発を担当しています。最近ではiOS開発にも参加し始めたため、両OS開発についての難しさやメリットについて紹介します。 背景 iOS開発 開発方針 内容 つまづき:ヘッダー・フッターの存…

GitHub ActionsでSwiftLintをLinuxの上で動かそう

こんにちは、モバイルクライアントグループの若宮(id:D_R_1009)です。 みなさまお元気でしょうか、私はチェンソーマン9巻購読直後のため気持ちが乱れております。どうしてだよ……。 コードの悪魔は厳しいので、そんな気持ちの乱れをコードに持ち込むわけには…

Zoom Marketplaceにアプリを公開するまで

こんにちは、Studyplus for School事業部エンジニアの島田です。 今回は先日リリースしたStudyplus for School(以下FS) のZoomとの連携機能と、そのリリースに至るまでのプロセスを紹介させていただきます。 prtimes.jp 導入の背景 Zoom OAuth Appについて O…

データ分析基盤の改善を始めた話

こんにちは。Studyplus事業部 サーバーサイドエンジニアの山田です。 普段はバックエンドのRailsアプリケーションの開発をしていることが多いですが、今回はここ最近取り組んでいるデータ分析基盤の改善について紹介していきます。 はじめに データ分析基盤…

Kubernetesを本番導入しました

こんにちは、SREチームの栗山(@sheepland)です。 さて、スタディプラスでは2020年9月に念願の Kubernetes本番導入 を果たしました。 本番導入といってもまだ10マイクロサービスあるうちの1つをKubernetes上で稼働させているだけです。しかしそこに至るまで様…

iOS 13におけるSiri Shortcuts 最小実装+α スライド書き起こしと補足

こんにちは、モバイルクライアントグループの明渡です。 先日iOSDC Japan 2020にてLTへ登壇させていただき、「iOS 13におけるSiri Shortcuts 最小実装+α」というテーマで発表いたしました。 fortee.jp フィードバッグも思いの外たくさん頂戴いたしまして、登…

iOSDC Japan 2020に参加しました

こんにちは、モバイルクライアントグループ iOSエンジニアの大石です。 9/19~21に開催された iOSDC Japan 2020 へ参加した件をブログにします。 今回、弊社としてはシルバースポンサーとしてスポンサードしており、LTへの登壇は1名、他のメンバーは勉強会・…