スクラム体制でのモバイルアプリGの変遷(2022年)

スクラムの中でモバイルアプリGがどのようにWebを中心とするフィーチャチームと協業をしてきたのか

フル JetpackCompose 製のアプリ『TUNAG 受付』をリリースしました

こんにちは! スタメン TUNAG 事業部 モバイルアプリグループのカーキです。 最近では主として Android アプリの開発に携わっています。 株式会社スタメンでは7月の初めに『TUNAG 受付』という、TUNAGのチャット機能を利用したオフィスの受付アプリをリリー…

共通UIコンポーネントで速くクオリティの高いプロダクトを開発をしたい。

目次 はじめに 共通UIコンポーネントとは 共通UIコンポーネントを作り、運用することのメリット デザインの一貫性やクオリティが保たれる 開発コスト&デザインコストを削減できる 実装時に考慮すると良いこと スタイルを適切なpropsで操作可能か コンポーネ…

QuickSightのSPICEデータ使用量をLambdaで監視している話

目次 はじめに 使用量監視の課題 LambdaとCloudWatchを用いた監視方法 名前空間別にSPICE使用量を集計してCloudWatchにメトリクスを送信するLambda関数 CloudWatchアラート、ダッシュボードの作成 まとめ はじめに こんにちは、スタメンの田中、若園です。 …

QuickSight SPICEデータのLambda関数を用いた自動更新処理

目次 はじめに データ更新のニーズと課題について API経由でのSPICEデータの更新方法 自動更新のアーキテクチャ Lambda関数のコード まとめ はじめに こんにちは、スタメンの田中、若園です。 こちらの記事でカスタムダッシュボード機能の全体像を紹介しまし…

QuickSightを利用してカスタマイズしたダッシュボードを埋め込む

目次 はじめに カスタムダッシュボードの概要 カスタムダッシュボードのアーキテクチャ データセットの結合 アプリケーションへの埋め込み セグメント機能 まとめ はじめに こんにちは、スタメンのチームねぎまの近藤、滿本です。 以前、「名前空間を用いたQ…

Jetpack Compose のプレビューを利用して Android View で作成したコンポーネントの開発を加速させる

こんにちは、TUNAG事業部のカーキ (@khaki_ngy)です。 普段は TUNAG の iOS/Android などのモバイルアプリの開発を行なっています。 今回は TUNAG の Android アプリ開発における Android View の開発での Jetpack Compose を使ったレイアウトプレビューの活…

JSON:APIフォーマットのTSの型を、デシリアライズした型に変換する型パズルの実装

はじめに こんにちは。株式会社スタメンで FANTS のエンジニアをしている@0906kokiです。 今回の記事では、以前社内で実装した、デシリアライズする前の JSON:API フォーマットの型を、デシリアライズ後の型に変換する方法について書きたいと思います。 目次…

名前空間を用いたQuickSight上でのマルチテナントの実現

Work illustrations by Storyset こんにちは、スタメンの滿本、若園、田中、近藤です。スクラムでのチーム名は、チームねぎまです。 (2022年冬からスクラム開発に移行しました) 本記事では、QuickSightの概要、マルチテナント構成とその運用方法について紹介…

Next.js×NestJSをモノレポで構築/運用してみました

こんにちは、スタメンエンジニアの手嶋です。普段はRuby on RailsやReactなどの技術を用いて開発しています。最近はフィーチャーチーム体制に切り替わったこともあり、AWSなどの技術にも触れる機会が増えました。 これまで複数のプロジェクトにおいてReact(T…

スタメンインターン体験記

はじめに こんにちは。takumma といいます。株式会社スタメンで一ヶ月半ほどインターンをさせていただいたので、そこで体験したことを文章として残そうと思います。 本当はインターンでお世話になった社内の方達に向けて社内ドキュメントに投げようと思って…

Deviseにおける認証ロジックの実装

TL;DR (概要) Deviseにおける認証ロジックの実装 認証処理の流れ カスタムストラテジーの実装 カスタムストラテジーの呼び出し default_strategiesとして呼び出す ストラテジー名を指定して呼び出す その他 Tips FailureApp(エラーハンドリング用のクラス) h…

TUNAG(ツナグ)の技術と開発体制のすべてを紹介します!

こんにちは。CTOの松谷です。現在はCTOとTUNAG開発部部長を兼務しており、CTOとして会社全体の技術統括を行いながら、TUNAG開発部長として開発組織マネジメントを担っています。 本記事では、スタメンの創業事業であるTUNAGについて、プロダクトと開発体制の…

FANTSの開発技術・開発組織を紹介します!

目次 はじめに FANTSとは 技術について 組織について 開発体制 エンジニア おわりに はじめに FANTS事業部の開発部の部長をしている田中(@sukesan_st)です。2021年9月から開発部門の部長としてチームのマネジメントをしています。去年は料理とサウナにハマっ…

FANTS ダッシュボードを支えるフロントエンド技術

こんにちは、株式会社スタメンで FANTS のフロントエンド開発を担当している @0906koki です。 今回の記事では、本日リリースした FANTS ダッシュボードのフロントエンド開発で選定したフレームワークやライブラリ、ディレクトリ構成について解説します。 目…

【AWS FireLens 徹底解説】カスタムFluent Bitイメージで複数種類のログを扱う

こんにちは、スタメンの松谷です。 最近、Ruby on Railsアプリケーション環境をECSへ移行しましたが、ログ管理には FireLens for Amazon ECS (以下FireLens)という仕組みを利用しました。 この記事ではFireLensについて説明し、実際の要件にどのように対応し…

スタートアップのプロダクト成長の舞台裏とコンテナ化までの道のり

こんにちは。スタメンCTOの松谷です。 最近、弊社が提供している 「エンゲージメント経営プラットフォーム TUNAG」 と 「オンラインサロンプラットフォーム FANTS」 のアプリケーション環境をECS上のDockerコンテナへ移行しました。約5年間、EC2で本番運用し…

Ruby on Rails 5.1から6.1へのバージョンアップをカナリアリリースしました

こんにちは、スタメンのエンジニア、津田です。最近、弊社のサービスで、Ruby on Rails を 5.1 から 6.1 へバージョンアップした際、社内ユーザーからのリクエストのみを6.1環境へ送るカナリアリリースを実施したため、対応をまとめました。 今回は、Railsバ…

2021年上半期 社内勉強会レポート

こんにちは。株式会社スタメンの井本です。Railsによるバックエンド開発、およびSRE業務を担当しています。 弊社では頻繁に社内勉強会が開催されています。書籍をテキストとして使用するものや、ハンズオンがメインのものなど、形式は様々ですが、有志が週に…

スキーマ駆動開発、はじめました

目次 はじめに スキーマ駆動開発とは 導入背景 課題 実現したい状態 スキーマ定義 ドキュメントの閲覧 バックエンド APIのテストに利用 フロントエンド モックサーバとしての利用 導入してどのように変わったか? おわりに はじめに スタメンでエンジニアを…

Reactive variables【Apollo Client】による local state 管理

はじめに はじめまして、株式会社スタメンのミツモトです。 普段は、REST API をベースに React + Redux で開発しています。 最近になり開発者体験の向上、プロジェクトのスピードアップという観点から、社内でスキーマファーストな開発に関心が集まっていま…

Next.js + NextAuth.js + Prismaで認証付きアプリケーションの作成

こんにちは。フロントエンドエンジニアの渡邉です。 普段はReactとTypeScriptを書いています。 今回は自分がNext.js + NextAuth.js + Prismaを使って認証付きアプリケーションを作成する際の土台を紹介をしようと思います。 フロントエンドエンジニアとして…

All set for Jetpack Compose?

モバイルアプリグループでおもにAndroidアプリ開発している@sokumeです。 Android エンジニアの皆さん、Jetpack Composeへの準備はバッチリでしょうか。 2019年にJetpack Composeの発表があり、2021年7月にはJetpack Composeバージョン1.0がリリースされると…

プロダクト部の社内勉強会を刷新しました

TL;DR (概要) スタメン モバイルアプリGでAndroid・iOSアプリを開発してるカーキです! 昨年から、プロダクト部の勉強会の主催を担当させてもらっています。 突然ですが、皆さんの会社ではどのように社内勉強会を実施されているでしょうか? スタメンではこ…

Redux/Storeのデータを正規化しパフォーマンスの向上を狙う

はじめに こんにちは、スタメンでエンジニアをしている手嶋です。普段は、React+TypeScriptでフロントエンドメインで開発をしています。 弊社のプロジェクトではフロントエンドの状態管理ライブラリとしてReduxを使用していますが、直近のプロジェクトにおい…

Storybookについて調べてみました。

目次 はじめに Storybookとは メリット 導入方法 サンプルの解説 アドオンの紹介 おわりに はじめに 初めまして。 株式会社スタメンのフロントエンドグループでエンジニアをしている神尾です。 普段は弊社が運営しているエンゲージメントプラットフォームTUN…

【MySQL】トランザクションの実行時間を調査する

はじめに こんにちは、スタメンの松谷(@uuushiro)です。この記事では、MySQLのパフォーマンススキーマを利用し、トランザクションの実行時間を調査する方法を紹介します。なお、検証に利用した実行環境は Amazon Aurora MySQL5.7互換 です。 なぜトランザク…

CIでのiOSアプリ依存パッケージビルド時間を削減する

iOS

mohamed HassanによるPixabayからの画像 こんにちは、スタメンでモバイルアプリ開発を担当している @temoki です。 2月に Mobile Act ONLINE #3 というオンライン勉強会に参加し、iOSパッケージマネージャー奮闘記 というテーマで発表しました(詳しくは以下…

React Hook Formとは?煩雑なフォームのstate管理を楽に実装する!

目次 はじめに Reactを使用したフォーム設計パターンについて React Hook Formとは ? React Hook Formの基本機能の紹介 React Hook Formのユースケース 最後に はじめに こんにちは、株式会社スタメンでエンジニアをしています、ワカゾノです。 Rails、React…

RailsのActiveRecord::AttributeMethods::Dirtyを使ってみた

ActiveRecordのattributeの変更状況を確認できるRailsのActiveRecord::AttributeMethods::Dirtyモジュールの使い方の検証結果と活用例を紹介します。