個人的なメモや感想です。まだ全部に目を通しきれてないです...
公式サイト:http://droidkaigi.github.io/
※マテリアルデザインなサイトですね。
twitter:https://twitter.com/DroidKaigi
facebook:https://www.facebook.com/DroidKaigi
togetter:http://togetter.com/li/812559
カンファレンスアプリ:https://play.google.com/store/apps/details?id=com.droidkaigi.conference2015s
公式サイト:http://droidkaigi.github.io/
※マテリアルデザインなサイトですね。
twitter:https://twitter.com/DroidKaigi
facebook:https://www.facebook.com/DroidKaigi
togetter:http://togetter.com/li/812559
カンファレンスアプリ:https://play.google.com/store/apps/details?id=com.droidkaigi.conference2015s
— こんそめ (@consomme72) 2015, 4月 24
先入した。DJがいて勉強会らしからぬ雰囲気 #DroidKaigi
— meco300(ハピネス中毒) (@meco300) 2015, 4月 25
コードの臭いがするセッションが多いのが他のイベントと違うよ #DroidKaigi
— Yoshiaki NAKANISHI (@chun_ryo) 2015, 4月 25
Activity, Fragment, CustomView の使い分け -マッチョなActivityにさよならする方法-
基調講演 (開発テクニック) あんざいゆきあんざいゆきさんによる基調講演です。 #DroidKaigi
Posted by DroidKaigi on 2015年4月24日
やんざむさんのコンタクトアプリ .javaの数がAndroid2.3では64ファイル、4.0.1では269ファイル、5.0.1で300ファイルと増えていった。すべてをActivityに書いていたら破綻していく! #DroidKaigi
— すんでぶ (@ksksue) 2015, 4月 25
#DroidKaigi AとBに壁が
— synqark.apk (@synqark) 2015, 4月 25
開発を効率的に進めるられるまでの道程
@cattaka_net■概要
Androidアプリケーション開発でテストコードが無い状態から書き始めるまでにどのようなことを行うかをお話しします。
Androidアプリケーション開発では様々なツールや仕組みを使うことができます。JUnitでテストコードを書けることはもちろんのこと、UIテストを便利にするEspresso、JVMでのテストの実行を可能にするRobolectricなど便利なツールやライブラリがあり、これらを使わない手はありません。そしてテストコードがあればJenkins等でCIを使い、開発をより効率的に進められるようになります。
しかしながら、テストコードを書くことはCIを使った自動化による開発効率の向上の第一歩でありながら最初の壁となっています。これはテストコードを書きながら成長したプロダクトはともかく、後からテストコードを書くことは非常に困難だからです。
テストコードを書くには残念ながらプロダクトのコードにある程度の配慮が必要になります。このため後からテストコードを書くときには様々なリファクタリングが必要になります。それらの対象は通信処理、データベース、プリファレンスなど様々で、ときにはコードの大きな構造変更が必要になる事もあります。
このような問題について、どのようにすれば後からユニットテストを書くことが巧くいくのか、経験を元にそれらアプローチ方法を紹介します。
■対象者
テストコードを書きたい初級〜中級のアプリ開発者
- アプリの開発効率化について
- JUnitでのテストがボトルネックになる
- テストを書くに至った経緯
- 開発途中からテストを導入する話
- ひたすらテストを書く
-
- どうやって差し替えるか
- まずはテストを書くところから始める
- サンプルアプリ:cattaka/FastCheckList
絶対落ちないアプリの作り方
白山 文彦なぜあなたのAndroidアプリはクラッシュするのでしょうか。Androidで最も重要な概念はライフサイクルと非同期処理に関する厳密な理解です。何を当たり前のことをと言われそうですが、実に多くの方がこのことを本当に理解しているのか疑わしいコードを書いてしまいます。
ActivityやFragmentのライフサイクルと陥りやすい罠、よく利用される非同期処理ライブラリであるAsyncTaskとLoaderの違いと使いどころ、Serviceからのコールバックなどを通じて、いくつかのタブーを犯さないようにするとアプリは驚くほど安定します。
非同期処理のコールバックでFragmentTransactionを伴う処理でのクラッシュなど、Android開発者が1度は陥ったことのあると思われる実例を挙げながら、クラッシュしづらいAndroidアプリについて考察します。
- サンプルコード:srym/DroidKaigiSample
- ActivityでIntentの中身を保存しわすれてクラッシュ
- 開発者向けオプション
- アクティビティを保存しないにチェックで漏れを検知できる
- Androidの非同期ライブラリ
- Activityより長生きする(クラッシュの罠)
- AsyncTask
- 長くて数秒の非同期処理のみ使うことを推奨されている
- AsyncTaskLoader
- 画面回転等でも非同期処理を引き継げるような書き方が簡単にできる
- Context
- Fragment
- インスタンスにsetしない
- リスナもsetできない
- 静的解析のチカラを借りる
ゲームアプリケーションのアップデートサイクル
飯塚健太郎(@iizukak)「いかにして開発するか」も重要ですが,「いかにして運用するか」も同様に重要な課題です.数百万人規模のユーザを抱えるゲームアプリの運用を担当するエンジニアが,アプリのアップデートサイクルの実状をお話します.
アップデートのためのスケジュールは? いかにして障害を防ぐのか? コードレビューは? テストは? アプリのクラッシュをどう把握するか? レガシーOSを切り捨てられるのか?
日頃あまり明かされない「運営」の舞台裏をちらっとお見せしたいと思います.
- クラッシュレポートコレクターになろう
- リリース後はクラッシュレポートでユーザの手元で起ったクラッシュを監視
- Developer Consoleのクラッシュレポートはあまり参考にならない
- クラッシュレポートツールを使う
新言語KotlinでAndroidプログラミング
長澤 太郎 (@ngsw_taro)■趣旨
あのJake Whartonも注目するAndroidのSwiftと名高いKotlinを紹介します!
ゴールは、Kotlinという新しい言語を使って楽しく簡単にAndroidアプリ開発したい!と思ってもらうこと。
■対象者
Android: 初心者〜
Java: 中級者〜
■目次
・Kotlinの概要
Kotlinは2011年にIntelliJ IDEAなどで有名なJetBrains社により発表されたプログラミング言語です。
Java仮想マシンやJavaScriptに加えて、Androidがターゲットです。
誕生のモチベーションは、Javaや既存のJVM言語(Groovy, Scalaなど)に満足できないことです。
Kotlinの特徴を列挙すると、シンプル、安全、Javaとの完全な相互運用性、Javaと同等以上のコンパイル速度、オブジェクト指向などです。
シンプル: 文法や記法そのものが簡潔です。また、高階関数やラムダ式などによるモダンなスタイルのコーディングが可能です。
安全: 型安全性がJavaよりも強いです。Null安全と呼ばれるNPEが起こらないユニークな仕組みをサポートしています。
Javaとの完全な相互運用性: 既存のJavaコードをKotlinから呼び出すことも、その逆もできます。
Javaと同等以上のコンパイル速度: JetBrainsが掲げているKotlinの目標のひとつです。Scalaを意識していると思われます。
オブジェクト指向: Javaプログラマには親しみやすいです。トレイト、プロパティ、委譲などJavaにはない多くの機能があります。
・文法、機能
Javaとの対比をしたり、Androidにおける例を交えながら文法と言語機能を紹介します。
特に関数、クラス、Null安全を詳しく取り挙げます。
各トピックの主なキーワード↓
関数: 高階関数やラムダ式、メソッド参照、関数型
クラス: 継承・トレイト、委譲、プロパティ、拡張メソッド、ジェネリクス
Null安全: Null許容型(Nullable)、非Null型(NotNull)、PlatformType
・ライブラリの活用
Kotlin + Android用ライブラリの紹介をします。
KotterKnife: Kotlin版ButterKnife。作者はJake。ViewInjectionライブラリ。
RxJava(RxAndroid): RxのJVM実装。ことりんとの相性はいいかも。
- Kotolinとは
- Better Java
- 2011年夏にJetBrainsにより発表
- サポート
- JVM言語
- altJS
- Android
- 静的型付けオブジェクト指向言語
- Javaと比べる
ARTのメモリ管理
@haru067Android 5.0では,ARTという新しいランタイムがDalvik VMに替わって搭載されました.
ARTはDalvik VMと比べてメモリ管理で多くの変更があり,マルチコアCPUに向けた並列GCや,並行メモリ割当てに対応した独自のメモリアロケータ,世代別GCなどが新たに実装されています.
本セッションでは,ARTの登場によってメモリ管理がどう変わるのかを説明し,
メモリ管理が変わることでアプリケーション開発者にどのような影響があるのか,
例えば,
「どういったタイミングでどのようなGCが発生するのか」
「その際のGCによるアプリケーションの停止時間はどの程度なのか」
「デフラグなど,メモリの利用効率はどうなのか」
といったことについて話したいと思います.
対象者については,メモリ管理に関する基礎知識があると理解し易いと思いますが,
知識が無い人でも問題ないよう説明したいと考えています.
アプリを公開する前に、最低限知っておきたいセキュリティ事項
Gaku Taniguchiセキュリティホールがあるアプリケーションをを作らないようにするために、やりがちな例をあげながら、その対応策について解説致します。
また、不正のないアプリがマルウェアに間違われる事、他人の作成したライブラリを使用したために、意図せずマルウェアになってしまう事もあります。
個人情報の取扱い等、知っているだけで防げる例が数多く存在します。
アプリを公開する人に最低限知ってもらいセキュリティに関する事項をお話します。
- Tao RiskFinder
- apkファイルをアップロードするだけで脆弱性レポートが作成される
- セキュリティの学習方法
- 2冊の本
- AnCoLe(IPA無料Eclipseプラグイン)
- Androidアプリの開発者を対象とした、脆弱性が作り込まれてしまう原因や対策について実習形式で学べるツール
- 学習コンテンツ
- 読み物
- 脆弱性アプリに対する攻撃実習
- 点検機能(脆弱性の点検)
- 最低限知っておきたいこと
- アクセス制限不備
- ファイル
- コンポーネント
- SSL通信実装の不備
- 第三者モジュール
- 他者が作ったライブラリ
- ライセンス感染
- アプリのコードの公開の必要が出てくる
- 商用で使えないとか
- 脆弱性感染
- ライブラリに脆弱性がある
- 例)FacebookSDKが意図しないログを出力しちゃう
- マルウェア感染
- マルウェア認定されている広告モジュール
- アプリもマルウェア認定される
- 例)広告モジュールが電話帳を参照して勝手にサーバへ送信
- どんな広告モジュールを使えばいいか?
JellyBeanとKitKatで実現するマテリアルデザイン
androhiAndroid5.0から採用されたマテリアルデザインですが、Android5.xとAndroid4.xで同じように実装することが出来ません。原因としては、Android5.xからしか使えないAPIやAttributesが多く存在し、それがマテリアルデザインの実装の根幹に関わっているためです。後方互換としてSupportLibraryを使用することで、ToolbarやRecyclerView/CardViewといった代表的なUIは、ほぼ同じように使えるようになっています。
ところが、マテリアルデザインのガイドラインを参考にアプリを開発していくと、様々なUIでカスタマイズが必要になってきます。とりわけAndroid4.x(JellyBean/KitKat)では、それが顕著に現れます。
セッションでは、それらをどうのように実現するのか実例を交えて紹介することで、これからマテリアルデザインを取り入れたいと考えている開発者の方に、実装のイメージやコスト感を得る参考になるような内容を考えています。
- 段階的なMaterialDesignの導入
- AppCompatテーマを適用する
- colorPrimaryやcolorAccentのやつ
- AppCompatActivityを使う
- ActionBarActivity is dead (公式のGoogle+)
- UI Componentが置き換わる
- AlertDialog
- android.support.v7.AlertDialog
- AppCompatButton
- android.support.v7.widget.AppCompatButton
- AppCompatCheckBox
- AppCompatRadioButton
- AppCompatRatingBar
- AppCompatTextView
- AppCompatEditText
- AppCompatSpinner
- SearchView
- など
- 新しいInterpolatorを使う
※これはGoogleのYoutubeでLive配信されたイベントでもGoogleの人が言ってた。例えばFloating Action Buttonは5.x系にしかないけど、オレオレボタンを作ってもいいんですかね。
- Android 4.xでは頑張らない
- 統一された 体 験 を可能にする
とのことで、見た目は同じにしなくてもいいのかな。まあアニメーションのないオレオレボタンは作ってNote Linkerというアプリに入れたんですけども。
参考:android - Materialデザインのボタンはどうやって実装したらよいでしょう? - スタック・オーバーフロー
参考:android - Materialデザインのボタンはどうやって実装したらよいでしょう? - スタック・オーバーフロー
Material Designを取り入れたデザインリニューアル
ninjinkun, yuki930"フリマアプリFrilのデザインリニューアル(Google Play Best App 2014受賞)を事例として、Material Designをどのようにアプリに組み込むかについて、デザイナーとエンジニア両名で発表します。以下のトピックについてお話しする予定です。
- プロトタイピング
- ユーザーテスト
- Material Designガイドラインに準拠した箇所と、あえて破っている箇所
- 日本語のアプリでMaterial Designをどう見せるか
- アイコンの設計
- 配色の設計
- ActivityとFragmentの分離
- タブレット対応
- Scroll to fullscreen
- 5.0と4.4以下のMaterial Design実装の違い
- 使っているライブラリの紹介"
- リニューアルの流れ
- Material Design on Android Checklist(GoogleのYoutube Live配信でも紹介されてたやつ)
- 手触りのある表面表現
- 印刷物デザインの応用
- 装飾ではなく意味を伝える動き
- 画面サイズの変化に適用するデザイン
- feedlyの事例
- デザインルール
- IcoMoonでアイコンフォント化
- アイコンフォントとは? via http://gatespace.jp/2014/02/27/icon-fonts-201402/
- メリット
- フォントなのでテキストとのベースラインが合わせやすい
- フォントなので拡大縮小はcssのfont-sizeで指定出来る
- フォントなのでcssで簡単に色を変えられる
- ベクターデータなので背景色があるときなどのエッジの処理を気にしなくていい。
- デメリット
- 単一の画像よりは一度に複数のアイコンデータを読み込むので、データ量が多くなる(重くなる)というのがあります。
- ※ここではアイコンフォントを使うことでアプリの容量を減らせてるとのこと
- こういうのも最初から定義しておいた方良さそう...
- ボタンの整備
- 影もdrawableで書いていたが、1dp単位で書いていたので荒すぎた
- 影をdrawableで必死で書くのは不毛
- 影の背景画像を使う
- Support Libraryがない状況でのマテリアル対応
- Floating Action Buttonはボタンを置くだけ
- Scroll to Full Screen
- ScrollViewやListViewのAPIを調べて頑張って実装
- Androidの進化のタイミングはチャンス
- いち早いキャッチアップはBestAppへの近道
- ※なかなか難しいですね...
僕らのデータ同期プラクティス
Nkzn"ユーザーがどんな場所にアプリを持っていこうと、私達はそれを制止できません。自分たちのWebサービスを携帯網もWi-Fiもない場所でも使ってほしいと思ったとき、私たち開発者には何ができるでしょうか。
GmailアプリやEvernoteアプリのように、オフライン時に閲覧・作成・編集されたデータをサーバーと同期させるための仕組みが、Androidには用意されています。
ただ、サーバーと同期する際のアルゴリズムについては開発者任せです。
自社サービスでの実例を挙げながら、サーバー側も視野に入れて同期アルゴリズム作成の観点を紹介します。"
- 自社アプリをオフライン化
- 2013年スタイル
- AlarmManagerで定期的に実行→Intent
- IntentService
- データをダウンロード
- つらみ
- AlarmManager時々消える
- マルチスレッドでDB叩く状態
- など
- Androidが提供するデータ同期機能
- AccountAuthenticator + SyncAdapter + ContentProvider
- mixi-inc/AndroidTrainingでSyncAdapterの勉強
Android と SELinux
androidsola"Android 4.4 から有効化された SELinux は Android 5.0 で適用範囲が拡大されています。
Android 開発者は SELinux を知らないと適切なセキュリティポリシーの設定が出来ず、予期しない動作やセキュリティの甘い Android を作ってしまう事に繋がる可能性があります。
過去、Linux のインストール直後に無効化される事が多かった SELinux ですが、Android 開発においては無効化は通用せず、真剣に SELinux に向き合う時が来てしまいました。
しかし Android + SELinux に関する情報は多くありません。(特に日本語の情報)
そこで、これまで Android をカスタマイズしてきた経験の中で遭遇した内容や、調べてきた内容を共有したいと考えています。
対象は Android を使用した製品の開発者や Android のカスタマイズを趣味等で行っている開発者を想定しています。
Android 5.0 からは一般の Android アプリケーションに対してもセキュリティポリシーの定義が有効になっているので、アプリケーション開発者も知っていると良いかもしれません。"
結論
- スライドだけ見るの辛い
コメント
コメントを投稿