Android初めまして!7月よりエウレカにJOINしました、エンジニアの二川です。エウレカではCouplesのAndroid開発を担当しています。前職では、Android向けのゲーム開発を行っていました。それまでゲームしか作ったことが無かったので、エウレカに入社するにあたり、練習を兼ねて簡単なサービスアプリを開発しました。今日はそのアプリについて話をしたいと思います。ある程度の開発経験があれば10時間程度で作れる、かなりシンプルなアプリです。今回作るのは、Dribbbleという世界中のデザイナーが作品を投稿するSNSサイトを閲覧するためのアプリです。UIは、デフォルトの素材を活かし、とてもシンプルに作っています。DribbbleのAPI(記事執筆時のAPIはDeprecatedになっています)を使い、Tab毎にカテゴリ分けしたListを表示しています。Listのアイテムをタップすることでサムネイル画像をDialogで表示することができます。今回のコードは、GitHubで公開していますので、この記事を見てAndroid開発に初めて挑戦する方は答え合わせに使ってみてください。requestをお願いします!w完成までの流れ完成までの流れは大きく3つに分けています。前編では2番目のAPIから受け取った値を保存するところまでを説明していきます。開発環境の構築APIから受け取った値を保存する保存した値を表示するそれでは開発を進めていきましょう!AndroidStudioを使った環境構築アプリを作るにあたり、まずは開発環境を構築しましょう。今までEclipseを使った開発しかしたことなかった私ですが、開発環境としてAndroidStudioを使いました。AndroidStudioとはGoogleが提供するAndroidプラットフォーム開発用の統合開発環境(IDE)です。これからAndroidアプリ開発を始めるのであれば、これを使わない手はないと思います。......カッコいいからです!(←重要)※注:あくまで個人的な好みです。Eclipseがカッコ悪い、ということでは決してないです...ゴニョゴニョAndroidStudioEclipse補足ですが、DeveloperサイトにてAndroid開発用のIDEとして、AndroidStudioが今後は公式になると書かれています。ready.また開発環境としてEclipseではなくAndroidStudioを使ったほうが良い理由はこちらで詳しく解説されています。Studioを使っている10の理由)AndroidStudioの導入やプロジェクトの作成方法はネット上で様々紹介されていますので、今回は割愛させていただきます。面倒なことはライブラリー導入で解決ネットワーク通信用ライブラリーVolley環境構築ができたら、早速開発に入っていきます。今回はDribbbleのAPIを使うのでネットワーク通信の機能が必須となります。Androidでネットワーク通信の機能を書く場合、下記のことに意識する必要があります。ネットワーク通信を伴う操作は遅延することもありえるので、UIスレッドでは行わない(UIスレッドでの通信はAndroidOS3.0以降エラーをはくようになっています)同様の理由でユーザーが通信をキャンセルすることができるようにするキャッシュを行い、高速化をはかるこれらのことを一挙に解決してくれるライブラリーがVolleyです。I/Oで発表されたネットワーク通信用のライブラリーです。onceというイメージからきています。ひと言でいえば「一度に色々できるよ!」ということです。導入Volleyをgitのsubmoduleとしてプロジェクトへ追加します。libraries追加したVolleyのフォルダをmoduleとして追加します。':app','libraries:volley'dependenciesにvolleyを追加します。}ここまでやってvolleyが使えるようになります。使い方Volleyを使ってJsonを取得するようなリクエストは下記のように書きます。この場合dribbbleのAPIから返ってきたJson形式のresposeがonResponseに渡され、処理が行われます。HTTPメソッド名を設定する。tagJsonObj);上記のリクエストをキャンセルしたい場合はaddした時に設定しているタグを指定することで可能です。mRequestQueue.canceAll(tagJsonObj);Cacheの利用は下記のように行います。Cacheがない場合の処理、再度リクエストを投げるような処理を書きます}これで、データの取得はできました。次に、このデータを端末に保存していきましょう。SQLiteDBをラップしてくれるライブラリーActiveAndroid取得したデータもライブラリーを使って端末に保存します。端末への保存方法には複数ありますが、今回作ったアプリではSQLiteDBを使います。ActiveAndroidはDBを使っていることを意識せずにデータを扱えるようにしてくれるライブラリーです。導入GitHubからcloneしてjarファイルを作成します。buildActiveAndroid/buils/libs/activeandroid.jarが作成されます。このjarファイルをtraveling/app/libs配下に配置します。dependenciesに下記を追加します。}初期設定もう少し準備が必要です。先に紹介したVolleyと一緒に使うことを考えると必然的にApplicationクラスを継承させたクラスにも書く方法になります。}今回作成したアプリではShotsクラスを作成していますが、クラスに@Tableをつけることでテーブルの役割となります。変数に@Columnのアノテーションを付けることでカラムの役割となります。クエリを使うことができます。idを指定してデータを取得します。categoryを指定してデータのリストを取得します。}}実際に通信で受け取ったJSONObjectからShotsへデータを保存する方法です。今回はいったんDTOクラスにデータを格納し、そこからShotsへ保存を行いました。Shots(shotsDTO);shots.save();データを取得するときは今までSQLiteを扱っていたようにクエリが使えます。保存するときはDBであることを意識せずにsaveするだけで保存が可能です。前編のまとめAPIで取得したデータの保存までを書いてきました。後編更新しました!>興味が湧いた方、もしくはどんなクソコードか見てやるよ!という方は是非GitHubでソースを見ていただければと思います!cloneしてくればそのまま動かすことが可能です。requestしてください。GitHub)今回のアプリのように短時間でそれなりに動くものを作るには、ライブラリー郡をいかに効率よく活用するかで決まります。便利なライブラリーにはいつも助けられています。今、開発を担当しているCouplesも、限られた時間の中で効果を最大化するために様々なライブラリーやツールを利用しています。エウレカでは、どんなライブラリーを使うのかや、開発を効率化するツールの導入などはエンジニアに任されています。制約が無いぶん責任も重大ですが、最新のテクニックが使い放題、常に刺激的な開発ができる環境は、エンジニアとして遣り甲斐を感じられます。