Skip to content

Instantly share code, notes, and snippets.

@konifar
Created January 14, 2017 16:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save konifar/3b3b4fdc039b7cc6127b47418f9fec0d to your computer and use it in GitHub Desktop.
Save konifar/3b3b4fdc039b7cc6127b47418f9fec0d to your computer and use it in GitHub Desktop.
DroidKaig2017 sessions json sample
[
{
"id": 1,
"title": "ウェルカムトーク",
"description": "",
"speaker": {
"id": 1,
"name": "mhidaka",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-09 10:00:00",
"etime": "2016-03-09 10:20:00",
"category": {
"id": 1,
"name": "ウェルカムトーク"
},
"room": {
"id": 1,
"name": "Room1"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 2,
"title": "マッチョActivityを改善した話",
"description": "pairs(https://play.google.com/store/apps/details?id=jp.eure.android.pairs&hl=ja)でマッチョActivityを改善した話をします。\nざっくりと、pairsは以下のような不健康な状態でした。\n- 1000行超えActivity/Fragment\n- Viewのコードとビジネスロジックが交じり合うActivity/Fragment\n- staticメソッド群で実装されたApiClient/DataAccessObject\n\nこのような状況で様々な問題に悩まされていました。\n- どこになにが書いてあるのか分からない\n- 手を加えたら思わぬところに影響がでた\n\n*本発表ではアーキテクチャに関する詳細な解説等は行いません。\nマッチョActivityを潰すためにどのように手を付けていったのか、進めていったのかをメインに話します。\n\n目次(予定)\n- pairsについて\n- 改善前のpairs\n- 改善の準備\n - ActiveAndroid->Orma/Retrofit 1->2\n- 改善\n - Model\n - View",
"speaker": {
"id": 2,
"name": "lvla0805",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-09 10:40:00",
"etime": "2016-03-09 11:30:00",
"category": {
"id": 2,
"name": "設計・開発手法"
},
"room": {
"id": 1,
"name": "Room1"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 3,
"title": "How to apply DDD to Android Application Development",
"description": "MVPだのクリーンアーキテクチャだのさまざまなアーキテクチャをAndroidに適用してみた話が花盛りですが、\n他のプラットフォームでうまくいったアーキテクチャをAndroidに適用してうまくいくでしょうか?\nアーキテクチャが何を目的としたものなのか正しく理解せずに、技術的なパターンだけ適用してうまくいくでしょうか?\n\nこのセッションでは特定のアーキテクチャではなく、ソフトウェア開発手法・設計理論であるDDD(Domain Driven Design : ドメイン駆動設計)をAndroidアプリ開発に取り入れる方法について話します。\nDDDの内容については「エリック・エヴァンスのドメイン駆動設計」及び「実践ドメイン駆動設計」に準拠します。\n\n対象者\n- DDDについて正しく理解したい人\n- 特定のアーキテクチャの技術的パターンだけを適用することに疑問を感じる人",
"speaker": {
"id": 3,
"name": "あんざいゆき(yanzm)",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-09 10:40:00",
"etime": "2016-03-09 11:30:00",
"category": {
"id": 2,
"name": "設計・開発手法"
},
"room": {
"id": 3,
"name": "Room3"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 4,
"title": "逆引き マテリアル デザイン",
"description": "マテリアル デザインが Google I/O 2014 で発表されてから 3 年近くが過ぎ、今では多くの有名アプリがマテリアル デザインに沿った UI/UX を提供するようになっています。一般の Android ユーザーも当然のようにマテリアル デザインに沿った体験を期待しています。\n本セッションでは、マテリアル デザイン ガイドライン (material.google.com) と実際の実装の間に架け橋を築きます。ガイドラインの背景となる考え方を踏まえた上で Android アプリでマテリアル デザインを実装する際の指針を提案し、プラットフォームやサポート ライブラリの各コンポーネントとマテリアル デザイン ガイドラインの関係について議論します。また、Android マテリアル デザイン サポート ライブラリの開発エンジニアの一人として、古いプラットフォームも念頭に入れた実際の実装方法についてお話します。\nあくまでエンジニア目線のセッションですが、UI/UX を形にしていく上での考え方を知りたいデザイナーにも役立つようにお話します。より良い UI/UX を実現するための具体的な観点を抑えた上で、それらを実際のアプリにするための技術を見ていきます。",
"speaker": {
"id": 4,
"name": "荒木佑一",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-09 10:40:00",
"etime": "2016-03-09 11:30:00",
"category": {
"id": 3,
"name": "UI・デザイン"
},
"room": {
"id": 4,
"name": "Room4"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 5,
"title": "Data binding in the real world",
"description": "Data binding is not yet widely used by Android developers, and those who do use it seem to limit themselves to just replacing findViewById. However, the possibilities of data binding are endless, and with the right architecture, your code can be much cleaner and a lot easier to understand.\nThis talk begins with explaining the basics of data binding, and then quickly moves on to more advanced techniques/functions.\n-------\nI find that data binding on Android has not gotten enough coverage, and the articles and talks that do appear are very basic and not based on real life usage. I want to make Android developers realize that there is a lot more to data binding than what they have been able to read so far and explain how to architect an app with data binding in mind.",
"speaker": {
"id": 5,
"name": "Kevin Pelgrims",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-09 10:40:00",
"etime": "2016-03-09 11:30:00",
"category": {
"id": 2,
"name": "設計・開発手法"
},
"room": {
"id": 5,
"name": "Room5"
},
"language_id": "en",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 6,
"title": "minneにおけるテスト〜リリース〜リリース後にやっている事の紹介",
"description": "■対象者\n初級〜中級者\nテストやリリース周りの仕組を整備していきたいと考えている人\nリリース後のクラッシュ対応、レビュー対応について検討している人\n\n\n■概要\n僕が所属しているminneではAndroidチーム3人で開発しています。\n複数人数で安定的にアプリをリリースしていく為には、テスト〜リリースまでの仕組を整える事が必要になってきます。\nまた、レビューの良い評価を維持していくために、レビューの対応についても実際にやってきた事を含めながらお話していきます。\n\n具体的には、以下の内容を発表します。\n\n- リリースフローにテストをどう組み込んでいるか。\n- テストの種類\n - 自動的テスト\n - Unit test\n - UI test\n - CI\n - 手動テスト\n - 手作業による検証\n- 構築しているCI環境の仕組紹介\n - Drone.io\n - DeviceFarm\n - Slack\n- リリース前の検証について\n - リリース担当\n - 検証シート作成\n - DeployGate\n- リリース\n - 段階的公開\n - Crashlytics\n- リリース後\n - クラッシュ監視\n - レビューの監視\n - レビュー返信の体制",
"speaker": {
"id": 6,
"name": "mapyo",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-09 11:50:00",
"etime": "2016-03-09 12:20:00",
"category": {
"id": 4,
"name": "メンテナンス"
},
"room": {
"id": 1,
"name": "Room1"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 7,
"title": "Android Security 最前線!!",
"description": "■対象\nAndroid 初級者〜中級者\n\n■内容\nAndroid N になり、様々なSecurity関連のアップデートがありました。DirectBoot, KeyAttestation, NetworkSecurityConfig, ScopedDirectoryなど。\n本セッションでは、AndroidSecurityの観点で、 API の紹介やその使用方法から、今のAndroidアプリセキュリティのベストプラクティスを考察します。また、Framework内でのアップデート、SelinuxやSignature関連もご紹介します。\n\n■構成\n* Android Security の概要\n* Android N Security APIの紹介\n* 実際の開発でのノウハウ\n* Android Framework の最新Security事情 \n\n■本セッションに関連する話題\n* Android Security\n* AndroidFramework",
"speaker": {
"id": 7,
"name": "Naoki Yano",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-09 11:50:00",
"etime": "2016-03-09 12:20:00",
"category": {
"id": 4,
"name": "メンテナンス"
},
"room": {
"id": 3,
"name": "Room3"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 8,
"title": "リリース自動化と効率のよいリリースフローを求めて",
"description": "Androidアプリのリリース自動化を導入したことによるメリットをお話したいと思っています。\n対象者:特にレベルは問わないです。リリース作業が面倒だと感じている人にはおすすめできると思っています。\n\nリリース自動化に関する知見は一部の人は持っていますが、実際に実行に移したり導入に際しての障壁などを経験していらっしゃる方は少ないようにも思えます。\n\n大企業・スタートアップを問わず、リリース自動化によって受けられる恩恵は大きいのでその知見を共有することで、自動化についての知見が増えていけば、と思っております。\n\nまた、自社で開発しているアプリは国内では珍しいほどに海外比率が高いため、途上国向け開発をしてる上でなぜリリース自動化が非常に有効だったのかをお伝えできればと思っております。\n\nトーク内容:\nリリース自動化に使うツールの紹介\n実際に使っているツールとそのツールを選んだ理由\n導入方法を詳細に説明\n実際にアプリの配信を自動で行ってみる\n自社リリースフローの紹介\nどういったことが大幅に解消されたかの紹介\n多言語化対応時やAndroidアプリを途上国向けに展開するうえでリリースの自動化が生きた場面の紹介\nなどについて発表させていただきたいと思っています。",
"speaker": {
"id": 8,
"name": "Ryo Sakaguchi",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-09 11:50:00",
"etime": "2016-03-09 12:20:00",
"category": {
"id": 5,
"name": "開発環境・ツール"
},
"room": {
"id": 4,
"name": "Room4"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 9,
"title": "Don't reset --hard: Strategies for Tackling Large Refactors",
"description": "How many times have you started an ambitious refactor only to get lost and end up doing a git reset --hard? Android libraries are updated constantly, sometimes with breaking changes, and it can be tough to keep up. Maybe you want to try several new technologies at once as part of your refactor. This talk will teach you some techniques for refactoring your code in a way that makes you not get so overwhelmed that you have to start over.\n\n\nThis talk will focus on a refactoring strategy made popular by Sandi Metz, a prominent figure in the Ruby community. Even though writing code for Android is quite different from writing Ruby, the same techniques can be applied towards tackling a large refactor in any language or framework. I will discuss concepts such as “shameless green” (keeping a green test suite or other sanity check as you refactor), and detail how layering on your refactor in stages can be extremely effective in keeping you on track and moving you closer to your goal without breaking everything. It can be hard to keep up with new Android technologies, but a good refactor can be a great introduction to a new library or concept. This talk will contain a practical example of a refactor that introduces several new technologies to an existing Android app.",
"speaker": {
"id": 9,
"name": "Siena Aguayo",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-09 11:50:00",
"etime": "2016-03-09 12:20:00",
"category": {
"id": 2,
"name": "設計・開発手法"
},
"room": {
"id": 5,
"name": "Room5"
},
"language_id": "en",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 10,
"title": "インスペクションとAndroid Lint Custome Ruleによる、単一責任実装の実践",
"description": "■対象者\n初級者〜中級者\n・メソッドが複雑にならないよう実践したい方\n・Android Lint の Custom Rule と静的コード解析について理解したい方\n\n■概要\nTDDやDDDが喧しい昨今、コード実装の「単一責任の原則(SRP)」意訳⇒シンプル化が求められています。\n\nAndroid Studio には、インスペクションという強力なソース解析(指摘)機能があることをご存知と思います。\n問題点のある実装部をエディタ上でハイライト表示したり、「Analyze」メニューの'Inspect Code...'により、指摘一覧を「Inspectionツールウィンドウ」でカテゴリ別にリストアップもしてくれます。\n独自の単一責任チェックのインスペクションが欲しいと思われていませんか。\n\n実は、Android Studio のインスペクションには、Android Lint も利用されているのです。\n\nAndroid Lint は、独自の Custom Rule を作ることができます。\nそして Custom Rule を作るためにAST(抽象構文木)を使ったJavaソースコードの静的解析機能も提供されています。\nこの静的解析機能を利用した、単一責任となるシンプルな実装パターンを強制するオリジナルの Android Lint Custome Rule の\n作成(方法)を中心にお話を進め、Android Studio での単一責任実装の実践(利用方法)について発表したいと思います。",
"speaker": {
"id": 10,
"name": "robo",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-09 12:40:00",
"etime": "2016-03-09 13:10:00",
"category": {
"id": 5,
"name": "開発環境・ツール"
},
"room": {
"id": 1,
"name": "Room1"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 11,
"title": "Androidリアルタイム通信アプリ作成Tips",
"description": "ユーザが能動的に画面をリロードすることなく更新されていくリアルタイム通信型のアプリケーションはユーザに連続的な体験を提供することができます。\n本セッションではスピーカーが過去に業務で利用したことのある次の3つのリアルタイム通信基盤を紹介し、それぞれの特徴や得意なこと不得意なことを紹介します。\n・Socket.io (WebSocket)\n・Firebase Realtime Database\n・Realm Mobile Platform\nまた、リアルタイムに画面を更新する際のちょっとしたテクニックやTipsも合わせて解説します。",
"speaker": {
"id": 11,
"name": "fushiroyama",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-09 12:40:00",
"etime": "2016-03-09 13:10:00",
"category": {
"id": 5,
"name": "開発環境・ツール"
},
"room": {
"id": 3,
"name": "Room3"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 12,
"title": "エラーと戦うためのデバッグ法",
"description": "対象:初心者以上\n\n 効率的に開発を進めるにあたり、欠かせないと言えるのがデバッグ作業かと思います。コード上ではエラー表示がなかったとしても、いざビルドを行えばエラーログが出力され、インストールに漕ぎ着けてもアプリを動かせば不具合が起き得ます。修正をするためには、その問題が何故どうして起きたのか、原因を特定する必要があります。\n Androidの開発では、開発環境のAndroidStudioに強力なデバッガが備わっています。また、各種ライブラリなどを利用することで、様々な角度からアプリの状態をチェックし、開発をより効率的に進めることができます。\n このセッションでは、Android開発をはじめたての初心者を想定し、エラーを解決するための糸口として、Android開発で使えるデバッグ方法について紹介を行うことができればと思います。具体的には、AndroidStudioでのデバッグ方法やライブラリの紹介などを行う予定です。",
"speaker": {
"id": 12,
"name": "山崎亮",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-09 12:40:00",
"etime": "2016-03-09 13:10:00",
"category": {
"id": 5,
"name": "開発環境・ツール"
},
"room": {
"id": 4,
"name": "Room4"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 13,
"title": "App Shortcuts in Android Nougat 7.1",
"description": "In Android Nougat 7.1 the ability to create app shortcuts was introduced. Implementing shortcuts into your app helps guide users to specific parts of the app. If implemented correctly, it can help simplify the way users interact with your app, thus providing a delightful user interface experience. In this talk we will see an example of how to create app shortcuts. We will also talk about the different kinds of shortcuts you can create (static and dynamic) and how to chose which one to implement. Lastly, we'll talk about how to create a proper back stack of activities once the user launches the app through a shortcut. By the end of the talk attendees should have a clear understanding of how to help increase user engagement by making it easier for users to use their app.",
"speaker": {
"id": 13,
"name": "Caren Chang",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-09 12:40:00",
"etime": "2016-03-09 13:10:00",
"category": {
"id": 3,
"name": "UI・デザイン"
},
"room": {
"id": 5,
"name": "Room5"
},
"language_id": "en",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 14,
"title": "大規模アプリのリノベーション",
"description": "「はてなブックマーク」の Android 版アプリは、2011年にリリースして以降、大きな変更を行うこと無く新機能のリリースや、不具合の修正を続けてきました。しかし初回リリースから5年が経過した今、アプリの規模は非常に大きくなり、相応にコードの複雑性も増し、コード改善の必要性を感じるようになりました。\n\nしかし長年積み上げられてきたコードの複雑性を解消するためには、小手先のコード改善ではもはや大きな効果はありません。根本からの見直しが必要です。アプリのアーキテクチャを見直し、旧コードをすべて新たにし、モダンにして行かなければなりません。これはもはやリファクタリングではなく、リノベーションと呼べる非常に壮大なものです。\n\nリノベーションにあたり、まず初めに取り組んだのが「画面の確認」でした。どの画面がどこから来ているのか。この画面にはどのような機能があるのか。この画面のデザインの意図は何か。ある画面とある画面の共通の View はなにか。叩いている API は何なのか。そのモデルクラスは何か。すべてを一つずつ再確認し、機能を整理し、新たな名前をつけ、それらをドキュメントに落とし込んでいきました。\n\n次に取り組んだのは新たな設計の考案でした。まずはライブラリの選定を進めました。近年の Android 開発では有用なライブラリが数多く存在します。例えば Rxjava、Realm、DataBinding があります。これらは開発に大きなメリットをもたらしますが、これらのライブラリには設計を大幅に左右する特性があります。Rxjava を採用すればリアクティブプログラミングがアプリ中に適用されたものになりますし、Realm を採用すれば、Realm で引いたデータを常に監視する設計が考えられます。また DataBinding を利用する場合、自然と MVVM にたどり着くことになります。\n\nつまりライブラリを選ぶということは、同時に設計の形も選ばないといけないのです。そのためにアーキテクチャの選定もほぼ同時期に行うことになりました。世の中には様々なアーキテクチャがありますが、どれを選択すべきなのかは非常に難しいものでした。アーキテクチャをそのまま当てはめようとしても、どうしても Android フレームワークや、アプリの機能、ライブラリの特性にそのままでは合致しないケースがあり、ただアーキテクチャをそのまま選択すればよいというものではありませんでした。\n\n設計の難しさは、これらの組み合わせにあります。Android のフレームワーク、様々なライブラリ、そして提言されているアーキテクチャ。これらを組み合わせ、ベストな設計を作り出さなければならないのです。勿論その設計は変更に強く、メンテンスがし易いものでなければなりません。加えて、我々のアプリでは「5年先も機能を拡張し続けることの出来るアプリ」を目指すという目標があります。\n\n今回のリノベーションでは、アーキテクチャをそのまま利用するのではなく「アーキテクチャの良いところを可能な限り利用するとともに、どうしても実態にそぐわないアーキテクチャの定義は、少しアレンジする」という手法で、設計に落とし込むことになりました。そしてこの設計もすべてドキュメント化し、今後の開発方針がぶれないように徹底しました。\n\n本セッションでは、大きなアプリケーションを作り変えるために行った手法について話します。また、Android のフレームワークと適合したアーキテクチャを模索した結果、導き出した設計についても話したいと思います。",
"speaker": {
"id": 14,
"name": "北村 涼",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-09 14:20:00",
"etime": "2016-03-09 14:50:00",
"category": {
"id": 2,
"name": "設計・開発手法"
},
"room": {
"id": 1,
"name": "Room1"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 15,
"title": "Function introduction of Google Play Services",
"description": "■概要\nGoogle Play Servicesには様々な機能がありますが、あまりよく知られていない機能も多くあります。\nその中から今回はGoogleサインインを簡単に実装するためのGoogle Sign-In API、Google+1ボタンを簡単に実装することができるPlusOneButton、メールやSMSで友人・知人を簡単に招待できるApp Invites、Google Play Servicesに依存しているFirebaseの一部の機能についての実装方法や実装してどう変わったのかなどの検証結果についてお話します。\n\n■対象者\n- Androidアプリ開発をある程度やったことのある人\n- App Invitesに興味がある人\n- Google Sign-In APIに興味がある人\n- ASOが気になる人\n\n■目次案\n- Google Sign-In API\n - 以前のGoogleサインイン\n - APIの概要\n - このAPIの何が良いのか\n - 実装方法・サンプルコード\n- Google Plus One Button\n - Google+1ボタンとは\n - Google+1はGoogle Playの順位に影響するのか\n - やったこと(どう実装したのか)\n - 検証結果\n - これはやるべきなのか\n- App Invites for Android\n - App Inviteとは\n - App Invitesのフロー・仕組み\n - Firebase Invitesと何が違うのか\n - App Invitesの数値のとり方\n - 実際に実装して検証してみた結果\n - これは導入すべきなのか",
"speaker": {
"id": 15,
"name": "syarihu",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-09 14:20:00",
"etime": "2016-03-09 14:50:00",
"category": {
"id": 5,
"name": "開発環境・ツール"
},
"room": {
"id": 2,
"name": "Room2"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 16,
"title": "Data Bindingで開発を気持ちよくしよう",
"description": "Android 開発はボイラープレートを書くのが辛くないですか?findViewById、view.setText、view.setOnClickListener、nullチェック等。。。これらを少し楽にしてくれるライブラリはいくつかありますがそれでも完全に解決しません。Beta が取れ、実用段階に入った Android の新ライブラリ Data Binding によって圧倒的に行数を減らしてボイラープレートの問題は解決できるし、Data Binding は一部だけに適用もできるので規模を小さく、安全に少しずつ導入する事が可能です。\n\n下記のネタをカバーします:\n・Data Binding 移行の各ステップ\n・裏で行われている仕組みの説明\n・Data Binding におけるベストプラクティス\n\nこのセッションに参加された方は自分のプロジェクトを Data Binding へ移行するのに必要な知識を持ち、Android 開発を気持ちよくできるような人になるはず!",
"speaker": {
"id": 16,
"name": "ケノドン・ブノア",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-09 14:20:00",
"etime": "2016-03-09 14:50:00",
"category": {
"id": 2,
"name": "設計・開発手法"
},
"room": {
"id": 3,
"name": "Room3"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 17,
"title": "Android定期実行処理入門",
"description": "対象: 初心者以上\n\n「n時間おきに〇〇(任意のタスク)したい」という機能を実装することになった場合、Android SDKが提供しているクラスだけでも幾つか選択肢があります。\nまた、利用するクラスやOSのバージョンによって期待できる精度や条件、振る舞いが異なります。\n本セッションでは、JobSchedulerの解説を中心として、2017年に定期実装処理を組み込むなら知っておきたい情報を基礎的な部分から紹介したいと思います。\n\n現在予定している目次:\n\n* AlermManagerを避けたい理由について\n* JobSchedulerについて\n* 期待できる精度の件について\n* firebase-jobdispatcher-androidなどのバックポート系ライブラリについて\n* その他の選択肢について\n * push通知を利用するなど\n* アプリアップデート時やOSアップデート時などのそれぞれの挙動について\n* 動作検証時に確認しておきたい項目について",
"speaker": {
"id": 17,
"name": "kazy",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-09 14:20:00",
"etime": "2016-03-09 14:50:00",
"category": {
"id": 2,
"name": "設計・開発手法"
},
"room": {
"id": 4,
"name": "Room4"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 18,
"title": "Android Resources Refactoring",
"description": "Androidでは、resディレクトリ下で様々なリソースをxmlで管理しています。\nリソースはアプリの規模が大きくなるにつれて増えていき、秩序のない状態になりがちです。\n開発しているアプリのcolors.xml、styles.xmlが綺麗に整理整頓されていると言える人の方が少ないのではないでしょうか。\n\n私の所属するQuipperでは、デザインの統一に合わせて無秩序だったリソースまわりを整理しました。\nデザインの変更にも強い設計で、エンジニアがデザインの実装で困ることも少なくなり、今見てもかなり綺麗に整理できていると思います。\n\nこのセッションでは、colors.xml、dimens.xml、styles.xmlなどのリソースの要素の命名やファイルの分け方について私なりの理想の指針を説明します。\nその上で、既存のアプリのリソースをどうやってその理想の状態まで修正していったのか、チーム内でどうやって情報を共有していったのかといった、\n『リソースまわりのリファクタリングをどう進めていくか』という泥臭い知見もお話ししたいと思います。\n\nアプリのリソースを綺麗に保ちたい方、あるいは綺麗にしたいけれども効果や進め方がわからず足踏みしている方のお役に立てば幸いです。\n\n\n## 草案(仮)\n- Quipperでのリソースまわりの指針(命名規則、ファイル分割規則)\n- styles.xmlは機能/画面単位で分割しよう\n- リファクタリングBefore/Afterのインパクト\n- リファクタリングのロードマップと締切の設定\n- リファクタリングはcolors.xml、dimens.xmlから始めよう\n- チーム内でデザイン番長を決めよう\n- 規則をwikiに書いて共有しよう\n- 細かい修正タスクを洗い出して他のメンバーに練習させよう",
"speaker": {
"id": 18,
"name": "konifar",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-09 14:20:00",
"etime": "2016-03-09 15:10:00",
"category": {
"id": 4,
"name": "メンテナンス"
},
"room": {
"id": 5,
"name": "Room5"
},
"language_id": "en",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 19,
"title": "トークアプリで絵文字を実装した話",
"description": "対象:\nAndroid開発の経験がある方、興味がある方\n\n\n概要:\n業務で開発していたトーク機能を持つアプリに独自絵文字を実装した話をします。\n\n誰かとメッセージのやりとりをする際に、単純な文字だけ送るよりも絵文字を追加することで表現豊かなメッセージを送ることができます。\n絵文字はガラケーの時代から存在しており、スマホがメインになった現在においても\nキャリア独自の絵文字やキーボードアプリ独自の絵文字など様々な絵文字が存在しています。\n私が開発していたトーク機能を持つアプリでもそういった絵文字が多く使われていましたが、\n端末の違いによって送信側と受信側で異なる表示になってしまうことも少なくありませんでした。\n\nそこで、アプリ独自絵文字を実装することで絵文字を使った表現豊かなメッセージを、表示の違いなどが起きないよう可能にしました。\n実装にあたってはトークで使うため表示の高速化や絵文字自体のクオリティにも注意して実装していました。\n発表では実装にあたって苦労した点、どうやって乗り越えたか、そこから得た知見などお話できればと思います。\n\n\n目次(予定):\n- 絵文字導入にいたる経緯\n- 絵文字導入前に必要な機能を洗い出す\n- 実装中にあたった壁と解決方法",
"speaker": {
"id": 19,
"name": "futabooo",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-09 15:10:00",
"etime": "2016-03-09 15:40:00",
"category": {
"id": 2,
"name": "設計・開発手法"
},
"room": {
"id": 1,
"name": "Room1"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 20,
"title": "What is tested by pre-launch (security) reports?",
"description": "アルファ版、ベータ版としてapkファイルをGoogle Playにアップロードする際に、\npre-launch reports(日本語訳はリリース前レポート、オプトインが必要)によりアプリに含まれる問題点が表示されるようになりました。\n表示される内容の一つに、「セキュリティ」があり、アプリ中の脆弱性を表示してくれます。\nしかし、どのような脆弱性が検出されるのかについては明かされていません。\n\n本セッションでは、リリース前レポートがどのような脆弱性を検出する傾向にあるのかをお教えいたします。\nまた、その結果を踏まえたうえで、リリース前レポートとどのように付き合うべきか考察します。\n\n言及する脆弱性は、日本スマートフォンセキュリティ協会が発行している「Androidアプリのセキュア設計・セキュアコーディングガイド」で言及されている内容を元に調査したものとなります。\nなお、調査を行った時点での内容となります。\n\n■対象者\n-Android開発初心者~中級者\n-Androidアプリの脆弱性対策に興味のある方",
"speaker": {
"id": 20,
"name": "Akihiro Shiota",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-09 15:10:00",
"etime": "2016-03-09 15:40:00",
"category": {
"id": 5,
"name": "開発環境・ツール"
},
"room": {
"id": 2,
"name": "Room2"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 21,
"title": "アプリの質を上げるには。ガイドラインの作り方",
"description": "【対象】\nアプリのデザインをもっと良いものにしたい方\nデザイナーとの連携がうまく行ってない気がする方\nデザイナーを通さず、スムーズに開発してみたい方\n\nアプリデザインの質を上げたい、でもデザイナーが一人ではできない。\n【スタディサプリ】の質を上げるために、エンジニアと協業して、デザインガイドラインを作成、適応しました。\nエンジニアとデザイナーの良いコラボレーションを生み出すことができました。\n実際に行った「アプリの質を上げるためのガイドラインフロー」をご紹介します。\n\n\n【目次】\n- モックとなんかちがう問題\n - 荒れた時代 \n- ガイドラインをつくって困ったこと\n - 皆の思ってるガイドライン\n- ガイドラインを適応するのに必要なこと\n- 得意な人を探す\n- 実際のフロー\n- その後",
"speaker": {
"id": 21,
"name": "meyco",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-09 15:10:00",
"etime": "2016-03-09 15:40:00",
"category": {
"id": 3,
"name": "UI・デザイン"
},
"room": {
"id": 3,
"name": "Room3"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 22,
"title": "解剖 Kotlin ~バイトコードを読み解く~",
"description": "Kotlinの特徴的な機能としてnull許容型や関数型や拡張関数などがよく取り沙汰されます。null安全だとか高階関数で簡潔に記述だとか拡張関数便利最高といった話は枚挙に暇がありません。確かに言語機能としていろいろとJavaに比べて便利なのは分かるんだけど、でもまぁ別にJavaを使っていてクリティカルに困っているわけではないしな〜学習コストとかチームへの導入コストを考えるとそこまで旨味を感じられるわけでもないしな〜みたいなそんな気分。わかります。\n\n本セッションではKotlinのコードをコンパイルして得られるJavaバイトコードを、可読化したりデコンパイルする事によって、Kotlinの特徴的な言語機能がJavaでどのように表現されているかを読み解いていきます。これによりKotlinが肩代わりしてくれるボイラープレートコード群を明らかにします。Kotlinを使うことで省略できたボイラープレートコードが可読性をどのように高め、設計に影響を与えるのかについても言及します。\n\n目次案\n- Kotlinの概要\n- 本セッションのアプローチ\n- null許容型の正体\n- 関数型とラムダ式の正体\n- インライン関数の正体\n- 拡張関数の正体\n- データクラスの正体\n- プロパティの正体\n- デリゲートプロパティの正体",
"speaker": {
"id": 22,
"name": "sys1yagi",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-09 15:10:00",
"etime": "2016-03-09 15:40:00",
"category": {
"id": 2,
"name": "設計・開発手法"
},
"room": {
"id": 4,
"name": "Room4"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 23,
"title": "Androidアプリ開発の体力づくり",
"description": "■対象者\nAndroid開発をまだやったことない or はじめたばかりの人\nAndroid開発の今を知りたい人\nAndroid開発 やっていくぞという気持ちの人\n\n■概要\nAndroid開発の現状は日々変化し続けています。\nOS、デザイン、開発ツール、ライブラリ、テスト、設計など日々小さくても様々な変更があり、色んな情報が飛び交います。\n「Android開発難しそう」と感じたり、「やってみたけど何から始めたらいいのかわからない」みたいな経験をした方もいるかと思います。\nしかし、大事なポイントを少しずつ抑えていくことによって、Androidを継続的に学べるようになります。\n\n本セッションでは、私が過去・現在経験してきたことも交えながら、Android開発をやっていく上で大事なポイントをお話したいと思います。\nまず、Android開発を始めるにあたり、何からはじめたらいいのか、継続的に学ぶために何をしたらいいのかなどを話します。\n次に、実際にアプリを開発することを想定して、どのようなAndroidの技術が必要なのかなどを話します。\n最後に、Android開発の現状や新しい情報をどのようにキャッチアップしていくかなどを話します。\n※話す内容が幅広いジャンルを扱う可能性があるため、具体的な実装やコードは少なめになる予定です\n\n内容案:\n* どのようにAndroidを学ぶのか\n* 作るアプリによってどのようなAndroidの技術が必要なのか\n* 新しい情報をどのようにキャッチアップしていくかな\n* 開発に役に立つ情報はどこで手に入れるか\n* Android開発の今とこれから",
"speaker": {
"id": 23,
"name": "OperandoOS",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-09 16:00:00",
"etime": "2016-03-09 16:50:00",
"category": {
"id": 6,
"name": "その他"
},
"room": {
"id": 2,
"name": "Room2"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 24,
"title": "オフラインファーストなアプリケーション開発",
"description": "モバイルアプリケーションを最優先に位置づけるモバイルファーストという考え方が広まってずいぶんたちました。モバイルファーストはさまざまな要素を含むものですが、その中でもオフライン時の使い勝手を考えることはとても重要です。\n\nこのオフライン時のアプリケーションに着目した概念にオフラインファーストというものがあります。\n\n発表ではオフラインファーストとはどのような考え方なのか、また実際にAndroidアプリケーションをオフラインファーストな考えに基づいて開発する上での技術的課題の整理とそれらを乗り越えるための具体的な方法をお伝えします。",
"speaker": {
"id": 24,
"name": "zaki50",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-09 16:00:00",
"etime": "2016-03-09 16:50:00",
"category": {
"id": 2,
"name": "設計・開発手法"
},
"room": {
"id": 3,
"name": "Room3"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 25,
"title": "変更に強いEspressoテストコードを効率良く書こう",
"description": "■対象者\n・Espressoに興味は有りつつも、取り組む時間がなくて実行に移せていない方\n・効率的に、メンテナンス性の高いEspressoテストコードを書きたい方\n\n■概要\nAndroidのUIテストツールであるEspressoは、\nAndroid Studio 2.2から導入されたEspresso Test Recorderによって、テストを書く敷居が大きく下がりました。\n\nしかしながら、単純にEspresso Test Recorderに頼ってテストを量産すると、\n重複したコードが多数出現してしまい、画面仕様が変更された時に手が付けられなくなってしまいます。\n\nこのようなメンテナンス性の問題を解決するためには、量産したテストコードを適切に共通化する必要がありますが、\n量産してしまったコードを後から共通化するのも骨が折れる作業です。\n\nこのセッションでは、業務でテストの書き方を支援している自身の経験にもとづいて、\n効率的にテストコードを生成できるEspresso Test Recroderの利点を活かしつつも、\nメンテナンス性を損わないテストコードを書く方法について、\nライブコーディングを交じえながら解説します。\n\n主に、以下のような内容を考えています。\n\n- Espressoテストコードの基本\n- Espresso Test Recorderの限界を理解して、うまくテスト自動化対象を選定する方法\n- Espresso Test Recorderで何を記録すべきか\n- 記録したテストコードを元に、メンテナンス性を損なわずにテストを量産する方法\n (Android Studioのリファクタ機能を活用します)\n\n個々の要素は基本的なことではありますが、\n「どのように組み合わせるとうまくいくのか」という知見を皆さんと共有することで\n「テストを書いてみよう」と思って下さる方が増えるような内容にしたいと考えています。",
"speaker": {
"id": 25,
"name": "外山純生 (sumio_tym)",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-09 16:00:00",
"etime": "2016-03-09 16:50:00",
"category": {
"id": 4,
"name": "メンテナンス"
},
"room": {
"id": 4,
"name": "Room4"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 26,
"title": "Developing Apps for Daydream and Tango",
"description": "Starting an App with a Virtual or Augmented reality component is a bit daunting for most. When starting out, frameworks like Unity3D or Unreal Engine simplify a great many things.\n\nBut, from an Android developer perspective, you need to forget all about the nice APIs and libraries you're used to. You'll need to shoehorn your business logic in frameworks that are designed to build games first, not apps -- not a great proposition.\n\nLet's explore the path less traveled together! In this session, we'll see how you can build VR and AR applications, in Java and Android Studio, thanks to Google's Daydream and Tango Java SDKs, plus a few helpful 3D graphics libraries.",
"speaker": {
"id": 26,
"name": "Etienne Caron",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-09 16:00:00",
"etime": "2016-03-09 16:50:00",
"category": {
"id": 7,
"name": "プラットフォーム"
},
"room": {
"id": 5,
"name": "Room5"
},
"language_id": "en",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 27,
"title": "Viewを動的に変化させるアプローチ",
"description": "## 対象者\nアプリのViewにユーザーの操作に追従する動きを入れたい人\n\n## 概要\nHoloやMaterialデザインが発表されて以降、Viewを動的に変化させることが多くなりました。Viewを動的に変化させるといっても単にアニメーションで動かすだけでなく、最近ではスクロールのようなユーザーの操作に追従して変化させるケースも増えてきています。\n単一のViewを変化させるだけならばViewクラスのsetTranslationXメソッドやsetScaleXメソッドなどを使用すれば可能です。しかし、レイアウト全体を変化させたい場合、Javaのコードだけで行おうとするとかなりの量の可読性の悪いコードを書かなくてはなりません。更に、その際にAndroidフレームワークの邪魔になる書き方をしてしまうとレイアウトが崩壊する危険性があるため、そうならないように注意して実装する必要もあります。\n本発表ではそれらの課題について、どのようにすればユーザーの操作に追従したViewの変化を実現しつつ、可読性を保ったコードが実装できるかについてのアプローチをお話いたします。\n\n## 発表の構成\n- レイアウトXMLの考え方\n- Javaからコードを割り込ませる方法\n- DataBindingを使う理由\n\n## 関連するキーワード\n- レイアウトxml\n- DataBinding",
"speaker": {
"id": 27,
"name": "Takao Sumitomo",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-09 17:10:00",
"etime": "2016-03-09 17:40:00",
"category": {
"id": 3,
"name": "UI・デザイン"
},
"room": {
"id": 1,
"name": "Room1"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 28,
"title": "How to remodel current testing environment",
"description": "【対象者】\n・新しく入ったプロジェクトのテストをどうにかしたい人\n・現状のテストの信頼性に不安のある人\n・テストを書くときどこまで書けばいいのか分からない人\n【内容】\nBDDを始めとする思想では、テストを用いてそのアプリケーションの動作を保証・信頼します。\nテストがないプロジェクトは信頼できない。という話を聞いたりもしますが、では「存在するだけ」で信頼できるものでしょうか。\nあるいは「信頼できるテスト」は開発者にとって常に「良い物」なのでしょうか。\n各開発者が持つテストに対する意識が異なる場合、テストの粒度はまちまちとなり、信頼できるテストとできないテストが混在するでしょう。\nまたどんなにテストを信頼していたとしても、記法・表現方法などの問題からテストを書くこと自体が負担となることもあります。\n\n途中参加した2つのプロジェクトに対して導入したテストドキュメントの整備方針などから、具体例を交えつつ、上記の問題点をどのように解決するのかをお話できればと思います。\n\nコンテンツ\n・テストストラテジーの作成\n・テストポリシーを用いた開発者間の意識共通化\n・Test doubleという考え方のおさらい\n・Test Size\n・設計思想に合わせたテスト作成ポリシー\n・MockableなAPI",
"speaker": {
"id": 28,
"name": "red_fat_daruma",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-09 17:10:00",
"etime": "2016-03-09 17:40:00",
"category": {
"id": 4,
"name": "メンテナンス"
},
"room": {
"id": 2,
"name": "Room2"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 29,
"title": "React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか",
"description": "2015年初めにオープンソースプロダクトとして登場したReact Nativeは、現在も活発に開発が続いています。Facebook Messengerだけではなく、プロダクションでの事例も少しずつ出てきました。\nReact Nativeを使うと、何が嬉しいのでしょうか。実際に業務でAndroid, iOS両対応のアプリを開発・リリースした経験から、Android Javaでの開発と比べて楽になる点や難しくなる点をお話します。\n\n<対象>\n* 最近のJavaScriptはどんな空気感で開発をしているのか見てみたい方\n* 心のどこかでまだReact Nativeを銀の弾丸だと思っている方\n* AndroidとiOSのコードはどこまで共通化できるのか知りたい方\n* Webフロントエンドのコードとはどこまで共通化できるのか知りたい方\n\n<話したいこと>\n* NodeJS, NPM文化圏とES2015+CSS3がもたらすパラダイム\n - Promise\n - fetch\n - module\n - 様々なJSライブラリ\n - Flexbox\n* FlowTypeでJSなのに静的型付けできた話\n* Hierarchy Viewerで分かった、Virtual DOMの先にあるAndroidネイティブの姿\n* Webフロントエンドエンジニアたちとライブラリを共有できて最高だった話",
"speaker": {
"id": 29,
"name": "中川幸哉(@Nkzn)",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-09 17:10:00",
"etime": "2016-03-09 17:40:00",
"category": {
"id": 5,
"name": "開発環境・ツール"
},
"room": {
"id": 3,
"name": "Room3"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 30,
"title": "全てSになる〜RxJavaとLWSを持ち込む楽しさ〜",
"description": "■ 対象者\n初級〜中級者向け\n■ 内容\nAndroid 7.0 SDKからStreamやOptionalなど、Java 8で導入されたAPIが一部使えるようになりました。ただし、これは応募時点(2016/10/01)ではJackコンパイラを使う場合に限られていて、実践導入はまだ先になりそうです。そこで、以前から話題となっているRxJavaや、Stream/OptionalのバックポートライブラリであるLightweight Stream APIを活用して、来たるJack時代のAndroidアプリ開発について先取りできるお話をしたいと思います。\n\nプリミティブなAndroid SDKのAPIを使う場合と比較してどのようなメリットがあるのか、デメリットは何があるのかといった話や、RxJava/Lightweight Stream APIを実践導入して得られた知見を皆様に共有できればと思います。\n\n特にLightweight Stream APIに関しては単なるバックポートではなく、独自の機能も持っていて、Android開発において特にFragmentを使うときにちょっと便利なユーティリティとして機能します。Android開発においてはメリットがあるライブラリだと思いますので、この知見については一番共有できればと思っています。",
"speaker": {
"id": 30,
"name": "ryugoo",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-09 17:10:00",
"etime": "2016-03-09 17:40:00",
"category": {
"id": 2,
"name": "設計・開発手法"
},
"room": {
"id": 4,
"name": "Room4"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 31,
"title": "Reverse engineering is not just for hackers!",
"description": "Can make talk 30-50 mins, flexible.\n\nWe spend a lot of time putting apps together, but when was the last time you pulled one apart? How wonderful is it that Android is open-source, so we can simply look at the code when we need to? What if it were just as easy to look at the source code and behaviour of any other app?\n\nIf we can streamline the process of looking inside a compiled application then we're more likely to employ it to answer questions and teach us valuable lessons we can apply to our work. We may learn from others and also make our own apps more secure. We can pinpoint bugs that come from closed-source libraries such as those for ad and tracking networks, and work around those bugs, get them fixed faster, or even patch them if need be!\n\nThis talk will present simple real-world examples for maximum practical benefit using some of the ever improving set of reverse engineering tools for Android.\n\nYou don't need to have any experience reverse engineering anything before, but hopefully even if you do you'll pick up a few useful tips. This talk aims to make every developer more familiar with the reverse engineering tools available for Android, and how and why they should apply them. There's an incredible amount that can be learned from taking things apart!",
"speaker": {
"id": 31,
"name": "Jon Reeve",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-09 17:10:00",
"etime": "2016-03-09 17:40:00",
"category": {
"id": 6,
"name": "その他"
},
"room": {
"id": 5,
"name": "Room5"
},
"language_id": "en",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 32,
"title": "AccessibilityServiceを使ってアプリの可能性を広げよう",
"description": "通常のアプリ開発時にはほとんど見ないといっても過言ではないAccessibilityService(ユーザー補助機能)。本来はその名の通り老人や盲目の方など視覚にハンデがある方に向けた補助機能ですが、他のアプリの情報が取得できたりそれを活用したりできるため、使用方法次第ではアプリの幅がぐっと広がる技術です。本セッションでは、AccessibilityServiceそのものの話やAccessibilityServiceを使う上での基本的な機能紹介を踏まえた上で、スピーカーが実際に開発したデザイン確認やデバッグのためのツールを紹介し、AccessiblityServiceで出来ることと可能性を提示します。\n\n構成\n- AccessibilityServiceってなんなの?\n- AccessibilityServiceの基本〜はじめてのAccessibilityService作り〜\n- AccessibilityServiceで出来ること、出来ないこと\n- AccessibilityServiceを使ったアプリ紹介\n - 実際に書いてみてハマったポイントなど",
"speaker": {
"id": 32,
"name": "門田福男",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-09 18:00:00",
"etime": "2016-03-09 18:30:00",
"category": {
"id": 5,
"name": "その他"
},
"room": {
"id": 1,
"name": "Room1"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 33,
"title": "Android Bikeを作ろう",
"description": "Android Autoはちょっと手が届かない…けどBike(自転車)なら!\n\n「最近購入した自転車がBluetoothを喋るので何かやってみよう」Androidならそのぐらい気軽にIoTできるよ、ちょっと頑張れば既にある製品より圧倒的に使いやすい機材を自分で作れるよ、という話を、ある程度Android開発に慣れてきた開発者向けにお話しします。身近なBluetooth Low Energyデバイスや実はあんな家電もこっそり生えてるAPIに、スマホのユーザーインタフェースを組み合わせることで、手軽に自分専用の道具を作ることができます。このセッションが、普段開発しているスマホやタブレットという枠を超えた外の世界とインターネットを繋いで、世界にカジュアルに新しい価値を提供していくきっかけになると幸いです。",
"speaker": {
"id": 33,
"name": "tnj",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-09 18:00:00",
"etime": "2016-03-09 18:30:00",
"category": {
"id": 8,
"name": "ハードウェア"
},
"room": {
"id": 2,
"name": "Room2"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 34,
"title": "What's New in RxJava 2.0",
"description": "いま RxJava 1.0 を使っている方を対象に、RxJava 2.0 の変更の背景や RxJava 2.0 での変更点、どのようなことに注意するべきかを説明します。\n\nRxJava 2.0 は 2016 年の 10/29 に公開された、RxJava の新しいメジャーバージョンです。1.0 に比較すると以下のような変更が入っています。\n- Java 9 で標準となる予定の Reactive Streams 対応\n- 分かりにくかったメソッド名やクラス名の変更\n- いくつかの API の挙動の破壊的な変更\n\nRxJava 2.0 では、RxJava 1.0 で実現できたことは、ほとんどそのまま実現できます。一方で、RxJava 2.0 なりの書き方をすることで、より Rx や Reactive Streams の恩恵に与れるようになっています。本セッションでは、RxJava 1.0 でいま Android アプリを書いている方向けに、2.0 での変更点やどのように 2.0 の機能を利用するのが良いかという話を述べます。特に 2.0 での変更の背景となった Reactive Streams がどういうものかというところから解説することで 2.0 の目指す姿を明らかにしたいと考えています。",
"speaker": {
"id": 34,
"name": "hydrakecat",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-09 18:00:00",
"etime": "2016-03-09 18:30:00",
"category": {
"id": 2,
"name": "設計・開発手法"
},
"room": {
"id": 3,
"name": "Room3"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 35,
"title": "少し幸せになる技術",
"description": "[対象者]\n初心者〜中級者向け\n\n[内容]\nAndroidを開発、運用していく中で起こるつまづきやすい問題の解決、\nちょっとしたことで開発が幸せになるテクニックを紹介。\n本質的な作業に集中できる時間を多く取れるようにしたいと思っています。\n\n以下は仮予定の内容です。\n問題\n- ProGuard問題\n - なぜProGuardで、ビルドができなくなるのか\n- メソッド数64k問題\n - 64k問題とは\n - メソッド数を知る\n - メソッド数を削減\n - 限界突破の方法\n便利\n- Android Studio2.2の機能\n - リファクタリングで役立つショートカット\n- Google Play Console関連\n - 通知を受け取る\n - クラッシュレポートの難読の解除\n- Gradeの設定\n - キャッシュ周り\n - 署名の設定",
"speaker": {
"id": 35,
"name": "kamedon",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-09 18:00:00",
"etime": "2016-03-09 18:30:00",
"category": {
"id": 5,
"name": "開発環境・ツール"
},
"room": {
"id": 4,
"name": "Room4"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 36,
"title": "ウェルカムトーク",
"description": "",
"speaker": {
"id": 1,
"name": "mhidaka",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-10 10:00:00",
"etime": "2016-03-10 10:20:00",
"category": {
"id": 1,
"name": "ウェルカムトーク"
},
"room": {
"id": 1,
"name": "Room1"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 37,
"title": "Xamarin.Android で始めるクロスプラットフォームモバイルアプリ開発",
"description": "■対象者\n・Android中級者〜\n・C# 初心者〜\n\n■概要\nXamarin(ざまりん)は C# によるクロスプラットフォームモバイルアプリ開発ツールです。\nMicrosoft が2016年4月に買収して、一気に知名度が上がりました。\n\nこのセッションでは、 Xamarin とは、Xamarin.Android とは何か、C# や .NET Framework(Mono) の強力な言語・ライブラリ機能について触れ、通常の Android アプリ開発と Xamarin を使ったアプリ開発はどこが違って、どこが同じなのかを説明します。\n\nまた、今日のモバイルアプリ開発では、DataBinding、MVVM、Reactive Extensions(Rx) といった、Microsoft が源流となっている手法が広まって来ています。\nXamarin を使うと、MVVMパターンと Rx を使用し、大部分のコードを共有できる Android/iOS 両対応アプリケーションを開発できます。如何にしてコードを共有するか、できない場合にどのような解決策が用意されているかについてお話します。\n\n■目次(仮)\n1. Xamarin とは?\n・Xamarin とは何か\n・Xamarin.Android とは何か\n・C# の利点(Java, Swift との比較)\n\n2. クロスプラットフォームアプリ開発とコードの共有\n・MVVMパターン\n・Reactive Extensions / ReactiveProperty\n・Portable Class Library(PCL)によるコード共有\n・プラットフォーム固有の処理を行う方法\n\n3. Open Xamarin、Open Microsoft\n・Xamarin で使えるライブラリ(C#, Java)\n・All Xamarin SDKs are open source\n・.NET Standard\n\n4. Xamarin の使いどころ\n・採用すべきケースとしなくてよいケース",
"speaker": {
"id": 36,
"name": "amay077",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-10 10:40:00",
"etime": "2016-03-10 11:30:00",
"category": {
"id": 5,
"name": "開発環境・ツール"
},
"room": {
"id": 2,
"name": "Room2"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 38,
"title": "Android ORMの選び方",
"description": "対象: 初心者~中級者向け\n\nAndroid ORMは古くて新しいテーマです。以前はActiveAndroidやGreenDAO、そしてORMLiteくらいしか選択肢がありませんでしたが、近年は綺羅星のごとく新しいライブラリが次々に生まれています。また2016年3月に1.0となったRealmというSQLiteベースでないORMも人気を博しています。また発表者はOrmaというORMを開発しており、ORMには一家言ある開発者です。\n\nさて、このORM百花繚乱というこの状況は多様性という意味では喜ばしいものですが、逆に選択肢が多すぎて選択するのが難しいという状況となっています。その結果、もっとも著名なORMである、しかし今やメンテナンスされていない古いライブラリであるActiveAndroidが使われ続けるということも少なくないようです。これは大変残念です。\n\nこのセッションでは、Realmを含むさまざまなORMを、インターフェイス・マイグレーション・パフォーマンスについて比較検討します。本セッションがORM選択の一助となれば幸いです。\n\n## アウトライン(仮)\n\n* なぜORMが必要か\n * ORMは怖くない\n * リソースのキャッシュ\n * ローカルのデータストア\n* 素のSQLiteDatabaseの基本\n* ライブラリ一巡り\n * Simple Helpers\n * ORMLite\n * SQLBrite\n * SQLDelight\n * O/R Mappers for SQLiteDatabase\n * ActiveAndroid\n * GreenDAO\n * DBFlow\n * Requery\n * Orma\n * Non-SQLite Databases\n * Realm\n* インターフェイスの詳細比較\n* パフォーマンスの詳細比較\n* マイグレーションの詳細比較",
"speaker": {
"id": 37,
"name": "gfx",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-10 10:40:00",
"etime": "2016-03-10 11:30:00",
"category": {
"id": 6,
"name": "その他"
},
"room": {
"id": 3,
"name": "Room3"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 39,
"title": "Androidアプリのストレージ戦略 ~AndroidってSDカード使えるんでしょ?~",
"description": "本セッションでは「AndroidってSDカード使えるんでしょ?」と急に出てきたちょっとヤバそうな仕様との付き合い方、\n「気づいたらアプリで容量使いすぎて死にそう」という機能要件をクリアするためのストレージ戦略を解説します。\n内部/拡張などストレージの種類を問わず、アプリがデータを保持するための最適な場所について横断的に考察します。\n\n今は昔、古来のAndroidアプリではSDカードのパスを探すだけで一苦労がありました。\n現在、Android SDKが提供するExternal Stroage APIでは拡張ストレージへのアクセスを可能にしており、\nアプリはより多くの情報を拡張領域に保存できます。\n\nセッションではアプリケーションの種類や保存するコンテンツの性質を考慮しながら内部/拡張ストレージを上手に使い分ける方法を紹介します。\n利用にあたってはマルチアカウント、端末の空き容量、クラウド連携、暗号化など設計上考慮すべきポイントを押さえつつ、\n過去のTipsが今も使えるのか?という疑問やAndroidアプリ開発のスタンダードは存在するのか?という設計上の課題を解消します。",
"speaker": {
"id": 1,
"name": "mhidaka",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-10 10:40:00",
"etime": "2016-03-10 11:30:00",
"category": {
"id": 8,
"name": "ハードウェア"
},
"room": {
"id": 4,
"name": "Room4"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 40,
"title": "Better Android Intents with Dart & Henson",
"description": "Intents are an essential component of the Android ecosystem. They are used to express an action to be performed and can be classified into implicit and explicit intents. In an abstract way, all intents together define a navigation layer inside an application. \n\nDuring this talk we will explain why the Android way to create explicit intents is error-prone and also show some problematic ways to solve it. Then, we will introduce the solution we developed at Groupon: Henson, a new library in the Dart project, that takes intent creation to new levels: It generates a fluent API to build intents. This API constitutes a navigation layer that makes it easy, convenient, fast and robust to navigate among your activities and services. Therefore, it will be impossible to miss a required extra and simple to add optional arguments as needed.\n\nThe talk will be based on the following article featured by Android Weekly:\nhttps://medium.com/groupon-eng/better-android-intents-with-dart-henson-1ca91793944b#.4h12yxgtl\n\nFurthermore, all the library features and possibilities will be explained in depth.\n\nThis intermediate level talk about Dart & Henson will be carried out using slides, code and demos.",
"speaker": {
"id": 38,
"name": "Daniel Molinero Reguera & Stephane Nicolas",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-10 10:40:00",
"etime": "2016-03-10 11:30:00",
"category": {
"id": 2,
"name": "設計・開発手法"
},
"room": {
"id": 5,
"name": "Room5"
},
"language_id": "en",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 41,
"title": "How to implement material design animation",
"description": "■対象\n中級者向け。\nアニメーションの実装をある程度行ったことがあり、マテリアルデザインのアニメーションの方法は知らない人向け。\n\n■内容\nGoogleから発表されたデザインガイドライン マテリアルデザイン(Material Design)は話題になり、多くのアプリに取り入れられています。 しかしアニメーションの実装方法まで詳しく取り入れられているアプリはとても少ないのではないかと考えています。 \nまたマテリアルデザインガイドラインでは、デザインのガイドラインであるため、Android上でどう実装するのかまでは触れられていません。\n\nGoogleはマテリアルデザインの例としてPlaid, Topeka, OurStreets, Google I/O 2016などのサンプルアプリを出しており、\nどのように実装するのかを調べることができます。\n私はこのマテリアルデザインのアニメーションの実装方法を調べ上げ、またSupport Libraryを用いた下位互換性や対応方法も調べます。\n実践的にマテリアルデザインのアニメーションを実装できるようになっていただきたいと思っています。\n\n■大まかなセッションの内容(案) \nマテリアルデザインガイドラインの'マテリアルモーション'をどのように実装していくのか、そのAPI Level、低いAPIでの回避案などを解説していきます。 \n\n* 'マテリアルの動き方'を実装するには \n* '優れた遷移の特徴'を実装するには\n* アニメーションの'継続時間'の実装\n* 'モーション アイコン'の実装方法 \n\nなどなど",
"speaker": {
"id": 39,
"name": "takahirom",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-10 11:50:00",
"etime": "2016-03-10 12:20:00",
"category": {
"id": 3,
"name": "UI・デザイン"
},
"room": {
"id": 1,
"name": "Room1"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 42,
"title": "Building my own debugging tool on overlay",
"description": "■対象\nアプリのデバッグに工夫を加えたい初級者〜\n■内容\nアプリの動作を検証する上で、画面の表示以外の目に見えない部分で何が起きているかを知ることはとても重要です。デバッグ実行中であれば、デバッガをアタッチしてステップ実行をしたり、各モデルの状態を都度確認したりすることができますが、QA などリリースビルドを用いた動作テストではデバッガを使うことができず、また ProGuard の設定によってはログ出力も削られてしまうため、動作に問題が起きたときの検証に工夫が必要となります。\n本セッションでは、Android の開発者オプションで使われているような各種デバッグ情報の表示を参考に、デバッグに役立つであろうログ出力を画面に表示する方法を提示します。これによって、誰でも簡単に自分で同様のツールが作れるようになります。",
"speaker": {
"id": 40,
"name": "KeithYokoma",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-10 11:50:00",
"etime": "2016-03-10 12:20:00",
"category": {
"id": 5,
"name": "開発環境・ツール"
},
"room": {
"id": 2,
"name": "Room2"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 43,
"title": "未熟なチーム開発",
"description": "トピック: チーム開発\n\n未熟なチームでどうやってプロジェクトを進めていくのか\n\nスタディサプリ English(https://play.google.com/store/apps/details?id=jp.eigosapuri.android)を、\n自分と新卒とiOSエンジニアの3人で開発していくに当たって、初めにどういうことを考えたか、何がうまくいって、何が失敗したか。\n中盤はどうだったか。リリース間際は何をしていたのか。\nなどなどの、決してスーパースターばかりのチームではないメンバーでどうやってプロジェクトをうまく進めていけばいいのか、試行錯誤した内容をお話しします。\n\nagenda(仮)\n\n- 前提条件\n - 環境\n - チーム構成\n - 納期\n- 開発序盤\n - ルール決め\n - 土台作り\n - 反省点\n- 開発中盤\n - 途中からつくられたルール\n - 魔女化\n - 新卒を育てる\n - スキルとタスクの粒度\n - 反省点\n- 開発終盤\n - QA\n- まとめ",
"speaker": {
"id": 41,
"name": "kgmyshin",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-10 11:50:00",
"etime": "2016-03-10 12:20:00",
"category": {
"id": 2,
"name": "設計・開発手法"
},
"room": {
"id": 3,
"name": "Room3"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 44,
"title": "個人で11個のアプリを公開した結果",
"description": "■概要\n僕が個人で開発してきた様々な種類(ツール、ゲーム、Android Wear)のAndroidアプリを公開することによって得られた知見を実際のインストール数などの数値なども交えてお話します。\n実際のソースコードというよりは、どんなアプリがインストールされやすかったのか、レビューに対する反応はどうすればよいのか、個人で開発する上で必要なものなどのお話をする予定です。\n今後の個人開発をする上での参考になれば幸いです。\n\n■対象者\n- 個人でのAndroidアプリ開発に興味がある人\n- これから個人でAndroidアプリを開発しようと思っている人\n- Androidアプリを開発したいけれど何を開発しようか悩んでいる人\n\n■目次案\n- 個人でAndroidアプリ開発をはじめたきっかけ\n- 開発してきたアプリについて (インストール数やレビューなど)\n - ライフスタイル系\n - ツール系\n - Android Wear系\n - ゲーム系\n- 個人で開発する上で困りそうなこと\n - 開発・公開するためには何が必要?\n - アプリは開発できるけどアイコンはどうするの?\n - レビューきたらどうすればいいの?\n - どんなアプリがインストールされやすいの?\n - etc...",
"speaker": {
"id": 15,
"name": "syarihu",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-10 11:50:00",
"etime": "2016-03-10 12:20:00",
"category": {
"id": 4,
"name": "メンテナンス"
},
"room": {
"id": 4,
"name": "Room4"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 45,
"title": "Gradle basics",
"description": "突然ですがあなたのbuild.gradle、ちゃんと他人に説明できますか? いつの間にかコピペの山になっていませんか?\n\n本セッションでは、Android開発を始めて比較的日が浅い方を対象にGradleの基本的な要素からすぐ実践できるtips、pluginの作成方法や発展的な内容をサンプルコードと共にご紹介します。\nビルド周りは普段中々時間を割くことのできない分野だと思いますが、更なる生産性向上の為にこのセッションがお役に立てば幸いです。\n\n対象者:\n* Android開発初級者〜中級者\n\nコンテンツ(仮):\n* Gradleについて(5min)\n * Gradleとは\n * Android Gradle Pluginとは/Android Studioとの連携\n * Android開発における基本的な設定項目\n* Tips紹介(20min)\n * Build variantsの活用\n * Build typeとProduct Flavors\n * Merging resources, Java sources, manifests\n * Flavor Dimensions\n * Custom tasks\n * Custom taskの作成\n * ビルドプロセスへの組み込み、除外\n * sourceSetsを活用した効率的なtaskの記述\n * Testing\n * Testing support libraryを利用したUnit testの記述\n * Espressoを利用したinstrumentation testの記述\n * test reportやJacocoを利用したカバレッジの取得\n * Performance\n * Daemonや並列化、JVMパラメータを利用した高速化\n * dexOptionを利用した最適化\n * CircleCIやJenkins上でビルドを速くする工夫\n* Gradle plugin(10min)\n * Gradle pluginの作成\n * 内部アーキテクチャの簡単な紹介\n * pluginの作成方法\n * jcenterへの公開作業\n * 開発を効率化するおすすめpluginの紹介\n* 発展編(5min)\n * Kotlin gradle pluginの可能性\n * BabelやBack,Kobaltとの比較\n* Q&A(5min)",
"speaker": {
"id": 42,
"name": "hotchemi",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-10 11:50:00",
"etime": "2016-03-10 12:40:00",
"category": {
"id": 5,
"name": "開発環境・ツール"
},
"room": {
"id": 5,
"name": "Room5"
},
"language_id": "en",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 46,
"title": "How to search and improve performance",
"description": "▼対象者\n初心者〜中級者\n\n▼概要\nAndroidアプリ開発で避けて通れないパフォーマンス改善ですが、細かいtipsなどの話がされがちです。どこから手をつけていいのか、どうやって調査していくのかのノウハウはあまり多く語られていません。\n\n本セッションでは実際のオープンソースのアプリ(Android N Easter Egg Neko) を題材に、パフォーマンスが悪化した際に「どのように調査するか (Android Studioなどのツール使い方)」から「実際のコード改善」までの一連の流れをお話しします。皆さんが自分のプロダクトで実際にパフォーマンス改善できるようになる知見を共有するのがゴールです。\nまた、初心者でも手をつけやすいよう、普段から開発者が慣れ親しんでいるAndroid Studioやadbのツールを取り上げたいと思います。\n\n▼取り上げる予定のツール\n・adb systrace\n・Android Device Monitor",
"speaker": {
"id": 43,
"name": "Fukui Atsuko",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-10 12:40:00",
"etime": "2016-03-10 13:10:00",
"category": {
"id": 4,
"name": "メンテナンス"
},
"room": {
"id": 1,
"name": "Room1"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 47,
"title": "Data Bindingで実現するMVVM Architecture",
"description": "■概要\nData Binding使うことでAndroidでもMVVM Architectureが簡単に実現できるようになりました。View-ViewModel-Modelの責務を明確にすることで、見通しの良いコードが記述できるようになります。MVVMで実装する時のポイントなどについて話します。\nMVVMの導入を検討している方や、興味のある方の参考になれば幸いです。\n\n■内容案\n* MVVM概要\n* Data Binding概要\n* Viewの役割、実装例\n* ViewModelの役割、実装例\n* RxJavaと組み合わせる\n\n■対象者\n設計に興味がある方",
"speaker": {
"id": 44,
"name": "Kenji Abe",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-10 12:40:00",
"etime": "2016-03-10 13:10:00",
"category": {
"id": 2,
"name": "設計・開発手法"
},
"room": {
"id": 2,
"name": "Room2"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 48,
"title": "Kotlin + RxJava + Dagger2 + Orma + Retrofit で作るAndroidアプリ",
"description": "対象: 初心者〜中級者\n\n- Kotlin(Language)どうなの?\n- RxJava(ReactiveProgrammingFramework)どうなの?\n- Dagger2(DependencyInjection)どうなの?\n- Orma(ORMapper)どうなの?\n- Retrofit(HttpClient)どうなの?\n\nそんな疑問にお答えします。\n(個人的には)もはやこの5つのソフトウェアはAndroidアプリケーション開発において無くてはならない存在です。\nこれらを利用したAndroidアプリケーションの作り方を紹介したいと思います。\n\n目次(予定)\n- 各ソフトウェア軽い紹介\n - Kotlin?\n - RxJava?\n - Dagger2?\n - Orma?\n - Retrofit?\n- DroidKaigi2016公式アプリのコントリビューター一覧画面を作ろう\n - RetrofitをつかってApiClientを実装しよう\n - OrmaをつかってDaoを実装しよう\n - Daggerを使って依存性を注入しよう\n - ApiClientとDaoを束ねるRepositoryをつくろう\n - UseCaseをつくろう\n - Presenterをつくろう",
"speaker": {
"id": 2,
"name": "lvla0805",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-10 12:40:00",
"etime": "2016-03-10 13:10:00",
"category": {
"id": 2,
"name": "設計・開発手法"
},
"room": {
"id": 3,
"name": "Room3"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 49,
"title": "いまからはじめるAndroid 6.0対応 〜Android 7.0から8.xを見つめて〜",
"description": "知ってます知ってます。いまの最新版(droidkaigi開催当時)って7.1であることを。\n\nとはいえAndroid 7.0対応の前にAndroid 6.0の対応が出来てないまま、誤魔化し誤魔化しアップデートを続けているアプリがあるんじゃないでしょうか?\nいまはなんとかなっても、いつかはどうにもならず「苦渋の決断」をする日がくるのではないでしょうか?\n\n本セッションでは7.0に向けた復習として、自分が業務で「いやここで対応すべきだ」と決断していくつかのアプリを6.0対応した際に得たノウハウを共有いたします。さあ、みなさんも早いうちに6.0対応を果たし、気持ちよく7.0対応を迎えましょう!\n\n主に話す内容\n* Apache廃止に伴う対応(さよならVolley、こんにちはokhttp)\n* パーミッション対応と、コード以外に考えること\n* その他、Android 7.0に加え、さらにその先のアップデートに備えて気をつけることはなにか",
"speaker": {
"id": 45,
"name": "yamacraft",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-10 12:40:00",
"etime": "2016-03-10 13:10:00",
"category": {
"id": 4,
"name": "メンテナンス"
},
"room": {
"id": 4,
"name": "Room4"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 50,
"title": "実践アニメーション",
"description": "## 対象者\n- 初級〜中級者\n- アニメーションに苦手意識がある人\n\n## 概要\nAndroidでViewに対するアニメーションを実装する方法は様々ですが、基本は諸々のサイトで解説されています。\nしかし、その多くは拡縮や移動またはそれらの組み合わせといったシンプルな実装の紹介に留められており、複雑なアニメーションを実現する際の知見はあまり見られません。\n複数の要素が相対的に異なる動作をするViewなど、実践的なアニメーションをどのように実現するのか……。\n本セッションではアニメーション実装へのアプローチや手法などを具体的に紹介することで、今まで何となくアニメーションにネガティブなイメージを持っていた方々に苦手意識をなくしてほしいと思っています。",
"speaker": {
"id": 46,
"name": "Naoya Yunoue",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-10 12:40:00",
"etime": "2016-03-10 13:10:00",
"category": {
"id": 3,
"name": "UI・デザイン"
},
"room": {
"id": 6,
"name": "Room6"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 51,
"title": "Systemアプリ開発入門",
"description": "■対象者\nSystemアプリおよびAndroid Frameworkの開発者\n初級〜中級向け\n\n■概要\nSystemアプリ開発入門\n一般的なアプリと同じく、端末にプリインストールされるアプリについても\nOSのアップデートと共にセキュリティ観点のアップデートが多く含まれてます。\nプリインなら何が可能なのか、何が不可能なのか、一般的なアプリと違いどんなことに\n気を付けて開発をしなければいけないのか。その開発手法についてのノウハウをお話しします。\n\n- Systemアプリ開発入門\n - Systemアプリ概要\n - 一般的なアプリとの違い、権限の違い\n - 権限とSystemアプリ\n - HideAPI,SELinux,Platform署名\n - Device Owner\n - Nugarでどう変わった?\n - マルチユーザーとPlatformアプリ\n - マルチユーザに対応するために\n - ユーザ間で共有したい情報を保持するために\n - Debug手法\n - Using AndroidStudio\n - BreakPoint\n - Test\n - (おまけ)Systemアプリ開発でもいろいろしたい\n - 著名Library使用(APT)などなど\n\n■キーワード\nプリインアプリ、Platform署名、Framework、SELinux、RuntimePermission、CTS、マルチユーザー",
"speaker": {
"id": 47,
"name": "kobashin",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-10 14:20:00",
"etime": "2016-03-10 14:50:00",
"category": {
"id": 7,
"name": "プラットフォーム"
},
"room": {
"id": 1,
"name": "Room1"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 52,
"title": "4年続くアプリにおけるチーム開発",
"description": "■対象者\n初心者〜中級者。\n最近Androidアプリ開発を初めた人やチームで開発を初めた人。\n\n■内容\nフリマアプリ「フリル」は今年で4周年を迎えました。\nその中でも何度か大きなリニューアルを実施してきました。\n\nコードベースも必然と大きくなり、複数人で大規模アプリのメンテナンスをし続けながら、機能追加などをしてきました。\n\nこのセッションでは4年間の中で、チーム開発がどのように変化してきたのか、\nどういったことをやってきたのかをお話します。\n\n・開発フロー\n ・開発環境\n ・コードレビュー\n ・プルリクエスト\n ・CIの変遷\n ・社内ユーザーインタビュー\n ・QAのやり方\n ・リリース\n・数値計測\n・リニューアル\n・レビューマネジメント",
"speaker": {
"id": 48,
"name": "cutmail",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-10 14:20:00",
"etime": "2016-03-10 14:50:00",
"category": {
"id": 2,
"name": "設計・開発手法"
},
"room": {
"id": 2,
"name": "Room2"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 53,
"title": "AndroidTV「もしかして...」FireTV「俺たち...」「「全然対応されてない〜〜!!??」」",
"description": "概要:\nTVデバイスは前前前世からブラウン菅→液晶→3Dと渡り歩き、\nスマートテレビに辿り着きました。\n近年、 本格的にAndroidを搭載したTVデバイスが普及し始めています。\nみなさんのアプリはTVデバイスに対応していますか?\n私が担当しているプロジェクトでは先日FireTV/AndroidTV(仮)に対応しました。\nしかし、現状TVデバイスに対応するための知見はまだまだ少なく、\nスマートフォン向けのアプリ対応と比べて開発の敷居が非常に高いと感じています。\n \nこのセッションでは、\n今後TVデバイス向けアプリ開発を検討している人にフォーカスし、\n導入→開発→運用と実践的な話をします。\n \n 主なキーワード: FireTV, AndroidTV, Leanback\n\n対象ユーザ:\n ・スマートフォン向けAndroidアプリ開発経験がある方",
"speaker": {
"id": 49,
"name": "ogaclejapan",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-10 14:20:00",
"etime": "2016-03-10 14:50:00",
"category": {
"id": 8,
"name": "ハードウェア"
},
"room": {
"id": 3,
"name": "Room3"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 54,
"title": "Androidで音声認識を使いこなす",
"description": "■対象\nAndroid アプリ開発経験者初級者〜上級者\n音声認識に興味があるが、触り程度しか使っていない方\n\n■内容\n近年Googleの「OK google」のCMや、iOSのSiriの普及により、スマートフォンで音声認識を行うことが一般的になってきた。これらの技術には音声認識技術が使われていることが明らかではあるが、文章入力なのか、コマンド入力なのか、学習データ入力なのか等用途によっても様々な手法を扱われる。本セッションでは、これらの様々な手法を解説するとともに、実際に自分で開発・実装するにはどうすれば良いのかを示す。\n\n■構成\n* 音声認識の概要\n* Android Speech Recognizerを使いこなす\n* 様々な音声認識エンジン\n* 連続音声認識とは\n* 自分のアプリで「OK Google」のような機能は作れるのか\n* 音声認識機能全般の評価について\n* Drivemodeでの活用\n\n■本セッションに関連する話題\n* 音声認識\n* 音声認識エンジン\n* 雑音抑圧\n* Android\n* Service\n* プロセス間通信\n* AIDL",
"speaker": {
"id": 50,
"name": "KAKKA",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-10 14:20:00",
"etime": "2016-03-10 14:50:00",
"category": {
"id": 7,
"name": "プラットフォーム"
},
"room": {
"id": 4,
"name": "Room4"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 55,
"title": "Can You Read Your Tests? Clean and Useful Android Testing, with JUnit and Spock!",
"description": "Can make talk 30-50 mins, flexible.\n\nHave unit tests? How readable are they? How much time do you spend maintaining them? Brittle and time-consuming tests lead to fear, uncertainty, and distrust, and that leads to and eventual disillusionment and abandonment.\n\nThis talk will go over tools and techniques for writing tests that are a pleasure to read, easy to maintain, give you maximum return on the time you invest into them, and will prove their worth time and time again.\n\nWe'll take a look at some example tests that are exhibiting some common issues, such as:\n - readability\n - brittleness: breaking every time the implementation is changed\n - non-obvious cause + solution upon test failure\n - flakiness / unreliability\n - slow execution\n\nWe'll improve these tests in plain JUnit, move on to Hamcrest and AssertJ, and then show how Spock can take us even further to tests that are beautiful, easily maintainable, and incredibly useful.\n\nStop wasting time on bad tests!\n\nThis talk aims to level-up every Android developer's testing know-how and arm them with the tools required to write effective and maintainable tests.",
"speaker": {
"id": 31,
"name": "Jon Reeve",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-10 14:20:00",
"etime": "2016-03-10 14:50:00",
"category": {
"id": 4,
"name": "メンテナンス"
},
"room": {
"id": 5,
"name": "Room5"
},
"language_id": "en",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 56,
"title": "Chrome Custom Tabsをさらに使いこなそう",
"description": "■対象:\n初級者~中級者\n\n■概要:\nChrome Custom Tabs(以下CCT)がSupport Libraryの23.0.0から追加されました。\nCCTの存在を知っていはいるが、なかなか導入できない人もいると思います。\n出た当初に比べて、現在はできることも少しずつ増えてきています。\nCCTでできることできないことを把握して、導入できるか再検討してみましょう。既に導入している人でも、新しい知見を持ち帰っていただきたいと思います。\n\n■目次案:\n * CCTとは\n * 導入方法\n * 外見を変える\n * アニメーションをつける\n * Referrerをつける\n * Headerをつける\n * BottomBarをつける\n * RemoteViewをつける\n * Prefetchで素早く読み込む\n * イベントを受け取る\n * Sessionをつなぐ\n\n■補足:\nあまりコードには触れず、できることできないことにフォーカスを置こうと思っています。\n事前にサンプルコードは公開し、それに沿う形にします。\n余裕があれば(調べきれれば)、Chrome側から見たアプリにも触れたいと思っています。",
"speaker": {
"id": 51,
"name": "sakebook",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-10 15:10:00",
"etime": "2016-03-10 15:40:00",
"category": {
"id": 5,
"name": "開発環境・ツール"
},
"room": {
"id": 1,
"name": "Room1"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 57,
"title": "2つのアプリ、1つの設計のデザイン指針",
"description": "【対象者】\nデザイナーの考えを知りたい\nワンソースプロダクトの設計に興味がある\nデザイナーが1人、もしくは少人数のチーム\n\n【概要】\nQuipper社では、スタディサプリとQuipperアプリという2つのプロダクトを持っています。全て一つのソースコードから生まれています。\n\nさらに、教育系という特性上、iOSとAndroidでほぼ同時に設計を行うことが多いです。\n\nワンソースから生まれるプロダクトで、デザイナーがどのような考えで\n日々設計に勤しんでいるか、ビジネス側の理解と開発の整合性、\nエンジニアの方々との協力関係はどうなっているのかなどお話したいと思います。\n※デザイナー目線でお話するので、プログラムの話は一切出てきません。\n\n【目次】\n- ワンソースプロダクトの良さと難しさ\n- 日本と国外の設計の違い\n- iOSとAndroid\n- それぞれのOSの特性を理解する\n - マテリアルデザインで助かったこと",
"speaker": {
"id": 21,
"name": "meyco",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-10 15:10:00",
"etime": "2016-03-10 15:40:00",
"category": {
"id": 2,
"name": "設計・開発手法"
},
"room": {
"id": 2,
"name": "Room2"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 58,
"title": "位置情報を正確にトラッキングする技術",
"description": "Pokemon GOによって再び位置情報を使ったアプリに注目が集まっていますが、AndroidのLocation Managerをそのまま使っただけでは精度の良い位置情報をトラッキングすることはできません。\nこのセッションでは\n- バックグラウンドで安定的に位置情報を取得するアーキテクチャの作り方\n- LocationManagerに設定する最適なCriteriaの作り方\n- 高精度の位置情報を取得するための各種フィルターの作り方\nの順に、UberやNike+と同等かそれ以上の精度の位置情報トラッキングを可能にする方法を説明します。\nデモアプリと実際のフィールドテストのデータを用い、トラッキングアルゴリズム開発の過程でパフォーマンスをどのように検証していくかという方法論も説明し、参加していただいた方が自分のアプリのニーズにあった位置情報トラッキングアルゴリズムへカスタマイズしていくためのヒントも提供できればと思います。\nまた位置情報精度とバッテリー消費量の関係についても実際の検証データを使って考察する時間を取りたいと思います。",
"speaker": {
"id": 52,
"name": "水鳥敬満",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-10 15:10:00",
"etime": "2016-03-10 15:40:00",
"category": {
"id": 7,
"name": "プラットフォーム"
},
"room": {
"id": 3,
"name": "Room3"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 59,
"title": "コマンドなしでぼくはAndroid開発できない話",
"description": "■対象者\nAndroid開発をする上で便利なコマンドを知りたい人\nAndroid開発をより効率的に行いたい人\nGUIよりコマンド(CUI)が好き人\n\n■概要\nこのセッションでは30分とにかくAndroidに関するコマンドの話をします。\n\nAndroid Studioでlogcatを見れたり、Android Monitorから色々見れたりしますが「それターミナルからコマンドで見れますよ」と言いたいわけです。\nコマンドを介せばさらに細かく端末の情報を確認することができます。\nコマンドから文字を入力したり、Backキーを押したりとコマンドを介して端末操作もできます。\nIntentの発行など人力で行うと面倒な作業もコマンドからなら楽にできます。\n色んなコマンドを知ることで、Androidの状態や仕組みを理解する機会にもなります。\n\nそんな「コマンドでAndroid開発を楽しみたい・効率的に開発したい!」というみなさまの熱い期待にお答えするセッションです。\n\n私が日々使用しているコマンドからいざって時に役立つかもしれないコマンド等、色んなコマンドをご紹介していきたいと思います。\n実際にコマンドを実行しながらどんなことができるものなのかを見ながら紹介していくものも用意する予定です。\nコマンドを知ることで、今まで以上に作業効率の向上、Android楽しさ・奥深さを知っていただけると嬉しいです。\n\n具体的には以下の様なものをメインで話す予定です。\n* adbコマンド\n* Androidのshellコマンド\n* adbを便利にするTool\n* Androidのコマンドを支える技術\n* コマンドを組み合わせたTips",
"speaker": {
"id": 23,
"name": "operandoOS",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-10 15:10:00",
"etime": "2016-03-10 15:40:00",
"category": {
"id": 5,
"name": "開発環境・ツール"
},
"room": {
"id": 4,
"name": "Room4"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 60,
"title": "LayoutInflater - friend or foe?",
"description": "When building Calligraphy (https://github/chrisjenx/Calligraphy) it uncovered some interesting aspects of the LayoutInflater and some unknown side effects.\n\nCalligraphy could be described as a partial 'hack' - I think it's important to show to how this works and although a 'hack', it's been done with safety in mind.\n\nI will cover how the LayoutInflater works - being one of the most important parts of the Android framework, Android Developers should understand what goes on under behind their Layouts.\n\nSecondary let's look at how Calligraphy hacks the lifecycle to allow you to it to inject into views at inflation time and then how you can roll your own version of Calligraphy!",
"speaker": {
"id": 53,
"name": "chrisjenx",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-10 15:10:00",
"etime": "2016-03-10 15:40:00",
"category": {
"id": 7,
"name": "プラットフォーム"
},
"room": {
"id": 5,
"name": "Room5"
},
"language_id": "en",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 61,
"title": "エンジニアが武器にするMaterial Design",
"description": "■概要\nMaterial Designは2014年にGoogleが提案したデザインガイドラインであり、最近では多くのAndroidアプリで採用されています。\nノハナ社では2016年1月からエンジニア主導でアプリのMateiral Design化をじっくりと進めています。\nエンジニアがデザインに関わるとどのような利点があるのかをノハナ社の事例を元にお話します。\n\n■目次案\n・エンジニアがMateiral Designを理解する利点\n ・Material Designの特徴とエンジニアの思考\n ・デザイン巻き戻り工数の削減\n ・エンジニアにしかできないユーザー体験の向上\n・Material Design化の進め方\n ・ノハナ社のデザインフロー\n・Material Designを広めるために\n ・社内勉強会とその後のフォロー\n・Material Designの思想背景を理解するための思考法\n ・なぜBottom navigationではBackキーでコンテンツを切り替えるべきでないのか\n ・なぜSupport LibraryにもデザインガイドラインにもProgress Dialogがないのか\n\n■対象者\n・Material Designをなんとなく知っていてもっと理解を深めたい方\n・デザイナーの言いなりで実装するのが嫌な方\n・その他、アプリのUIを改善したい気持ちを持っている方",
"speaker": {
"id": 54,
"name": "瀬戸優之",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-10 16:00:00",
"etime": "2016-03-10 16:50:00",
"category": {
"id": 3,
"name": "UI・デザイン"
},
"room": {
"id": 3,
"name": "Room3"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 62,
"title": "Error Handling in RxJava",
"description": "■ 対象者\n・RxJava初級者〜中級者\n\n■ 概要\nAndroid開発にRxJavaを取り入れる事例がかなり増えてきており、Androidの標準APIのイケてない部分を解消したり、複雑な非同期処理をうまく記述したり、といった知見はかなり充実してきていると思います。一方で、RxJavaを使う場合のエラーハンドリングに関する知見はそれほど広まっていないのではないかと感じます。そこで本発表では、エラーハンドリングにおけるいくつかのパターンを取り上げて、RxJavaを使った実装方法を紹介したいと思います。\n\n■ 目次\n・RxJavaのおさらい\n・RxMarblesについて\n・エラーハンドリングで使うOperatorの紹介\n ・onErrorReturn\n ・onErrorResumeNext\n ・retry\n ・retryWhen\n・よくあるエラーハンドリングの実装方法\n ・Toast/SnackBarを表示する\n ・代わりのデータを表示する\n ・リトライする\n・少し複雑なエラーハンドリングの実装方法\n ・リトライするかどうかをユーザーに委ねる\n ・エラーの種類によって異なるハンドリングを行う\n ・他にもいくつか追加予定",
"speaker": {
"id": 55,
"name": "yuyakaido",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-10 16:00:00",
"etime": "2016-03-10 16:50:00",
"category": {
"id": 2,
"name": "設計・開発手法"
},
"room": {
"id": 4,
"name": "Room4"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 63,
"title": "Smoke and Mirrors in Android UI",
"description": "Smoke and mirrors is an expression use to describe something that obscures the truth. The expression is commonly used to describe magicians.\nAndroid developers have a lot in common with magicians, they make great and responsive UI, with limited resources. In order to make these experiences possible Android devs need to use a lot of tricks. \nThe talk will show examples of smoke and mirrors in: Android Framework, Google Photos, Google Calendar and Twitter.\nAfter the talk, attendees will know how those great experiences are built.",
"speaker": {
"id": 56,
"name": "rallat",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-10 16:00:00",
"etime": "2016-03-10 16:50:00",
"category": {
"id": 3,
"name": "UI・デザイン"
},
"room": {
"id": 5,
"name": "Room5"
},
"language_id": "en",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 64,
"title": "Kotlinを始めようハンズオン",
"description": "■概要\n新しいプログラミング言語のKotlin(ことりん)を使ったAndroidプログラミングのハンズオンです。長らく(特に)Androidエンジニアの注目を集めていたKotlinですが、今年2月に念願のver1.0のリリースと7月に日本初の書籍の出版があり、今非常に勢いのある言語です。\n\n■対象者\n・Android初心者以上\n・Kotlin初心者\n\n■ゴール/得られる知識・技術\n・AndroidプロジェクトにKotlinを導入できる\n・KotlinをAndroidアプリ開発に活用できる(Kotlinの利点を享受できる)\n・Kotlinの弱点を知り、フォローできる\n\n■注意\n・ハンズオンということで実際に手を動かしていただきます\n・ただし50分という短い時間の中でのハンズオン部分は非常に少ないです\n・ハンズオン参加の方は、事前にお知らせする環境をセットアップした状態のノートPCをお持ちください\n・ハンズオン不参加でもご聴講いただけます\n\n■目次案\n1. Kotlin概要(10分)\n2. 環境構築〜導入(解説5分、ハンズオン5分)\n3. アプリ実装(解説10分、ハンズオン15分)\n4. 次の一歩(5分)\n\n※題材となるアプリは検討中(ごく簡単なツール系を予定)\n\n■登壇者について\n・日本Kotlinユーザグループ代表\n・講演実績多数: DroidKaigi、JJUG CCC、Hacker Tackle、LLoT、ABCなど\n・執筆実績多数: Kotlinスタートブック、Software Design、日経ソフトウエアなど",
"speaker": {
"id": 57,
"name": "長澤太郎 @ngsw_taro",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-10 16:00:00",
"etime": "2016-03-10 17:30:00",
"category": {
"id": 5,
"name": "開発環境・ツール"
},
"room": {
"id": 6,
"name": "Room6"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 65,
"title": "CIの導入における選択肢と、最高の環境",
"description": "対象者: \nCIの導入を考えている方、CIを導入したは良いがポテンシャルを発揮できていないと思っている方\nCIとは何なのか、この世にCI as a Serviceと呼ばれるサービスが多数存在すること、テストやビルドが自分で出来る程度の前提知識が必要です\n\n内容:\nこれからCIを導入するにあたって、各CI as a Service(CIaaS)などの今考えられる選択肢とその選び方\n及び、考えうる最高のCI環境とその運用により得た知見について話します\n\n最適なCIのあり方というのは開発規模や使っているツール等によって異なります\n開発規模や利用ツールによってどのようなCIaaS或いはソフトウェアが選択肢にあがるのか?\n各CIaaS或いはソフトウェアの強みや弱み、それらを踏まえどのように選択していくのが良いのか?\n選んだ環境で、私達はソフトウェアの品質向上のために一体どのような事が可能なのか?\nまた、現状考えうる最高のCI環境の提起と、いかにしてその選択に至ったか?\nその運用例と、運用によって得た知見について",
"speaker": {
"id": 58,
"name": "komatatsu",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-10 17:10:00",
"etime": "2016-03-10 17:40:00",
"category": {
"id": 4,
"name": "メンテナンス"
},
"room": {
"id": 3,
"name": "Room3"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 66,
"title": "LayoutManagerをつくろう",
"description": "対象者 ・RecyclerViewを使ったことがある人\n\nRecyclerViewの要素をどう並べるかを決めるLayoutManager。\nSupport LibraryではLinear、Grid、StaggerdGridの3つが用意されているが、もっと凝ったレイアウトや複雑なレイアウトをしたい場合、自分でLayoutManagerを作るしかない。\nこの発表ではいくつかのサンプルレイアウトを使い、自作LayoutManagerを作るときのコツや注意点を紹介する。\n\n発表内容(案)(予定)\n・LayoutManagerとは何か\n・RecyclerViewとLayoutManagerの関係\n・LayoutManagerの動作の仕組み\n・簡単な自作LayoutManagerを用意し、実際のコードを見ながらカスタマイズの要点を紹介\n・まとめ",
"speaker": {
"id": 59,
"name": "consomme72",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-10 17:10:00",
"etime": "2016-03-10 17:40:00",
"category": {
"id": 2,
"name": "設計・開発手法"
},
"room": {
"id": 4,
"name": "Room4"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 67,
"title": "Exploring new Android layouts",
"description": "Creating optimized layouts is a stubborn task, Android developers need to spend considerable amount of time on it because there are some common pitfalls with existing layouts (LinearLayout, RelativeLayout, etc) and there are lots of screen sizes they need to care considering the device factors (screen size, density, orientation, multi window mode from Nougat).\n\nIn this talk I'm going to cover the two new layouts that were introduced from Google in 2016, ConstraintLayout and FlexboxLayout.\nThe topics will include Android views in general, what are the common pit falls of existing layouts, basics of the new layouts and what common layout problems they try to solve.\n\nDisclaimer: the presenter is the author of the FlexboxLayout, but I'll try to explain the unbiased pros and cons regarding the existing and newly introduced layouts from technical point of view.",
"speaker": {
"id": 60,
"name": "thagikura",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-10 17:10:00",
"etime": "2016-03-10 18:00:00",
"category": {
"id": 3,
"name": "UI・デザイン"
},
"room": {
"id": 5,
"name": "Room5"
},
"language_id": "en",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 68,
"title": "テスト0から目指すクラッシュフリー率99%",
"description": "「なんで、テストカバレッジ0の私がクラッシュフリー率99%台に!?」\n様々な現場でAndroid開発をしていると、テストコード皆無のプロジェクトに遭遇することもあるだろう。\nテストコードがないと大胆な変更をリリースするのに勇気がいる。勇気がいるからリリースが怖くなる。リリースが怖いから変更が溜まっていく…の悪循環だ。テストコードはあった方がいい。そんなことは分かっている。それでもないものはない。\n\n本セッションではスピーカーの経験から、次のような内容を扱う\n・テストコードゼロの現場では何から始めるか\n・クラッシュフリー率を上げるには何が効果的か\n・テストを書かない現場にどうやって文化を根付かせるか\n\n対象は特にAndroid開発を始めたばかりの初心者や、テストコードがなくて苦しんでいる現場のプログラマを想定している。",
"speaker": {
"id": 11,
"name": "fushiroyama",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-10 18:00:00",
"etime": "2016-03-00 18:30:00",
"category": {
"id": 4,
"name": "メンテナンス"
},
"room": {
"id": 3,
"name": "Room3"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
},
{
"id": 69,
"title": "ドキッ★脆弱性 onCreate() から onDestroy() まで",
"description": "■対象者\n初心者〜上級者。\nAndroidアプリで実際に公開された脆弱性について興味のある方。\n\n脆弱性はバグです。バグは必ず産まれるものです。例えセキュアコーディングガイドを隅から隅まで暗証してたとて、予期せず脆弱な実装は世にでるでしょう。本発表ではJVN49343562とJVN61297210が付与されたAndroidアプリ「マネーフォワード」の「WebView クラスに関する脆弱性」「任意の操作が実⾏可能な脆弱性」について、下記のアジェンダ(仮)でご紹介いたします。\n\n- 脆弱性対応タイムライン\n- 脆弱な実装の紹介\n- 脆弱な実装の修正\n- 脆弱な実装の背景\n- 俺たちはどう脆弱性に向き合っていくのか\n\nこういたノットベスト・プラクティスを共有することで、世の中のアプリの品質がより高くなることを願っています。又、一歩踏み込んでこういったバグをも知見としてオープンに共有できる文化作りに一端を担いたいと思います。",
"speaker": {
"id": 61,
"name": "ken5scal",
"image_url": "",
"twitter_name": "",
"github_name": ""
},
"stime": "2016-03-10 18:00:00",
"etime": "2016-03-10 18:30:00",
"category": {
"id": 4,
"name": "メンテナンス"
},
"room": {
"id": 4,
"name": "Room4"
},
"language_id": "ja",
"slide_url": "",
"movie_url": "",
"movie_dash_url": "",
"share_url": ""
}
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment