inSmartBank

B/43を運営する株式会社スマートバンクのメンバーによるブログです

【書き起こし】トップデベロッパー2人と進める機動力の高いアプリ開発

スマートバンクのアプリ開発チームは、アプリエンジニアの中村さんと岩名さん、業務委託でジョイン頂いているトップデベロッパーのあんざいさんと松館さんの4名体制です。今回は、そんなアプリ開発チームの開発の進め方や面白さ、モダンな技術の取り入れ方などについてPodcastでお話した書き起こし内容をお届けします。

↓Podcastはこちらから

smartbank.co.jp

プロフィール

あんざいゆき(@yanzm )

株式会社ウフィカ代表取締役 & Android Engineer。Google Developer Expert for Android。「B/43」の Android アプリ開発を初期からお手伝いしています。

松館 大輝 (@date)

iOS Developer。Google Developer Expert for Firebase。今年6月からB/43のiOSアプリのお手伝いをしています。

中村 恵太 (@nakamuuu)

2019年6月に株式会社スマートバンクへ入社。 「B/43」のiOSアプリの開発を初期から担当し、現在はiOS / Androidの両OSのアプリ開発に携わっている。

岩名 勇輝 (@rockname)

2022年4月に株式会社スマートバンクへ入社。 B/43のiOS, Androidアプリの開発に携わっている。

はじめに

[岩名さん] こんにちは。SmartBank.fmは、家計簿プリカ「B/43(ビーヨンサン)」を運営するスマートバンクのメンバーにカジュアルに話を聞いていくPodcast番組です。

今回はスマートバンクで「B/43」アプリを開発するアプリエンジニア4名で普段の開発についてわいわいお話していけたらなと思っております。本日はよろしくお願いいたします。

それでは簡単にそれぞれ自己紹介をさせていただけたらなと思っております。まずは自分から自己紹介をさせていただきますが、自分の名前は岩名勇輝と申します。TwitterやGitHubではrocknameというようなハンドルネームで活動をしております。

スマートバンクには今年の4月に入社させていただきまして、iOS / Androidのアプリの開発を担当しております。趣味はスマブラというゲームをもっぱらやっていて、つい先日総プレイ時間が1,600時間を超えたくらい、結構ゲームをがっつりやってます。では、続いて中村さんお願いします。

[中村さん] 中村と申します。スマートバンクは創業から2ヶ月後の2019年の6月にジョインしていて、iOS版の初期のリリースまでアプリエンジニア1人で対応していました。

最近はiOSとAndroidでそれぞれ登録フローの改善などをやってます。あとはそうですね、スマブラは苦手です(笑)。よろしくお願いします。

[岩名さん] ありがとうございます。では続いてあんざいさんお願いします。

[あんざいさん] はい。あんざいゆきといいます。株式会社ウフィカの代表兼Androidアプリエンジニアをしています。ハンドルネームはyanzmです。Google Developer Experts for Androidもしていて、業務委託でいろいろな会社さんのお手伝いをしています。よろしくお願いします。

[岩名さん] はい、お願いします。では最後に松館さんお願いいたします。

[松館さん] はい。iOSエンジニアの松館と申します。私もiOSを10年くらいやっていまして、今年の6月から「B/43」のお手伝いをさせていただいております。他にもデジタル庁をはじめとしたいろいろな国や民間企業の技術顧問をやっています。よろしくお願いします。

[岩名さん] よろしくお願いします。ということでですね、スマートバンクでは自分と中村さんの正社員2名と、あんざいさんと松館さんの業務委託2名というような構成で日々アプリの開発を進めております。

改めてそれぞれの方の自己紹介をお聞きしていると、本当にいい環境でお仕事させてもらってるなと感じますね。Androidではあんざいさん、iOSでは松館さんというそれぞれのプラットフォームにおけるスペシャリストのお2人に業務委託としてついてもらっているという中で、非常に安心してプロダクトの開発に取り組めているかなと日々感じております。

B/43アプリ開発の進め方

[岩名さん] 今日はそんな我々スマートバンクのアプリ開発チームは、普段どのように仕事を進めているかについてお話をしていけたらなと思っております。

早速、まずは中村さんにお聞きしたいんですけれども、例えばスマートバンクでは新しい機能を開発していくぞとなったときに、どのようにプロジェクトを進めていますか?

[中村さん] そうですね、アプリエンジニアでいうと岩名さんも4月に入られてからメンバーも増えていく中で、まだ型を探っていたりと流動的な部分もあるかもしれないですけれども。

基本的に大きな機能を追加するとか、特定のKPIを改善するときは、プロダクトマネージャーからリサーチャー、エンジニアまで職種横断的にチームを組んでコミュニケーションを取りつつ進めることが多いかなと思っています。

その中でアプリエンジニアの関わり方でいうと、それぞれのプロジェクトチームに自分か岩名さんが加わって、仕様設計とiOS側の実装をすることが多いかなと思います。Android側については、あんざいさんからお願いします。

[あんざいさん] そうですね。中村さんがPMやサーバーサイドと仕様をすり合わせて、設計や実装を考えられるくらいまで落としてきてくれているので、そこからAndroidではどういう設計や実装でやっていくと一番良いか?モダンかな?ということを考えて実装していますね。

[岩名さん] なるほど。基本的には、PMやデザイナー側でどういう機能にしようかと仕様は決めていき、それを中村さんや僕がどうアプリで実装するかのたたきを作りつつ、Android側についてはあんざいさんにもう少し詰めてもらって実装を進めてもらう形ですかね。

あんざいさんは業務委託としてどれくらいの日数「B/43」のアプリ開発に携わっていただいていますか?

[あんざいさん] 「B/43」の開発に携わっているのは大体週3くらいですかね。

個人的にはAndroidのキャッチアップの時間も取りたいので、フルフルで入ると厳しいところがあって、週3くらいが個人的にちょうどいいかなという感じですね。

[岩名さん] 週3でもかなり大きなコミットをしていただけてるなと自分目線では思っていまして。先ほど話したように、僕や中村さんがどういう仕様で作っていくかをGitHubのissueにまとめるのですが、issueでまとめきれていないようなものもあんざいさんの方からiOSの実装であったりSlackのやりとりを見て、ご自身でキャッチアップしていただけていたりしていて、非常に助かっています。

iOSの方が先に開発を始めていたのに気付いたらAndroidの方がちょっと追いついて追い越しているみたいな状況があったりして。非常に助かりつつも、驚かされていますっていう感じですね。

[あんざいさん] 最近の機能だと、以前の自分で作っていた機能から大体似たようなのを類推したりとか、昔作ったものを使い回したりとかしているので、割とその時間をかけずに新しいものを作れているのかなと思います。

[岩名さん] なるほど、ありがとうございます。今年の6月あたりに松館さんにもジョインしていただきましたが、松館さん自身は「B/43」アプリの開発にどういった関わり方をされていらっしゃいますか?

[松館さん] 私は、週によって変わりますけど、週2や週3くらいで携わっています。アプリの深いドメインに対してキャッチアップが十分にできている訳ではないのですが、これまで2人で作ってこられたiOSのちょっと古くなってきているところや、もうちょっとモダンにできそうなところを中心に、リファクタして開発しやすい環境を作ることをこの数ヶ月でやってきました。

ある程度その土台が整ってきたので、今度は各機能に対してリファクタしていってさらに開発しやすい環境を作ったり、アプリのサイズを減らしてみたりと、もっとパフォーマンスがいいアプリを作れたらいいなと思って一緒に開発をしております。

[岩名さん] ありがとうございます。直近だと例えばどういった改善をされたかについてお話いただけますか?

[松館さん] もともとこのアプリが作られた頃にはベストプラクティスであったCocoaPodsを使った開発になっていたと思うんですけれども、それをSwift Package Managerを中心としたプロジェクト構成に一気にがっと置き換えました。

今のところ大きな不具合も起きていないので、ひとまず移行には成功してるのかなと思っています。

[岩名さん] つい今月のリリースで無事公開されて、特に大きな不具合もなく進んでいます。お願いしてから大体2ヶ月くらいでしたかね。

[松館さん] そうですね。結構ファイル数やコード量が多いプロジェクトだとは思うんですけども、もとの作りがしっかりしていたので、そこまで手間がかからずに移行できたんじゃないかなと思っています。

[岩名さん] 自分と中村さんのほうで話していたときには、Swift Package Managerによるプロジェクト構成の移行は、結構時間がかかるものだと思っていまして。来年くらいまで差し掛かるのかなと思っていたら、もう今月リリースされて安定的に運用できているのが、感動と驚きが合わさってびっくりしています。

[中村さん] 来年の春あたりかなと思っていました。

[岩名さん] 見事XcodeGenの依存も剥がれて、ファーストパーティ制のSwift Package Managerだけに依存した構成となっております。

ここまでですね、スマートバンクのアプリ開発チームがどういった体制でどういうことをやっているのかについておおよそ伝わったんじゃないかなと思っております。

B/43の開発チームはどんなところが違う?

[岩名さん] 続いては、せっかくあんざいさんや松館さんというトップデベロッパーの2人がいらっしゃるので、この機会にちょっとお聞きしてみたいなと思っています。

お2人はいろいろなプロダクトや開発組織でアプリを作ってきたご経験があるかと思いますが、スマートバンクで「B/43」アプリの開発に携わる上で、他のプロダクトや組織とは違うような気になったポイントはありますでしょうか?

[松館さん] そうですね。関わり始めて最初に感じたのは、先ほどコードがきれいという話もしたんですけれども、作ってるお2人がまず事業ドメインに対する理解がかなり深いということですね。

それに対して技術的な話をしてもすぐに理解を示してくれて、柔軟に動きやすいようにしてくださるので結構動きやすいです。もともとお2人が優秀なので、働く上でいろいろな障壁を感じることないので、かなり働きやすいいい環境だなと思っています。

[岩名さん] すごい、めちゃめちゃ嬉しいですね。ちょっとPodcastなので表情が伝わらないですけど、にやにやしちゃっています(笑)。ありがとうございます。

続いて、あんざいさんは何か気になるポイントなどありますでしょうか?

[あんざいさん] 会社が全体的に仲がいいなという印象がありますね。他のサーバーサイドやPM、デザイナーさんも含めてみんなでプロダクトのことを考えているのを感じるのと、サーバーサイドの方に質問してもすぐ返ってきて待たされるようなことがないので、すごく開発のスピード感もあるなと思いますね。

[岩名さん] 確かに。自分も今年の4月に入社してあんざいさんと同じような感想を抱いたんですけれども、初期の頃から「B/43」の開発携わっていた中村さん的には、どう認識されていますか?

[中村さん] そうですね。もちろん技術力やプロダクトに対する理解も大事だと思うんですけど、チームとしての空気を作るのがうまい人というか、そういう人たちが集まってる組織だなというのは感じていますね。おっしゃっていただいたように、サーバーサイドなど職種関わらず助けられながらやっている感覚があります。

スマートバンク開発チーム

[岩名さん] なるほど。自分も同じような感想を抱いていて、普段のSlackやミーティングを通じて、エンジニアやデザイナーなど職種に閉ざされた責務しか行わないような人はいなくて、みんながみんな事業に対してこういう機能がほしいとか、こういう数字になっているからこう改善した方がいいとか、色々なところから提案があがってきているかなと思いますね。

B/43のアプリ開発で気を付けてきたこと

[岩名さん] ありがとうございます。そのまま中村さんにお聞きします。創業初期からアプリに関わらず開発組織全体の文化の醸成にも関わってこられたと思うんですけども、実際そのアプリに絞っていうと、ゼロベースからアプリを作って大きくしていく中で気をつけてきた部分はありますか?

[中村さん] そうですね。「無理はしない」というとちょっとネガティブっぽく聞こえてしまうかもしれないですけど。プロダクトの全体像を探りながらアグレッシブに仕様もどんどん変えて作ってきた中で、過度に構造化してしまったりとか、浅い理解で技術スタックを利用してしまったりとかは避けてきましたね。

それと、ドキュメントやプルリクエストにできる限り変更内容や経緯を残して、どこかしらから辿れるようには意識してましたね。後から入ってくるメンバーが改善しようっていうモチベーションを持ってくださるときに、そのモチベーションが削がれないように気にしていたので、それが達成できていたら嬉しいなと思いながら最近も過ごしています。

[岩名さん] 自分が今年4月から入ったところで、実際に中村さんがそういう工夫をしてアプリ開発してこられたという話を聞いて感じたのは、もうまさに助けられているなと思っていまして。

僕が入る前は正社員のアプリエンジニア中村さんお一人でAndroidとiOSの開発を進めていくというレビューしてもらう相手がいない中で、プルリクエストを作ってどういう経緯でその差分を作ったのかを記す作業を自制心を持って続けていくことは難しいと思うんですよ。

でも、自分が開発を進めていく上でいろいろな過去のプルリクエストを探す機会に直面したときに、どれも細かく背景が記されていていろいろな資料へのリンクもありまして。こういう経緯があったからこう変更したんだと理解した上で、じゃあ自分は今の実装をこうしていかないとなと気を付けることができるので、すごい助かっているなと感じていますね。

[中村さん] ちょっと怠けてしまうような場面もあったかもしれないですけど、見ていただけているならよかったです。

B/43アプリ開発のやりがい

[岩名さん] 続いて、「B/43」のアプリ開発に携わる上でのモチベーションや、どういったところにやりがいや楽しさを感じているかについて皆さんにお話を聞きたいなと思っております。

[あんざいさん] 「B/43」では結構自由にやらせてもらってるので、できる限りモダンな感じにしようと思っています。ただ、デファクトじゃないものはなるべく使わないようにはしています。

モダンでありつつ、でも変更しやすくて安全なアプリで、後から見ても構成がわかりやすい設計はどういうものなんだろうというのを考えたり探っていく。個人的には一つの題材としてもいいなと思っているので、そういう設計を突き詰めていくモチベーションが「B/43」では大きいですね。

[岩名さん] 「B/43」のAndroidアプリだと、例えばFull Jetpack Composeで実装されていたりとか、そういった部分がモダンなところにあたりますかね。

blog.smartbank.co.jp

[あんざいさん] そうですね。あとはプラットフォームの新しい機能や、Google Playの新しい機能もちゃんと入っている方なんじゃないかなと思っています。

[岩名さん] 気が付いたら新しい機能やライブラリをアップデートしてくださっていて、直近だとMaterial 3対応を進めることも検討していただけてますよね。非常に難易度が高い開発を間近で見られるのは楽しいなと思っております。

続いて、松館さんにモチベーションやりがいについてお聞きしたいと思うのですが、いかがでしょうか?

[松館さん] そうですね。あんざいさんと似たようなところで、技術的にいろいろ自由にやらせていただいてるところが今モチベーションとしては大きいです。新しいものはどんどん取り入れていきたいと思っています。

せっかくかなりクオリティの高いアプリを作られているので、そのクオリティを損なわないようにするのはもちろん当然なんですけど、できるだけそのアプリをより快適に使っていただけるように技術面でいろいろとサポートできるというところが面白いなと思ってるところですかね。

[岩名さん] そうですね。直近だとSwift Package Managerによるプロジェクトの管理構成に移行したりとか、あと近い将来的な話だとXcode Cloudの導入も少し話にあがっていましたかね。

[松館さん] そうですね。ユーザーインパクトが直接あるものではないですが、皆さんがiOSとAndroidを行ったり来たりして開発しているのが見ていて結構大変そうではあるので、できるだけiOS周りはそこの負担が軽くなるようにセットアップできるようになるといいかなと思っています。

[岩名さん] iOSのアプリを開発する上でファーストパーティ製のツール以外への依存がどうしても必要になってくると思うのですが、CocoaPods、fastlane、Rubyへの依存など日々メンテナンスしなくてはいけない本質的なところの負担を小さくしてもらうようなことを中心的に行っていただいていて、非常に助かっております。

続いて、中村さんにもお聞きしたいのですが、iOSとAndroidどちらも触っていく中でどういうところにモチベーションを感じていらっしゃいますか?

[中村さん] そうですね。「B/43」は結構多くの新機能を提供しているプロダクトだと思うので、自分と岩名さんは新機能の追加にかなり時間をかけています。

一方で、あんざいさんや松館さんが技術的な基盤整備をしてモダンな環境に寄せていただいてるので、そういったものに触れながらもプロダクトの開発を速い速度で進めていける。そういった体制で進められることにすごいモチベーションが高まってる部分があるかなと思います。

[岩名さん] 確かに、各プラットフォームの技術的な負債を気にかけながらプロダクト自体の開発を進めていくところは、各社抱える問題かなと思います。そういう技術負債を松館さんとあんざいさんに見ていただけて安心できている環境だからこそ、モチベーション高くプロダクト開発に向き合えてるところですかね。

[中村さん] そうですね。なかなかこういった体制で進めているチームも少ないのかなと思っていて。かなり特殊な環境で楽しみながら開発できている感覚があります。

[岩名さん] ですね。自分と中村さんはどちらのOSも見つつ、正社員2人×トップデベロッパーのお2人という構成は、他でもあんまり見ないかもしれないなと思いますね。

アプリエンジニアの中村さんと岩名さん

iOSやAndroidの最新技術をどうキャッチアップしている?

[岩名さん] 技術のキャッチアップ方法について、トップデベロッパーのお2人にお聞きしてみたいなと思うんですけれども、普段どうやってiOSやAndroidの情報をキャッチアップして習得されているのかをお聞きしてもいいですか?

[あんざいさん] 私は基本的にはAndroidの公式サイトのブログを読んだりとか、YouTubeで最近あったAndroid Dev Summitのセッション動画を見たりとかしています。気になったところは実際に自分でちょっと書いてみるのが一番身になるかなと思っていて、「B/43」には入らないような機能でも個人アプリやリポジトリで試してみてキャッチアップしています。

[岩名さん] 基本的に情報を読むだけじゃなくて、読んで得たものを書いて動かしてみるところまでやることで習熟度を上げていくみたいなところですかね。

[あんざいさん] そうですね。あと勉強会でも勉強しています。

[岩名さん] 確かにあんざいさんは今年も「DroidKaigi」でMaterial 3をテーマにお話されていましたね。

Googleの公式ドキュメントやDroidKaigiという日本の大きなカンファレンス、Android Dev SummitやGoogle I/Oなど逆にかなりキャッチアップしなければならないものが多い中で大変な部分もありそうだと思いますね。

iOSの方のキャッチアップについても聞きたいなと思っていまして、松館さんどのように進められていらっしゃいますか?

[松館さん] 私もスタンスとしてはできるだけ公式なものにあたることは徹底しています。WWDCの時期になるとセッションがたくさん出てくるので、今年も現地で見ていましたけど、できるだけリアルタイムに見ています。

最近Appleでは、Ask Appleというイベントで、特定の期間質問できるSlackが立っていまして。現地時間にはなるんですけど、いろいろなデベロッパーがドキュメントに書いていないようなことをいっぱい質問しているので、それを追いながら最新の情報を見ています。割と評判がよくて定期的に開催されるようになっているので、暇な時間を見つけてはSlackを見ていますね。

もちろん手を動かすこともやっていて、Appleのフレームワークも触っています。Point-Freeという海外のデベロッパーがやっている動画のニュースサイトがあるんですけど、そこで上がってくる動画を眺めて気になるところはちょっと手を動かして書いてみることをやっています。

[岩名さん] ありがとうございます。Ask Appleは最近また開催されているので、Slackだけでも入って情報をみないとと思いました。

Googleの情報提供と比べてAppleはあまり情報をまとめてドキュメント化してくれない部分もあって、自分の中で公式の意図を汲み取って落とし込んでいく必要もあるかなと思うんですけれども、そういうところについて工夫されていることはありますか?

[松館さん] 正確なことは言えないのですが、おそらく最近内部でも方針が変わっていて、デベロッパーリレーションズの方でデベロッパーに寄り添っていく姿勢が結構見られていて。それに伴ってドキュメントが結構充実し始めているので、最近出てくるようなものについては、例えばサンプルコードもGitHubにホスティングされるようになっています。

昔から携わっている方々は結構Appleに対してそういったところの印象は良くないかもしれないんですけど、最近に関しては結構良くなっていますね。ただ昔からあるものに関してはやっぱりドキュメントが不十分なところもあるので、そこは先人たちの知恵がいろいろインターネットに転がってるので、それを探し出してみたりとか実際の挙動を信じるというところですかね。

[岩名さん] なるほど。確かに自分の中でAppleさんにそういうイメージは持ってしまっていたかもしれないですね。最近かなりDevRel的な方面で協力的になっているというところで、そういう部分のキャッチアップをしていかなければなと思います。

続いて、中村さんはiOSとAndroid両方開発していく中で、どちらもかなりキャッチアップしなければいけないものが増大だと思いますが、どういうふうにその情報をインプットしていっているのかをお聞きしたいです。

[中村さん] そうですね。一次ソースは公式なものをあたるところは変わらないのかなと思うんですけど、気が付いたらB/43に実装されていることが多々あるんですよね。なのですでに最新技術が入っているリポジトリを眺めて学びを得ることも多いです。

[岩名さん] それは、アプリ開発エンジニアにとってかなりの福利厚生ですね。

[中村さん] なかなかできない体験ですよね。

[岩名さん] 基本的には公開された情報全てを片っ端から見ていくというより、何らか気になったところをキャッチアップしつつ、実際に手を動かして生成されたコードをB/43のリポジトリで拝見する中でカバーしているのですね。

自分も同じような体験は何度かあったので、確かにと思いながら聞いていました。ありがとうございます。

というところで、ここまで非常に有意義なお話をお聞かせいただいたんですけれども、お時間もそろそろ近づいてきましたので、今回はこの辺りでポッドキャストの方終わりにできたらなと思っております。

スマートバンクのアプリ開発チームは、こういう体制で行っております。少しでも興味を持っていただけましたら幸いです。最後にここまでご視聴いただきまして誠にありがとうございました。

あとがき

今回は、B/43のアプリ開発チームの開発の進め方や面白さ、モダンな技術の取り入れ方などについてお話しました。

トップデベロッパー2人と正社員2人と進める機動力の高いアプリ開発に興味を持ってくださった方、スマートバンクではアプリエンジニアを募集しているので、ぜひお気軽にご連絡をお待ちしています。

▼Androidエンジニア

smartbank.co.jp

▼iOSエンジニア

smartbank.co.jp

▼カジュアル面談

smartbank.co.jp

↓Podcastはこちらから

smartbank.co.jp

We create the new normal of easy budgeting, easy banking, and easy living.
In this blog, engineers, product managers, designers, business development, legal, CS, and other members will share their insights.