【開催レポ】Cookpad.apk#2を開催しました

こんにちは、Androidエンジニアしている吉田です。 2019/02/18(月)に弊オフィスで開催されたCookpad.apk#2の様子についてご紹介します。前回の様子については 下記のエントリを御覧ください。

techlife.cookpad.com

今回は弊社のエンジニア6名が発表致しました。本ブログを通して当日の様子をご来場いただけなかったみなさまにもお届けしたいと思います。

児山 千尋 「Androidアプリエンジニアの基礎知識」

f:id:kazy1991:20190225125527j:plain
Androidアプリエンジニアの基礎知識

はじめはモバイル基盤部のこやまカニ大好き からAndroidアプリエンジニアが知っていて欲しい基礎知識についての発表がありました。 Androidアプリエンジニアの知識とはFragmentのライフサイクルを正確に理解しているか?といった開発に直接関わる所だけに限らず、

  • Androidそのものに関する知識
  • Androidアプリの実装する上で必要な知識
  • ビジネス的な判断をサポートできる知識

の3つの観点からAndroidエンジニア全員に知っていてほしい知識が詰め込まれた内容が紹介されました。

篠原 弘光「Android Things Overview」

f:id:kazy1991:20190225134427j:plain
Android Things Overview

二人目はクックパッドマートshanonからAndroid Thingsについての発表がありました。 Android Thingsといえばつい最近衝撃的なニュースで話題になりましたが、詳細についてはご自身の目でスライドをお確かめください。

柴原 直也「cookpadTV のモジュール構成について」

f:id:kazy1991:20190225140349j:plain
cookpadTVのモジュール構成について

三人目はcookpadTV のFireTV/AndroidTVアプリを担当する梨原からモジュール構成について発表がありました。 モダンなAndroidアプリではマルチモジュールが当たり前になりつつありますが、その目的は様々です。cookpadTVでは様々なプラットフォーム対応しつつ高速に開発する手段としてマルチモジュールが採用されました。こちらも詳細は資料をご参照ください。

加藤 恭平「Espresso Driver を用いた Appium テストとその仕組み」

f:id:kazy1991:20190225142140j:plain
Espresso Driver を用いた Appium テストとその仕組み

四人目は技術部品質向上グループの加藤からテスト周りの技術であるEspresso DriverとAppiumの紹介がありました。 Appiumは人気の高いモバイルアプリケーション向けのE2Eテストフレームワークです。以前はUIAutomatorと組み合わせて使うことが一般的でしたが、内部状態に干渉できないため通信が終わるまでsleepを入れるなどのノウハウが必要でした。Espresso Driverが登場したことでContextにアクセスできるなどより高度な操作が可能になりました。

安部 建二「Dynamic feature moduleの基本」

f:id:kazy1991:20190225142537j:plain
Dynamic feature moduleの基本

五人目はKenji Abe からDynamic feature moduleについて発表がありました。 Dynamic feature moduleはアプリの機能の分割することでアプリ本体を小さく提供し、ユーザーが必要となったタイミングで各機能の実装を配信する仕組みです。本スライドでは実際にDynamic feature moduleをアプリに組み込んだ際のプラクティスや課題点が詳しく書かれています。

宇津 宏一「Kotlin Multiplatform Libraryのあれこれ」

最後は決算基盤グループのuzzuからKotlin Multiplatform Libraryについて発表がありました。 Kotlinにはマルチプラットフォーム構想がありJVMやAndroid環境以外でも動作する環境が提供されています。kotlinベースの複数環境を想定したプロジェクトを通称MPP(Multi Platform Project)と呼びます。クックパッドでは一部機能において「まずはAndroid向けのライブラリを開発できる事」をターゲットにMPPを利用し始めており、本スライドではMPP対応ライブラリを作るためのTipsや通常のAndroidプロジェクトからの利用にどう対処するのかなどコアな内容が紹介されています。

おわりに

ここ数年でAndroid開発は比較的安定した時期に入ったのかなと言う印象でしたが、今回のcookpad.apkではかなり尖った内容が多かったと思います。私達も試行錯誤を繰り返している最中で課題も多くありますが、スライドだけでは十分に伝わらなかった部分を議論したい、クックパッドの技術に興味を持ったという方がいらっしゃればぜひ弊社に遊びに来てください。
またクックパッドではAndroidエンジニアを随時募集しています。ご興味を持って頂けた方のご応募をお待ちしています。

/* */ @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;*/ /*}*/