Studyplus Engineering Blog

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

MySQLの0000-00-00 00:00:00という負債とridgepoleの限界

こんにちは、CTOの島田です。 今回は、StudyplusのDBのmigrationで発生した問題とその解決ステップを説明したいと思います。 前提 schema.rbでの運用 ridgepoleの導入 "0000-00-00 00:00:00" 問題 問題の原因は? 暫定対応 問題の解消 あるべき姿 まとめ 前…

新規プロジェクトにVueとVuexを採用してみた

こんにちは。Studyplus開発部の田口です。 新規で立ち上がった開発プロジェクトにVueとVuexを採用してみたので、今回はその所感を書こうと思います。 Vue/Vuexの採用理由 今回のプロジェクトで開発するのは、Studyplusのアプリ内ブラウザのWebViewページです…

インフラエンジニアがオフィス移転で考えたこと[後編]

インフラエンジニアの菅原です。 弊社のオフィス移転が完了しました。 前編で引越しの計画を立てたものの、事は上手く運ばず、色々学びがありました。 今回はインフラエンジニアがオフィス移転で考えたこと[前編]の続きとして振り返りと学びを共有したいと思…

Railsで流量の多いデータをページネーションする

はじめまして、for School事業部のサーバーサイドエンジニアの冨山です。 今回はfor SchoolのリニューアルにおいてAPIでリアルタイムなデータをページネーションする上でJinraiというカーソルベースのページネーションライブラリを開発しました。 今回はその…

Ruby biz Grand prix2018、大賞を受賞しました

こんにちは、CTO島田です。 2018年12月13日、Ruby biz Grand prix2018の表彰式が開催され、スタディプラスが大賞を受賞いたしました! まさか大賞を頂けるとは思っていませんでしたので、とても嬉しいです。 今回、Ruby biz Grand prix応募にあたり、当社の…

透明Activityの罠

初めまして、Studyplus開発部でAndroidアプリの開発をしております中島です。 今回のブログでは、我々 Studyplus Androidチームが踏んでしまった、深い深い落とし穴について少しお話しさせていただければと思います。 透明Activityとは? 透明Activity の罠…

AAC Pagingライブラリ導入の話

お久しぶりです。Androidエンジニアの若宮(id:D_R_1009)です。 今日はAndroid Architecture Components Pagingライブラリ(AAC Paging)の導入例を紹介したいと思います。 アプリを利用してくださっている方はお気づきになられていると思いますが、11月19日よ…

Kubernetesハンズオンを行いました

はじめまして、Studyplus開発部でサーバーサイドを担当している栗山です。 背景 Studyplusではコンテナ化を進めたいと思っていますが、まだAWS Elastic BeanstalkやEC2上でアプリケーションが動いています。 今後コンテナ化するにあたり、 コンテナ化を進め…

インフラエンジニアがオフィス移転で考えたこと[前編]

初めまして、インフラエンジニアの菅原です。 弊社では事業拡大に伴うオフィス移転を予定しております。 インフラエンジニアとして社内ネットワーク移設について検討したことを移転前と移転後の2回に分けてまとめたいと思います。 まだ何も物が入っていない…

RubyWorld Conference 2018に行ってきた

こんにちはスタディプラスCTOの島田です。 はじめに スタディプラスは、RubyWorld Conference 2018 にPlatinumスポンサーとして協賛をさせて頂きました。 それに伴って、ブースも出展いたしました。 2018.rubyworld-conf.org 島根到着からブース出展までの内…

Kotlin Coroutinesを(SDKに)導入しました!

初めまして。Studyplus開発部の若宮(id:D_R_1009) です。9月よりAndroidアプリの開発を行っています。 Kotlin、いいですよね。Kotlin Coroutines、シビれますよね。 ということで、Kotlin1.3がリリースされたことを記念してStudyplus-Android-SDKにKotlin Co…

Sidekiq Enterpriseを使う

お久しぶりです。サーバーサイドエンジニアの花井です。 みなさんは非同期処理に何をお使いですか? ActiveJobでしょうか? Resqueでしょうか? Sidekiqでしょうか? 弊社では歴史的経緯から、上記全てのgemをプロダクトで使っていますが、 この度Sidekiq En…

Google Cloud Functions を利用して社内コミュニケーションを円滑にしていく

はじめに 課題 理想状態 アプローチ案 理想状態を実現する方法を幅広く考える。 定期的に不要なチャンネルを精査する Web APIを利用したアプローチ 今回やること 実現方法 手順 GCPの事前準備 SalckのTokenを生成 実装 プログラムの構成 もろもろ準備 デプロ…

elm-upgradeに従ってElmのバージョンを0.18から0.19へ上げる

ForSchool事業部の石上です。ウェブのフロントエンドを中心にStudyplus for Schoolの開発に携わっています。 あるアプリケーションのElmのバージョンを0.18から0.19に上げる対応をしました。今回はこのことについて書きます。 背景 Studyplus for School で…

UIPickerViewをUIControlを使用してキーボードの様に表示する

iOS

こんにちは。 入社して一ヶ月が経過したiOSエンジニアの弘田です。 今回はUIPickerViewをキーボードの様に表示する方法を解説します。 なぜそんなことをするの? 昔のiPhoneでしたら画面の中心などにUIPickerViewを表示しても画面サイズが小さかったので片手…