Studyplus Engineering Blog

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

Android

FlutterでDriftを使ったデータ保存でのつまづきと対策

こんにちは、クライアントグループの樋口です。 今回は、弊社のアプリにてFlutterで使えるローカルDBパッケージの「Drift」を用いた開発した際に生じた、データ保存でのつまづきとその対処法を紹介します。さらに、Driftの簡単な使い方と使用例も併せて紹介…

DroidKaigi 2023に参加しました

こんにちは!クライアントグループの後藤です。 この度、9/14(木)~16(土)にベルサール渋谷にて開催されたDroidKaigi 2023に参加しましたので、その様子をお伝えします。 はじめに 弊社スタディプラス株式会社は、サポータースポンサーとしてDroidKaigi 2023…

Android 13への対応の注意事項

こんにちは、クライアントグループの隅山です。 しばらくFlutter開発していましたが、Android 13への対応が必要になったため直近はAndroidの更新作業を行なっていました。 今回はAndroid 13への対応項目と対応時に注意すべき点について紹介します。 Android …

スタディプラスはDroidKaigi 2023にサポータースポンサーとして協賛します

本文 こんにちは。 スタディプラスのカンファレンス/OSSサポートチーム、後藤です。 スタディプラスは、2023年9月14日から16日にかけてベルサール渋谷ガーデンおよびオンラインで開催される、DroidKaigi 2023に協賛します。 2023.droidkaigi.jp DroidKaigi 2…

Kotlinのアレ、Dartでどう書くの? ~ 1人 FlutterKaigi unconference ~

こんにちは、モバイルクライアントグループの中島です。 ついこの間、約300~400年に一度のイベントがありましたね。 皆既月食+惑星食、道ゆく人が皆空を見上げていたのが印象的でした。 自分は残念ながら天体観測用の環境やカメラなどがなかったため、スマホ…

DroidKaigi 2022にスポンサー&参加&登壇しました

こんにちは。 久々に朝の電車に乗りました。モバイルクライアントグループ テックリードの若宮(id:D_R_1009)です。 DroidKaigi 2022お疲れ様でした! 10月5日から7日にかけて、フルで楽しむことができました。 まさかお会いできるとは、という方なんかともお…

スタディプラスはDroidKaigi 2022にサポータースポンサーとして協賛します

こんにちは。 スタディプラスのカンファレンス/OSSサポートチーム、若宮(id:D_R_1009)です。 スタディプラスは、2022年10月5日から7日にかけて東京ドームシティプリズムホールおよびオンラインで開催される、DroidKaigi 2022に協賛します。 droidkaigi.jp Dr…

Billing Libraryを使ったサブスクリプションのグレード変更をリリースして

こんにちは、モバイルクライアントグループの中島です。 趣味でやってるTCGが、最新のセットで浮世絵サムライニンジャライダーキック合体ロボしながら北斗の拳メタルギアもしつつ、テーマ曲を稲葉浩志と凛として時雨が歌ってて意味がわかりませんでした。 め…

Studyplus iOS/Androidのサブスクリプションをサーバーサイドに実装した話

こんにちは、サーバーグループの中村です。 Horizon Forbidden Westを先日クリアしました! とても面白かったのですが大作オープンワールドゲームをがっつりプレイするのが最近しんどくなってきました。 ですが懲りずにELDEN RINGを買おうか悩んでおります。…

DroidKaigi 2021に参加した感想

こんにちは、Pixel 3aユーザーの若宮(id:D_R_1009)です。 早速Android 12を入れて、毎日使っています。 あっという間の3日間でしたが、DroidKaigi 2021が開催されました! 今回は、3日間の振り返りと感想をまとめておきたいと思います。 感想 隅山 今回、「マ…

画面回転対応で対応すること

こんにちは、モバイルクライアントグループの隅山です。 最近フィットネスバイクを購入し、運動不足の解消を心がけています。 今年の6月より、AndroidのStudyplusアプリはタブレットでの動作を前提とした実装に切り替えました。 タブレットでも快適に利用で…

Billing Library v4.0.0 への更新

こんにちは、モバイルクライアントグループの中島です。 最近、ディスプレイの上に引っ掛けて物を置けるようにするボードを買いました。思ったより便利に小物を置けるので良さげです。 さて、今回は Google Play Billing Library (以下Billing Library) を、…

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

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

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

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

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

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

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

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

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

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

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

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

RecyclerViewで Drawable に tint を設定する際は気をつけよう

こんにちは、モバイルクライアントグループの中島です。 最近健康診断で久しぶりに出社しましたが、体脂肪率が痛かったのでランニングを始めました。 頑張っていきたい。 さて、9月頭にも本ブログで紹介いたしましたが、Studyplusでは8月31日にiOS/Android両…

Kotlin Flow+Roomで作るTimer&Stopwatch

こんにちは、モバイルクライアントグループの若宮(id:D_R_1009)です。 2月以降リモートワークで開発を続けております。会社近くのラーメン屋さんが恋しくなってきました。 今回は5月中旬にリリースした、AndroidアプリのTimer&Stopwatch改修について書きます…

Google Play定期購入でプランを切り替えるモードの話

こんにちは、モバイルクライアントグループの中島です。 Studyplusでは3月17日に、有料会員サービスである Studyplus Pro をiOS/Android両OSでリリースしました。 info.studyplus.co.jp Studyplus Pro の開発では、アプリ内課金について様々な要件を調査しま…

WorkManager とViewModelの間でデータを受け渡しした話

こんにちは、モバイルクライアントグループの中島です。 今回はWorkManagerを使った非同期処理で、WorkManagerとViewModelの間でデータのやりとりを行なう方法について話したいと思います。 ここで「データのやりとり」と言っているのは、WorkManagerに処理…

JetpackのNavigationで開始画面を変更する方法

こんにちは、モバイルクライアントグループの隅山です。 去年からNavigationを導入してきましたが、導入する際に画面遷移周りで課題があったのでその課題について紹介します。 画面遷移の課題 解決策1:StartDestinationを用いる 解決策2:GlobalActionを…

Firebase App DistributionへFabric Betaから社内向けアプリ配信を移行しました

こんにちは、新生モバイルクライアントグループの若宮(id:D_R_1009)です。 今回は社内向けのテストアプリ配信の更新について書きたいと思います。 移行の経緯 テストアプリ配信環境 fastlaneによるlaneの用意 CI(CircleCI)の設定 開発者マシン(shell script)…

WorkManager + Dagger2によるバックグラウンド処理

こんにちは、Androidチームの若宮(id:D_R_1009)です。 昨年末にAndroidチームが導入した、WorkManagerをDagger2と組み合わせる方法を紹介します。 WorkManagerとは developer.android.com WorkManagerは、確実に実行したい非同期処理に対して利用するAndroid…

AAC Navigation で Bundleの受け渡しを SafeArgs で行なってハマった話

こんにちは、Studyplus Androidチームの中島です。 以前の話に引き続き、 AACのNavigationについて話したいと思います。 今回は 遷移元・遷移先のFragment間でのBundle受け渡しでちょっとハマったことについてです。 なお、執筆時に利用している Navigation …

スタディプラス AndroidアプリKotlin化の歩み

こんにちは、Androidチームの若宮(id:D_R_1009)です。 今回はAndroidアプリの大きな更新、JavaからKotlinへの移行について書きたいと思います。 Androidアプリの歴史 Kotlinの導入 Kotlin化の本格化 Kotlin Coroutines導入、RxJavaから移行開始(2018年11月) …

Kotlin Fest 2019に参加しました

こんにちは、Androidチームの若宮 (id:D_R_1009)です。 Kotlin Fest 2019(2019年8月24日)にAndroidチームの3名(若宮、中島、隅山)で参加してきました。 kotlin.connpass.com 昨年度に参加した時のブログはこちらです。昨年に引き続き 勉強会・カンファレンス…

DatabaseView(Room 2.1)による本棚並べ替え機能リリースについて

こんにちは、Androidチームの若宮(id:D_R_1009)です。 スタディプラスのAndorid版にて、5月半ばより不具合の発生していた「本棚」機能を7月頭に修正したしました。 ご不便、ご迷惑をおかけしましたこと大変申し訳なく思っております。 「本棚」の不具合にお…

Navigation で DialogFragment を表示した話

こんにちは、Studyplus Androidチームの中島です。 2019年6月より、Studyplus AndroidアプリはTarget SDK28への対応、合わせてAndroidXへの移行を行いました。 今まで「AndroidXに対応したらここ直しましょう」としていたところをガシガシ直していくのは楽し…