2023年Kyashにおけるリッチなウィジェットの開発記録

はじめに

この記事は Kyash Advent Calendar 2023 の15日目の記事です。 昨日は @tamadonカードゲームは良いぞ です。

こんにちは!KyashでAndroidを開発している @nitakan です。

皆さんはウィジェットを活用されていますでしょうか? アプリを開かなくてもサッと情報を確認できる便利な機能ですね。

少し前のことですが、Jetpack Composeを利用してウィジェットが記述できるJetpack GlanceがStableになりました 🎉

開発体験が大幅に改善されているので、この機会にぜひウィジェット作成を試してみてください!

さて、Kyashでは気軽に残高や利用履歴を確認することができるように、ウィジェット機能をリリースしています。 より便利なウィジェットを作りたいと思い、社内で上がっていた「利用額ウィジェット」を開発し、7月にリリースしました。

Kyashアプリのウィジェット機能が月間の利用額の表示に対応しました

この記事では、Kyashのウィジェットの歴史と2022に公開されたJetpack Glanceを使ってグラフを含むリッチなウィジェットをどのように実現したのかを紹介していこうと思います。

続きを読む

Kyashモバイルチームのトランクベース開発への歩み

これは Kyash Advent Calendar 2023 の12日目の記事です、こんにちは あるいは こんばんは。KyashでAndroidエンジニアをしている 牧山(@_rmakiyama)です。

さて、突然ですが、私は3つあるKyashのValue(行動指針)の中でも『動いて風を知る』がとても好きです。社内でもよく会話やSlackのemojiで飛び交うValueでもあり、自然とみんなの行動や意思決定に表れているなと感じています。

Kyashのモバイルチームでも、このValueを体現するように、ここ1年ほどかけてトランクベース開発の導入を進めており、最近ではだいぶ板についてきました。 今回は、トランクベース開発を導入するに至った背景と、どのように導入していったかについてフォーカスして紹介します。

なぜトランクベース開発なのか

これまでモバイルチームではフィーチャーブランチ開発をベースにしていました。
チームの人数が増えるに従い、改善を含め複数のプロジェクトが動き、複数のフィーチャーブランチを伴った開発となりました。
これにより下記のような問題が起こりました。

  • 開発後半でコンフリクトの解消に工数が割かれる
  • プロジェクト間の変更の影響を把握しにくい
  • 巨大なフィーチャーブランチは精神衛生上よろしくない

また、Kyashのモバイルアプリは、昨年からKotlin Multiplatform(以下KMP)を導入しています。途中から導入したこともあり、現在はiOS / Android / KMPとそれぞれGitHubリポジトリがわかれています。
そのため、KMPリポジトリのリリース管理やバージョニングについても煩雑さが増していました。

このような課題もあり、モバイルチームでは、Four Keysで有名なソフトウェア開発チームのパフォーマンスを示す指標を参考に、『mainブランチ/フィーチャーブランチへのmergeを日平均1回以上/1人』という目標を年始に立てていました。(このときはまだフィーチャーブランチ運用だった。)これはFour KeysにおけるEliteの基準です。

課題感とモバイルチームが目指す先に合致したのが、トランクベース開発だったわけです。

どのように進めたのか

いきなり「トランクベース開発をしましょう!」と言っても認識が合うわけではなく混乱を生むだけです。そこで、下記のステップを踏んで導入を進めました。

  • 課題の認識を合わせる
  • トランクベース開発についての認識を合わせる
  • フィーチャーフラグの認識を合わせ導入をする

それぞれのステップでやったことを詳しく紹介していきます。

続きを読む

Kyashの英語表示対応の意思決定ログ

この記事は Kyash Advent Calendar 2023 11日目の記事です。

Kyashの @konifar です。

2023年8月に、Kyashアプリを英語で利用できるようにしました。

www.kyash.co

もともと日本語のみだったサービスをリリース後しばらく経ってから英語でも利用できるようにしたということでして、リリースまでにはいくつかの意思決定が必要でした。

もしかしたら将来の自分を含めどこかの誰かのためになるかもしれないので備忘として残しておきます。

続きを読む

Kyash の課外活動事情 2023 🎆🍻🦑

この記事は Kyash Advent Calendar 2023 10日目の記事です。 今年4月に Android エンジニアとして入社した高田です。 今回は有志による課外活動の紹介をします。(もちろん参加は任意です)

神宮外苑花火大会でのオフィス開放

弊社オフィスは青山一丁目駅直結の青山ビルの12階にあります。窓は北西にあり、その先には明治神宮外苑があります。そのロケーションを活かした社内企画として「神宮外苑花火大会でのオフィス開放」が行われました。Kyash メンバーだけでなくその家族も参加できます。軽食・ドリンクも用意されました。

花火を良いロケーションで見れるだけでなく、Kyash メンバーの家族同士の交流もあり、楽しい時間を過ごしました。

CEO 鷹取の挨拶

メンバーの家族を含めて40名ほどが参加しました。

続きを読む

ロードマップは不確実なもの。サービスはリリースがスタート

こんにちは。Kyashでプロダクトマネージャーをやっているyamadaです。

2023年も終わりなので、1年を振り返って見て

  • ロードマップは不確実なもの
  • サービスはリリースがスタート

の2つを話そうと思います。

ロードマップは不確実な話

私がKyashに入社したのは、2021年の10月で2年ほど在籍しております。 プロダクトマネージャーとしては、ゲーム、教育、家族向け、料理とFinTech業界はKyashが初めてです。

2022年は、グロース/マーケー/分析領域を担当 その後、2022年の終わり頃から新規事業の開発に動き出しました。

今まで新規事業で0−1での立ち上げは何度か経験もありますし、業界が異なるだけで何とかなるだろうと思ってました。

しかし、金融系の場合、法的な確認が大変で、社内のLegalチームに加え、外部の法律専門家や金融庁への確認など多岐にわたります。 特に、今までに誰も行ったことがないサービスに関しては、法的にはOKでもできないこともあります。

結果的に、6ヶ月ほど進めてきた新規事業は、現時点でリリースできないことがわかり、FinTechでの新規事業の難しさを知りました。

他にも、もう一つ同様に動いていた新規事業に関しても、外的要因が理由で実行できず。 2023年の上半期のロードマップは白紙になりました。

サービスはリリースがスタート

そこから、何か新しい価値を作ることができないかと考え 企画構想から3ヶ月でKyashリワードをリニューアルしました。

続きを読む

AndroidとiOSのエンジニアでKMPの実装をペアプロしている話

これは Kyash Advent Calendar 2023 の5日目の記事です、こんにちは あるいは こんばんは。KyashでAndroidエンジニアをしている 牧山(@_rmakiyama)です。

自分の所属するチームがAndroid / iOS 2名ずつから、Android / iOS 1名ずつのチーム体制になったことを機に、チームのiOSエンジニアと相談してペアプロにトライしてみたところ、とても開発体験が良かったので紹介します。

ペアプロをはじめた背景

Kyashは去年からKMP(Kotlin Multiplatform)を採用しています。KMPは任意のスコープを共通のコードとして開発することができます。 KyashではUIをネイティブによる実装(Jetpack Compose / SwiftUI)をする選択を取り、UIレイヤーの中でもView以外の実装をKMPで共通化するようにしています。これは、UIの状態を持つStateHolderにあたる部分からはKMPの実装となっていることを指していて、大部分でコードの共有がされています。
各OSとKMPの関係は下図のようになっています。後述しますが、StateHolderにあたる部分がReactorです。

KMP導入時の課題であった「両OSで同じロジックを2度実装することによる問題」と「OSでロジックが異なったことによるインシデント」についてはKMP採用によりかなり解消されています。
そんななか、まだ大きく顕在化していないものの、下記のような課題がモバイルチームであがるようになってきました。KyashのValueのひとつは頂点志向なのです。

  • KMPの実装を担当するエンジニアの偏り
  • OS間差異を含めた認識の齟齬による手戻り

KMPの実装を担当するエンジニアの偏り

KMPはKotlinの実装になります。Kyashでは、導入当初からiOSエンジニアも積極的にKMPの実装タスクを拾ってくれています。とはいえ、プロジェクトが忙しくなったりスケジュールがタイトだったりした場合は、Kotlinの経験値という意味ではAndroidエンジニアのほうが短期的な実装スピードが上がるため、Androidエンジニアが実装することが多くなってきています。

短期的な方針としてAndroidエンジニアが実装する判断自体は良いと思っています。しかし、iOSエンジニアは普段からKotlinを書いているわけではないので、どうしてもKMPを久しぶりに書くときのコストが大きくなってしまいます。

続きを読む

そこそこ最新の決済の世界へようこそ2023!

決済といえば、NFC決済ですよね!そうですよね!?

これは Kyash Advent Calendar 2023 の2日目の記事です。

こんにちは。Kyashでプロダクトマネージャーをやってます、箭内と言います。

2023年も年末ですね。みなさまこの激動の年をどうお過ごしでしたでしょうか?

1年の中でも、11月と12月は日本においては最も決済される時期になっていて、各カード会社の取引金額と取引件数は、毎年この2ヶ月間がピークになります(下図参照)。特に11月の最終週の土日は、「1年のうちで最も決済される日」になることが多いです。ブラックフライデーなんていうイベントが最近は賑わっていましたし、クリスマスプレゼントの購入、大晦日や正月の買い出し、年末年始の旅行、帰省など、イベント目白押しです。個人的にも世の中がワイワイしている感じで好きなんですよね〜。寒いんですけど。

日本クレジットカード協会「クレジットカード動態調査結果一覧(信用供与額・契約件数)

世の中的にも何かと買い物が多い時期ですが、みなさん買い物の時にどういう決済手段を使ってますか?これを読んでいる方は当然Kyashで決済してますよね?え、違うって?良いです、そんな方でも全然welcomeです。

この記事では、日本の決済において、割と主導権を握っているんじゃないかと思っている「スマホ決済」、とりわけタッチ決済と言われているような、NFCを使った決済についてアレコレ書いてみようかなと思います。

実は今年社内で決済の仕組みについて説明会をしたのですが、参加メンバーからは概ね好評いただきまして、それを今回文章にしてみようと思った次第です。実際の説明会では参加者にはオフィスに集まってもらって、「カードはどうなってるのかな?」なんて言いながらハサミでジャキジャキに切り刻み、圧着されている回路やNFCチップを取り出したりなんてしてカードの構造からみんなで学べるような会にしたのですが、今回はそんなハードコアなことはできませんので、文章だけでNFC決済について学びましょうということになってます。

最初に言っておきますが、この記事では、

  • NFC決済について記載をします。Apple PayやGoogle Pay、あるいはGarmin PayEveringのように、スマホや、様々なデバイス上でクレジットカードをエミュレートしている決済手段について、その仕組み、面白さ、将来性について書こうと思います。

  • EMVcoのトークナイゼーションのフレームワークについても少しだけ触れますが、深入りしすぎると小難しくなってしまうので、そこまで話しません。

  • 銀行振込のような、銀行業における「決済」については全く出てきません。また、いわゆるQR決済についてもほとんど触れません。Felica決済についてもそこまで触れません。

  • 「決済における認証方法」については触れないことにしました。カードで決済するときに、どんな方法で不正利用を防いでいるのかって、結構面白いんですよね。いわゆる暗証番号入力だったり、3Dセキュアだったりと、様々な認証方法が存在していて、これは知れば知るほどナルホド!と連発したくなりますし、手元のカードに足を向けて寝られなくなると思います。ただ、その正しさがどう担保されているのかに触れざるを得ず、そこがとにかく難解なんですよ。年末なんでね、楽しく書かせてください。

結果ですね、この文章を勢いでワッと書いてみたのですが、なんだか分かったような分かんないような不思議な文章に仕上がってしまいました。嘘を書かないように意識はしましたし、だからと言ってあまり難解なパートに触れない程度の絶妙なラインを目指した結果なのですが、もうこれ以上は書きようが無いので、さらに詳しく聞きたい方はぜひ弊社に入ってくれよな!カジュアル面談で、僕と握手!

では拙い文章ですが、はじまりはじまり〜。

続きを読む