dely Tech Blog

クラシル・TRILLを運営するdely株式会社の開発ブログです

dely Androidアプリエンジニアインタビュー 第4弾 umemoriさん

こんにちは、delyのリテールカンパニーで新規サービスのAndroidアプリ開発を担当しているnozakingです。 今回もdelyのAndroidアプリエンジニアにインタビューした内容をお届けしたいと思います。

今回は第4弾として、クラシルカンパニーのumemoriさんにインタビューしました!

第1弾のインタビュー(parayaさん)はこちら↗︎
第2弾のインタビュー(Jさん)はこちら↗︎
第3弾のインタビュー(kenzoさん)はこちら↗︎

インタビュー経緯

第4弾の内容の前に、インタビューに至った経緯を説明させてください。

私はAndroidアプリエンジニアの採用活動に携わらせていただいているのですが、面談や面接をしていくなかで、エンジニアとしてこの先どう歩んでいくかを決めかねている方の声を聞くことがよくありました。 そんなモヤモヤを晴らすような、いい話ができたらいいなと私は思いました。

そこで、せっかくdelyには複数のAndroidアプリエンジニアがいるので、インタビュー企画を始動しました🦸‍♂️!! 世の中のエンジニアの皆さんに、少しでもAndroidアプリ開発の魅力(と、ついでにdelyで働くことの魅力)をお伝えできれば幸いです。

delyに在籍するAndroidアプリエンジニア全員にインタビューしていくつもりで、月一を目標に発信していきます🚀

いざ、インタビュー

冒頭でもお伝えしましたが、第4弾は、クラシルカンパニーでクラシルのAndroidアプリ開発を担当する、umemoriさんにインタビューしました!

第4弾:umemoriさん

u:インタビュイーのumemoriさんの発言
n:インタビュワーのnozakingの発言

delyに入社したのはいつですか?

u2017年5月です。

いまはどんなお仕事をしていますか?

uいろんなことやってきたんですが、いまはAndroidチームのテックリード的なことをやっています。

どうしてAndroidアプリエンジニアになったのですか?

u10年くらい前(Androidの4系のOSが出た頃だったと思います)、フリーランスとしてある会社に出向していました。
ある時、その会社に1人しかいないAndroidアプリエンジニアが退職してしまい、Androidアプリを開発する人がいなくなってしまったんですよね。 当時僕はPHPを書いていたんですが、昔Javaをやっていた経験から「Androidアプリ開発をやりませんか?」と話が来て、引き受けたのが始まりでした。
Javaの経験があったとはいえ、Androidアプリ開発に関しては何も知らないところから参加しました。

nその時は、どうやってAndroidアプリ開発のことを勉強したりスキルを高めていったのですか?

u当時、Androidアプリ開発の情報はあまりなかった気がするんですよね。
そんな中、yanzmさん(Y.A.M の 雑記帳)とか、Tech Boosterさんの記事がすごく参考になった記憶があります。

y-anz-m.blogspot.com

techbooster.org

uあとは体当たりで覚えていきましたね。改修の案件が多かったことから、ソースコードを読む機会が多く、良いコードも悪いコードも読みつつ、動かしつつ、学んでいった感じです。
公式リファレンスは(今ほど親切ではなかったのですが)割と参考にしていましたね。

n昔って結構英語しかない感じでしたよね。

u大抵そうでしたよね。
なのでyanzmさんをはじめとして、解説してくれているブログはとても参考になったし助かりましたね。

どうしてdelyでAndroidアプリを開発することにしたのですか?

u前回のkenzoさんの記事を見たんですが、僕の回答もそのまんまですね。

u僕もエージェントきっかけでdelyを知ったんですけど、大竹さんと堀江さんと話して「若いし伸びていきそうだな」と思いました。 あと大竹さんが熱心に喋っていたのが印象的で、面白い会社だなーと感じて入社を決めました。

※大竹さんについては是非下記をチェックしてみてください👀

mobile.twitter.com

note.com

numemoriさんも大竹さんと一緒に仕事がしたいと思って入ったんですか?

uそりゃそうですね!

nそのころってAndroidアプリエンジニアは他にいたんですか?

u1人いましたよ。僕が入ってすぐ辞めちゃいましたけど(´·ω·`)

nなるほど。当時の大変さがうかがえますね。

Androidアプリ開発の魅力はどんなところだと思いますか?

uいろいろあると思うんですけど、モバイルアプリ開発の楽しさでいうと手元で動くアプリが作れるところですね。これはモバイルアプリを開発している人は割と思っていることなんじゃないかなと思います。僕もそれが楽しくてAndroidアプリ開発に結構のめり込んでいきました。

uあと、モバイルアプリ特有の難しさっていうのがありますよね。
例えばスマートフォンってスリープしたりするし、ユーザーの使い方に沿った形で状態がどんどん変わっていきますが、それに合わせてちゃんとアプリを作ってあげないといけなかったり・・・。
それってサーバーサイド(僕はそれまでPHPをやっていました)とは全然違う世界だなと感じていて、そこが難しいところでもあり面白いところでもあると思います。

u魅力って、デメリットというか、人によっては面白くないところの裏表だと思っています。
モバイルアプリではプラットフォーム自体がアップデートされていくから、何もしないとどんどんアプリが古くなってしまうというのがありますが、それを「作ったものがどんどん陳腐化していっちゃうから嫌だ!」っていう人もいると思います。ですが、ちゃんと勉強してキャッチアップして合わせていく楽しさがAndroidアプリ開発の魅力のひとつなんじゃないかなと思います。これはiOSも同様だと思います。

uAndroidならではの魅力でいうと、ガラッと変わってきた面白さもありますよね。プラットフォーム自体もそうですけど、言語も大きく変わったじゃないですか。例えば 2017年にAndroid公式開発言語としてKotlinが追加されたり、ここ最近だとJetpackComposeが新しいUIツールキットとして発表されたりとか。
そういうパラダイム自体がどんどん変わっていく開発っていうのは、必要性がないとなかなか経験しにくいと思うんですよね。そういう場面がないと技術力って活かせないので、自分の力の奮いどころとしては非常に楽しい世界なんじゃないかなと思います。
なので、そういうエキサイティングな仕事をしたい人はぜひAndroidアプリ開発をしましょうと言いたいですね。

nJさんも同様に、RxがCoroutineに変わったり、JetpackComposeが出てきたりとか、そういうのが楽しいと言っていましたね。(第2弾インタビューの"Androidアプリ開発の魅力はどんなところだと思いますか?"にて)

uその中でもう少し付け加えるとしたら、その中で変わらないものを考えながら技術的な意思決定をしていけるのが楽しいと思います。
変化したものを表面だけ追いかけていてもしょうがないんですよね。RxがCoroutineになったときになんで変わったのか(変わったというより共存したというイメージなんですけど)、Rxってなんだったのかをちゃんと理解していないと、表面を追いかけるだけになっちゃうと思うんですよね。
「Rxを使っていたらCoroutineが出てきた。」「なんか新しいのがでてきたからやってみよう。」だけじゃなくて、ちゃんとRxってどういうものだったのか、何を提供していたのか、じゃあCoroutineはそことどう違うのかというところをちゃんと理解しながら移行する、しないならしない、という意思決定をやっていけるのは楽しいところだなと思いますね。

numemoriさんならではの視点ですね。他にもつついたらいっぱいでてきそうですw

uあとは、サーバーサイドとの比較になるのですが、リリースしたものがユーザーの端末に届いてインストールされる楽しさもありますね。だからこそ気をつけなきゃいけないことが結構あります。例えばアプリが大きすぎちゃいけないなど、そのためにいろんなことを工夫するんですよね。
Androidアプリエンジニアの頭痛の種でもあるんですけど、いろんな端末に対して工夫して対応してどこでも動くようにできた、みたいな楽しさは魅力なんじゃないかなと思います。

nそこはiOSと比べてもAndrodの方がいろいろあるってのもありますしね

uそうなんですよね。結局、困難じゃないですか。困難こそが工夫の種だと思っていて、そこに対して頭を使うのが僕は結構好きなんです。
そういうのが好きな人にはAndroidアプリ開発は結構おすすめです。

特にdelyでのAndroidアプリ開発にはどんな魅力があると思いますか?

uどういう人にこの言葉を向けるかによって変わってきますね。

u例えば受託でアプリを作ってきた方向けには、dely(クラシル)のようにずっと同じプロダクトに向き合ってアプリを作っていくということの魅力がお伝えできると思います。
受託でアプリを作る場合、創意工夫の余地はあるんですが、アプリをリリースするまでだったりするんですよね。だからいろんな制約によって技術トレンドを追えないことが多いと思うんです。とりあえず動くものを作れて、それで楽しいっていう欲求は満たせると思いますが。
dely(クラシル)では同じアプリが5年も存在し続けているのですが、その中でトレンドが変わっていきます。そのトレンドが変わっていくのを指をくわえて見ているだけかというとそうじゃなくて、キャッチアップしていかなきゃいけないし、なんでキャッチアップしていくのかも考えながら実際の機能開発と一緒に進めていく必要がありますよね。
これは先ほども言ったように1つの困難だと思うんです。そこをどうするのか頭を使っていくのは、ずっとひとつのプロダクトに向き合うってことでしか得られないことなのかなと思っています。

u例えば今JetpackComposeが出てきていずれは移行しなきゃいけないけど、今あるソースコードを考慮してどうやるのかっていろいろ工夫する必要があると思うんですよね。全部書き変えちゃうのか、ちょっとずつ移行するのかとか。ちょっとずつ移行するっていうのはものすごく難易度が高くて・・・でも設計によるかな・・・。うちはちょっと特有の事情で難しいところはあるんですけど。😢

nうーむ、全部まるっと変えちゃう方が楽なのはたしかですよね。

u考えなくていいからね。共存するんだったら、共存するなりの橋渡しのコードを書いてから移行していかなきゃいけないので、難しいです。JetpackCompose書きたいなっていう気持ちもあるけど、そこをちゃんと考えてから移行するっていうのをやれる、やらなきゃいけないって言うのが面白いところなんじゃないかな。

uあと自社サービスを開発している上では、ユーザーの声に向き合いやすい環境ではあると思います。ユーザーの声って直接聞けるわけじゃないですけど、例えばユーザーの行動ログとかレビューなどを大切にする文化があります。だからその中でAndroidアプリを作っていくっていうのは、「リリースして終わり」みたいな仕事と比べると、フィードバックを受けてじゃあどう改善するのか、しないのか、どう取り組んでいこう、っていうのを考えられる場に身を置けるっていう楽しさはありますよね。

nSlackにもTwitterの感想つぶやきや、ストアのレビューの内容が流れてきたり、割と見えやすいですよね。

uそうですね。思わぬことが起きますからね。お問合せでも、なんでそんなことが起きるんだって思って調べると、「ああ、こういう事か!」っていう発見につながったりしますね。

delyのAndroidアプリ開発をする中で、やりがいや達成感を感じたエピソードを教えてください。

uだいたい今までの話で網羅されてる気がしないこともないですけどw

nより具体的なエピソードがあれば、お願いします!

uひとつあげるとしたらAndroidアプリのリアーキテクチャですね。

uリアーキテクチャを決意した当時(約2年前)はだいぶ古い作りを引きずって開発してしまっていたのもあって、いろいろ作りにくい部分がありました。そこを綺麗にして後の開発効率を上げていきましょうよって言ってリアーキテクチャしたんですよね。

uその時に、最初は1人でプロトタイプを作って、みんなにこんな感じですって説明して、何回か議論もしたかな・・・。最終的にはみんなを巻き込んでいって全員野球みたいな感じでやり遂げました。あと、全部QA回してしっかりやったというところにも達成感がありましたね。
必要性があればそういうことができる組織にいて、実際にそういう仕事ができるのはやりがいと言えるんじゃないかなと思いますね。

nリアーキテクチャやりたいですって言っても、難しい顔をされるイメージしかないですよね。この規模でできるってのはすごいなって思いますね。ユーザー数もかなり多いですし。

nあと、リアーキテクチャの対応時期はちょうど私がクラシルのAndroidアプリ開発チームに参加したタイミングだったんですけど、すごい勉強になるなって思ってました。クラシルを開発する上で理解を深めるってのもあったんですけど、「あ、そういう書き方もあるんだな〜」とかも知れたりして。

uリアーキテクチャをやった時は、深いところまでアーキテクチャを分解して説明してってのを結構丁寧にしたので、みんなの勉強にもなったのかなと思いましたね。

nなりましたなりました。

uリアーキテクチャには、JetpackComposeに移行しやすくするという目的も実はあったので、そっちもいずれちゃんとやりたいなと思っていますね。

n楽しみにしております😁

その他、世の中に発信したい思いがあればお願いします。

u改めて言いますが、モバイルアプリ開発はおもしろいですよ。やっていて思います。
もう10年くらいやってることになるんですが、たまには違うこともやってみないなっていう気持ちも湧くけど、それだけやってても楽しいですし、まだ掘れますね。モバイルアプリ開発の世界は。

u最近、AndroidアプリはJetpackComposeも出てきたしAndroidの公式ドキュメントもすごい整ってきて、作り方が固まって、それを踏襲していけばいいみたいな雰囲気があるようなないような感がありますが・・・(世間の声はわからないですけど)、全然そんなことはないぞと思います。
本当のベストプラクティスってちゃんと見つけられていないんですよね。モバイルアプリ特有の事情も多いですし。例えば、スリープってのは結構難しい気がしています。いつでも中断されうるし、いつでもメモリがどっかいっちゃって、そのあと帰ってこなきゃいけないっていうモバイルアプリ特有の事情な気がするんですよね。他にもセンサーとかカメラとかが色々ついてたり・・・(活用しないアプリだったら関係ないけど)。そういう泥臭い事情などを綺麗に整理して「この通りに作ればいいんですよ」って言うことってまだできていない気がするんですよ。

uGoogleの公式ドキュメントもあくまでガイドラインですよ、みたいなふわっとさせて予防線を引いているんだけど、本当にこう作ったらいいんですよ、ってのがまだ見つけられていない気がします。
・・・というところがまだ掘れる気がしていて、まだ遊べるなって思います!
ネイティブアプリはまだまだ形は変わるかも知れないですけどね。いまKotlinで書いてますけど、5年後Kotlinじゃなくなってるかも知れないですし、あるいはAndroidじゃない何かが出てきている可能性もありますし、AndroidのKotlinだけやっていればいいですよってことは全然ないですね。でも「モバイルアプリは楽しいぜ!」ということを言いたいです!

numemoriさん、熱く語っていただき、ありがとうございます!!🙌

さいごに

第4弾はいかがでしたでしょうか? クラシルのAndroidチームのテックリードである、umemoriさんならではのお話が聞けのではないでしょうか💡 インタビューしていて、Androidアプリ開発を楽しんでいる雰囲気を感じられました😁

前回の第3弾 のkenzoさんへのインタビュー記事も公開しておりますので、よかったらご覧ください📄
記事中で、umemoriさんについても触れられています!

tech.dely.jp

次回は第5弾として、いままでインタビュワーだったnozakingが回答者として実施したいと思っております🎤ドキドキ
引き続きよろしくお願いします!

もし、delyのメンバーとお話してみたい!と思ってくださった方は、カジュアルにお話しする場も設けられますので、どうぞお気軽にお声かけください 🙌 下記の採用リンクから応募いただけますのでお願いします!

dely.jp