1年前からガッツリAndroidにのめり込んでDroidKaigi2018をスカラーシップで参加してきた

# 前置き

DroidKaigi2018にWantedlyさんのスカラーシッププログラムで参加してきた**感想**です。
一部のセッションの感想を抜粋して記載してます。

そもそも自分は、というところで見る方に知っておいて欲しいのは
**学生**で**Android開発は2年前から興味を持ち始めて、就活のためにというのもあり昨年からガッツリ**やり始めました。
という2点だけです。

# 受講セッション抜粋
# 1日目(2/8)
## Kotlinアンチパターン
最初のセッションがこちら**Kotlinアンチパターン**
そもそもKotlin自体を使ったアプリ開発経験がなかったものの
一度完成したアプリをリファクタリングや機能追加を重ねていく上で
気をつけるべき点などの記述してあったので
Kotlin自体の知識がなくても面白く、納得のいく内容でした。

例を挙げるなら2節目の**スコープ関数**の所では
Javaの[this]のようにKotlinには[apply]が用意されており(~~本当は全然違うと思うが~~)

自身のプロパティへのアクセス時に[自身]という指定を省くことが出来るけど
そのプロパティと同じ変数が宣言されるとアクセス先が変わるという説明があり
Kotlinがそういった事を出来るのも、その内容も「面白い」と感じるものでした！

https://www.slideshare.net/RecruitLifestyle/kotlin-87339759

## Inside Android Architecture Components
次に聞いたセッションが昨年のGoogle I/Oで説明があった **Architecture Components** についての内容です。

最初は様々なデザインパターンがあるけどGoogleはこういう考えだよ！という内容から始まり
Architecture Componentsではこういうのを使うことが出来る(or推奨している)と続き
その中でも
・ Lifecycle
・ LiveData
・ ViewModel
の3項目について内部実装を掘り下げて見ていく内容でした。

LifeCycleを使用した際のOnLifeCycleEventは普段の開発でも取り入れられて良いと思い
実際の内部実装を見ることは出来ても、見る機会は少ないので
自分たちがやってるsubscribeしてるのか！とか
LiveDataでは変更された通知を受け取った後、そのデータが前後しないように管理する方法が
versionというvalueをインクリメントさせるバージョン管理方法とか
意外なことがすごく多かった。

https://speakerdeck.com/kobitokaba/inside-architecture-components

## 今から始めるAndroidアプリ開発
ランチが終わった後のセッションは**今から始めるAndroidアプリ開発**に参加してきた。
ちょっとチュートリアル的な題名のセッションに参加するのはどうかと考えたけど
こういうのって意外と自分でしない事(調べない事)とか載ってるなと思い参加を決意！

思った通り、Android8.0の端末を持ってないのもあり
Notification部分について初めて聞く箇所が多かった

後はAndroid始めたてで苦しんだNetworkやUIスレッドについても補足してあり
何故Architectureパターンを使用するのか？(MVVM、MVP...etc)という事も自分との答え合わせで納得の行く後輩に勧めれる内容だった。

https://speakerdeck.com/punchdrunker/how-to-get-started-in-developing-android-app

## まだAPI定義管理で消耗しているの？Swaggerを・・・
前泊せずに6時20分発の新幹線に乗ってきたから疲労が現れて来た頃に
**まだAPI定義管理で消耗しているの？Swaggerを用いた大規模アプリ時代のAPI定義管理とコードジェネレート**
という、若干webよりなセッションに参加した。

学校でもチーム開発が何度かあったので、チームで開発をやる上で暗黙知の形式化と言った話から始まり
**API定義の方法やSwagger関連のツールの説明**が詰まっており、次のチーム開発等で使える内容になっており
滅茶苦茶ありがたかった・・・

後はSwaggerについては学友から聞いて知っていたが
**Swagger Codegen**については初見で機械的にコードが生成されるためミスを減らすことができ
Code的な守備範囲が広いなと思った。

そもそも初めて聞いた言葉が多かったのでもっと調べて置かなければ・・・

https://speakerdeck.com/magiepooh/madaapiding-yi-guan-li-dexiao-hao-siterufalse-swaggerwoyong-itada-gui-mo-apurishi-dai-falseapiding-yi-guan-li-tokodozienereto

## 実例で理解するMaterial Design Animation
最近、色んなアプリのUIやアニメーションに驚きを隠せなくなりつつあるので
興味本位で**Material Design Animation**のセッションに参加した。

例として挙げたWantedly Peopleの一部紹介から始まり
Shared Element Transitionについて、それの実践という順番だった。

このセッションで個人的に一番良かったと感じたのが**プロダクトコードを用いた例の紹介**だ

監督役やコードレビューが無い(or適切でない)環境でプログラムを書くと
誤ったまま進むことや、無駄な箇所が多くなる事もあるが
実際のプロダクトコードを見れることで自分で気づける機会が出来て良いと思う！

と、話が逸れてしまったが実際のレイアウトコードを見つつ
実際のアニメーションの説明が適度にされてとてもわかりやすかった。

https://speakerdeck.com/wakwak3125/shi-li-deli-jie-suru-material-design-animation


# 2日目(2/9)
## はじめてのKotlinハンズオン
朝から東京のうどんを食べて色が濃いな！と思いつつも
しっかりKotlinに向き合う機会がなかったので本セッションでいい機会を得ようと思い
**はじめてのKotlinハンズオン**に参加した。

ここではKotlinの簡単な説明の後、web上でKotlinのコードを書けて、実行できる<a href="https://try.kotlinlang.org">try-kotlin</a>を用いてハンズオンを行っていった。

項目ごとに適度な時間を取ってコーディングする時間があって1日目に色んな話を聞いて
手を動かしたい欲を発散することが出来てよかった。




https://docs.google.com/presentation/d/1CRaPCgUYzdtUecT-VduwZx0qjzSY7KzluYjxmZ3U0lg/edit#slide=id.g2ef698ca55_0_0

## アプリを成長させるためのログ取りとログ解析に必要なこと
Kotlinハンズオンが2セッションの時間を使用したのでお昼ごはんを食べたあとは
こちらの**アプリを成長させるためのログ取りとログ解析に必要なこと**のセッションに参加した。

確かに取っていたログはAndroidアプリのログだったが
全体図としては、**Androidアプリを用いたサービスのログと反映に必要な情報**というのが個人の見解。

非エンジニア(ビジネス職)が欲しい情報や、それを取得するためのAndroidで登壇者が行っている事
という内容で、現在は学生なので直接関係無いがこちらもプロダクトコードや企業が行っている内側を見ることが出来、とても面白かった。

https://www.slideshare.net/TakaoSumitomo/ss-87583483

## Androidアプリ開発における技術顧問としての役割
何度か出てきたチーム開発という言葉だけど、これからも何度か出るので遠慮なく使っていこう。
授業のチーム開発でも活かすことが出来る内容かな？と考えて
**Androidアプリ開発における技術顧問としての役割**に参加してきた。

技術的な内容というよりも、既存プロジェクト参入などの時に1世代前のやり方が行われていたのを
どういった手順で解決したか、というのを実際に行ったことを交えて話をしていた。

自分もチーム開発で意識の差が生まれることや、どういった方法で知識共有、コードレビューするか等と考える事が多いためとてもためになる話が聞けた。

## Androidではじめるデザインスプリント
はい、デザインと付いたタイトルだけでセッション選びました。
しかし、セッションを終えた後は自分でもやってみたい思える内容でした！

セッションではデザインスプリントについて軽く紹介した後
ワークショップの体験記を細かく説明してくれました。

デザインスプリントの序盤自体はアイデアソンに親しいものがあると思うのですが
アイデアだけにとどまらずプロトタイプ作成、ユーザーレビューまで行うところに少し驚きを感じました。

このセッションではワークショップの体験記を説明してくれたのですが、注意点やポイントが幾つか紹介されており
そこが疑問を解消してとても良いセッションでした。

https://speakerdeck.com/mochico/start-the-design-sprint-with-android

## 複数センサーシミュレーションによる行動認識(ActivityRecognition)解剖、そして実用化
タイトルも難しそうだし、タグも中・上級者って書いてあるし・・・って思ったけど
直前にツイッター見たら「コードを読み解くような思いセッションではないので、どなたでもお気軽に」という内容をみて
時間的にも集中が切れつつも興味があったのでこのセッションを選びました。

内容としては人が歩いているのか、止まっているのか、乗り物に乗っているか判別する方法とそれの実践という感じでした。

セッションの中では実機で歩いた時の複数のセンサのログを取り、エミュレータにそれぞれのセンサにログを入力して
どうやって判断するかというのが序盤で
話をするにつれてレアケースを交えながら、ハッカソンなどで使用できるなと思える内容でした
。

https://speakerdeck.com/kakka/20180209-droidkaigi2018-activityrecognition-simulation

# 感想
・カンファレンスに参加すること
・Androidの技術にリアルで触れること
・Qiitaやブログで記事を書いている人の話を聞くこと
・実際に働いている人の話を聞くこと
・他のスカラーシップの学生達と会話すること
その全てが自分にとっていい刺激になりました！

**Droidkaigiのスタッフ**の方たち、**すべてのスポンサーの方たち**、ありがとうございます！
スカラーシッププログラムとして選んで頂いた**Wantedly**さん、ありがとうございます！
OPの時に少し言っていただいてましたが、スカラーシップとして参加できたのは他の参加者の方を含め、**Droidkaigiに関わった全ての人のおかげです！！**
本当にありがとうございます！

今回得た知識で自分なりに挑戦して、その事をアウトプットすることで恩返しをします。
**DroidKaigiお疲れ様でした！**