52
\外国人旅行者向け/ 明石高専 和田 佳大(@e10dokup) ラーメン店検索アプリを作る ときに便利なライブラリとかの話 勉強会 #1

外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

Embed Size (px)

DESCRIPTION

2014/4/6に明石高専/松江オープンソースラボで開催された「Code for KOSEN勉強会#1」にて発表しました「外国人旅行者向けラーメン店検索アプリを作る話」の発表スライドです. ※諸事情に付き一部ページを削っております. 本スライドで利用しているスライドにある佐藤秀峰作「ブラックジャックによろしく」の改変画像については,すべて漫画 on Web(http://mangaonweb.com)より引用しております.

Citation preview

Page 1: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

\外国人旅行者向け/

明石高専 和田 佳大(@e10dokup)

ラーメン店検索アプリを作る

ときに便利なライブラリとかの話

勉強会 #1

Page 2: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

自 己 紹 介

Page 3: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

自己紹介

明石高専 電気情報工学科5年Code for KOSEN Branch:Akashi プログラマactif for Android を作ってました

@e10dokup

Page 4: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1
Page 5: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

自己紹介

Facebook ではこんなカバー画像してます

Page 6: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1
Page 7: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

アジェンダ

・ライブラリの紹介・API の紹介自 己 紹 介

Page 8: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

\やっと本題です/

成 り 行 き ライブラリ紹介

Page 9: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

ライブラリ紹介

キモい

+ キモい

[ 要出典 ]

Page 10: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

超キモい!

By 「ブラックジャックによろしく」,佐藤秀峰,漫画 on web

Page 11: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

超キモい!

ライブラリ紹介

TextView hogeView = (TextView) findViewById(R.id.text_hoge);

例)XMLで指定したViewを Java ソース上で扱う時

キャストしないとダメ

Page 12: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

ライブラリ紹介

goodCountView = (TextView)view.findViewById(R.id.bazar_detail_good_count); commentsCountView = (TextView)view.findViewById(R.id.bazar_detail_comment_count); bodyView = (TextView)view.findViewById(R.id.bazar_detail_body); menuItemListView = (ListView)view.findViewById(R.id.bazar_detail_menu_list); commentButtonView = (ImageButton)view.findViewById(R.id.bazar_detail_comment); goodButtonView = (ImageButton)view.findViewById(R.id.bazar_detail_good); bazarImageView = (ImageView) view.findViewById(R.id.bazar_detail_image); bazarMapView = (ImageView) view.findViewById(R.id.bazar_map);

※つかうViewの数だけ行います

actif for Android より参照

こんな感じで面倒なことに…

Page 13: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

ライブラリ紹介

そ・こ・で

Page 14: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

ライブラリ紹介

ライブラリを使って楽をしましょう!

Page 15: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

for Android Studio

Eclipse については検索しましょう(下は一例)Eclipse android ライブラリ

ライブラリ紹介 導 入 方 法

Page 16: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

導 入 方 法

ライブラリの .jar ファイルを libs ディレクトリに入れる

<注意>.jar ファイルを入れた後,build.gradle の dependencies の項目に compile fileTree(dir: 'libs', include: '*.jar')

と記入して,プロジェクトを sync しましょう

Page 17: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

導 入 方 法

Gradle を使って導入する

build.gradle の dependencies の項目に compile '<group>:<name>:<version>'

と記入して,プロジェクトを sync しましょう

Page 18: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

導 入 方 法

.jar と合わせると…,

dependencies{

compile filetree(dir: 'libs', include: '*.jar')

compile '<group>:<name>:<version>'

}

Page 19: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

導 入 方 法

Maven を使って導入する

pom.xml に <dependency>

<groupId>group_id</groupId>

<artifactId>library_name</artifactId>

<version>library_version</version>

<type>jar</type> <!-- or apklib -->

</dependency>

と記入して,プロジェクトを sync しましょう

Page 20: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

Butter KnifeURL:http://jakewharton.github.io/butterknife/

Page 21: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

Butter Knife

Q. どんなライブラリ?

・Activity, View, Fragment の findViewById

・Viewの OnClickLisnener

を楽に書くためのライブラリ

Page 22: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

Butter Knife

まず,Viewをアノテーション付きで宣言

@InjectView(R.id.view_hoge)

TextView hogeView;

@InjectView(R.id.view_fuga)

TextView fugaView;

Page 23: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

Butter Knife

いつもは findViewByIdが並ぶところで…

ButterKnife.inject(Activity) //Activity

ButterKnife.inject(Fragment, View) //Fragment

ButterKnife.inject(Adapter, View) //ViewHolder

これでOK!(ButterKnife.inject内で findViewByIdをやってくれます)

Page 24: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

Butter Knife

Viewのクリックリスナ

hogeView.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

// ボタンが押された時の処理

}

});

Page 25: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

Butter Knife

Butter Knife だと…

@OnClick(R.id.hoge_View)

void onClickButton() {

// ボタンが押されたときの処理

}

Page 26: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

Butter Knife

他に使えるリスナ

・OnLongCLick

・OnCheckChanged(CompoundButton)・OnEditorAction(EditText)・OnFocusChanged(EditText)・etc

Page 27: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

Google GuavaURL:https://code.google.com/p/guava-libraries/

Page 28: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

Guava

Q. どんなライブラリ?

Google 謹製の Java の便利ライブラリ.

普段やっていることを短く書くことが目的.(旧名:Google Collection)

別にAndroid のためのライブラリってわけではない

Page 29: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

Guava

//Guava 非使用時

List<HogeFugaPiyoObject> list

= new ArrayList<HogeFugaPiyoObject>();

//Guava 使用時

List<HogeFugaPiyoObject> list

= Lists.newArrayList();

List の宣言

冗長じゃなくなった!

Page 30: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

Guava

とても強いRange 回りRange.closed(”a”,”b”)

//a,b までの間に存在する文字群

Range.lessThan(4) //4 以下の範囲

Range.greaterThan(5) //5 以上の範囲 etc...

contains,containsAllメソッドでRange 内に存在しているか判定

Page 31: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

Guava

データを区切り文字で連結する Joiner

String[] meets = new String[]

{”beef”,”pig”,”chicken”};

Joiner.on(”,”).skipNulls()

“beef,pig,chicken”というString に

Page 32: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

Guava

データを区切り文字で分割するSplitter,CharMatcherString tel = “0123 456 789”;

CharMatcher matcher

= CharMatcher.WHITESPACE;

Iterable<String> splits

= Splitter.on(matcher).split(tel);

0123,456,789というString のリストに

Page 33: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

Guava

他には…・比較(ComparisonChain でメソッドチェイン)・set の中の単語検索(HashMultiset)・プリミティブ型に対するユーティリティメソッド・etc

Page 34: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

VolleyURL:https://android.googlesource.com/platform/frameworks/volley/

Page 35: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

Volley

Q. どんなライブラリ?

Google 謹製のネットワークプログラミング用ライブラリ.非同期通信でのHTTPリクエストとかが簡単に実装できる

※Volley を導入する際,Git からプロジェクトをクローンしてサブモジュールとしてプロジェクトにインポートします.詳しくは「android volley 導入」と言ったワードで検索しましょう

Page 36: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

Volley

リクエストまでRequestQueue queue = Volley.newRequestQueue(Context);

queue.add(new JsonObjectRequest(Method.GET, url, null

listener, errorListener))

queue.start() // リクエストの開始

レスポンスを受け取るリスナ

処理の失敗を受け取るリスナ

Page 37: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

Volley

レスポンスを受け取るリスナ

Listener<JSONObject> listener = new Listener<JSONObject>(){

@Override

public void onResponse(JSONObject response){

//JSONObject のパースとか

}

};

Page 38: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

Volley

処理の失敗を受け取るリスナ

ErrorListener errorListener = new ErrorListener(){

@Override

public void onErrorResponse(VolleyError error){

// エラー処理やエラー表示

}

};

Page 39: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

Volley

画像も簡単にリクエスト出来ます

ImageLoader imageLoader = new ImageLoader(queue,

new BitmapCache()); // キャッシュを実装しましょう

ImageLoader.ImageListener listener

= ImageLoader.getImageListener

(ImageView, android.R.drawable.ic_menu_rotate,

android.R.drawable.ic_delete);

imageLoader.get(url, listener);

Page 40: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

Volley

Volley を使う利点・比較的簡単に実装できる・拡張が簡単(XMLの処理とかも実装出来ます)・簡単にリクエストのキャンセルができる

Page 41: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

他にこんなライブラリも…

Page 42: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

Others

・Android Bootstrap(http://www.androidbootstrap.com/) Android で Twitter Bootstrap みたいに開発

・Android-Validator(https://github.com/throrin19/Android-Validator)

EditText のバリデーションを簡単にする

Page 43: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

Others

・IconicTextView(https://github.com/atermenji/IconicDroid) Font Awesome等のアイコンフォントが 使える TextView

・Twitter4j(http://twitter4j.org/ja/) Twitter との連携をすることができる

Page 44: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

API紹介

Page 45: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

API 紹介

飲食店の情報を取得出来ます・店名・座標・営業時間・席の数 などなど

URL:http://webservice.recruit.co.jp/hotpepper/reference.html

ホットペッパーAPI

Page 46: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

鉄道駅の情報を取得出来ます・駅名・沿線名・座標・都道府県 などなど

URL:http://www.ekidata.jp/api/api_station.php

API 紹介

駅データ API

Page 47: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

地図上二点間のルートを算出します・Google Maps API との併用でのみ使用可・クエリ制限2500回 /day・json か XMLでの出力が可能

URL:http://www.ekidata.jp/api/api_station.php

API 紹介

Google Directions API

Page 48: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

Ramen Shop

F i n d e r の場合(例えばの使い方)

現在地か駅データAPI から座標を取得↓

ホットペッパーAPI でラーメン店の情報を取得↓

Directions API とMaps API でルート表示

API 紹介

Page 49: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

というわけで

Page 50: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

ライブラリとAPIを駆使して…

Page 51: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

By 「ブラックジャックによろしく」,佐藤秀峰,漫画 on web

少しでも快適な

アプリ開発を

行ってくれよ!

Page 52: 外国人旅行者向けラーメン店検索アプリを作る話@Code for KOSEN勉強会#1

以上ですありがとうございました