DroidKaigi2017 Day1 レポート 午前

2017.03.09

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

まえがき

IMG_20170309_114513

今年も始まりました DroidKaigi 2017!! 僕が参加したセッションだけになってしまいますが、レポートをします!

セッション

ウェルカムトーク / Welcome talk @mhidaka

  • ただひたすらかっこいいオープニングビデオ
  • 目的
    • 技術のトレンド、問題共有、技術の面白さ
  • 歴史
    • 3回目 1回目2015~
    • 参加人数400,600,800人と増えてきた!
    • 海外からの参加が増えてきた
    • 67 Sessions 全部みるには、体6こ必要
    • スポンサー: 30社
  • 自分の当たり前は他の人にはとっては、重要な情報かもしれない。気軽に応募してみよう!
  • Enjoy!

How to apply DDD to Android Application Development @あんざいゆき

  • 2009年に初投稿
    • その頃は、シンプルなアプリが多かった
    • 個人のアプリが多く、マーケットにあげて終わりっというアプリでメンテナスすることは考える必要はない
    • 継続性がない
  • 最近は多様な機能をもっと複雑なアプリ
    • 継続的なメンテナスと機能追加
    • 複数人での開発
  • 解決したいこと
    • 複数人で複雑なアプリを継続的な開発
    • 表面的な技術ではなく、本質な技術
  • チームでDDDを進めるなら、一人は原著読む
    • 14章にチームで進める内容がある
  • 実践ドメイン駆動設計
    • 原著前提がある
  • AndroidでDDDを取りいれるには
    • そもそもドメインを知る
  • ドメインはユーザがプログラムを適応する対象領域
  • ドメイン駆動とは
    • ドメインエキスパートはドメインに詳しい人
      • 専門家だけではなくドメインに携わっている、知っている人
    • ドメインモデル
      • ドメインの手順などをモデル化
    • ユビキタス言語
      • ドメインに関する言葉
      • 全員が同じ言葉使う
      • 言葉は育つもの
    • ドメインモデルをそのままコードで実装
      • モデルを完璧してからコード化無理
      • 実装しながらドメインモデルが育つ
      • 設計と実装の世界を両方を洗練させる
    • 手順
      • 1.ユビキタス言語を確立する
      • 2.ドメインモデルを作り上げる
      • 3.ドメインモデルを正確にコード反映
      • 4.フィードバックして1-3に反映していく
  • 設計
    • 戦略的設計
      • ユビキタス言語
      • 境界づけられたコンテキスト
      • コンテキスト
    • 戦術的設計
      • 値オブジェクト
      • エンティティ
      • サービス
  • よくあるDDD勘違い
    • DDDってClean Architectureのことでしょ -> No
    • DDDってMVCとかMVPの仲間でしょ -> No
    • レイア化アーキテクチャにすいればDDDだよね -> No
      • 特定のアーキテクチャに依存するものではない
    • ドメインモデルを作ってそれを正確にコードで表現することがDDD
  • Android アプリ開発 with DDD
    • 境界づけられたコンテキストとコンテキストとマップ
    • コンテキスト
      • Account
        • ユーザ登録、銀行、文学、、、など前提の文章で話させると言葉の意味が違う
    • 境界づけられたコンテキストを見つけるヒント
      • 言語の境界がコンテキストの境界
        • チーム、機能、コードベースなどが変わるとコンテキストが変わる
      • コンテキストには名前をつける->ユビキタス言語化
    • コンテキストマップ
      • 理想ではなく現実の世界を書く
        • 正確性よりわかっていることをかく
      • 依存関係などのマップ
    • コンテキストの統合
      • パターンを書く
        • パターンは提案されている
    • Androidアプリで適応できそうなパターン
      • パートナーシップ
        • 主SDK
      • 需要/供給
        • 社内SDK
      • 順応者
        • 3rdSDK
      • 公開ホストサービス
        • サブシステムに公開されたプロトコル接続
      • 腐敗防止層
        • アプリのユビキタスに変換する
  • アーキテクチャ
    • DDDは特定のアーキテクチャに依存しない
    • ドメイン層を隔離した状態にすればどれでもOK
      • ドメイン層を隔離する
    • ビジネスロジックをドメインモデルとしてUIから隔離する
    • 利口なUIとSMAETUI
      • 利口なUI
        • 動くアプリをすばやく確認したい
        • 画面デザイン駆動設計問題
        • ドメインモデルとすべきドメイン知識がUIに存在しないか考える
  • まとめ1
    • ドメインモデルを作成
      • アプリのドメインについて考える
      • ユビキタス言語を育てる
      • 境界づけられたコンテキストを見つける
      • コンテキストマップを描く
    • ドメインモデルを実装する
      • 戦術的設計が支援する

Android Security 最前線!! @Naoki Yano

  • Android NougatのSecurity周りのアップデートのまとめ
    • Using Scoped Directory Access
      • 特定のDirのみアクセスできる
      • 実装方法:新しいAPIを追加されたので使う
        • StorageVoiume
          • Standerd Deirctoryを選択する必要がある
        • StorageManager
      • ディレクトリ毎にアクセス許可を必要とする
        • プライマリストレージとは、扱いが異なるので注意
    • Direct Boot
      • ロック解除されていない状態ではダイレクトモードで動作する。端末暗号化ストレージにアクセスできる
      • 新しいAPI
        • android:dirctBootAware
        • android.intent.action.LOCKED_BOOT_COMPLETED
        • Context#createDeviceProtectedStorage
      • BOOT_COMPLETEDの呼ばれるタイミングが違うので注意
    • Network Security Config
      • カスタムCA証明書を設定するため安全で簡単なAPI

エラーと戦うためのデバッグ法 @山﨑亮

  • stetho
    • Chromeでバック可能になる
    • View Hierarchy
      • デザインを確認できる
    • Network Inspection
      • 通信のRequestとResponse
    • Database Inspection feature
      • SQLが直接実行する
        • デバッグのためにコード修正がいらない
    • Console
      • Timberのログを使える
    • Dumpapp
      • Dumpをとることができる
      • クラッシュを起こすことができる
  • chuck
    • 通信領域に通知にかかれる
    • タップすると履歴をみれる
    • stethoとの違いはアプリ内で完結
  • Android Debug Database
    • DBに特化したもの
    • SQLを実行できる
    • DLをすることも可能
  • Layout Inspector
    • Android Studioの機能
    • レイアウトのプロパティがやレイアウトのネストを確認できる
    • styleの確認もできる
    • あくまでキャプチャー
  • Theme Editor
    • Android Studioの機能
    • プレビューを確認
    • 色の選びもマテリアルデザイン用意する

まとめ

午前中だけで脳みそのキャパオーバー。持ち帰っていろいろ試してみたいものばかりでした!聞きながらも今日の最後のセッションで登壇することが気がかりで集中できてないのもありますが。。とりあえずお弁当食べよう。

IMG_20170309_131434