【開催レポ】Cookpad.apk #1 〜筋肉はすべてを解決する〜

こんにちは。 人事部の浅間( id:ayaasama )です。

2018年8月21日に、Cookpad.apk #1を開催いたしました!

クックパッドでは、Cookpad.apkを通して、Android技術やサービス開発に関する知見を定期的に発信していこうということで、今回はその第1回目でした。

f:id:ayaasama:20181031190925p:plain
(当日のイベント開催時の様子)

第1回は弊社内のAndroidエンジニアからそれぞれ、業務を通じて得られた知見の共有や開発のための工夫についてお話をさせていただきました。 対談の中で、「筋肉はすべてを解決する」という言葉がたくさん飛び交いましたが(笑)、実際エンジニアの方々がどのような工夫をしたのか、当日のプログラムや本ブログを通して当日の様子をご来場いただけなかったみなさまにもお届けしたいと思います。

cookpad.connpass.com

 当日の発表プログラム

「 ReactNative for Androidの現状報告」

はじめに、2014年新卒入社の吉田より、ReactNative製のアプリをリリースして実際に起った問題や普段の開発フローについてお話いたしました。

speakerdeck.com

「クックパッドアプリのマルチモジュール化への取り組み」

技術部モバイル基盤グループ所属で、主にAndroidアプリの開発効率改善に取り組んでいる児山からは、巨大なシングルモジュールアプリケーションだったクックパッドアプリを、マルチモジュール化するまでの経緯と実際の進め方、今後の改善についてお話いたしました。

「ML Kitでカスタムモデルを使うまで」

2018年1月入社で、会員事業部所属の山下からは、ML Kitでカスタムモデルを動かすためのノウハウをお話いたしました。

「AndroidXとAOSP」

2018年7月入社でメディアプロダクト開発部所属で主にcookpadTVのAndroidアプリ開発担当している安部からは、AndroidXがAOSPに公開されたのにちなみコードの取得やパッチなどのお話をさせていただきました。

「Google Playアルファリリースを自動化した話」

技術部モバイル基盤グループ所属で、主にAndroidアプリの開発効率改善に取り組み、最近はKotlin大臣やリリース自動化などをやっている門田からは、 Androidアプリのリリースを自動化への取り組みについてお話をしました。

「FireTVことはじめ」

2018年新卒入社で、メディアプロダクト開発部所属し、主に cookpadTVのFireTV向けアプリの開発を担当している柴原からは、FireTV向けアプリの作り方について、cookpadTVで実際に用いた公式のフレームワークFire App Builderを使ったときの良かった点、悪かった点やTV向けアプリで気をつけなけらばならない事をお話させていただきました。

「Gradle Kotlin DSLのあれこれ」

2017年4月入社し、技術部ユーザ決済基盤グループ所属で、現在はモバイルアプリのアカウント管理と決済機能の開発担当をしている宇津からは、Gradle Kotlin DSLに移行するにあたってのノウハウのお話をさせていただきました。

付箋形式でお答えするQ&Aディスカッション

Cookpad.apkでは参加者のみなさまからの質問を付箋で集めています。 ほんの一部ではありますが、当日は下記のような質問に回答いたしました。

f:id:ayaasama:20181031190739p:plain

Q: Firebaseが使えなかったとのことですが、結局Analyticsってどうされましたか?(別のサービス使ったとか?)
A: Crashlytics は Fabric のものが使えたので Crash Log は Crashlytics を使っていて、 Analytics は社内のログ基盤があり、そちらを使っています。

Q: マルチモジュール化って初期開発(最初)から行うのは現実的ではないですよね?
A: プロジェクトに求められる規模感やスピード感によって差があると思いますが、最初からモジュール分割をしつつ開発を進めることはできると思います。早い段階で共通のテーマやスタイルリソースを切り出すことができればデザイナが見る範囲を狭められるのでおすすめです。

Q: マルチモジュール化は、1人で進めたのでしょうか?新規開発機能とタイミングかぶって大変な目にはあわなかったですか?
A: legacy モジュールの作成は1人で進めました。最初に試したときはテストがこけたりして長期化してしまってタイミングがあわなくなり失敗したのですが、二度目に試したときは慣れたのか短時間でマージまで持っていけました。タイミングが被りそうになったら諦めて新機能開発の合間に新しくやりなおすと理解も深まって良い気がします。

Q: ビルド時間のグラフのツールって何を使ってましたか?
A: Build Time Tracker の結果を各開発者の端末から集めて Grafana というツールでグラフにしています。

Q: 発表の内容とはずれますが、AndroidX対応できましたか?(無事に)
A: まだ対応してませんが、対応予定です。

Q: 直接関係ないのですが、今Andriod開発を始めるとしたら、どんな実機がおすすめですか?
A: (イベント当日の回答です)国内でAndroid Pが唯一使えるEssential Phoneがおすすめだと思います。個人的にはAQUOS Phoneが標準に近くておすすめです。(Pixelが日本発売決定したので、今ならPixelがダントツでおすすめです。)

シェフの手作り料理

Cookpad.apkでは、今回はAndroidの最新OSである「P」を頭文字としたシェフ手作りのごはんをご用意させていただきました!食べながら飲みながらカジュアルに発表を聞いていただけるように工夫しています。今回お越しいただけなかった方も、ぜひ次のイベントはご参加くださいね。

f:id:ayaasama:20181031191022p:plain

当日のメニュー(シェフ特製のPにちなんだ料理)

・ポテトサラダ
・プルコギ
・パイ(ミートパイ)
・パスタ トマトソースペンネーム
・ポーク(ローストポーク)
・パイナップル(野菜とパイナップルのマリネ)

おわりに

筋肉だけですべてを解決しているわけではないこと、お分かりいただけましたでしょうか(笑) クックパッドではAndroidエンジニアはもちろん、その他新規事業、レシピサービス事業などに携わる新しい仲間を募集しています。 ご興味がある方はぜひご応募ください!お待ちしています。

採用情報 | クックパッド株式会社

また、今後のイベント情報についてはConnpassページについて随時更新予定です。イベント更新情報にご興味がある方は、ぜひメンバー登録をポチっとお願いします!

クックパッド株式会社 - イベント一覧 - connpass

/* */ @import "/css/theme/report/report.css"; /* */ /* */ body{ background-image: url('https://cdn-ak.f.st-hatena.com/images/fotolife/c/cookpadtech/20140527/20140527163350.png'); background-repeat: repeat-x; background-color:transparent; background-attachment: scroll; background-position: left top;} /* */ body{ border-top: 3px solid orange; color: #3c3c3c; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', Meiryo, Osaka, 'MS Pゴシック', sans-serif; line-height: 1.8; font-size: 16px; } a { text-decoration: underline; color: #693e1c; } a:hover { color: #80400e; text-decoration: underline; } .entry-title a{ color: rgb(176, 108, 28); cursor: auto; display: inline; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', Meiryo, Osaka, 'MS Pゴシック', sans-serif; font-size: 30px; font-weight: bold; height: auto; line-height: 40.5px; text-decoration: underline solid rgb(176, 108, 28); width: auto; line-height: 1.35; } .date a { color: #9b8b6c; font-size: 14px; text-decoration: none; font-weight: normal; } .urllist-title-link { font-size: 14px; } /* Recent Entries */ .recent-entries a{ color: #693e1c; } .recent-entries a:visited { color: #4d2200; text-decoration: none; } .hatena-module-recent-entries li { padding-bottom: 8px; border-bottom-width: 0px; } /*Widget*/ .hatena-module-body li { list-style-type: circle; } .hatena-module-body a{ text-decoration: none; } .hatena-module-body a:hover{ text-decoration: underline; } /* Widget name */ .hatena-module-title, .hatena-module-title a{ color: #b06c1c; margin-top: 20px; margin-bottom: 7px; } /* work frame*/ #container { width: 970px; text-align: center; margin: 0 auto; background: transparent; padding: 0 30px; } #wrapper { float: left; overflow: hidden; width: 660px; } #box2 { width: 240px; float: right; font-size: 14px; word-wrap: break-word; } /*#blog-title-inner{*/ /*margin-top: 3px;*/ /*height: 125px;*/ /*background-position: left 0px;*/ /*}*/ /*.header-image-only #blog-title-inner {*/ /*background-repeat: no-repeat;*/ /*position: relative;*/ /*height: 200px;*/ /*display: none;*/ /*}*/ /*#blog-title {*/ /*margin-top: 3px;*/ /*height: 125px;*/ /*background-image: url('https://cdn-ak.f.st-hatena.com/images/fotolife/c/cookpadtech/20140527/20140527172848.png');*/ /*background-repeat: no-repeat;*/ /*background-position: left 0px;*/ /*}*/