/var/log/messages

Mar 25, 2017 - 6 minute read - Comments - android

ひさびさの JAG 勉強会参加

以下に参加させて頂きました。

直前にお茶購入したんスけど、それでお金崩しとけば良かったorz

参加な料金の事をすっかり忘れておりました、スミマセン。

実家の人が用件にて幟まで車出すとのことで便乗。そこから皆実町まで昔住んでたあたりを散歩しつつ現地着。

はじめに

しげむらさん。34 回目なんすね。

JAG について紹介など。2008 年にできて CJAG が 2009 年とのこと。前回が 3 年前らしい。自己紹介の時間を確保とのこと。

どうやら直前にプログラムの構成変えた模様w

タグは #cjag201703 とのこと。

RxJava2 + OkHttp + Retrofit 入門

内容以下とのこと

  • RxJava2 概要
  • OkHttp 概要
  • Retrofit 概要
  • 組み合せ

Reactive か。

Rx て確か Scheme ちっくなアレだった記憶あり。

次、OkHttp について。

最新は 3.6.0 とのこと。6.0 以降なナニとして標準となっている模様。サンプルとしては略。

Retrofit がメイン。

REST を簡潔に書けるらしい。これは楽でいいカンジに見えます。サンプルが以下とのこと。

Connpass の API 仕様が以下とのこと。

http://conpass.com/about/api

JSON がいっちゃん扱いやすい模様。えみゅでデモしてる。

  • Retrolambda てのがあるのかw

最近何でも lambda だな。そして MV なんちゃらなアレなんすね。

  • interface としてリクエストの仕様がまとめられるのが Retrofit の魅力
  • API_END_POINT という文字列とか GET というアノテーションとか
  • 定義したモデルに Gson で相互変換自動
  • @Query アノテーション

そしてまた最近何でもアノテーションですね。

  • 一つの interface で一つの URL に対応なのかな
  • HTTP な通信を完全にカプセル化してるのですね

Retrofit の生成について。

  • HttpLoggingInterceptor により通信状況のロギングができる
  • それを追加して OkHttpClient オブジェクトの生成
  • レスポンスが gzip 圧縮
  • Gson オブジェクト生成 (serializeNulls 指定)
  • Retrofit オブジェクト生成 (色々なアダプタ指定)

Dagger か。Java で Rx 云々よりは Kotlin でもごもごする方がアレゲな気もしますがどうなんでしょうかね。それは良いとしてデータの取得および反映。

  • DataBinding による UI への値の設定
  • layout タグで囲んで Binding 対象
  • build.gradle で binding のナニを指定
  • DataBindingUtil.setContentView
  • ActivityMainBinding すか
  • subscribeOn と observeOn について
  • event -> {} て記述w
  • subscribe には手続きオブジェクトが渡されているのかどうか

まとめ

  • RxJava2 は非同期に強くてリスト操作が強力
  • Retrofit によるソースコードのドキュメント化
  • Retrolambda 良さげ
  • OkHttp デバグなどもアレ

レスポンスの gzip なナニについてツッコミ。つうか最近レスポンスて gzip されてるのね。

  • 小説家になろう、というサイト?
  • クライアントを作ろうとしていた
  • gzip ストリームではなくてファイルで云々なのか
  • UnzippingIntercepter というナニを自作した (Interceptor を継承)

むむ、何というか立ち後れてる感満点だなぁorz

  • 認証が必要なケイスについて
  • Retrofit であればヘッダで云々、みたいな形でよしなに
  • API が RESTful だと Retrofit は楽ちん、とのこと
  • XML が、なナニもなかなか辛い

RxJava 使ってるけど使いこなせてない感

以下、サンプルなプロジェクト。

AndroidアプリでFirebase Realtime Databaseを使ってみよう

最初に。

  • 全部 qiita で (限定共有で整理してから公開
  • google プレゼンテーションの URL は connpass にはってます

Firebase とは何ぞや。

  • これ、ちょい前にたいらさんが云々してたヤツだな

  • 公式ドキュメントの内容をみんなで見ていく形

  • Google 提供

  • リアルタイム処理

  • オフライン処理

  • 色んな機能が組み合せで使える

  • マルチプラットフォーム

  • develop/grow/earn

  • FCM て前の GCM か

  • 認証機能もあり (かんたんに使える

  • RealtimeDatabase

  • Json で保存

  • Storage, Hosting, RemoteConfig, etc.

  • TestLab て某所は知ってるのかな

料金プランが三つあるらしい。本題の Firebasee Realtime Database について。

  • リアルタイム
  • オフライン
  • クライアント端末からのアクセス

特徴

  • NoSQL
  • データ更新で自動更新 (online)
  • データはローカルで保持
  • online になった時点で自動で同期

ありやまさんにアレな振りでハードルが上がるなどしつつ導入編。

  • コンソールでプロジェクト
  • SDK 導入
  • build.gradle
  • データベースのルール定義

Android アプリに Firebase を云々、ってあたりで google-services.json というファイルをプロジェクト設定して download してアレなのですね。

  • Binding 云々、ふつーに使われてるなぁ
  • これ xamarin とかでも使えるんかな

Json なデータベースにおける結合云々の話。

  • 公式ドキュメントの例
  • 構造は深くしない
  • ネストさせるのではなく別なものとして云々
  • どちらにも属性定義しちゃうと整合してるかどうかの担保がアレ?
  • 必要な冗長性、とのこと
  • おすすめされてるデータの構造

実際に書き込むにはどうするか。

  • インスタンス生成
  • リファレンスとってきて
  • setValue

setValue の他、書込みに三つ

  • push
  • updateChildren
  • runTransaction

のメソドあり。setValue に Java オブジェクト渡せるのか。データを json にして云々、てことなのかな。

  • chile メソドで階層を降りることもできる模様
  • かきこみ完了の割り込みは CompletionListener 指定による
  • offline の場合、complete しないので注意がひつよう

push について。

  • データ追加
  • 自動で一意な key が

updateChildren について。

  • 複数 node を同時更新
  • 冗長なナニを、という場合のために必要なんすね
  • 更新の際、片側が失敗したら両方キャンセルされる

runTransaction について。

  • トランザクション生成
  • 複数ユーザによる更新 (閲覧回数のカウントアプなど
  • バッティングした場合、リトライする模様 (上限がある模様だが詳細不明

オフラインでの書込みについて。

  • ローカルにデータ持っている
  • データとあわせてバージョンも保持
  • 同期に使うのか
  • 完全同期は保証していない模様w

REST API で保存可能。

  • PUT, PATCH, POST, DELETE など

時間オーバーしてるのでトバす模様w そして時間伸びたw

  • ValueEventListener#onDataChange
  • データ変更で都度呼び出され
  • ChildEventListener もある
  • 並び換えもできます
  • フィルタもできます

使ってみて、の感触について。

  • 困ったことはなかった
  • 画像の共有など
  • オフラインでの同期ができなくて
  • シリアライズしてつっこんだけど遅い
  • どんな時に使うか、は決めておかないと
  • 全てを realtime database 使って、ではない方が良いのかも

リトライ回数は 25 回、らしい。

LT

二名参戦、とのことにて以下に乱暴メモを。最初はありやまさんらしい。

  • 技術書典2
  • TensorFlowはじめました
  • 機械知能向けの計算フレームワーク
  • Super Resolution て
  • 拡大するとぼやける (当然
  • 圧縮ノイズ
  • 補正をする、が超解像
  • CNN 使って超解像
  • 三層で
  • 結果がアレw
  • 何がわるいのかわからなかった
  • 実際、の紹介
  • 結構面白い技術
  • 画像を題材にすると色々なユースケイスあり
  • https://goo.gl/Z3Exjo

次の方 (@kanjihtmt さん) のメモが以下。

  • 開発で得た知見
  • 夏ぐらいから始めました
  • やりたい人が居なかった
  • Android 大変てイメージが (ry
  • 大変だった
  • 非同期処理
  • フレームワーク多
  • Efficient Android Threading
  • 人類にはスレッドは早すぎる
  • rx.Observable
  • Volley とりいれた
  • gradle で使えない
  • 突如オワコン
  • Retrofit2
  • 画面の作り方がアレ
  • 情報の陳腐化が早い
  • MaterialDesign のドキュメントを読んだ
  • MVC がアレ
  • Activity に微妙な匂いを
  • 副業で求められる生産性が
  • MVP 採用 (MVP てアレかな
  • JVM のみで動くように
  • 機種依存、Permission
  • Gradle 覚えなおしたり大変だった
  • いいじゃん Java
  • 流れが早い
  • 新陳代謝が激しい
  • 廃れたものが何なのかがわかりにくい
  • 基盤が不安定、プレーヤが多い、活性化
  • Jake Wharton さん、DroidKaigi
  • DroidKaigi アプリは参考になる

そして

定期的に開催との事らしいのでさいさいお世話になろうかと思っています。よろしくお願い致します。次回は懇親会にも参加したいです。