radioc@?

レディオキャットハテナ

【勉強会メモ】〜クラスメソッドのモバイル開発を知る!〜全5回 #1 Android開発編

classmethod.connpass.com

  • 日時:2018/07/13(金) 19:00 〜 21:30
  • 場所:クラスメソッド大阪オフィス

Androidエンジニアってなにするの?

橋本 早樹さん

クラスメソッドってなにやってるの? (モバイルアプリ事例)

アプリの制作フローとエンジニアに求められること

  • プロジェクトリーダー
  • デザインメンバー
  • サーバメンバー
  • アプリメンバー

コミュニケーションツール

  • Backlog
  • Slack
  • chatwork
  • Google ハングアウト

ヒアリング(要件定義)

要件定義フローのメンバーのふるまい

技術調査

  • 要求が実現できるか
  • 他ベンダーの仕様確認
  • モバイルの機能調査
  • サービスの仕様調査

設計

サーバ設計

アプリ設計

  • 画面設計
  • 通信処理
  • 認証処理

求められること

  • モバイル機能の把握
  • APIの理解
  • 仕様調整

実装

単体テスト

進捗管理

求められること

  • プログラミング
  • デバッグ
  • 原因調査・課題解決

Android Studioデバッグツール

  • Logcat
  • Profiler
  • apk Analyzer

原因調査に役立つデバッグツール

結合テスト→リリース→打ち上げ

からの

運用スタート

求められるスキル

  • サービス仕様の理解
  • 顧客の業務内容の理解

運用する人のタスクを理解する

  • プッシュ通知を送りたい
  • ユーザーの行動を知りたい
  • アプリが落ちた時の問い合わせに対応したい

運用ツール

  • Firebase
  • fabric

最近の傾向

  • 全体プッシュではなく、セグメントを分けたプッシュ通知をしたい
  • セグメントを分けたユーザーの行動フローを見たい
  • コンバージョンに関与したイベントを取りたい

モバイル実装だけでなくビジネスやプロダクトに関するスキルも求められてくる

クラスメソッド(モバイルアプリサービス部)ってどうなの?

良い点

  • フレックス勤務
  • リモートワーク
  • 新しいものをどんどん取り入れる
  • 受託案件が多い

欠点

  • 教育フローがない
  • 発展途上
  • 受託案件が多い

KotlinとAndroid Architecture Componentsを採用してみた

工藤 星命さん

採用したアーキテクチャ

アーキテクチャやライブラリ群

  • Kotlin
  • MVVM
  • ライブラリ
    • AAC
    • RxJava(RxKotlin)
    • DI(koin)
    • DataBinding

MVVM

  • Google samplesの todo-mvvm-live-lotlin やDroidKaigiを参考に設計

実装例

ViewModel

  • ObservableField
  • LiveData

ここまでの感想

  • ViewModelが保持するプロパティ(値やイベント)とView感の通信の実現に必要なコードがほぼ無い(ライフサイクルも考慮される)
  • ViewModelがViewの実装と密接なのでViewModelの単体テストが難しい

ViewModelでライフサイクルイベントを監視

Koinフレームワーク

github.com

  • 記述がシンプル
  • AACのみでViewModelを作るときの煩雑さが軽減される
  • ViewModelの共有も簡単

東京、大阪、福岡、離れていても大丈夫なリモートワーク術

西田 将幸さん

リモートワークの流れ

  • 2週間1スプリントのスクラム
  • 水曜にリファインメント
  • 朝会
  • スクラムイベント
    • Zenhub
  • みんなでレビュー
  • PullRequest方式で開発

リモートワークのいいところ

  • 通勤時間削減
    • 満員電車から逃げられます
    • 仕事する上でもっとも無駄な時間を削れます
    • 災害時で交通機関が麻痺しても働ける
  • 家族
    • 家族とご飯が食べれます
    • 子供を幼稚園に送っていけます
  • 遠くの人と働ける
    • 遠くの拠点の優秀なエンジニアと働ける
    • 地方からでも東京とかのイケてる会社で働ける

リモートワークの悪いところ

  • 圧倒的孤独
    • 小拠点に集まって自分だけがリモートの場合に顕著
    • 会議中話し始めるタイミングがつかみにくい
    • 対策
      • 会議室のハングアウトではなく全員PCのHOに入室
      • 朝会後に雑談できる時間を30符ほど作る
      • リモートどうですか?と声をかけてもらう
  • 物理的距離
    • 1つの拠点にタスクボードなどが置かれてリモートで確認するのが大変
    • 対策
      • ツールはすべてオンライン
      • Cacco等で図を共有しながら説明
      • 紙に書いたボードをカメラで写して共有
  • 情報格差
    • 1つの拠点にチームの多くがいてリモートが少数の場合に発生
    • 対策
      • 朝会中に「もや」を話す時間を容易
      • チャットに話したいことを書いておく
      • チャットではなくIssueで議論(あとで流れがわかる)
  • コミュニケーションコスト
    • 普通にしゃべるのより3倍はきつく伝わる
    • チャットだと思ったより伝わらない
    • 突然知ってる体で話される
    • 対策
      • 語尾に感嘆符
      • チャットで描く時は結論から書き、必要以上に説明する
      • コンポーネントが別れていても横断して担当できるように1つの大きな機能単位でタスクを割り振って非同期で仕事ができるようにした

まとめ

  • オンラインが前提のツールが揃ってきて不便がなくなりつつある
  • 必要なのは善良な市民(お互いの信頼)、小さなことでも改善していく気持ち