SlideShare ist ein Scribd-Unternehmen logo
1 von 79
DroidKaigi アプリの内部を見る
GDG Shikoku
DroidKaigi 2018 参加報告会
2018/02/25
Agenda
2
• Android アプリのコードを読んでいく手順
• DroidKaigi アプリで使われているライブラリ
• 使われているライブラリの確認と用途紹介
• 設計とデータフロー
• 使われているプラグイン
• プラグインの確認と用途紹介
Android アプリのコードを
読んでいく手順
Android アプリのコードを読んでいく手順
• まずはソースコードを clone
• Android Studio で開く
• Web でも読めますが、Android Studio のような IDE のほうが便利
• 使われているライブラリを確認
• 使われている設計(データの流れ)を確認
4
使われているライブラリ
使われているライブラリ
• app/build.gradle(.kts) を見てみる
• dependencies に依存ライブラリが記述されている
6
使われているライブラリ
• Kotlin
• Support Library
• Network
• Structure
• UI
• Debug
• Test
7
※app/build.gradle のコメントセクションタイトルによる分類
使われているライブラリ
• Kotlin
• org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.2.21
• 標準ライブラリ
• androidx.core:core-ktx:0.1
• 拡張関数ライブラリ
8
Kotlin が使える!
Kotlin をより便利
に使う!
KTX
• Kotlin の標準ライブラリには含まれていないが、便利な関数群
• 記述がよりシンプルになる
9
https://android-
developers.googleblog.com/2018/02/i
ntroducing-android-ktx-even-
sweeter.html
KTX
• https://android-developers.googleblog.com/2018/02/introducing-
android-ktx-even-sweeter.html
10
KTX
• https://android-developers.googleblog.com/2018/02/introducing-
android-ktx-even-sweeter.html
11
DroidKaigi の3日前!!
KTX
• https://github.com/DroidKaigi/conference-app-2018/pull/615
12
KTX
• https://github.com/DroidKaigi/conference-app-2018/pull/615
13
DroidKaigi の2日前!!
KTX
• https://github.com/DroidKaigi/conference-app-2018/pull/615
14
DroidKaigi の2日前!!
リリース前でも
活発なリポジトリ!
使われているライブラリ
• Support Library
• com.android.support:support-v4
• com.android.support:appcompat-v7
• com.android.support:design
• com.android.support:cardview-v7
• com.android.support:customtabs
• com.android.support.constraint:constraint-layout
• com.android.support:multidex
• com.android.support:support-emoji-appcompat
• com.android.support:preference-v7
• com.android.support:preference-v14
15
ざっくり…
・下位互換担保
・UI パーツ
が中心
使われているライブラリ
• Support Library
• com.android.support:support-v4
• com.android.support:appcompat-v7
• com.android.support:design
• com.android.support:cardview-v7
• com.android.support:customtabs
• com.android.support.constraint:constraint-layout
• com.android.support:multidex
• com.android.support:support-emoji-appcompat
• com.android.support:preference-v7
• com.android.support:preference-v14
16
ざっくり…
・下位互換担保
・UI パーツ
が中心
ConstraintLayout
• View の位置を制約で記述
• iOS の AutoLayout と同概念
• Android Studio の Graphical Editor が便利!
17
ConstraintLayout
• View の位置を制約で記述
• iOS の AutoLayout と同概念
• Android Studio の Graphical Editor が便利!
18
ConstraintLayout
• View の位置を制約で記述
• iOS の AutoLayout と同概念
• Android Studio の Graphical Editor が便利!
19
xml 書かけなくても
View が作れる
LayoutView の登場ランキング
• ConstraintLayout:49回
• FrameLaoyut:14回
• LinearLaoyut:10回
• RelativeLayout:1回
20
LayoutView の登場ランキング
• ConstraintLayout:49回
• FrameLaoyut:14回
• LinearLaoyut:10回
• RelativeLayout:1回
21
Emoji Compat
22https://developer.android.com/guide/topics/ui/look-and-feel/emoji-compat.html
古い端末の
TextView でも
絵文字が使えるよ
うになる!
Emoji Compat(余談)
23
https://www.youtube.com/watch?v=BH33_MhxDOY
Emoji Compat(余談)
24
https://www.youtube.com/watch?v=BH33_MhxDOY
Tofu
(豆腐)
使われているライブラリ
• Network
• com.squareup.okhttp3:logging-interceptor
• 通信ログを出力
• Retrofit
• com.squareup.retrofit2:retrofit
• 通信ライブラリ
• com.squareup.retrofit2:converter-moshi
• 通信結果の json からモデル変換に変換してくれるライブラリ
• com.squareup.retrofit2:adapter-rxjava2
• 非同期通信結果を Rx(Java2) で受け取るライブラリ
25
Retrofit
26
http://square.github.io/retrofit/
API 呼び出しが少
ないコード量で行
える!
RxJava
• Java でリアクティブプログラミングをするためのライブラリ
27
RxJava
• Java でリアクティブプログラミングをするためのライブラリ
28
雑にリアクティブを
• 発信者:何かのきっかけで発信する。
• 購読者:発信を受けたら何かする。購読開始/終了ができる。
29
雑にリアクティブを
• 発信者:何かのきっかけで発信する。
• 購読者:発信を受けたら何かする。購読開始/終了ができる。
• 例)Twitter
• 発信者:朝飯なう。
• 購読者1:
• 購読者2:
30
雑にリアクティブを
• 発信者:何かのきっかけで発信する。
• 購読者:発信を受けたら何かする。購読開始/終了ができる。
• 例)Twitter
• 発信者:朝飯なう。
• 購読者1:
• 購読者2:
31
購読開始
(フォロー)
購読開始
(フォロー)
雑にリアクティブを
• 発信者:何かのきっかけで発信する。
• 購読者:発信を受けたら何かする。購読開始/終了ができる。
• 例)Twitter
• 発信者:朝飯なう。昼飯なう。
• 購読者1:
• 購読者2:
32
雑にリアクティブを
• 発信者:何かのきっかけで発信する。
• 購読者:発信を受けたら何かする。購読開始/終了ができる。
• 例)Twitter
• 発信者:朝飯なう。昼飯なう。
• 購読者1: 昼食なう。
• 購読者2: 昼食なう。
33
雑にリアクティブを
• 発信者:何かのきっかけで発信する。
• 購読者:発信を受けたら何かする。購読開始/終了ができる。
• 例)Twitter
• 発信者:朝飯なう。昼飯なう。飲み会なう。
• 購読者1: 昼食なう。
• 購読者2: 昼食なう。
34
雑にリアクティブを
• 発信者:何かのきっかけで発信する。
• 購読者:発信を受けたら何かする。購読開始/終了ができる。
• 例)Twitter
• 発信者:朝飯なう。昼飯なう。飲み会なう。
• 購読者1: 昼食なう。飲み会なう。
• 購読者2: 昼食なう。飲み会なう。
35
雑にリアクティブを
• 発信者:何かのきっかけで発信する。
• 購読者:発信を受けたら何かする。購読開始/終了ができる。
• 例)Twitter
• 発信者:朝飯なう。昼飯なう。飲み会なう。
• 購読者1: 昼食なう。飲み会なう。
• 購読者2: 昼食なう。飲み会なう。
36
購読終了
(アンフォロー)
雑にリアクティブを
• 発信者:何かのきっかけで発信する。
• 購読者:発信を受けたら何かする。購読開始/終了ができる。
• 例)Twitter
• 発信者:朝飯なう。昼飯なう。飲み会なう。二日酔いなう。…
• 購読者1: 昼食なう。飲み会なう。
• 購読者2: 昼食なう。飲み会なう。
37
購読終了
(アンフォロー)
雑にリアクティブを
• 発信者:何かのきっかけで発信する。
• 購読者:発信を受けたら何かする。購読開始/終了ができる。
• 例)Twitter
• 発信者:朝飯なう。昼飯なう。飲み会なう。二日酔いなう。…
• 購読者1: 昼食なう。飲み会なう。
• 購読者2: 昼食なう。飲み会なう。二日酔いなう。…
38
購読終了
(アンフォロー)
購読終了
(アンフォロー)
してないので表示される
RxJava
• Java でリアクティブプログラミングをするためのライブラリ
• データやイベントが流れてきて、それを加工して処理する
39
【発火】クリック!
↓(イベント通知)
【加工】 今の値を取得
↓(数字)
【加工】 :値+1
↓(数字)
【購読】:流れて来た数字で表示を更新
←イベントのコールバックで手続きを書く
←データが流れて来たら
どう加工するか記述
購読者:何を表示するか知らせてね。
(加工手順は関心がない)
【Rx】
通信で RxJava
• API 呼び出し
↓
• API レスポンス取得
↓(コールバック通知)
• レスポンスデータを DB に保存
↓(データの加工)
• View に表示を反映(購読)
40
流れ
購読者
値が変わったら、反映するから、
そのタイミングで値を教えてね。
使われているライブラリ
• Structure
• Kotshi:Kotlin での json パーサー
• Lifecycle:ライフサイクルを扱いやすくしたライブラリ
• Room:データベース。SQLite を便利にしたやつ
• RxJava:リアクティブプログラミングを実現するためのライブラリ
• DataBinding:データと View を紐付けるライブラリ(自動更新)
• PlayService.map:Google Map 表示
• Firebase:アプリを迅速に開発できるモバイルプラットフォーム
• Threetenadp:Java8 の日付周りの便利な関数が使えるライブラリ
• Kotpref:端末キャッシュの SharedPreferences を扱いやすく
41
Lifecycle(android.arch.lifecycle)
• Google I/O 2017 で発表された、よりよい設計実現のライブ
ラリの Android Architecture Components の1つ
• ライフサイクルを感知するコンポーネント
• ライフサイクルの例
• onCreate:作られた
• onResume:最前面に来た
• onPause:バックグラウンドに行った
• onDestroy:破棄された
• ライフサイクルを持つオブジェクトは LifecycleOwner
42
Lifecycle(android.arch.lifecycle)
• ライフサイクルを見て、よしなに購読 on / off してくれる
LiveData がある
• 画面回転してもデータを保持してくれる ViewModel もある
43
従来のスコープ
←ちゃんとケアしないと
画面回転時にデータが保持されなかった。。。
ViewModel に LiveData を持たしておくとよい
• 例えば人の一日
• 起きた
• 仕事始め
• 仕事終わり
• 寝た
44
Lifecycle(android.arch.lifecycle)
用事が発生着信
対応可能
発信者
購読者
• 例えば人の一日
• 起きた
• 仕事始め
• 仕事終わり
• 寝た
45
Lifecycle(android.arch.lifecycle)
用事が発生
対応可能
(購読中)
発信者
購読者
購読開始
購読終了
用があったらどうぞ!
続きはまた明日!
自分で購読開始・終了しなければいけない
(よく終了し忘れる)
• 例えば人の一日
• 起きた
• 仕事始め
• 仕事終わり
• 寝た
46
Lifecycle(android.arch.lifecycle)
用事が発生着信
対応可能
(購読中)
発信者
購読者
購読終了忘れ
帰宅したにも関わらず
電話が掛かってくる・・・
• 例えば人の一日
• 起きた
• 仕事始め
• 仕事終わり
• 寝た
47
Lifecycle(android.arch.lifecycle)
対応可能
発信者
購読者
LifecycleOwner
LiveData
LiveData を使うと
Lifecycle の状態
をみて自動で購読
開始・終了してく
れる。
購読者のライフサイクルが
変わるタイミングで
購読の開始・終了をしなくて良い!
• 例えば人の一日
• 起きた
• 仕事始め
• 仕事終わり
• 寝た
48
Lifecycle(android.arch.lifecycle)
対応可能
発信者
購読者
LifecycleOwner
LiveData
LiveData を使うと
Lifecycle の状態
をみて自動で購読
開始・終了してく
れる。
購読者のライフサイクルが
変わるタイミングで
購読の開始・終了をしなくて良い!
• 例えば人の一日
• 起きた
• 仕事始め
• 仕事終わり
• 寝た
49
Lifecycle(android.arch.lifecycle)
対応可能
発信者
購読者
LifecycleOwner
LiveData
LiveData を使うと
Lifecycle の状態
をみて自動で購読
開始・終了してく
れる。
購読者のライフサイクルが
変わるタイミングで
購読の開始・終了をしなくて良い!
• 例えば人の一日
• 起きた
• 仕事始め
• 仕事終わり
• 寝た
50
Lifecycle(android.arch.lifecycle)
対応可能
発信者
購読者
LifecycleOwner
LiveData
LiveData を使うと
Lifecycle の状態
をみて自動で購読
開始・終了してく
れる。
購読者のライフサイクルが
変わるタイミングで
購読の開始・終了をしなくて良い!
• 例えば人の一日
• 起きた
• 仕事始め
• 仕事終わり
• 寝た
51
Lifecycle(android.arch.lifecycle)
対応可能
発信者
購読者
LifecycleOwner
LiveData
LiveData を使うと
Lifecycle の状態
をみて自動で購読
開始・終了してく
れる。
購読者のライフサイクルが
変わるタイミングで
購読の開始・終了をしなくて良い!
• 例えば人の一日
• 起きた
• 仕事始め
• 仕事終わり
• 寝た
52
Lifecycle(android.arch.lifecycle)
対応可能
発信者
購読者
LifecycleOwner
LiveData
LiveData を使うと
Lifecycle の状態
をみて自動で購読
開始・終了してく
れる。
購読者のライフサイクルが
変わるタイミングで
購読の開始・終了をしなくて良い!
• Android Architecture Components の1つ
• SQLite をパワフルにしたライブラリ
• SQL 文をアノテーションで記述してシンプルなコードに!
• RxJava2 対応
• テーブルに変更があったら通知してくれる
53
Room(android.arch.persistence)
54
Room(android.arch.persistence)
←SQL はアノテーションに記述
←関数の定義だけでOK
(実体はビルド時に自動生成)
設計とデータフロー
55
ライブラリの話の途中ですが、
「設計とデータフロー」の詳細を
ここまでの部分の組み合わせ
• 例)スポンサー一覧画面
56
LifecycleOwner
• Mixi GROUP
• XFLAG
• Minimo
• Diverse
• nohana
• mericari
:
:
LiveData Room
• Mixi GROUP
• XFLAG
• Minimo
• Diverse
• nohana
• mericari
:
:
APIサーバ
RetrofitRx
Moshi
Kotshi
ここまでの部分の組み合わせ
• 例)スポンサー一覧画面
57
LifecycleOwner
• Mixi GROUP
• XFLAG
• Minimo
• Diverse
• nohana
• mericari
:
:
LiveData Room
• Mixi GROUP
• XFLAG
• Minimo
• Diverse
• nohana
• mericari
:
:
APIサーバ
RetrofitRx
Kotshi
Activity/Fragment AAC ViewModel Repository
ライブラリ名 設計上のレイヤー名
それがこの図のこと
58https://github.com/DroidKaigi/conference-app-2018#architecture
それがこの図のこと
59https://github.com/DroidKaigi/conference-app-2018#architecture
Observable/Flowable
は RxJava2 での変更通知
LiveData による変更通知
設計とデータフロー
• データは全て Result 型で扱われる
(実データはラップされている)
• Result は次の3種( seald class )
• InProgress:取得中
• Success:取得成功(実データが取れる)
• Failure:取得失敗
60
LiveData<Result>
設計とデータフロー
• ViewModel の変更通知を受けるとき
61
// 【読み込み中】
// ぐるぐる表示
// 【取得完了】
// ぐるぐるを消して
// データの処理
// 【取得失敗】
// ぐるぐるを消す
// 必要ならエラー表示
設計とデータフロー
62
• Repository ->API, Repository ->DB
• https://github.com/DroidKaigi/conference-app-2018#repository---api-repository---db
• DB ->Repository
• https://github.com/DroidKaigi/conference-app-2018#db---repository
• Repository ->ViewModel
• https://github.com/DroidKaigi/conference-app-2018#repository---viewmodel
参照下さい。
使われているライブラリ
63
話題を戻します。
Firebase
• アプリを迅速に開発できるモバイルプラットフォーム
64
https://firebase.google.com/?hl=ja
アプリ内での Firebase の使われ方
• Firestore
• マイセッション
匿名認証で個人ごとの設定を保持
• お知らせ
• Messaging
• 通知(Notification)
65
Firebase Cloud Firestore
• https://firebase.google.com/docs/firestore/quickstart?hl=ja
• クラウド上にあるデータベース
• リアルタイムで同期が可能
66
Firebase Cloud Messaging
• https://firebase.google.com/docs/cloud-messaging/?hl=ja
• アプリに通知を送ることができる
67
使われているライブラリ
• UI
• com.github.bumptech.glide:glide
• 画像表示ライブラリ
• com.xwray:groupie
• RecyclerView (リスト表示)を簡単に扱うライブラリ
• com.github.takahirom.downloadable.calligraphy
• フォント適用ライブラリ
68
使われているライブラリ
• Debug
• com.facebook.stetho:stetho
• 画面構成や端末内の情報をブラウザで見ることができるライブラリ
• com.crashlytics.sdk.android:crashlytics
• クラッシュ状況を Web で確認できるライブラリ
• com.jakewharton.timber:timber
• ログ出力を柔軟に・良い感じにできるライブラリ
• com.squareup.leakcanary:leakcanary-android
• メモリリークを検出できるライブラリ
69
Stetho
• http://facebook.github.io/stetho/
70
Crashlytics
• https://fabric.io/kits/android/crashlytics
71
クラッシュ状況がわかる
端末情報もわかる
使われているプラグイン
使われているプラグイン
• app/build.gralde(.kts) の plugins に記述されている
73
使われているプラグイン
• (標準的なモノは省略)
• org.jlleitschuh.gradle.ktlint
• Kotlin コードのスタイルチェック
• com.google.gms.oss.licenses.plugin
• 使っているライブラリのライセンス表記画面を作ってくれるライブラリ
• com.github.ben-manes.versions
• 使っているライブラリの最新版がないかチェック
• deploygate
• テスト版配信プラットフォーム
• com.github.triplet.play
• Google Play へのデプロイツール
74
Ktlint
• https://github.com/JLLeitschuh/ktlint-gradle
751行に100文字以上入っているという指摘コメントが自動で入る
oss.licenses
• https://developers.google.com/android/guides/opensource
76
この画面を自動生成してくれる
まとめ
まとめ
• 2017年以降の最新技術満載のアプリ
• 色んな最新技術を同時に学べるアプリ
(こんなに最新技術が盛り合わせのオープンソースのアプリはなかなかない!)
• ライブラリが何をやっているか把握しよう
• データの流れ(設計)を把握しよう
• 今回は Architecture Components を使った設計
• ソースが公開されているので、見てみよう・触ってみよう!
78
DroidKaigi アプリの内部を見る

Weitere ähnliche Inhalte

Ähnlich wie DroidKaigi アプリの内部を見る

【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
Developers Summit
 
試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift
Etsuji Nakai
 
Code4Lib 2010報告会・発表ダイジェスト
Code4Lib 2010報告会・発表ダイジェストCode4Lib 2010報告会・発表ダイジェスト
Code4Lib 2010報告会・発表ダイジェスト
Masao Takaku
 
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
.NET最先端技術によるハイパフォーマンスウェブアプリケーション.NET最先端技術によるハイパフォーマンスウェブアプリケーション
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
Yoshifumi Kawai
 
Code4Lib Conference 2012 : 参加報告 ( 常川真央 )
Code4Lib Conference 2012 : 参加報告 ( 常川真央 )Code4Lib Conference 2012 : 参加報告 ( 常川真央 )
Code4Lib Conference 2012 : 参加報告 ( 常川真央 )
Code4Lib JAPAN
 

Ähnlich wie DroidKaigi アプリの内部を見る (20)

DevOps on Azure Kubernetes
DevOps on Azure KubernetesDevOps on Azure Kubernetes
DevOps on Azure Kubernetes
 
Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)
Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)
Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)
 
Isomorphic web development with scala and scala.js
Isomorphic web development  with scala and scala.jsIsomorphic web development  with scala and scala.js
Isomorphic web development with scala and scala.js
 
INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~
INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~
INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~
 
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
 
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
 
【de:code 2020】 Azure Kubernetes Service と Azure DevOps による GitOps の実践
【de:code 2020】 Azure Kubernetes Service と Azure DevOps による GitOps の実践【de:code 2020】 Azure Kubernetes Service と Azure DevOps による GitOps の実践
【de:code 2020】 Azure Kubernetes Service と Azure DevOps による GitOps の実践
 
MLflowで学ぶMLOpsことはじめ
MLflowで学ぶMLOpsことはじめMLflowで学ぶMLOpsことはじめ
MLflowで学ぶMLOpsことはじめ
 
試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift
 
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
 
Azure serverless!! azure functionsでサーバーを意識しない開発
Azure serverless!! azure functionsでサーバーを意識しない開発Azure serverless!! azure functionsでサーバーを意識しない開発
Azure serverless!! azure functionsでサーバーを意識しない開発
 
Code4Lib 2010報告会・発表ダイジェスト
Code4Lib 2010報告会・発表ダイジェストCode4Lib 2010報告会・発表ダイジェスト
Code4Lib 2010報告会・発表ダイジェスト
 
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
.NET最先端技術によるハイパフォーマンスウェブアプリケーション.NET最先端技術によるハイパフォーマンスウェブアプリケーション
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
 
Dockerだけではないコンテナのはなし
DockerだけではないコンテナのはなしDockerだけではないコンテナのはなし
Dockerだけではないコンテナのはなし
 
新しいOpenShiftのしくみを調べてみた
新しいOpenShiftのしくみを調べてみた新しいOpenShiftのしくみを調べてみた
新しいOpenShiftのしくみを調べてみた
 
OSS on Azure で構築するウェブアプリケーション
OSS on Azure で構築するウェブアプリケーションOSS on Azure で構築するウェブアプリケーション
OSS on Azure で構築するウェブアプリケーション
 
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
 
Code4Lib Conference 2012 : 参加報告 ( 常川真央 )
Code4Lib Conference 2012 : 参加報告 ( 常川真央 )Code4Lib Conference 2012 : 参加報告 ( 常川真央 )
Code4Lib Conference 2012 : 参加報告 ( 常川真央 )
 
モバイルアプリ開発者にも知ってほしい Microsoft AzureのDatabase as a Service
モバイルアプリ開発者にも知ってほしい Microsoft AzureのDatabase as a Serviceモバイルアプリ開発者にも知ってほしい Microsoft AzureのDatabase as a Service
モバイルアプリ開発者にも知ってほしい Microsoft AzureのDatabase as a Service
 
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
 

Mehr von 健一 辰濱

Mehr von 健一 辰濱 (20)

地方創生ワカモノ会合
地方創生ワカモノ会合地方創生ワカモノ会合
地方創生ワカモノ会合
 
Google Analytics のデータ分析ハンズオン
Google Analytics のデータ分析ハンズオンGoogle Analytics のデータ分析ハンズオン
Google Analytics のデータ分析ハンズオン
 
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
 Sansan Tech Meetup Androidエンジニアが振り返る Google I/O   Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
 
知っておきたいFirebase の色んな上限について
知っておきたいFirebase の色んな上限について知っておきたいFirebase の色んな上限について
知っておきたいFirebase の色んな上限について
 
Android 開発の昔と今
Android 開発の昔と今Android 開発の昔と今
Android 開発の昔と今
 
Firebase Extensions はじめの一歩
Firebase Extensions はじめの一歩Firebase Extensions はじめの一歩
Firebase Extensions はじめの一歩
 
GDG DevFest Tokyo 2019 Day2 Special Hands-on
GDG DevFest Tokyo 2019 Day2 Special Hands-onGDG DevFest Tokyo 2019 Day2 Special Hands-on
GDG DevFest Tokyo 2019 Day2 Special Hands-on
 
Firebase Summit 2019 Recap
Firebase Summit 2019 RecapFirebase Summit 2019 Recap
Firebase Summit 2019 Recap
 
Cloud Firestore を使って、Polling をやめたい話
Cloud Firestore を使って、Polling をやめたい話Cloud Firestore を使って、Polling をやめたい話
Cloud Firestore を使って、Polling をやめたい話
 
Firebase hands on in Matsuyama
Firebase hands on in MatsuyamaFirebase hands on in Matsuyama
Firebase hands on in Matsuyama
 
インドのインターネット環境 との戦い方
インドのインターネット環境との戦い方インドのインターネット環境との戦い方
インドのインターネット環境 との戦い方
 
インドの低速なネットワーク環境の攻略法
インドの低速なネットワーク環境の攻略法インドの低速なネットワーク環境の攻略法
インドの低速なネットワーク環境の攻略法
 
DroidKaigi 2018 参加報告会 Closing
DroidKaigi 2018 参加報告会 ClosingDroidKaigi 2018 参加報告会 Closing
DroidKaigi 2018 参加報告会 Closing
 
企業スポンサー
企業スポンサー企業スポンサー
企業スポンサー
 
参加したセッションの ピックアップ
参加したセッションのピックアップ参加したセッションのピックアップ
参加したセッションの ピックアップ
 
CFP(Call For Paper) を出す話
CFP(Call For Paper)を出す話CFP(Call For Paper)を出す話
CFP(Call For Paper) を出す話
 
DroidKaigi 2018 参加報告会
DroidKaigi 2018 参加報告会DroidKaigi 2018 参加報告会
DroidKaigi 2018 参加報告会
 
Java で書かれた Android アプリに Kotlin を適用させていく
Java で書かれた Android アプリに Kotlin を適用させていくJava で書かれた Android アプリに Kotlin を適用させていく
Java で書かれた Android アプリに Kotlin を適用させていく
 
20171209エンジニアの移住相談会 自己紹介スライド
20171209エンジニアの移住相談会 自己紹介スライド20171209エンジニアの移住相談会 自己紹介スライド
20171209エンジニアの移住相談会 自己紹介スライド
 
Java で書かれたAndroid アプリに Kotlin を適用させていく
Java で書かれたAndroid アプリに Kotlin を適用させていくJava で書かれたAndroid アプリに Kotlin を適用させていく
Java で書かれたAndroid アプリに Kotlin を適用させていく
 

DroidKaigi アプリの内部を見る