"あんざいゆき" x "秋葉ちひろ" は
カンファレンスアプリをどう作るのか?
2014.04.18 主催:インプレスジャパン
株式会社ウフィカ 代表取締役
あんざいゆき
blog : Y.A.Mの雑記帳(y-anz.m.blogspot.com)
twitter : @yanzm (やんざむ)
GTUG Girls マネージャー
秋葉ちひろ
株式会社ツクロア 取締役
デザイナー
Webサイト/スマホアプリ/ハードウェアなど、プラットフォー
ムの垣根なく、デザイン全般のクリエイティブワークに携わる。
!
構造や仕様もデザイナーから提案できないといけないと考えてい
る。
前半
デザイン&設計
新しいアプリを作るステップ
1. 既存アプリの調査
2. ざっくり機能を考える
3. 構成(画面遷移)を考える
4. 各画面のレイアウトを考える
5. 実装する
6. 使ってみる
•どういう機能があるか
•どういう構成(画面遷移)になって
いるか
•こういう機能もあればいいのになぁ
1. 既存アプリの調査 2.ざっくり機能
「必要な機能がみえてくる」
1. 既存アプリの調査 2.ざっくり機能
チェックしたアプリ
•ABC 2014 Spring 関連のアプリ
•ABC 2013 Autumn 関連のアプリ
•Google I/O アプリ
•Google Playで「Conference」で

検索した結果からよさげなもの
アプリの調査 2.ざっくり機能を考える
要求レベル
•公式サイトにいきたい
•講演内容がしりたい
•見るスケジュールを作りたい
•お気に入りとしてチェックしたい
•地図が見たい
3.構成(画面遷
アプリの調査 2.ざっくり機能を考える
シナリオを考える(想像する)
1つの時間帯では1つの講演しか見れない
タイムテーブルがほしい
「同じ時間帯の講演から、
 どれ見ようかなぁって考えるよね」
3.構成(画面遷
アプリの調査 2.ざっくり機能を考える
タイムテーブルの要求
•タイムテーブルの項目をタップしたら
講演の詳細がみたい
•どれがお気に入りになっているか

知りたい
•どの部屋の講演か知りたい
3.構成(画面遷
アプリの調査 2.ざっくり機能を考える
講演詳細の要求
•タイトル、講演者、概要、時間、

部屋、カテゴリが知りたい
•カテゴリをタップしたら、

そのカテゴリの講演一覧が見たい
•講演部屋の地図がみたい
•お気に入りにチェックしたい
3.構成(画面遷
アプリの調査 2.ざっくり機能を考える
シナリオを考える2(想像する)
バザールの見せ方って難しい
「地図がないとつらい、常にみたい」
「ブースの数が多いので、地図のどこ

 にあるかすぐ見つけられるように

 なっててほしい」
3.構成(画面遷
アプリの調査 2.ざっくり機能を考える
ABC 2013 Autumn の地図
3.構成(画面遷
アプリの調査 2.ざっくり機能を考える
ABC 2014 Spring の地図
•色分けわかりやすい
•「あ、い、う、え、か」も別の色がいい
3.構成(画面遷
•どの島のブースがすぐわかりたい
- 色分けの色を表示するとか
•ブースがたくんさんあるから下まで

行くのたいへん
- インデックスラベル + fast scroll
- ヘッダーが残るリスト
アプリの調査 2.ざっくり機能を考える
バザール一覧の要求
3.構成(画面遷
アプリの調査 2.ざっくり機能を考える
バザール詳細の要求
•地図と一緒にみたい
- 地図をみるときにブース番号を覚えておか
ないといけないのは嫌
•どの島のブースがすぐわかりたい
- 色分けの色を背景にするとか
•隣のブースの詳細に簡単に移動したい(ある
島を流れ歩きでぐるっと見て回るときとか)
3.構成(画面遷
•それを見て行動するからスケジュールっ
ぽくなっているのがいい
- 時間順に講演が並ぶ
- 地図が常にでている
アプリの調査 2.ざっくり機能を考える
お気に入りの要求
3.構成(画面遷
•タイムテーブル
•お気に入り(マイスケジュール)
•カンファレンス一覧(カテゴリごと)
•バザール一覧
•公式サイト
能を考える 3.構成(画面遷移)を考える
トップレベルの画面
4.各画面のレ
•トップレベル画面が4つ以上ある
•トップレベル画面でスワイプによる

画面きりかえを使いたい
能を考える 3.構成(画面遷移)を考える
トップレベルの構成
4.各画面のレ
Navigation Drawer
能を考える 3.構成(画面遷移)を考える
タイムテーブル
4.各画面のレ
"あんざいゆき" x "秋葉ちひろ" はカンファレンスアプリをどう作るのか?
"あんざいゆき" x "秋葉ちひろ" はカンファレンスアプリをどう作るのか?
•スマホの1画面におさめるのは難しい
能を考える 3.構成(画面遷移)を考える
タイムテーブル
4.各画面のレ
特定の時間枠ごとにどれを見るか考えるなら、
時間枠ごとに1画面にするのはどうか
➡横軸を時間にする
➡スワイプで隣の時間枠に移動
特定の時間枠のタイムテーブル
能を考える 3.構成(画面遷移)を考える
タイムテーブルの画面遷移
4.各画面のレ
隣の時間枠のタイムテーブルスワイプ
講演詳細項目タップ
特定の講演の情報
能を考える 3.構成(画面遷移)を考える
講演詳細の画面遷移
4.各画面のレ
地図地図アイコンタップ
そのカテゴリの講演一覧カテゴリタップ
カテゴリの一覧
能を考える 3.構成(画面遷移)を考える
カンファレンス一覧の画面遷移
4.各画面のレ
そのカテゴリの講演一覧
特定のカテゴリを
タップ
講演詳細
特定の講演を

タップ
バザールの一覧
能を考える 3.構成(画面遷移)を考える
バザールの画面遷移
4.各画面のレ
バザール詳細
特定のバザールを

タップ
隣のバザール詳細スワイプ
カテゴリの一覧
能を考える 3.構成(画面遷移)を考える
お気に入り(マイスケジュール)の画面遷移
4.各画面のレ
講演詳細
お気に入りの

カンファレンス一覧
バザール詳細
お気に入りの

バザール一覧
•メインの色を決める
•タイムテーブル
•詳細
•お気に入り
•バザール
•マイスケジュール
4.各画面のレイアウトを考える 5.実装する)を考える
4.各画面のレイアウトを考える 5.実装する)を考える
•白ベースでスッキリ見やすく
•うすいグレーをサブカラー
•アクセントカラー2つ
メインの色を決める
メイン サブ アクセント
4.各画面のレイアウトを考える 5.実装する)を考える
•ActionBarのタブではなく
ViewPagerTabStrip
•文字のジャンプ率と色で、情報の優劣
をつける
タイムテーブル
4.各画面のレイアウトを考える 5.実装する)を考える
•ヘッダで領域をとらないように
•文字がかぶらないように
詳細画面
4.各画面のレイアウトを考える 5.実装する)を考える
4.各画面のレイアウトを考える 5.実装する)を考える
•アイコンだけだとわかりづらい
•マイスケジュールに登録するボタンの
動き
•「マイスケジュールに追加」

「∼登録済み」という文言の吟味
お気に入り
4.各画面のレイアウトを考える 5.実装する)を考える
4.各画面のレイアウトを考える 5.実装する)を考える
•それぞれの場所の印象が強くなるよう
なデザインに
バザール
色を全面に押し出す
4.各画面のレイアウトを考える 5.実装する)を考える
4.各画面のレイアウトを考える 5.実装する)を考える
•1画面で見れるように、2列で考えてい
たが、さすがに入りきらなかったw
マイスケジュール
4.各画面のレイアウトを考える 5.実装する)を考える
後半
実装
ABC 2014 Spring のデータ
http://www.android-group.jp/conference/
abc2014s/api/
ContentProvider設計
• id : integer primary key	

• title : text	

• abstract : text	

• speakers : text(speaker
idを;で結合)	

• start_time : long	

• end_time : long
カンファレンス
• room_id : integer	

• room : text	

• category_id : integer	

• category : text	

• time_frame : integer
ContentProvider設計
• id : integer primary key	

• name : text	

• profile : text
スピーカー
ContentProvider設計
• id : integer primary key	

• group : text	

• title : text	

• content : text
バザール
• location_area : text	

• location_area_id :
integer	

• location_number:	

• location_number_id :
integer
MainActivity
0. Activityの構成 1.
ConferenceListActivity
0. Activityの構成 1.
ConferenceDetailActivity
0. Activityの構成 1.
BazaarDetailActivity
0. Activityの構成 1.
0. Activityの構成 1.
1. タイムテーブル 2.
タイムテーブル
•ViewPager
•PagerTabStrip
•ListFragment
•複数のCursorを持つ
Adapter
1. タイムテーブル 2.
各部屋が1つのCursor
1. タイムテーブル 2.
•複数のCursorを持つAdapter
•ヘッダーの表示も対応している
•http://goo.gl/Dp033b
CompositeCursorAdapter
2.カンファレンス 3.バザールムテーブル
カテゴリー一覧
•ListFragment
•SimpleCursorAdapter
•カテゴリー名(カテゴリー
ID)のCursorを作る
2.カンファレンス 3.バザールムテーブル
カテゴリー一覧
•カテゴリーIDの重複していないCursor
•group By を使う
2.カンファレンス 3.バザールムテーブル
Content Provider で group By を使う
Uri.Builder builder = DataProvider.SESSION_URI.buildUpon();	
builder.appendQueryParameter("groupBy", 	
DataProvider.SessionColumn.COLUMN_CATEGORY_ID);	
Uri uri = builder.build();
@Override	
public Cursor query(Uri uri, String[] projection, String selection,	
String[] selectionArgs, String sortOrder) {	
!
String groupBy = uri.getQueryParameter("groupBy");	
!
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();	
...	
Cursor c = qb.query(db, projection, selection, selectionArgs, 	
groupBy, null, orderBy);
2.カンファレンス 3.バザールムテーブル
カテゴリー一覧
•SimpleCursorAdapterには _id
カラムが必要
•group By したカテゴリーIDを as
を使って _id として取得
2.カンファレンス 3.バザールムテーブル
as を使って _id として取得
String[] projection = {	
DataProvider.SessionColumn.COLUMN_CATEGORY_ID + " as " + 	
DataProvider.SessionColumn._ID,	
DataProvider.SessionColumn.COLUMN_CATEGORY};	
!
return new CursorLoader(getActivity(), uri, projection, null, null, null);
2.カンファレンス 3.バザールムテーブル
カテゴリー一覧
•全てのトラックを表示するための行も
ほしい
•MergeCursor を使って Cursor を
合体
•全てのトラック用の Cursor は
MatrixCursor で用意
2.カンファレンス 3.バザールムテーブル
MergeCursor で Cursor を合体
@Override	
public void onLoadFinished(Loader<Cursor> loader, Cursor c) {	
MatrixCursor all = new MatrixCursor(new String[]{	
DataProvider.SessionColumn._ID, 	
DataProvider.SessionColumn.COLUMN_CATEGORY});	
!
// CATEGORY_ID は 1 からなので、全トラック用に 0 を使う	
all.addRow(new Object[]{0, getString(R.string.all_track)});	
	
mAdapter.swapCursor(new MergeCursor(new Cursor[]{all, c}));	
}
2.カンファレンス 3.バザールムテーブル
カンファレンス一覧
•ListFragment
•SimpleCursorAdapter
•カンファレンスのテーブルに
はスピーカーID
•スピーカー名は別テーブル
2.カンファレンス 3.バザールムテーブル
カンファレンス一覧
•カンファレンスのテーブルにはスピー
カーのIDが ; 区切りで入っている
•スピーカー名に変換したカラムも
Cursorに欲しい
•CursorWrapperを使う
2.カンファレンス 3.バザールムテーブル
CursorWrapper を作る
@Override	
public void onLoadFinished(Loader<Cursor> loader, Cursor c) {	
mAdapter.swapCursor(SpeakerCursorWrapper.wrap(c, getActivity()));	
}
SpeakerCursorWrapperの実際のコードのデモ
2.カンファレンス 3.バザールムテーブル
カンファレンス詳細
•ListFragment
•ヘッダー
•カンファレンス情報
•リスト本体
•スピーカー
•お気に入りボタン
2.カンファレンス 3.バザールムテーブル
お気に入りボタン
•FrameLayoutを継承した
CustomView
•ToggleButtonと★を重ね
たレイアウト
•Checkableを実装し
ToggleButtonに流す
•ONでアニメーション
3.バザール 4.
バザール一覧
•ListFragment
•各島が1つのCursor
•複数のCursorを持つ
Adapter
•FastScroll + インデックス
ラベル
•ヘッダーの残るリスト
1. タイムテーブル 2.
•もともとヘッダーの表示に対応してい
る
•ヘッダーの情報を使ってインデックスラ
ベルを作成
•ヘッダーの残るリストに対応
CompositeCursorAdapterを改造
4.マイスケジュール.
マイスケジュール
•ViewPager
•PagerTabSt
rip
•Fragment +
ListView
トークセッション

More Related Content

PDF
Android Pattern Cookbook で見るトレンドの変遷
PDF
Fragment の利用パターン
PDF
マルチスクリーン対応と最近のアプリの傾向
PDF
JCROM で Android の「真の力」を解き放て
PDF
Androidアプリの魅力的なインターフェース〜本当にiOSアプリのデザインを流用するだけでいいの?〜
PDF
Unity5.3の機能まとめ
PDF
これだけは知っておけ!はじめてのAndroidアプリデザイン〜9-patch編 先生:秋葉 ちひろ
PDF
私の欲しい Android 端末
Android Pattern Cookbook で見るトレンドの変遷
Fragment の利用パターン
マルチスクリーン対応と最近のアプリの傾向
JCROM で Android の「真の力」を解き放て
Androidアプリの魅力的なインターフェース〜本当にiOSアプリのデザインを流用するだけでいいの?〜
Unity5.3の機能まとめ
これだけは知っておけ!はじめてのAndroidアプリデザイン〜9-patch編 先生:秋葉 ちひろ
私の欲しい Android 端末

What's hot (20)

PDF
ユーザーの心に刺ささるためには - UX実践編 -
PDF
リモート・スマホ・レンタル(第2回 Androidテスト祭り)
PDF
View customize pluginを使いこなす
PDF
Unity5.3をさわってみた
PDF
Prott's design
PDF
第一回Android training4desinger
PDF
だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回
PPTX
ゲームエンジンの中の話
PPTX
UnityでUI開発を高速化した件
PDF
HADO CONNECT発表
PDF
Css nite(2010.09.23)
PDF
第二回Android training4desinger 2
PDF
Google Glassでできること XE11版 最新開発情報 Mirror API & GDK
PDF
確実に良くするUI/UX設計
PDF
STORES.jp x AngularJS
ODP
Djangoアプリの実践的設計手法
PDF
YouTube APIの紹介
PDF
レスポンシブWebデザイン【基礎編】
PDF
スマホサービスにおける、UIデザインのノウハウと実例
PDF
カスタムROM開発者の視点から見たAndroid
ユーザーの心に刺ささるためには - UX実践編 -
リモート・スマホ・レンタル(第2回 Androidテスト祭り)
View customize pluginを使いこなす
Unity5.3をさわってみた
Prott's design
第一回Android training4desinger
だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回
ゲームエンジンの中の話
UnityでUI開発を高速化した件
HADO CONNECT発表
Css nite(2010.09.23)
第二回Android training4desinger 2
Google Glassでできること XE11版 最新開発情報 Mirror API & GDK
確実に良くするUI/UX設計
STORES.jp x AngularJS
Djangoアプリの実践的設計手法
YouTube APIの紹介
レスポンシブWebデザイン【基礎編】
スマホサービスにおける、UIデザインのノウハウと実例
カスタムROM開発者の視点から見たAndroid
Ad

Viewers also liked (11)

PDF
ABC2013 Autumn あんざいゆき x 小太刀御禄 対談
PDF
Sublime Text 2 で始める ReVIEW
PDF
User Interface 「UI ラーニング・パターン」 - ABC2014s
PDF
アプリのUIを改善するための7ステップ ∼Bump Recorder の UI を設計してみたよ編∼
PDF
Life with Android - Docomo SmartPhone Lounge Event -
PDF
Fragment を使ってみよう
PDF
Watch face アプリを公開してみた
PDF
Head First XML Layout on Android
PDF
Android Layout 3分クッキング
PDF
Adapter & ListView & ExpandalbeListView
PDF
Android Layout Cookbook Seminor
ABC2013 Autumn あんざいゆき x 小太刀御禄 対談
Sublime Text 2 で始める ReVIEW
User Interface 「UI ラーニング・パターン」 - ABC2014s
アプリのUIを改善するための7ステップ ∼Bump Recorder の UI を設計してみたよ編∼
Life with Android - Docomo SmartPhone Lounge Event -
Fragment を使ってみよう
Watch face アプリを公開してみた
Head First XML Layout on Android
Android Layout 3分クッキング
Adapter & ListView & ExpandalbeListView
Android Layout Cookbook Seminor
Ad

Similar to "あんざいゆき" x "秋葉ちひろ" はカンファレンスアプリをどう作るのか? (20)

PDF
K1hash20121024
PDF
さっきまでやっていた de:code 2018 向けの公式イベントアプリを Xamarin.Forms で開発したお話
PDF
ドメイン駆動設計 ( DDD ) をやってみよう
PDF
Clean Architectureで設計してRxJSを使った話
PDF
DEV-010_エンプラ系業務 Web アプリ開発に効く! 実践的 SPA 型モダン Web アプリ開発の選択手法
PPTX
2012 05-19第44回cocoa勉強会発表資料
PDF
20101127 Android Usability Seminar
PDF
Human Interface Guidelines(iOS版) まとめ資料
PDF
Xamarin.Forms概要
KEY
Webサイトのようには作れない!Webアプリ設計の考え方
PDF
iOSやAndroidアプリ開発のGoodPractice
PDF
アプリUI勉強会 in ネットイヤーグループ
PPTX
北海道勉強会_20140531
PDF
UI&UX / 重要なのは、毎日さわって嬉しい UI UX!
PDF
Android Design ざっくりレビュー
PDF
GDG DevFest 2020 Android data linkage info
PDF
第2回 FIC+FCS勉強会
PDF
Spath Workshop | 世の中をより良くするアイデアを形に出来るようになる会議 β版 20130420
PDF
UX - 業務システムにも感動を
PDF
効率的なアプリ開発のベストプラクティス
K1hash20121024
さっきまでやっていた de:code 2018 向けの公式イベントアプリを Xamarin.Forms で開発したお話
ドメイン駆動設計 ( DDD ) をやってみよう
Clean Architectureで設計してRxJSを使った話
DEV-010_エンプラ系業務 Web アプリ開発に効く! 実践的 SPA 型モダン Web アプリ開発の選択手法
2012 05-19第44回cocoa勉強会発表資料
20101127 Android Usability Seminar
Human Interface Guidelines(iOS版) まとめ資料
Xamarin.Forms概要
Webサイトのようには作れない!Webアプリ設計の考え方
iOSやAndroidアプリ開発のGoodPractice
アプリUI勉強会 in ネットイヤーグループ
北海道勉強会_20140531
UI&UX / 重要なのは、毎日さわって嬉しい UI UX!
Android Design ざっくりレビュー
GDG DevFest 2020 Android data linkage info
第2回 FIC+FCS勉強会
Spath Workshop | 世の中をより良くするアイデアを形に出来るようになる会議 β版 20130420
UX - 業務システムにも感動を
効率的なアプリ開発のベストプラクティス

More from Yuki Anzai (11)

PDF
droidgirls Recyclerview
PDF
Androidオールスターズ2016 yanzm
PDF
Whats's new in Android Studio at Google I/O extended in Fukuoka
PDF
What's new in Android N at Google I/O extended in Fukuoka
PDF
How to read "marble diagram"
PDF
Customizing Theme and Style for Material Design : Droid Kaigi 2016
PDF
Master of RecyclerView
PDF
Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -
PDF
「Android アプリのガチ開 発者が Mobile Backend Starter を使ってみた」
PDF
ボクの開発スタイル
PDF
application Next Generation presented by android女子部
droidgirls Recyclerview
Androidオールスターズ2016 yanzm
Whats's new in Android Studio at Google I/O extended in Fukuoka
What's new in Android N at Google I/O extended in Fukuoka
How to read "marble diagram"
Customizing Theme and Style for Material Design : Droid Kaigi 2016
Master of RecyclerView
Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -
「Android アプリのガチ開 発者が Mobile Backend Starter を使ってみた」
ボクの開発スタイル
application Next Generation presented by android女子部

"あんざいゆき" x "秋葉ちひろ" はカンファレンスアプリをどう作るのか?