Studyplus Engineering Blog

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

Studyplusのとある画面でYouTubeの動画再生に対応し、やらかしたお話

こんにちは、Studyplus iOSチームの明渡(ID: m_yamada1992)です。 今回は、今年3月にリリースしたStudyplusアプリにて大学の情報を表示する画面でYouTubeの再生に対応したお話、およびiOSアプリ側の実装にて盛大にやらかした話をつづっていきます。 YouTube…

弊社のSSO事情について

こんにちは、サーバーサイドエンジニアの金澤です。 みなさんSSOしてますか? 今日は弊社の管理ツールなどで導入しているSSOについてお話しします。 現状 大きく分けて二通りの方法で実現しています。 awsのalbでopenid connect(以下oidc) google G suiteのs…

RubyKaigi 2019にPlatinumスポンサーとして参加しました!

こんちにちは、スタディプラスCTOの島田です。 スタディプラスはRubyKaigi 2019にPlatinum Sponsorsとして参加させて頂きました。 スタプラのブースはこんな感じですこうしてみるとStudyplusロゴがたくさん一際目立っている気がする……… #Rubykaigi pic.twitt…

便利に使えるAnsibleのAWSモジュール11選

こんにちは、インフラエンジニアの菅原です。 皆さんはAWSをどのように管理されてますか? Ansibleでしょうか?ChefやTerraform、CloudFormationでしょうか? 弊社ではAnsibleのAWSモジュールを使って、構成をコード化し、管理しております。 そのため最近関…

Rails Developers Meetup 2019に参加してきた

こんにちは! For School事業部でサーバーサイドエンジニアをしているatomiyama(id:atomiyama)です. 今回3/22, 3/23に開催されたRails Developers Meetup 2019 Day2参加してきました! 弊社はDay2でビールスポンサーとして参加させて頂いたのですが,こうい…

RubyKaigi2019でお待ちしております!

スタディプラスCTOの島田です。 いよいよ今週RubyKaigi2019が開催されます。 今回、スタディプラスではスポンサーブースを出展させていただきます。 ブーススポンサーはRubyWorld Conference 2018(以下RWC)に続き2回目となります。 ブースでは学習管理サービ…

Flutterもくもく自習室 in スタディプラス #2 を開催しました。

スタディプラスでiOSと新規事業を兼務している須藤(id:kurotyann)です。 今回のブログでは、4月6日(土)に開催した「Flutterもくもく自習室 in スタディプラス #2」の結果についてまとめます。 Flutterもくもく自習室 in スタディプラス #2 - connpass Flut…

try! Swift TOKYO 2019行ってきました

初めまして、iOSチームに昨年10月から入社しております明渡(ID: m_yamada1992)と申します。 入社してからといいますか、社会人8年目にして初めて平日に丸1日単位で開催される技術カンファレンスへ大手を振って参加してきました! 開催が3月21日から23日でし…

やりたいことベースでWebpackにCSS周りの設定をする

こんにちは、ForSchool事業部の石上です。 あるSPAを作る際、CSSを書きやすくするためにいくつかWebpackの設定を書きました。 今回は、これらの設定がなぜ今こうなっているのかを社内のメンバーに説明するつもりで、どれが何のために必要な設定なのかを書い…

スタディプラス発OSSライブラリ Jasperについて

こんにちは、Androidチームの若宮(id:D_R_1009)です。 先日、JasperというOSSライブラリをリリースしました! github.com 今回は開発目的やモチベーション、今後の方針などを記したいと思います。 Jasperとは Jasperを作成した理由について 多くの人の目を通…

Flutterもくもく自習室をはじめました

スタディプラスでiOSと新規事業を兼務している須藤(id:kurotyann)です。 今回のブログでは、3月9日(土)に開催した「Flutterもくもく自習室 in スタディプラス」の結果についてまとめます。 Flutterもくもく自習室とは? connpass.com 弊社の新規事業では、…

GCP Cloud Firestore をRailsから使う

スタディプラスでサーバーサイドを担当している花井です。 先日田口さんが投稿したこちらのプロジェクトで、実験的にCloud Firestore / Cloud StorageとRailsでAPIを構築したので、その顛末を紹介します。 Firestoreの理由 今回のプロジェクトの要件に、一度…

DroidKaigi 2019参加報告

こんにちは。 Studyplus Androidチームの中島、若宮(id:D_R_1009)です。 2月上旬のこととなりますが、我々AndroidチームもDroidKaigiに参加してきました! 本日は、今年のDroidKaigi参加の経緯から、それぞれが注目しているセッションについてまとめておきた…

第11回 Rails Girls Tokyoに参加して

こんにちはスタディプラスのCTO 島田です。 スタディプラスは2月22・23日に開催された第11回 Rails Girls Tokyoへスポンサーと、コーチとして島田・冨山の2名が参加しました。 Railsgirlsとは RailsgirlsとはWebプログラミングに興味・関心はあるがプログラ…

AWS Lambda上でnode-canvasを使ってグラフを描画する

ForSchool事業部でStudyplus for Schoolのサーバーサイドを担当している松田です。 Studyplus for Schoolでは、一部でChart.jsを利用したグラフの表示をしています。 Chart.jsはHTMLのCanvasでグラフを描画するライブラリです。 今回はこのグラフをサーバー…

Apollo-iOSを使用してGraphQLを叩く

こんにちは。 iOSエンジニアの弘田です。 みなさんGraphQLはご存知ですか? 知らない方は弊社のエンジニアがGraphQLの記事を書いているのでぜひ読んでみてください。 GraphQLを導入しようとしている話 Studyplusのアプリで一部GraphQLを使用する際にApolloを…

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へ上げる

elm

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