Studyplus Engineering Blog

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

2018-01-01から1年間の記事一覧

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を表示しても画面サイズが小さかったので片手…

Visual Studio Codeの拡張「GitHub Pull Requests」を使ってみた

こんにちは。7月に入社したStudyplus開発部の田口です。 先日Microsoft社が発表したVisual Studio Codeの拡張のGitHub Pull Requestsを試してみたのでその記事を書きます。 まずは弊社のエンジニア陣が普段なんのエディタを使っているのか、アプリチーム以外…

buildersconに行ってきた

スタディプラスCTOの島田です。 今回は9/6~8に開催されたbuilderscon tokyo 2018へ行ってきた感想を書きます。 最初に buildersconとは buildersconは、「知らなかった、を聞く」をテーマとした技術を愛する全てのギーク達のお祭りです という趣旨のもと、イ…

iOSDC2018に参加しました

こんにちは。スタディプラスに9月からiOSエンジニアとして入社した弘田です。 Kotlin festの記事でも紹介しましたが、 弊社には 勉強会・カンファレンス参加補助があるので、iOSDC2018に参加させていただきました。ありがとうございます。 弊社のiOSエンジニ…

GraphQLを導入しようとしている話

こんにちは。Studyplusでサーバーサイドを担当している金澤です。 弊社ではいまapiの一部にGraphQLを導入するべく取り組んでいます。 GraphQLってなんだという話や導入手順などはweb上にすでに沢山あると思います。 なのでそのへんはあっさりめで、検証にあ…

Kotlin festに行ってきました

弊社には 勉強会・カンファレンス参加補助 があります。 その制度を使って会社のお金でKotlin Festに参加させていただきました。補助といいつつ基本全額サポートしてくれました。 ありがとうございます。 Kotlin Festとは 「Kotlinを愛でる」をビジョンに、K…

FirebaseでSlack Slash Commandsを楽に運用する

ForSchool事業部開発グループの松田です。 弊社ではSlackを導入しており、いわゆるChatOpsに活用しています。 Slackにはさまざまな便利機能がついていますが、その中の一つにSlash Commandsというものがあります。 今回はこのSlash Commandsを自作して、その…

スタディプラス のAndroid事情

スタディプラス のAndroid事情 今回はAndroidアプリ担当エンジニアのNabesukeです。 組み込みエンジニア→Android→放浪→iOS→バックエンド→フロントエンド→Androidというよくわからない経歴を持っています。 今回はStudyplus Android版の裏側をご紹介します。T…

AWS Glueを用いたデータ分析基盤を構築した✨

こんにちは。業務委託の@morix1500と申します。 この度、スタディプラス様からデータ分析基盤の構築の業務委託を受け、AWSのマネージドサービスを用いて構築を行いました。 その際に得られた知見を共有したいと思います。 データ分析基盤について 今回スタデ…

スタディプラス LT大会2018(夏)

こんにちは、CTOの島田です。 今回は7/13(金)に行われた社内LT大会についてです。(平成最後の13日の金曜日!?) LT大会とは? 趣旨 日ごろの勉強・活動・興味関心を共有し、相互理解を促進する 内容 業務内外問わず、自身が技術を用いて取り組んだものを発表 …

Railsで作られた管理画面にVue.jsを導入した話

Studyplusのweb版を担当していた久保です。 最近はRailsを触ったりしています。 今回は社内向けの管理画面を作る際に、どうしても動的にDOMを操作する必要があったのでjQueryの代わりにVue.jsを導入してみました。 なぜVue.jsを選んだのか Railsが生成したht…

中高生国際Rubyプログラミングコンテスト2018への協賛

こんにちは、スタディプラスの島田です。 2018年7月15日(日)から応募受付が開始される中高生国際Rubyプログラミングコンテスト2018にて、スタディプラスはGold PARTNERとして協賛させていただきます。 スタディプラスではこれまでもRubyKaigi 2018等のカン…

nginxのX-Accel-Redirectを使った縮小画像配信サーバ

インフラまわりを担当しております。id:rmanzokuです。 今回は、画像配信サーバをnginxを使ってプチリプレースをしたので その実装方法を紹介します。 課題と対応 Studyplusでは、ユーザーが投稿した画像や教科書の表紙画像を任意のサイズに縮小し配信する機…

合同筋トレ会を開催しました👍

先日こんな記事を投稿した花井(id:hiroyuki-hanai)です。 以下の部分がきっかけで、ファインディ株式会社様筋トレ部と弊社筋トレ部で合同筋トレを開催しました! 筋トレっていいですよね。 BIG3の総重量が280kg(5RM)になりました。サーバーサイドエンジニ…

Railsフロントエンド設定をふつうにする

4月からForSchool事業部の石上です。以前は、主にStudyplusのウェブ版を担当していました。現在ForSchool事業部では、Studyplus for Schoolというプロダクトをエンジニア2人で開発しています。2人ともサーバーサイドとフロントエンドの両方を担当しています…

fastlaneでCode Signing StyleをAutomaticからManualに変更する

iOS

はじめに Studyplus開発部のiOSエンジニアの id:kurotyann です。2015年に入社してもうすぐで3年になろうとしています。 今回の開発者ブログは、弊社のiOSアプリ「Studyplus」 のCI環境について紹介しながら、fastlaneでCode Signing Styleを変更する方法を…

AWS IoT Enterprise Buttonを使ってSlack通知ボタンを作る

こんにちは。スタディプラスでインフラ周りを担当している id:rmanzoku です。 先日、国内での発売が開始されたAWS IoT Enterprise Buttonを使ってオフィスの小さな改善を行ったのでご紹介します。 弊社の課題 弊社のオフィスは、ビルの4Fと6Fに分かれており…

pt-query-digestによるパフォーマンス測定

筋トレっていいですよね。 BIG3の総重量が280kg(5RM)になりました。サーバーサイドエンジニアの花井(id:hiroyuki-hanai)です。 弊チームではサービスのコアになるAPIをRailsとMySQLをベースに開発しております。 インフラにはAWSを利用しています。 スタデ…

スタディプラス開発者ブログ始めました

はじめに 目的 方向性 懸念・問題 解決方法 リソース問題 公開サイクル問題 品質問題 ネタがない問題 最後に はじめに はじめまして、学習管理プラットフォーム「Studyplus」を運営していますスタディプラス株式会社のCTOの島田です。 www.studyplus.jp この…