chigichan24のお気持ち表明

イケてるエンジニアになりたい.

DroidKaigi2018に参加しました

DroidKaigi2018に参加してきました.一言で感想を要約すると死ぬほど楽しくて死んだ.

参加記です.聞いたセッションのことを備忘録としてさらさらと書いてみます.

スライドはここにいろいろまとまってるっぽいです.

DAY 01

会場の新宿は,昨年インターンでフラフラしてた街なので余裕っしょって高をくくっていたが,天才なので迷子になる.

受付でSpeakerのところに並んでしまう.いずれここに並びたいけども.

クールなプレートをもらう.

会場への入り方がいまいち分からずに(なんか学生だけ別枠で受付だった)あわあわしてたら,スタッフの方にこっちですよと優しく声を掛けてもらう.

ありがたいなぁと思って,ちらっとネームプレートみたら mhidaka さんだった.やべぇ.やべぇ.生ひつじさんだぁ.やべぇ.

ウェルカムトーク

オープニングの動画がかっこよかった(小並)

Contrubutorsの中に私のアイコンが...うれしい.もっとガリガリコード書きたかった(悔しい)

mhidaka さんのお話.たろうさんのお話など.

Kotlin conf Japan が開かれることも発表された.参加するぞ!!!!!!

学生支援をWantedlyがやっていたらしい.

Kotlinアンチパターン

スライド

www.slideshare.net

思ったこと

Nullableの話でデータ表現に困った時に安易にnullに頼らない,うまく表現できないものがあるときはそれはLayer分けをミスっているのではという話がぐさっと刺さった.

トップレベル関数に一般性のない局所的なメソッドを作る. 公式のメソッドでありそうなのにそれを車輪の再発明的に(しかもバグあり)作ってしまう危険性の話を聴いてひぇっってなった.

FragmentのViewをlazy代入してしまい,ライフサイクルにやられる系の話.よく聴くが実際にやってしまいそうだなぁとおもった.

通常代入,lazy,custom getterでは代入されるタイミングや再計算が走る可否などいろいろ違うぞの話.これはまじでそうだなぁとなった.

How to improve your MVP architecture and tests

スライド

speakerdeck.com

思ったこと

リアルkiriminさん

アプリ開発の末期症状

  • 可読性の低下
  • 巨大な Activity/Fragment
  • クラス間の密結合

今作っているアプリがフルコンボしてたので,泣いてた.

viewmodelに流石にviewさってないですよね? → 刺さってたので泣いた.

interface TopView {
    class HogeActivity : AppCompatActivity(), TopView {
        lateinit var presenter: TopPresenter
        override fun onCreate(...)
        .
        .
        .
    }
}

みたいにしたらキレイに抽象に依存できるし,このinterfaceにもろもろのfun書いていけばテストの時は純粋にPresenterに対してテストを掛けることができるので良い.よいぞ.よさみ深すぎやぞ..

小学二年生の設計力やべぇ...

で,肝心のPresenterに対するテストもその,うまい感じの粒度で切り分けて共通化できるよ〜〜という話でした.

How to Kontribute

スライド

たぶんそのうち上がるんだと思います.内容自体は多分KotlinConfのやつとほぼ変わってないはずなので,下の内容でほぼ間違いないと思います.

github.com

思ったこと

Kontlibuterになるには? +GitHubを使っている. +gitが使える.(add push commit) +Kotlinが書ける. みんななれるぞ〜〜〜という導入.Kotlinが書けるはちょっと怪しいが私にも素質はあるやん.

環境作るのが一番大変やで✋という話だった.JDK1.6~1.8まで必要で多分将来的に1.9もいるだろうみたいな.

で,簡単にKontlibuteできるのはサンプル書くやつで,なるほど確かにこれならできそう.

続いてKotlin Pluginの話でしたが,ここで一番私が衝撃だったのはその過程でサラッと出てきたPSI Viewerの話です.

これまじすげぇ.小並

DataBindingのコードを読む

スライド

speakerdeck.com

思ったこと

内部実装として,ゴリゴリのゴリにLayoutFileのParser書かれてるんだなぁ.というのと,いっつも何気なく生成されているActivityMainBindingみたいなクラスの一部はANTLRという構文解析ツール使いながら生成したりしてて,ほぇえという気持ちに.

two-way bindingの内部実装はおもったよりごちゃごちゃとやっている印象を受けました.

ドキュメントに載っていないこともコードを読めば分かるというのが,どこかで聴いたことあるワードだったので頭が痛かったです.

Say bye to Fragments with Conductor & Kotlin

スライド

speakerdeck.com

思ったこと

Fragmentのいいところも悪いところも引き継いでるなぁという印象だった.

ライフサイクルはこっちのほうが簡潔かも.

ただ,Conductor使ったほうが,Animationが少々楽になったり,UIテストが楽になりそうだなぁと思った.

なにより英語だったので,あんまり頭に入ってない(学がない).

実例で理解するMaterial Design Animation

スライド

speakerdeck.com

思ったこと

この時間,裏で行われていたMVVMベストプラクティスも死ぬほど気になっていてtwitterで2つをちらちら見ながら話を聴いてた.

Speakerの方の話すことがわりと個人的につぼってた.最終的に筋肉💪で殴れ👊みたいな方向に聞こえてしまった.

もともと,UIアニメーションとかカスやろ(最悪な暴論).そんなん好きなやつが書いときゃいい(ゴミ)みたいな思考をしていて,それを反省し,アニメーションとかUI/UXの話もちょっとずつ勉強している身なので,参考になりまくりだった.

Bodymovinでアニメーションをxmlに吐くやつは知らんかったし,

Shared Element TransitionはViewの共有という感じで,そのAnimationをいい感じにいじったり,適当(適切)なLayoutを挿すことで頑張ってアニメーション作ってるんだなぁというのがよくわかりました.

アニメーションのデバッグTipsも参考にしたいです.

最終的に,雑に作る→騙すにはと考える→真似する→!!!諦めない!!!というのがやっぱり大事だけど笑ってしまった.

Kotlin版CleanArchitectureのテンプレート作ったら爆速開発になった話+α

スライド

speakerdeck.com

思ったこと

夏に必死こいてClean Architectureの勉強をしたが,そのときの認識とちょっと違うかなぁと思った.というよりはAndroid-CleanArchitecutreのリポジトリが個人的には???ってなってる部分があるからまだ勉強不足なんだと思う.

まあとにかくこういうLayer化したアーキテクチャあるあるの,ファイル数が多くなってデバッグがダルダルダルビッシュになる問題は,先日私もやってしまった節があったので,ドキドキしてた.

いい感じにPluginで,責務わけする系かなぁと個人的に思っていたが,ほんとにテンプレートをザクッと出してくれるやつだった.

いやでも,これ冷静に考えてめちゃんこ効率上がるぞ.という気持ちになった.

個人的にはこれをもうちょっと高機能にして使いたいなぁという感じになった.

スポンサーブースを回る

いろんな企業

Yahooさんのところでくじ引いたら本をもらった.Androidアプリ開発入門したいと思う.

eurecaさんのところでは,gradle公開してたので,覚えれる限り頭で覚えてあとでググってた.

LINEさんのところでも使ってるライブラリの一覧ボードみたいなのがあって,おぉーってなった.

CyberAgentさんのところでは拡張関数を公開してて,素直に感想と疑問をぶつけようと目の前にいたエンジニアらしき方に話しかけたら,satorufujiwaraさんだったので,死んだ.社会的に死んだ(?).

完全に芸能人に会ったファン状態で,Kotlin イン アクション読みましたとか,Androidアプリ設計パターン入門読みましたとか,fujiwaraさんにgoogleのsampleが意外と普通のことしか書いてないのでプロダクトだとこうしているみたいなのが気になっている.

このライブラリは実践導入レベルなのかとか聞けた.めっちゃ良かった.良かった.

コーヒー

コーヒーが美味しかった.いや,まじでお兄さんイケメン.

After Party

思ったこと

無知ながら強い人につっこんでお話させてもらったり,作ったアプリレビューしてもらったり,学生見つけてはなしたり,プロダクトではこうしてるの話をいろんな会社の人から聞けて最高にハイになっていた.翌日学校でテストなのに.

テストなのに

テストなのに

テストなのに*1

DAY 02

コンテンツ流通基盤概論

インターネット上ではさまざまなコンテンツが提供され、それを流通させるためのいろいろなシステムやサービスが提供されている。本講義では、ディジタルアーカイブやディジタルライブラリの視点を交え、インターネット上におけるコンテンツ流通について概観する。特に、WWW上でのコンテンツ流通を支える基盤的情報技術であるメタデータ技術を中心に述べる。

[参考]

頑張って勉強しました.そしてテストを受けました.

また新宿タウンで迷いました.

コードで見るFlutterアプリの実装

スライド

speakerdeck.com

思ったこと

Dart・Flutterは存在は知ってたけどいまいちReactNativeとの違いが分かってなかったし,マルチプラットフォームで開発してる途中だったし,導入してみたいという気持ちもあり,

なによりkonifarさんはDroidKaigiのアプリへの私の拙いPRをレビューしてくれて,まじでファンです状態(二回目)になってたので,楽しみで仕方なかったです.

全てはWidgetである.アニメーションもWidgetである.というのはAnkoみたいな感じでコード中に記述する感じになるのかぁと思った.

わりとコードもKotlinのようなJavaのようなという感じにかけていいなぁと思った.

ただ,

決定的な差がわからなかった.というのと将来性はどうなんだろうと思ったりした.まぁ趣味の範囲であれば全然だいじょうぶやな.

Gradleプラグインを作って開発効率を改善しよう

スライド

speakerdeck.com

思ったこと

gradle plugin作ってみたいという思いは前々からあって,でもなかなか踏み出せなかったので,聴いてみた.

Groovyスクリプトで,思いっきりbuild.gradleの先頭にclass ...て書いていくのは斬新過ぎて,わあああってなった.

Android Plugin DSL Referenceみれば案外さくっとやりたいこと実現できるかもなぁ.という気持ちになりました.

終わった直後

コーディング欲が爆発し,速攻でマクドナルドに入ってちょこっとコーディングしてました.

DAY -??

conference appのIssueが色々あって,ずっとヲチしてました.あーこういうふうに実装するのかなぁとか想像しながら実際にでたPRと自分の考えを比較して勉強したりしてました.

眺めてたら自分もcontributeしてみたくなったので怖かったけど,思い切ってIssueに手を挙げてみました.AdaptiveIconのこと全く知らなかったけど面白そうだったので.

github.com

これをやってみました.やってマージされた時は嬉しかったです.そのあと,こういうふうにしたほうが良くないですか?というIssueが立ち,やべぇという気持ちの元もう一回挑戦させてくれ🙏🙏とコメントし(英語を誤読してバグってね?というふうに見えた),自分の誤読によって迷惑かけたけど,なんとか意思疎通ができて,もう一つIssue潰せた.よかった.よかった.

github.com

いやぁ.英語大事(大事)

全体的な感想

  • とにかく楽しかった.
  • とにかく楽しかった.
  • とにかく楽しかった.
  • 初学者Welcomeだったのでほんとに楽しめました.楽しかった.
  • 皆様ありがとうございました.

*1:なんなら知り合いに誘われてAfterPartyの後飲みにいった