Attiq: Qiita.com + Material Design - Qiitaの非公式Androidクライアントを出しました


<img src="https://raw.githubusercontent.com/eneim/Attiq-app/master/art/web_hi_res_512.png" width="256">

## TL,DR

勉強のため、ライブラリを試すために、Attiqを作りました。

ソースコードについて：多少な認証キーを整理してから公開する予定。

Play store URL: [https://play.google.com/store/apps/details?id=im.ene.lab.attiq](https://play.google.com/store/apps/details?id=im.ene.lab.attiq)

Issue tracker: [https://github.com/eneim/Attiq-app](https://github.com/eneim/Attiq-app)

Realtime feedback: [https://gitter.im/eneim/Attiq-app](https://gitter.im/eneim/Attiq-app)

完全Ads-free、課金なしで提供します（本来、Pro版など考えています）

## Attiqを作りました

#### スクリーンショット

<img src="https://raw.githubusercontent.com/eneim/Attiq-app/master/art/device-2016-02-11-140319_framed.png" width = "256"><img src="https://raw.githubusercontent.com/eneim/Attiq-app/master/art/device-2016-02-11-140401_framed.png" width = "256">

Qiita API v1、v2 + web リソースを含め、かつAndroid向けMaterial化されたQiitaの非公式Androidクライアントです

## Permissonの注意点

バカに利用しないPermissonを外さなかった。1.0.1で修正します

## 主な特徴

*!以下、<b>（BETA）</b>があるものは、現在試しの状態で、多少な不具合がある可能性です*

- Material Design、テーマ 「DARK<b>（BETA）</b>」、「LIGHT」: デフォルトのAppCompat、AppCompat.Lightを元にして、テーマを拡張しました
- サポートAndroidバージョン： ```minSdkVersion 21```　あるいは、Android 5.0以降となります。Android 4の皆さん、ごめんなさい。時間があれば是非サポートを検討します
- ログインあり・なしでもオッケー
	- Qiita API v2を使用したから、Oauth2でログインして、さらに便利に利用できます
	- ログインしないままでも新着記事一覧を閲覧できます
	- **もちろんAPIのレートを増やすために、ログインでのご利用をオススメです**
- 記事一覧、閲覧歴史、（認証済みだけの）フィード（Qiita.comを開いた直後のページ）、記事詳細、ユーザー詳細ページなど

- 記事のコメント一覧、コメント作成・編集・削除、しかもMarkdownで（認証が必要）

- フォロー・アンフォローする（認証が必要）

- シェアする

- 数式をレンダリングする：MathJax<b>（BETA）</b>、設定ページにてON/OFFすることができます

- App indexingを試しています。経験ないので、動かない可能性があります。

- **記事の新規投稿**がまだ実装していないが、Requestを聞きますので、ぜひ声を出してください
 
- その他の細かい機能

- ***内部ブラウザで閲覧機能が、忘れました〜次のアップデートで追加します***

## 利用したオープンソースライブラリやプロジェクト

アプリ内にもありますが、一応列系します

- Android Support/Design系(ver 23.1.1)
- Square/Jake Wharton 系: OkHttp3、Retrofit2 (beta4)、Picasso、ButterKnife、...
- Google製系: Gson、Player services
- Fabric/Crashlytics
- Realm、jsoup
- UI系、Markdown系
	
**上記のライブラリ、知らない人がいるかもしれないので、詳細を述べます（build.gradleの一部）**

```groovy:build.gradle
	ext {
	  	support_libraries_version = '23.1.1'
  		okhttp3_version = "3.1.1"
		retrofit2_version = "2.0.0-beta4"
  		service_version = "8.4.0"
	}
	dependencies {
  		compile fileTree(include: ['*.jar'], dir: 'libs')
  		
  		compile "com.google.android.gms:play-services-appindexing:${service_version}"

  		compile "com.android.support:support-v4:${support_libraries_version}"
  		compile "com.android.support:appcompat-v7:${support_libraries_version}"
  		compile "com.android.support:design:${support_libraries_version}"
  		compile "com.android.support:recyclerview-v7:${support_libraries_version}"

  		compile "com.squareup.retrofit2:retrofit:${retrofit2_version}"
  		compile "com.squareup.okhttp3:okhttp:${okhttp3_version}"
  		compile "com.squareup.retrofit2:converter-gson:${retrofit2_version}"
  		compile "com.jakewharton:butterknife:7.0.1"

  		compile 'com.squareup.picasso:picasso:2.6.0-SNAPSHOT'
  		compile 'com.jakewharton.picasso:picasso2-okhttp3-downloader:1.0.1'

  		compile('com.github.ozodrukh:CircularReveal:1.3.1@aar') {
    		transitive = true;
  		}

  		compile 'com.sothree.slidinguppanel:library:3.2.1'
  		compile 'com.wefika:flowlayout:0.4.1'
  		compile 'com.google.code.gson:gson:2.5'
  		compile 'org.jsoup:jsoup:1.8.3'

  		compile 'io.github.gitbucket:markedj:1.0.6'
  		compile 'org.ocpsoft.prettytime:prettytime:4.0.1.Final'
  		compile "de.greenrobot:eventbus:2.4.0"
  		compile 'com.jakewharton.threetenabp:threetenabp:1.0.3'

  		compile "io.realm:realm-android:0.87.4"

  		compile('com.crashlytics.sdk.android:crashlytics:2.5.5@aar') {
    		transitive = true;
  		}

  		compile('com.crashlytics.sdk.android:crashlytics-ndk:1.1.2@aar') {
    		transitive = true;
		}
	}
```
	
- その他、参考になったオープンソースプロジェクト：[Qiitanium](https://github.com/ogaclejapan/Qiitanium)、[plaid](https://github.com/nickbutcher/plaid)

## Qiita APIの利用

- API v1、API v2だけでなく、```http://qiita.com/api/public```まで利用させていただきます。そして、ユーザー詳細で、HTMLをパーズし情報を収得することも行いました（Contribute数など）
- Qiita APIへの要望（[ogaclejapan](http://qiita.com/ogaclejapan/items/c899ae29ab09487ce3fc)さんの記事を引き続き）
	- データベースへの問い合わせ数が増やすかもしれないが、現在、APIから収得できる情報が少ないので、もっと入れて欲しい
	- フィールドの値や構造を一致にして欲しい（例えば、記事のタグ）
	- ストック数、コメント数、contribute数など、v2に入れて欲しい
	- TOS、Privacy policyに対して

```http://qiita.com/api/public```の使用が、Qiita.comのPrivacy policyに違反する可能性があると意識します。なので、Google Play Storeでの問い合わせをする前に、直接相談してください〜

## Issue tracker、Feature requestやFeedbackなど

Issue tracker、feature requestをここに：```https://github.com/eneim/Attiq-app```

**Realtime feedback**をサポートします、Gitterで： ```https://gitter.im/eneim/Attiq-app```


では、Attiqのご利用、お待ちしております。よろしくお願いします。