Slide 1

Slide 1 text

Android開発以外の
 Android開発経験の活かしどころ
 2024/09/13 (金)
 DroidKaigi 2024
 Kyash Inc. @konifar


Slide 2

Slide 2 text

DroidKaigi 2024
 楽しめましたか?


Slide 3

Slide 3 text

楽しかったけれど、同時に
 不安を感じている人もいませんか?


Slide 4

Slide 4 text

たとえば
 - 「皆すごすぎるな...自分大丈夫かな...」 - 「知らなかったことも多くてまだまだキャッチアップしなきゃな...」 - 「Androidだけでこんなにたくさんやることあるのか...」 - 「本当にAndroidに軸足を置いてスキルを磨いていていいのかな...」

Slide 5

Slide 5 text

1on1やカジュアル面談でもよく聞く悩み
 - 「このままAndroid開発メインでやってていいのかな」 - 「iOSもやっていったほうがいいんだろうか」 - 「サーバーサイド書いたことないのがコンプレックス」 - 「マネジメントにも興味はあるけど、プレイヤーに戻れなくなるのは不安」

Slide 6

Slide 6 text

大丈夫です
 - 健全な悩みです - DroidKaigiの最後に、わたし自身の経験を共有しつつ たぶん大丈夫 という話をし ます - 過度に悩みすぎず、「明日からもAndroid開発を楽しもう」と思えるような、不安のコ リをほぐすマッサージみたいなセッションを目指します - 力を抜いてリラックスして聞いてもらえるとありがたいです

Slide 7

Slide 7 text

よろしくお願いします


Slide 8

Slide 8 text

自己紹介 - ヒト
 - 小西 裕介(こにし ゆうすけ)です - 社内外ともに『こにふぁー』と呼ばれています - 株式会社Kyashで、VP of Engineering という役割で開発組織全体のマネジメント をしています - Android / Kotlin が一番好きですが、最近は Go を書くことが多いです

Slide 9

Slide 9 text

自己紹介 - DroidKaigiとわたし
 2014年 小さなモクモク会で帰り道一緒になった人に「Android のデカいイベントが企画されているらしい」と教 えてもらう。教えてくれたのは takahirom さんだった。 2015年 初参加。@mhidaka さんと初めて話す。 2016年 登壇。サンプルとしてカンファレンスアプリをOSSで作る。 2017年 登壇。前年が楽しかったのでまたカンファレンスアプリをOSSで作る。 2018年 登壇。カンファレンスアプリのオーナーを takahirom さんにお願いする。 2019年 登壇。2016年の Droidkaigi で知り合った @pluulove にも誘われ、韓国の DroidKnights にもプロ ポーザルを出し登壇。 2020~22年 コロナ禍 & Android 以外の仕事が多くなり、参加せず。 2023年 @mhidaka さんに誘ってもらって最終日のパネルトークとキャリア相談会に参加。 2024年 登壇。同僚の @tfandkusu のやっていきに感化されてプロポーザルを出した。

Slide 10

Slide 10 text

自己紹介 - DroidKaigiとわたし
 2014年 小さなモクモク会で帰り道一緒になった人に「Android のデカいイベントが企画されているらしい」と教 えてもらう。教えてくれたのは takahirom さんだった。 2015年 初参加。@mhidaka さんと初めて話す。 https://biz-ocean.connpass.com/event/8591/

Slide 11

Slide 11 text

自己紹介 - DroidKaigiとわたし
 2016年 登壇。サンプルとしてカンファレンスアプリをOSSで作る。 2017年 登壇。前年が楽しかったのでまたカンファレンスアプリをOSSで作る。 2018年 登壇。カンファレンスアプリのオーナーを takahirom さんにお願いする。 https://konifar.hatenablog.com/entry/2016/02/11/031257

Slide 12

Slide 12 text

自己紹介 - DroidKaigiとわたし
 2019年 登壇。2016年の Droidkaigi で知り合った @pluulove にも誘われ、韓国の DroidKnights にもプロ ポーザルを出し登壇。 https://konifar.hatenablog.com/entry/2019/04/06/032956

Slide 13

Slide 13 text

自己紹介 - DroidKaigiとわたし
 2020~22年 コロナ禍 & Android 以外の仕事が多くなり、参加せず。 2023年 @mhidaka さんに誘ってもらって最終日のパネルトークとキャリア相談会に参加。 2024年 登壇。同僚の @tfandkusu のやっていきに感化されてプロポーザルを出した。 https://x.com/tfandkusu/status/1801477691352432728

Slide 14

Slide 14 text

自己紹介 - Kyashとわたし
 - 株式会社Kyashで6年8ヶ月プロダクトを作っています - [1年半] Android - [半年] iOS、Serverside - [1年半] Engineering Manager - [半年] QA - [2年] VP of Engineering - [8ヶ月] 執行役員 VP of Engineering

Slide 15

Slide 15 text

自己紹介 - Kyashとわたし
 - 株式会社Kyashで6年8ヶ月プロダクトを作っています - [1年半] Android - [半年] iOS、Serverside - [1年半] Engineering Manager - [半年] QA - [2年] VP of Engineering - [8ヶ月] 執行役員 VP of Engineering Android開発時の経験も活きている

Slide 16

Slide 16 text

Android開発経験の
 他開発への活かしどころ


Slide 17

Slide 17 text

2019年 カード設定機能のiOS部分を作った
 - 当時の開発状況を見て「AndroidもiOSも両 方自分やる」と手をあげた - もともと小さなコミットはしていたが、新規API 接続から画面までひととおり作るのは初めて だった

Slide 18

Slide 18 text

活きたこと① 設計の知識
 - 当時 Android も iOS も MVVM で作られていた - ViewModel や UseCase、Repository などの命名を見れば、なんとなくどこに何を 書けばいいかもわかるし過去のコードを追っていくこともできた - Android で学んでいた設計の知識と経験は、iOS のコードベースのキャッチアップ に大いに役立った

Slide 19

Slide 19 text

Android 開発ではわりと設計の話題が活発
 - Google のリポジトリでも DroidKaigi のセッションでも、設計についてよく話されて いる - テスタブルな設計や、レイヤー分離、DI の仕組みまでひととおり学べる - サーバーサイドでも DDD やオニオンアーキテクチャの話題はしばしば上がるが、 Android開発での 知識や経験は応用できる - DDDで言うと、はじめの一歩としては わかる!ドメイン駆動設計 ~もちこちゃんの 大冒険〜 がとっつきやすくてオススメ https://booth.pm/ja/items/392260

Slide 20

Slide 20 text

活きたこと② ユニットテストのベースの考え方
 - ロジック部分のユニットテストの考え方は、根っこの部分は何も変わらない - iOS Swift でも Go でも、JUnit実践入門で学んだ考え方がそのまま活きた - もちろんOS依存の部分やモックやスタブの方法は違うが、考え方を知っていれば 「Androidでのアレはどうやるのかな」という発想ができる https://www.amazon.co.jp/dp/477415377X

Slide 21

Slide 21 text

活きたこと③ 『Androidでいうアレ』という基準
 - iOS開発ではUI部分の実装の違いは大きく、キャッチアップが必要だった - 当時は Swift UI はなく ViewController だったこともあり取っつきにくかった - 調べたり同僚に聞いたりする際、「Androidではこうやるやつってどうするのか」とい う取っ掛かりがあったのは非常に役立った - ひとつ得意領域があると、それを基準として差異をキャッチアップすることができる ので早い

Slide 22

Slide 22 text

今では Chat GPT も足がかりにしやすい


Slide 23

Slide 23 text

一番苦労したのは Xcode
 - Android Studio から来ると、まずダウンロードサイズのデカさに圧倒される - GUI で操作しないといけない部分もあり、その操作によって裏で人間がいじりにくい 形でコードが変更されたりもする - ショートカットキーも違うし、リファクタリング系の機能が少ない

Slide 24

Slide 24 text

活きたこと④ IntelliJ系 IDEの操作
 - Goland を使ってみると、あまりにスッと適応できて驚いた - ファイル探すときは Shift 2回叩くし、エラーが出てたら Option+Enter 押して直した - “体が覚えてら。何百万本もうってきたショートカットだ ” って感じだった - Android Studio を手足のように扱ってきた経験は他の領域にも活きる - IntelliJ は最高 - それをベースに他言語の便利なショートカットキーを肉付けしていく - 例: メルカリ社員100人に聞いたGoLandの使い方 https://speakerdeck.com/vvakame/jetbrains-night-tokyo-2018

Slide 25

Slide 25 text

Cursor を使うときにも活きる
 - 最近 Go のコードを書く時は Cursor を使っている - ベースは VSCode だが、デフォルトで IntelliJ のキーバインドという設定があり移 行はとても楽 https://www.cursor.com/

Slide 26

Slide 26 text

活きたこと⑤ ORMライブラリの選定経験
 - Android では今は Room が使われることが多いが、Realm や Orma など色々な アプローチでのライブラリがあり選定をしてきた - 天下一「AndroidのORM」武道会(2019: FINAL) - Room 登場以後、やはりクエリをコードに自動生成するアプローチが筋がよいので はないかと思うようになった - Go でもデータベースアクセス部分には sqlc というクエリからのコード自動生成のアプローチをとっ ているライブラリもある - Kyashでは gorm を使っているが、新サービスを作るとしたら sqlc を採用すると思う https://p-side.net/qiita/2019-01-21-03e6256b404c75f5974b/

Slide 27

Slide 27 text

活きたこと⑥ Codelabsによるキャッチアップ経験
 - Google の充実した Codelabs でたくさんキャッチアップをしてきて、結局手を動か しながら作ってみるのが一番早いというのが身にしみていた - AWS や Docker などひととおり触って作れる教材をやってみることにした - 自分がやってよかったのは、 TECH SCHOOL の Backend Master Class (今は有料) - ただ「Goのコードを書きましょう」ではなく、 DockerやPostgres、GitHub Actions、DBのモックやテス ト、AWSへのデプロイなども含めてひととおりハンズオンで経験できる https://www.youtube.com/playlist?list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE

Slide 28

Slide 28 text

他分野を広く浅くやっておくとよい
 - 「Android開発メインでやっていていいのか」と不安になるのは、他をやったことがな くてわからないからという要因が大きい - 時間をとって少し他分野に触れてみるのがオススメ - Cousera や Udemy にもよい教材はたくさんあるし、 AWS 認定試験などもよい - 仕事で簡単なタスクがあればやってみるのもオススメ - 広く浅く触っておくと必ずつながってくるし、不安も小さくなる - Android開発にもきっとよい影響が出る - ちょっとしたツールなどは Go でシュッと書くようになった

Slide 29

Slide 29 text

Android開発経験の
 マネジメントへの活かしどころ


Slide 30

Slide 30 text

活きたこと⑦ 他チームとのコミュニケーション
 - Androidエンジニアは画面の実装をする分、デザイナーやカスタマーサポートのメン バーなど他チームとのコミュニケーションが比較的多い - そういった他チームとのやりとりの経験はマネジメントにも活きる - マネジメントの役割を担うと、他チームとの調整や他チームも含めた意思決定が増える - Androidに限った話ではなく、関わる範囲を広げていくとよい

Slide 31

Slide 31 text

活きたこと⑧ 開発リードとしての意思決定経験
 - Android開発固有の話ではないが、Androidエンジニアとしてチームをリードして、 プロダクト開発フローや技術面の意思決定を担ってきたことはマネジメントにも活か せた - マネジメントはチームの成果の最大化のために日々さまざまな意思決定をする必 要がある - 小さいことでもよいので、意思決定の数を増やして決定慣れしておくとよい - たとえばPull Requestのレビューコメントに prefix をつけるルールを作ってみるとか - Droidkaigi で得たすぐできる改善を取り入れてみるとか - 意思決定の数だけ強くなれる

Slide 32

Slide 32 text

とはいえ、正直めちゃくちゃ活きた実感はあまりない
 - Android開発自体の経験がマネジメントに活きたことはあるが限定的 - エンジニアリングの発想をマネジメントに応用できたみたいな感覚もそんなにない - 人間と深く関わっていく分、明らかにプレイヤーの仕事とは頭の使いどころが違う し、うまくいかないことも多い - 実際自分はしんどくなって一回 Engineering Manager をやめている - マネジメントに活かせることは、マネジメントを勉強したり経験したりして学ぶしかな い

Slide 33

Slide 33 text

マネジメントを担う前からマネジメントを学ぶ
 - これも広く浅く知っておくうちのひとつ - マネジメントのことを知らないから、キャリアパスについても考えにくく不安になる - 最近はキャッチアップできる情報がたくさんあるので、プレイヤーをやりながらざっく りキャッチアップして疑似体験しておくのがオススメ - プレイヤーとしても、開発を進める時の発想やマネージャーとの関わり方など考えの幅が広がりか なりプラスに働く

Slide 34

Slide 34 text

エンジニアリングマネジメントのキャッチアップソース
 書籍 エンジニアリングマネージャーのしごと エンジニアリングマネジャー入門 エレガントパズル HIGH OUTPUT MANAGEMENT Podcast EM.FM コミュニティ EMゆるミートアップ EM Oasis Engineering Manager Meetup

Slide 35

Slide 35 text

https://x.com/serima/status/1828752205098389645 コミュニティの様子


Slide 36

Slide 36 text

EMConf JP 2025
 https://2025.emconf.jp/

Slide 37

Slide 37 text

最初からこんなに活発に
 コミュニティに突っ込んでいけた
 わけではない


Slide 38

Slide 38 text

活きたこと⑨ コミュニティとの関わり方
 - DroidKaigi を経験していたので、コミュニティで人と話す楽しさやキャッチアップへ の効果を知っていた - iOS をやるときも QA をやるときも、コミュニティに入っていく発想を持てたのは DroidKaigi のおかげ - 先人の皆さんのおかげで、日本国内はコミュニティ活動がとても活発

Slide 39

Slide 39 text

2015年 DroidKaigi 初参加時のぬくもりあるやりとり
 https://x.com/mhidaka/status/590742312717852672

Slide 40

Slide 40 text

おかげで他のコミュニティにも突っ込んで学んでいけた
 iOSDC iOS のカンファレンス。 - 2017年 20分レギュラートーク登壇 - 2018年 5分LT登壇 - 2021年 5分LT登壇 - 2024年 5分LT登壇 pmconf プロダクトマネージャーカンファレンス。 - 2016年 初参加 - 2020年 PM Meetup LT登壇 STAR ソフトウェアテスト自動化カンファレンス。 - 2021年 30分セッション登壇 EMゆるミートアップ @ar_tamaさん主催のミートアップ。 - 2024年 3月LT登壇 EM Oasis 月一開催のミートアップ。 - 2024年4月LT登壇

Slide 41

Slide 41 text

ありがとう
 DroidKaigi


Slide 42

Slide 42 text

Android開発経験は
 十分に活かせる


Slide 43

Slide 43 text

Android開発 (で設計や実装で悩みながら意思決 定をしてコードをガリガリ書いたりコミュニティ活動をした りしてきた) 経験は
 十分に活かせる


Slide 44

Slide 44 text

(Androidに集中して技術を磨いて) 大丈夫です
 - 不安のコリが少しほぐれたかもしれませんが、結局マッサージは一時しのぎの対応 でしかありません - 結局日々のストレッチや筋トレ (=技術の研鑽) は必要不可欠 - Android 開発に集中して一生懸命開発してきた経験は必ず活きるので、そこは過 度に不安になる必要はありません

Slide 45

Slide 45 text

そもそもAndroid開発はけっこう難しい
 - セッションカテゴリを見てわかるとおり、領域はかなり多岐にわたる - ライフサイクルや通信状態、機種依存なども考慮しなければならない - 日々アップデートされるOSやライブラリ仕様のキャッチアップも必要 - そんなAndroid開発を何とかやれているならたぶん大丈夫 - これはkonifar自身の経験から感じること

Slide 46

Slide 46 text

ひとつ自信のある領域を作ること
 - Androidに限らず「ここはチームの中では自信がある」みたいな領域を作っておくと 楽です - まずは小さくてもチームの中での ”一番”を見つけ、範囲を広げていくとよいです - その上で、10%くらいは他領域をキャッチアップして広く浅く知識をつけておきましょ う

Slide 47

Slide 47 text

DroidKaigi 2024
 楽しめましたか?


Slide 48

Slide 48 text

明日からもAndroid開発を
 楽しくやっていきましょう!


Slide 49

Slide 49 text

ありがとうございました