Androidに触れてみる(3)【Retrofit2+RxAndroid(RxJava)で初めてのWebAPI】

色々あってWebAPIをandroidから叩いてみることにしました。

出来上がったものはこちらです

たったこれだけですがここに至るまでに結構時間がかかってしまったので同じような初心者に向けてここに至るまでの経緯を残しておこうかと思います

第一章 OAuth2がわからない

マストドンクライアントを作ろうとしているわけですがそもそもなにをどうすればいいのかわかりません

そんな時に出会ったのがこのページです

thr3a.hatenablog.com

こちらのページに書いてある通りOAuthなるものをまず最初にやればいいらしいのですがこれが全然理解できません。

murashun.jp

こんな記事とか

qiita.com

こんな記事を見ても全然ピンときません。

OAuthライブラリとかも探してはみましたがなんだかよくわかりません

結局OAuth認証をライブラリとかでパパッとやったり、そもそも仕組みを理解したりすることはあきらめました

ただ、いろいろ調べてわかったことはOAuthはWebAPIだということです

第二章 WebAPIがわからない

正直私はまともにプログラムを作ったことがないのでWebAPIなるものがなんなのか全然わかっていませんでした

qiita.com

この記事は個人的にはわかりやすいものだと思っています。

最終的にほんの少しだけWebAPIを叩いた経験と少しの調べた知識から推察するに、WebAPIとはちょっとリッチなhttp通信のことであり、少なくとも使う分には何ができるのかがわかっていればなぜできるのかを考えなくていいシステムなんだと思います。APIって名前がつくくらいだから当然なんでしょうけど。

ではこれを使うためにhttp通信をandroidで実装してやりましょう

第三章 AndroidでHTTPがわからない

アンドロイドではApachHTTPClientとHttpUrlConnectionなるものが標準で搭載されているらしいのですが、どちらを使えばいいのかよくわかりませんでした。

調べているうちに流れ着いたページをみると、どうやらApachHTTPClientは削除されたらしくHttpUrlConnectionなるものを使ってみることにしました

blog.riskfinder.co.jp

qiita.com

techbooster.jpn.org

しかし書いてみるとどうもしっくりきません

というか私はエラーハンドリングがあんまり好きではありません

AsyncTaskを継承したクラスを作成する必要があるのもなんだか嫌で、どこか胸がときめかないようなコードになってしまいました。

そんなときにいろいろ探し回った結果見つかったのがRetrofit2+RxAndroid(RxJava)でした

第四章 初めてのWebAPI

 最初に挙げたプログラムですが、大体ここら辺を見て作りました

dev.classmethod.jp

qiita.com

コードを見れば何しているのかわかりやすく、なによりエラーハンドリングとかAsyncTaskとかが現れなくて気持ちがいいですね。

 ただし導入紹介されているものはバージョンの関係で競合みたいなものが発生します。

stackoverflow.com

2をつけると解決するのですがいまいちわかりにくく結構ハマりました。

あと、どうやらマストドンjava用ライブラリが現在開発中っぽいですね

github.com

まだ安定していなさそう&エラーハンドリングがめんどくさそうなので今回は避けました

余談ですがこの方のスライドがRxをわかりやすく説明しているように感じたので載せておきます。

speakerdeck.com