タグ

ブックマーク / blog.studysapuri.jp (36)

  • Amazon アプリストアでスタディサプリ小学・中学講座を公開するまで - スタディサプリ Product Team Blog

    スタディサプリ小学・中学講座を開発している Android エンジニアの @maxfie1d と @omtians9425 です。 2024年2月26日にスタディサプリ小学・中学講座をAmazonアプリストアにて配信を開始致しました。 すなわち今後は Fire タブレット においてもスタディサプリ小学・中学講座をお使いいただくことができます!記事では Amazon アプリストアでの配信にあたり必要な開発や Tips についてお届けします。 学習を始める方におすすめの端末をご紹介|スタディサプリ Fire タブレット、Amazon アプリストアとは Fire タブレットは Amazon から発売されているタブレットで、代表的な Fire HD 10 などに加えてキッズモデルもラインナップされています。 OS には Fire OS が採用されています。Android をベースにした OS で

    Amazon アプリストアでスタディサプリ小学・中学講座を公開するまで - スタディサプリ Product Team Blog
    invent
    invent 2024/05/31
  • Darklaunchという便利なものと、その未来 - スタディサプリ Product Team Blog

    Darklaunchという便利なものと、その未来 3行要約 スタディサプリのRubyバックエンドで気軽に誰でも使える、"Darklaunch"という Feature toggles 機構がある 4年強ほど運用してきて、様々な知見、多様なユースケース、問題などが明らかになった 知見を活かして、近い将来Darklaunch v2というのを社内で作って公開予定 (HTTP APIであり、Rubyバックエンドだけでなく全環境から直接利用可能) Feature togglesとは Feature togglesとかFeature flagsとかchankoとかcanary releaseとかA/BテストとかlaunchdarklyとかflipperとかDarklaunchなどという言葉を見聞きした機会のある方は多いと思います。ちょっとそれぞれレイヤーやカバレッジは違いますが、ようするに「コードの変更

    Darklaunchという便利なものと、その未来 - スタディサプリ Product Team Blog
    invent
    invent 2023/06/28
  • 不要な Swift コードを静的解析で安全かつ継続的に消していく - スタディサプリ Product Team Blog

    不要な Swift コードを静的解析で安全かつ継続的に消していく こんにちは、iOS エンジニアの @manicmaniac です。 現在スタディサプリ iOS アプリ開発チームのエンジニアリングマネージャをしています。 スタディサプリ iOS アプリは開発開始から7年以上が経過した、そこそこ歴史のあるプロダクトとなっています。 そこそこ長い歴史の中では、「スタディサプリ」が React Native から卒業するまで、あるいは技術的負債への感謝と敬意 で触れたように大小さまざまの利用技術の変遷があり、開発者の入れ替えがあり、多数の新機能の追加や削除がありました。 したがって、コードベースには歴史の生き証人のような不要コードがポツポツと存在しています。 今回はこれらの不要コードを削除する活動を、ツールの助けを得て行った話をします。 不要コードとは さきほどから不要なコードと言っていますが、

    不要な Swift コードを静的解析で安全かつ継続的に消していく - スタディサプリ Product Team Blog
    invent
    invent 2023/06/28
  • SwiftUI.NavigationView のバックボタンをカスタマイズする方法 - スタディサプリ Product Team Blog

    こんにちは。iOS エンジニアの @_nkmrh です。 最近、Full SwiftUI で開発したスタディサプリ 中学講座をリリースし、アプリ開発の醍醐味を味わっています。 はじめに 稿では、スタディサプリ中学講座 iOS アプリで実装した SwiftUI の NavigationView のバックボタンをカスタマイズする方法について紹介します。 この記事で紹介している方法は iOS 14 以上で動作確認しています。 それでは早速みていきましょう! カスタムバックボタン まずはじめに、ナビゲーションバーのバックボタンとして表示したい View を実装します。 ここでは、SFSymbol の chevron.backward を表示しています。 /// ナビゲーションバーのカスタムバックボタン struct NavigationBarBackButton: View { var acti

    SwiftUI.NavigationView のバックボタンをカスタマイズする方法 - スタディサプリ Product Team Blog
    invent
    invent 2023/06/28
  • ReactNativeに入門して感じたこと - スタディサプリ Product Team Blog

    こんにちは。モバイルエンジニアの@m-sugawaraです。 弊社ではReact Nativeを使って作られたアプリがいくつかあります。 今回はReact Nativeほぼ未経験で入社した私が、三ヶ月ぐらいReact Nativeの開発に参加して感じたことをつらつらと書きます。 簡単に私のバックグラウンドを説明しますと、SwiftJava/Kotlinを使ったiOS/Androidのアプリの経験はありましたが、React NativeやReact/Redux/TypeScriptについてはほとんど未経験でした。 すでに業務でReact Nativeをバリバリ使っておられるような方には当たり前の内容になるかもしれませんが、これから取り組もうと考えている方などに少しでも参考になれば嬉しいです。 なお、導入の背景や技術的な説明に関してはこちらやこちらに詳しく書かれているので、ご興味のある方はぜ

    ReactNativeに入門して感じたこと - スタディサプリ Product Team Blog
    invent
    invent 2023/06/05
  • GitHub Insightsのおかげで効果的な振り返りができた話 - スタディサプリ Product Team Blog

    (この記事は約5分で読めます) こんにちは、スタディサプリ TPMTechnical Product Manager)の@risa-hayashi です。 振り返りにGitHub Projects(beta)のInsightsという機能を利用してみたところ、振り返りが効果的にできるようになったのでその運用方法や効果を紹介したいと思います! GitHub Projects(beta) Insightsとは? とてもざっくり言うと、任意のGitHub Project(beta)に載せられたissueから、このようなチャートを作れる機能です。 しかもこのチャートの見た目(グラフの種類やX/Y軸の基準)は適宜カスタムすることができます。便利! 私の所属しているスタディサプリ合格特訓コース、個別指導コースの開発チームでは、この機能を利用して数ヶ月前から振り返りの運用を行っています。 なぜInsig

    GitHub Insightsのおかげで効果的な振り返りができた話 - スタディサプリ Product Team Blog
    invent
    invent 2022/09/01
  • なぜSeleniumを選ばなかったのか~AutifyとMagicPodを選びました~ - スタディサプリ Product Team Blog

    こんにちは。QA Engineerの@testtattoです。 今回はE2Eテストの自動化にあたって、どういった考えでツール選定を行ったのかを話したいと思います。 対象読者 以下に興味や関心を持つ方を対象読者として想定しています。 E2Eテスト自動化によって課題を解決したいが、どういった技術があるのか分からなくて困っている人 E2Eテストの自動化は実現できているが、継続に課題を抱えている人 テスト自動化なら何でも興味がある人 まえがき 読んでもらう前にいくつかの前提を共有します。 リリースサイクルについて 当社のwebプラットフォームのリリースサイクルは一部のマイクロサービスを除いて基的には週次です。 決まった曜日で各プロダクトのプルリクエストを取り込んで、リグレッションテストを実施し、リリースブロッカーがなければリリースしています。 流れとしてはこんな感じです。 月 火 水 木 金 特

    なぜSeleniumを選ばなかったのか~AutifyとMagicPodを選びました~ - スタディサプリ Product Team Blog
    invent
    invent 2022/09/01
  • iOS バージョン による SwiftUI の機能差分・制限まとめ - スタディサプリ Product Team Blog

    こんにちは。iOS エンジニアの wadash です。先月2022年2月に無事リリースした「スタディサプリ 中学講座」のチームで開発に携わっています。 今回は iOS バージョンによる SwiftUI の挙動差異と制限のまとめをご紹介します。 SwiftUI の採用とサポートバージョンについて 「スタディサプリ 中学講座」では、SwiftUI を全面的に採用した開発を行っており、アプリのサポートバージョンを iOS 14 以上としています。 プロジェクト発足当初は iOS 13 以上をサポートバージョンにする方針で議論していましたが、プロジェクト期間途中の2020年9月にリリースされた iOS 14 にて、iOS 13 時点で一般に認識されていた SwiftUI の不安定な挙動がある程度改善されたことを確認したため、プロダクト自体の品質向上という目的と、ローンチのタイミングでユーザーがイン

    iOS バージョン による SwiftUI の機能差分・制限まとめ - スタディサプリ Product Team Blog
    invent
    invent 2022/08/18
  • SwiftUIで対応しきれずUIKitを使ったコンポーネントのまとめ - スタディサプリ Product Team Blog

    こんにちは、iOSエンジニアの @elliekwon です。去年のiOSDC Japan 2021「スタディサプリ」がFull SwiftUIを選択した先に見えてきたものの発表で紹介させて頂いた通り、SwiftUIで開発してきた「スタディサプリ中学講座」ですが、SwiftUIでは対応しきれず、ごく一部UIKitを利用した機能も存在しています。この記事ではそれらのケースと対応策を紹介します。 事前知識 その前にSwiftUIからUIKitを使うため、先に知って貰えたいものがあります。 一つは UIViewRepresentable / UIViewControllerRepresentable と言うprotocolで、これらはSwiftUIUIKitUIView/UIViewControllerを使えるようにしてくれるwrapperです。 UIViewRepresentableに準拠し

    SwiftUIで対応しきれずUIKitを使ったコンポーネントのまとめ - スタディサプリ Product Team Blog
    invent
    invent 2022/05/31
  • APIの開発に(なるべく)依存しないモバイルアプリ開発 - スタディサプリ Product Team Blog

    Mobile Engineer の @chiiia12 です。 今回は試験的に私たちのチームで導入した "MockApiInterceptor" の取り組みについてご紹介します。 (今回は、Android アプリでの例を紹介します。) 背景 最初に私たちのチーム構成/開発の進め方について説明させてください。 私たちのサービスは、Web フロント・サーバーサイドを開発する "Web チーム" と Android/iOS アプリを開発する "Native アプリチーム" に分かれています。これまでの開発は Web チームの人数の多さもあり Web での機能開発が先行する形で行われ、Native アプリでの同じ機能開発は "後追い" する形で開発を進めてきたことが大半でした。したがって、既に API が用意されている状態でアプリの開発が開始できました。 今回、Native アプリの開発が先行する

    APIの開発に(なるべく)依存しないモバイルアプリ開発 - スタディサプリ Product Team Blog
    invent
    invent 2022/03/03
  • SwiftUIの隠しNavigationLinkを使って画面遷移をプログラムで制御する - スタディサプリ Product Team Blog

    こんにちは、iOSエンジニアの @chuymaster です!iOSDC Japan 2021の「スタディサプリ」がFull SwiftUIを選択した先に見えてきたもの。のトークセッションで紹介された、プログラムで画面遷移を制御する方法について詳しく解説します。トークで話しきれなかった背景等についても触れます。 完成イメージ ※記事のサンプルコードは Xcode 12.5.1、iOS14で作成しています。 実現したい機能要件 APIと通信して条件に適した場合のみ、一覧画面から詳細画面をプッシュ遷移したい。 よくある要件だと思いますが、UIKitでは navigationController?.pushViewController と書けば済むものの、SwiftUIだと一筋縄では行かないので、私たちが使っている方法をご紹介します。 NavigationLinkとは NavigationLi

    SwiftUIの隠しNavigationLinkを使って画面遷移をプログラムで制御する - スタディサプリ Product Team Blog
    invent
    invent 2021/12/27
  • Autify を導入したらなかなか良かった話 - スタディサプリ Product Team Blog

    スタディサプリのコーチングサービス (合格特訓コース、個別指導コース) 開発チームで Engineering Manager をしている @pankona です。 最近弊チームで取り入れている Autify の良さについて紹介します。 TL;DR 弊チームでは最近 E2E テストとして Autify を便利に活用しています。 Autify の便利ポイントは以下。 E2E テスト構築が容易。非エンジニアでもある程度すぐに作れるようになる。細かいところは JavaScriptCSS セレクタを用いてエンジニアが補うこともできる。 多少 UI の見た目が変わってもテストが壊れにくい。UI の見た目が変わったことは検知することができ、問題ないと人間が判定することでテストが修復される。 チャットで質問を出すと結構すぐに返事がきて嬉しい。感謝。 Autify について Autify ランディング

    Autify を導入したらなかなか良かった話 - スタディサプリ Product Team Blog
    invent
    invent 2021/11/15
  • GitHub Actions Self-hosted Runner の導入と安定運用に向けた軌跡 - スタディサプリ Product Team Blog

    こんにちは。SRE の @int128 です。 Quipper では GitHub Actions Self-hosted Runner を一部のジョブで導入しています。稿ではその目的と具体例を紹介します。 背景と解決したい課題 Quipper では以下の CI サービスを用途に合わせて利用しています。 CircleCI(テストやデプロイなど) GitHub Actions(テストやデプロイなど) AWS CodeBuild(主に Terraform など AWS リソースにアクセスする場合) Google Cloud Build(主に Google Cloud のリソースにアクセスする場合) Jenkins(定期実行や手動実行に特化したジョブ) このうち GitHub Actions は以下の点が優れていると感じています。 monorepo 構成の場合にマイクロサービスごとに独立して

    GitHub Actions Self-hosted Runner の導入と安定運用に向けた軌跡 - スタディサプリ Product Team Blog
    invent
    invent 2021/04/14
  • bimg (libvips Goバインディング) でサムネイル画像作成を高速化する - スタディサプリ Product Team Blog

    はじめに こんにちは、Webエンジニアの濱田裕太 (@yuuta) です。 Quipperが開発・運用している スタディサプリ のプロダクトでは、バックエンドの一部をGoで実装しています。そのサムネイル画像作成で利用する画像処理ライブラリを imaging から bimg (libvips のGoバインディング) に変更したことで、高速化・省メモリ化を実現しました。エントリでは、それによって得られた知見を共有します。 1. どのくらい高速化・省メモリ化したか 1-1. 検証コード 1-2. 処理時間 1-3. メモリ使用量 2. なぜ高速化・省メモリ化されるのか 2-1. libvipsの画像処理アーキテクチャ 2-2. SIMD対応 2-3. JPEGスケーリングデコード 3. 運用時の留意点 3-1. libvipsのパッケージサイズ 3-2. libvipsのオペレーションキャッシ

    bimg (libvips Goバインディング) でサムネイル画像作成を高速化する - スタディサプリ Product Team Blog
    invent
    invent 2021/03/01
  • 差し込みの多いプロダクト開発のスケジュールの精度を上げるためにはバーンアップチャートがおすすめです - スタディサプリ Product Team Blog

    こんにちは。 今回は差し込みの多いプロダクト開発におけるスケジュール精度の上げ方として、バーンアップチャートの利用をおすすめしたいと思います。 どんな人に読んでほしいか Product GrowthやEnhancementに携わっているけど、やることが多くて思ったように進捗が管理できない人 ↑のようなProduct Manager(PdM)やProject Manager(PjM)とのコミュニケーションが多いけど、期待に対してうまく動いてくれないことをもどかしく思ってる方 TL;DR 3ヶ月や6ヶ月程度でタイムボックスを切りましょう タイムボックスの中でやりたいことを全部リストアップして見積もりをしましょう 終わったタスクのcloseと新規タスクのリストアップを繰り返すと、自然と「やりたいことが全部できるのかどうか」が見える化します バーンアップチャートとは 下記のようなものです。 図中の

    差し込みの多いプロダクト開発のスケジュールの精度を上げるためにはバーンアップチャートがおすすめです - スタディサプリ Product Team Blog
    invent
    invent 2021/02/17
  • ブログ番長を Bot にした - スタディサプリ Product Team Blog

    Web Dev の @mtsmfm です。 ブログ再開 から2年半、年間40~50程度のブログ記事がこの Product Team Blog からでています。 継続的な更新を重視し、これまで概ね週1程度が公開されるようにしてきました。 ローテーションを組んでいるものと、個々人が高まったときにゲリラ的に執筆するものの2パターンあります。 このローテーションについて、ブログ番長という責任者を立てスケジュール管理などを行ってきました。そのタスクは概ねローテーションの管理と執筆依頼の 2 つです。とはいえ締め切りの催促は、手間としては大きくないもののお互いにストレスが溜まります。 これの自動化を試みて2ヶ月ほど経過し、少しづつ形が見えてきたので共有したいと思います。 ブログ番長 Bot の仕事 ブログ番長 Bot の業務は、以下の通りです。 次週の執筆者を決定して通知する (木曜朝10時) 執

    ブログ番長を Bot にした - スタディサプリ Product Team Blog
    invent
    invent 2021/02/16
  • iOS/Androidチーム合同でユニットテストクロスレビューを行っている話 - スタディサプリ Product Team Blog

    こんにちは。2020年6月から Quipper に参加している @omtians9425 です。現在新規プロジェクトにおいて Android アプリ開発を担当しております。 今回は弊プロジェクトの iOS/Android チーム合同で行っている、ユニットテストのケースを相互にレビューし合う取組みについてお話します。 背景 弊プロジェクトのモバイルチームでは、プロジェクト開始当初からテスト方針について QA エンジニアと共に議論してきました。そこで、プラットフォーム間の品質・実装差分をなるべく減らすための取り組みとして、ユニットテストケースをお互いにレビューするのはどうか、というアイディアが出ました。 弊チームでは、各プラットフォームにおける適切なデザインや独自仕様の実装を除き、アプリの中核となるビジネスロジックについては iOS/Android で原則共通になると考えています。一方で言語や

    iOS/Androidチーム合同でユニットテストクロスレビューを行っている話 - スタディサプリ Product Team Blog
    invent
    invent 2021/02/16
  • Prefer ISO 8601 - スタディサプリ Product Team Blog

    01/02/03 という日付を見たときに、どう読み取りますか? 著者 ujihisa はこれを素直に 2003年1月2日と読み取りますが、人によっては 2001 年 2 月 3 日 2003 年 2 月 1 日 平成元年 2 月 3 日 令和元年 2 月 3 日 などと読み取ることもあるでしょう。日では年/月/日が普及していますが、英語などから順序を無視した機械的な翻訳の日付でまれによくある「1月2日 2003年」みたいな表記を見すぎてしまった人は月/日/年みたいに読んでしまうかもしれません。 ところで私はカナダに住んでいるのですが、カナダという国はこのようにスラッシュ区切りの日付を以下の 3 パターンのいずれかで読みとります。 月/日/年 年/月/日 日/月/年 https://commons.wikimedia.org/wiki/File:Date_format_by_country

    Prefer ISO 8601 - スタディサプリ Product Team Blog
    invent
    invent 2020/01/23
  • iOS GraphQL クライアントのデバッグツールを作った話 - スタディサプリ Product Team Blog

    こんにちは、今年の4月から Quipper の iOS エンジニアになった @manicmaniac です。 ちょっと話題としてはニッチかもしれないのですが、今日は Apollo iOS client を利用したアプリで GraphQL のデバッグに苦労し、そしてコードを書いてそれを克服した話をします。 そもそも GraphQL とか Apollo ってなに? GraphQL とは Web API のクエリ言語であり、またそのランタイム自体を指す言葉です1。 対して、ApolloGraphQL のサーバー・クライアント用のライブラリで、Meteor の開発元でもある Meteor Development Group 社が開発しています。 Apollo の iOS 向けクライアントである Apollo iOS は単なる API クライアントを超えて、以下のような機能を備えています。 G

    iOS GraphQL クライアントのデバッグツールを作った話 - スタディサプリ Product Team Blog
    invent
    invent 2019/08/13
  • Gradle Play Publisher プラグインをアップデートする - スタディサプリ Product Team Blog

    はじめましてこんにちは、4月に Native チームに加わった @geckour です。 今回は、Google Play Console の管理を自動化してくれる Gradle プラグインである Gradle Play Publisher のバージョンを v1.2.2 から v2.2.1 に上げた話をします。 経緯 僕が現在触っているプロダクトでは、リリース作業時にコミットを指定して CI を実行すれば Google Play に公開される、という自動化が行われており、それを実現するためにこれまで Gradle Play Publisher の v1.2.2 を使っていました。 しかし、このバージョンで我々はある問題を踏み抜きました。 まず前提として v1.0.0 では 50% リリースで公開していた 新しいリリースの v1.0.1 は hotfix であるため v1.0.0 を上書きして

    Gradle Play Publisher プラグインをアップデートする - スタディサプリ Product Team Blog
    invent
    invent 2019/07/05