Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

2014/4/6に明石高専/松江オープンソースラボで開催された「Code for KOSEN勉強会#1」にて発表しました「外国人旅行者向けラーメン店検索アプリを作る話」の発表スライドです.

※諸事情に付き一部ページを削っております.


本スライドで利用しているスライドにある佐藤秀峰作「ブラックジャックによろしく」の改変画像については,すべて漫画 on Web(http://mangaonweb.com)より引用しております.

  • Login to see the comments

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

  1. 1. \外国人旅行者向け/ 明石高専 和田 佳大(@e10dokup) ラーメン店検索アプリを作る ときに便利なライブラリとかの話 勉強会 #1
  2. 2. 自 己 紹 介
  3. 3. 自 己 紹 介 明石高専 電気情報工学科 5 年 Code for KOSEN Branch:Akashi プログラマ actif for Android を作ってました  @e10dokup
  4. 4. 自 己 紹 介 Facebook では こんなカバー画像してます 
  5. 5. ア ジ ェ ン ダ ・ライブラリの紹介 ・API の紹介
  6. 6. \やっと本題です/ ライブラリ紹介
  7. 7. ライブラリ紹介 キモい + キモい [ 要出典 ]
  8. 8. 超 キ モ い ! By「ブラックジャックによろしく」,佐藤秀峰,漫画 on web
  9. 9. ライブラリ紹介 TextView hogeView = (TextView) findViewById(R.id.text_hoge); 例)XML で指定した View を Java ソース上で扱う時 キャストしないとダメ
  10. 10. ライブラリ紹介 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 より参照 こんな感じで面倒なことに…
  11. 11. ライブラリ紹介 そ・こ・で
  12. 12. ライブラリ紹介 ライブラリを使って 楽をしましょう!
  13. 13. for Android Studio Eclipse については検索しましょう(下は一例) Eclipse android ライブラリ 導 入 方 法
  14. 14. 導 入 方 法 ライブラリの .jar ファイルを libs ディレクトリに入れる <注意> .jar ファイルを入れた後,build.gradle の dependencies の項目に compile fileTree(dir: 'libs', include: '*.jar') と記入して,プロジェクトを sync しましょう
  15. 15. 導 入 方 法 Gradle を使って導入する build.gradle の dependencies の項目に compile '<group>:<name>:<version>' と記入して,プロジェクトを sync しましょう
  16. 16. 導 入 方 法 .jar と合わせると…, dependencies{ compile filetree(dir: 'libs', include: '*.jar') compile '<group>:<name>:<version>' }
  17. 17. 導 入 方 法 Maven を使って導入する pom.xml に <dependency> <groupId>group_id</groupId> <artifactId>library_name</artifactId> <version>library_version</version> <type>jar</type> <!-- or apklib --> </dependency> と記入して,プロジェクトを sync しましょう
  18. 18. Butter Knife URL:http://jakewharton.github.io/butterknife/
  19. 19. Butter Knife Q. どんなライブラリ? ・Activity, View, Fragment の findViewById ・View の OnClickLisnener を楽に書くためのライブラリ
  20. 20. Butter Knife まず,View をアノテーション付きで宣言 @InjectView(R.id.view_hoge) TextView hogeView; @InjectView(R.id.view_fuga) TextView fugaView;
  21. 21. Butter Knife いつもは findViewById が並ぶところで… ButterKnife.inject(Activity) //Activity ButterKnife.inject(Fragment, View) //Fragment ButterKnife.inject(Adapter, View) //ViewHolder これで OK! (ButterKnife.inject 内で findViewById をやってくれます)
  22. 22. Butter Knife View のクリックリスナ hogeView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // ボタンが押された時の処理 } });
  23. 23. Butter Knife Butter Knife だと… @OnClick(R.id.hoge_View) void onClickButton() { // ボタンが押されたときの処理 }
  24. 24. Butter Knife 他に使えるリスナ ・OnLongCLick ・OnCheckChanged(CompoundButton) ・OnEditorAction(EditText) ・OnFocusChanged(EditText) ・etc
  25. 25. Google Guava URL:https://code.google.com/p/guava-libraries/
  26. 26. Guava Q. どんなライブラリ? Google 謹製の Java の便利ライブラリ. 普段やっていることを短く書く ことが目的. (旧名:Google Collection) 別に Android のためのライブラリってわけではない
  27. 27. Guava //Guava 非使用時 List<HogeFugaPiyoObject> list = new ArrayList<HogeFugaPiyoObject>(); //Guava 使用時 List<HogeFugaPiyoObject> list = Lists.newArrayList(); List の宣言 冗長じゃなくなった!
  28. 28. Guava とても強い Range 回り Range.closed(”a”,”b”) //a,b までの間に存在する文字群 Range.lessThan(4) //4 以下の範囲 Range.greaterThan(5) //5 以上の範囲 etc... contains,containsAll メソッドで Range 内に 存在しているか判定
  29. 29. Guava データを区切り文字で連結する Joiner String[] meets = new String[] {”beef”,”pig”,”chicken”}; Joiner.on(”,”).skipNulls() “beef,pig,chicken”という String に
  30. 30. Guava データを区切り文字で分割する Splitter,CharMatcher String tel =“0123 456 789”; CharMatcher matcher = CharMatcher.WHITESPACE; Iterable<String> splits = Splitter.on(matcher).split(tel); 0123,456,789 という String のリストに
  31. 31. Guava 他には… ・比較(ComparisonChain でメソッドチェイン) ・set の中の単語検索(HashMultiset) ・プリミティブ型に対するユーティリティメソッド ・etc
  32. 32. Volley URL:https://android.googlesource.com/platform/frameworks/volley/
  33. 33. Volley Q. どんなライブラリ? Google 謹製のネットワークプログラミング用 ライブラリ.非同期通信での HTTP リクエスト とかが簡単に実装できる ※Volley を導入する際,Git からプロジェクトをクローンして サブモジュールとしてプロジェクトにインポートします.詳しくは 「android volley 導入」と言ったワードで検索しましょう
  34. 34. Volley リクエストまで RequestQueue queue = Volley.newRequestQueue(Context); queue.add(new JsonObjectRequest(Method.GET, url, null listener, errorListener)) queue.start() // リクエストの開始 レスポンスを 受け取るリスナ 処理の失敗を 受け取るリスナ
  35. 35. Volley レスポンスを受け取るリスナ Listener<JSONObject> listener = new Listener<JSONObject>(){ @Override public void onResponse(JSONObject response){ //JSONObject のパースとか } };
  36. 36. Volley 処理の失敗を受け取るリスナ ErrorListener errorListener = new ErrorListener(){ @Override public void onErrorResponse(VolleyError error){ // エラー処理やエラー表示 } };
  37. 37. 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);
  38. 38. Volley Volley を使う利点 ・比較的簡単に実装できる ・拡張が簡単(XML の処理とかも実装出来ます) ・簡単にリクエストのキャンセルができる
  39. 39. 他にこんな ライブラリも…
  40. 40. Others ・Android Bootstrap (http://www.androidbootstrap.com/) Android で Twitter Bootstrap みたいに開発 ・Android-Validator (https://github.com/throrin19/Android-Validator) EditText のバリデーションを簡単にする
  41. 41. Others ・IconicTextView (https://github.com/atermenji/IconicDroid) Font Awesome 等のアイコンフォントが 使える TextView ・Twitter4j (http://twitter4j.org/ja/) Twitter との連携をすることができる
  42. 42. API 紹介
  43. 43. API 紹介 飲食店の情報を取得出来ます ・店名 ・座標 ・営業時間 ・席の数 などなど URL:http://webservice.recruit.co.jp/hotpepper/reference.html ホットペッパー API
  44. 44. 鉄道駅の情報を取得出来ます ・駅名 ・沿線名 ・座標 ・都道府県 などなど URL:http://www.ekidata.jp/api/api_station.php API 紹介 駅データ API
  45. 45. 地図上二点間のルートを算出します ・Google Maps API との併用でのみ使用可 ・クエリ制限 2500 回 /day ・json か XML での出力が可能 URL:http://www.ekidata.jp/api/api_station.php API 紹介 Google Directions API
  46. 46. Ramen Shop F i n d e r の場合(例えばの使い方) 現在地か駅データ API から座標を取得 ↓ ホットペッパー API でラーメン店の情報を取得 ↓ Directions API と Maps API でルート表示 API 紹介
  47. 47. というわけで
  48. 48. ライブラリと API を駆使して…
  49. 49. By「ブラックジャックによろしく」,佐藤秀峰,漫画 on web 少 し で も 快 適 な ア プ リ 開 発 を 行 っ て く れ よ !
  50. 50. 以上です ありがとうございました

×