画竜点睛を衝く@mapyo

日々やった事をつらつらと書くブログです

Androidアプリが存在しないサービスのAndroidアプリを作ってみるという試み

こういうの作ってみた。 f:id:mapyo:20161024012907g:plain

ソースはこちらにアップしてある

github.com

タップしても何も起きなくて、単純に一覧を表示するだけ。

いろいろ考えた事

データをどう用意するか?

存在しないアプリを作るので当然、APIなども存在していない。 最初はアプリ側でwebページにアクセスしてスクレイピングしてそれを表示させよう。と考えていた。

mk.hatenablog.com

こんな感じで書くとテストも書けるしめっちゃいいじゃんと思ってた。 けども、冷静に考えると結構だるいなーという気持ちになり、やらなかった。

アプリからスクレイピングをしないとなると、手作業でJSON作るか。という気持ちになってたけど、結構だるいなーという気持ちになり、やめた。

次に、

nelog.jp

URLを入力してくれるだけでデータを作ってくれるやつを見つけて、よさそう。と思ってちょっと使ってみたのだが、JSONの形式が自由に決められなそうだったので、結構だるいなーという気持ちになり、やめた。ちゃんとは調べてない。

次に、

data.gunosy.io

Scrapyというスクレイピング用のフレームワークを発見して、若干使おうとしてみたけど、結構だるいなーという気持ちになり、やめた。しっかりスクレイピングするんだったらこういうのを使った方がよさそう。Rubyでやるんだったら、nokogiriとmechanizeなのかな?

いろいろやろうとして、最終的にだるいなー。という気持ちが高まりつつあったのだけど、以前Node.jsのcheerio-httpcliというやつを使った事を思い出して、使ってみた

mapyo.hatenablog.com

jQueryっぽい感じでデータ取得出来るので結構楽じゃんという事を思い出して、無事JSONを何パターンか作る事が出来た。

スクレイピングする時に作ったソースはこの辺。

https://github.com/mapyo/FindTravel/tree/master/scraping

どういう見た目にするか?

iOSアプリは存在していたので、それを参考にしてAndroidっぽい感じにした。あとは、なるべく実装しやすそうなUIを選んで作ってみた。2パターン作っただけだけど。

期間

GitHubのコミットログを見てると、大体1週間かからないくらいで作ってた。

この後

スクレイピングの部分をAPI作って動くようにして、アプリでそれを受け取るようにして、タップするとChrome Custom Tabsとか使って開くようにすれば動くものが出来そうな気がしなくもない。気分が高まればやってみたい。

出来れば作ったからにはGoogle Playに公開したいなぁという気持ちがあったんだけど、いろいろとまずそうなので、一旦保留。Androidユーザでアプリでとりあえず使いたいという人には需要があるかもしれないけども。。

まとめ

  • 作る時はAPIが公開されていなければスクレイピングが一番だるい
  • iOSアプリが存在しているとそれを参考に出来るのでちょっとはやりやすそう
  • Google Playに公開は出来なさそう
  • いろいろ作る事自体はおもしろい!!
  • アプリのデモの動画をとるのがかなりめんどくさかった

次何かを作るときは、Kotlinを使って作ってみたい気持ち。

Androidアプリが存在しないサービスのAndroidアプリを作ってみる試みとは別に、既にAndroidアプリが存在しているサービスのUIの部分を作ってみる試みもやってみたい。

LOGICOOL ワイヤレストラックボール M570tを買った

今までマウスなくてもMacについてあるトラックパッドでやっていけるやろと思ってた。

Android Studioを使ってるとマウスカーソルでぽちぽちする必要が出てきたり、Androidエミュレータをさわってるとそもそもトラックパッド使わないと操作出来なかったりでトラックパッドを使う機会が増えてきた。

トラックパッドも十分使いやすいんだけど、ぽちぽちぽちぽちやってるとどうしても指が痛くなってきてしまう。なので、マウスを買った。

マウスと一口に言っていろいろあって、どれ買おうかなぁというのでいろいろ悩んだ。今まで使ったことのないタイプを買ってみようということで思い切って買った。

LOGICOOL ワイヤレストラックボール M570t

LOGICOOL ワイヤレストラックボール M570t

よかった事

  • ボールをぐりぐりするだけでマウスよりも楽に移動できる
  • 指が痛くならない
  • ボールは思ったより使いやすかった

所感

レシーバでMacの2つしかないUSBポートが1つ埋まってしまって、スマホをケーブルで繋げなくなってしまったのでUSBハブを買った

電源ついてるやつでいい感じ

そんな今日この頃

Androidのビルド高速化の為にやったこと

ビルド遅い遅い言うだけで特に何も調べてなかったので調べてやってみた。

参考にしたのは

qiita.com

konifarさんのqiita。他に調べてみたけど、だいたいこんな感じだった。

org.gradle.jvmargsの値が結構低かったので上げてみた。これだけで10〜20秒くらいは早くなったので驚き。(僕のMac環境調べ)

gradleをオフラインモードにするのは前々からやっていて、何か新しいライブラリとか追加した時は、

./gradlew preBuild

これを実行すると毎回Android Studioの設定を変更する必要がないので便利。

これについてはこの辺に書いた。

mapyo.hatenablog.com

その他やった事

developer.android.com

この辺を眺めてたら、Instant Runの部分で、

Crashlytics を利用してビルド時間を短縮する
Fabric Gradle プラグインのバージョンが 1.21.6 以前だと、Crashlytics によってビルド時間が長くなる可能性があります。

こんな事が書かれていてびっくりした。調べたら以前のバージョンだったので最新バージョンに上げた。

所感

これでもうちょっと早くなるといいなぁ。なってくれ〜。

ビルドしてる最中はMacが完全に重くなって実質作業出来ない状態になるので、いっその事諦めて別PCで作業するというのもありなのかもしれない。

重くなるだけならいいんだけど、いやよくはないんだけど、その状態でキー入力すると途中の文字が飛んで入力されてしまう事があるからたちが悪い。せめて遅くてもキー入力した内容は出てきて欲しいと感じる今日この頃。

他に早くなりそうなネタがあったらどなたか教えてください〜

gradle-deploygate-pluginでアップする時に自動的にブランチ名とハッシュ値をメッセージに入れる

問題点

gradle-deploygate-pluginを使うと、コマンド一発でDeployGateにアップ出来て非常に便利。

しかし、DeployGateにapkをアップした時に、あれ、これmasterでビルドしたっけか?master最新にしてたっけか?という不安に駆られる事があると思う。

解決方法

コマンド実行する時にmessageにブランチ名、ハッシュ値を含めるようにする。以下のような感じ、そしてちょっと一工夫して、releaseビルドのときには[production]という文字が入るようにしている。

deploygate {
    userName = "XXXX"

    apks {
        def branch = 'git rev-parse --abbrev-ref HEAD'.execute([], project.rootDir).in.text.trim()
        def hash = 'git rev-parse --short HEAD'.execute([], project.rootDir).in.text.trim()
        def commonMessage = System.getenv('MESSAGE') + " ${branch} ${hash}"
        debug {
            message = commonMessage
        }
        release {
            message = "[production]" + commonMessage
        }
    }
}

これで以下のように実行すると、

MESSAGE="ほげほげ" ./gradlew uploadDeployGateDebug

DeployGateのメッセージのところには、

ほげほげ master 1856bca

という感じに入ってくれる。地味に便利。

先月はブログを書かなかった

最近ブログ書いてないなぁと思って思い返してみると、先月は1回も書いてない事に気が付いた。

毎月最低1回は書いてあったので、連続の記録が途切れてしまったなぁ。。。と残念に思っていたのだが、去年を1年間さらっと振り返ってみると、どうやら去年も9月だけブログを1回も書いてないようだった。なので9月はブログを書かない時期なのかもしれない。

先月は何も書いてなかったのだが、ドメインを取得していた。いや、冷静に過去のメールを遡ってみると、先月かなぁと思っていたのだけど、実は7月の終わりの事だった。

自分のブログ用にmapyo.netというドメインを取得して、さて、はてなブログ独自ドメインを当ててみよう!と思ったのだが、独自ドメインを当てる為には、まずははてなブログProに登録する必要がある。月額600円〜とかいてあって、ふむーと悩んでいると、その下には小さな文字でお得な2年コース加入時と書かれてあった。

2年コースだと14,400円を一括で払うようだ。それを見てまたふむーと悩んでいると、WordPressにしようかなぁという考えが浮かぶ、浮かぶけどWordPressでいろいろ準備してブログ書けるようにして、既存の記事を移行する事をかんがえると、ふむーとまた悩んでくる。そして、WordPressは一旦置いておいて、GitHub Pagesでもいいかなぁと考えた。昔に何かのやつを作った事があるので、いけるかもしれない。しかし、これもいろいろ準備してブログ書けるようにして、既存のデータを移行して。。。など考えるとふむーという感じになってきた。

こういった悩みを常日頃考えているわけではないのだけど、多分僕の頭の片隅には、ドメインを取ったけど、有効活用全然してない。。。という意識が常にあって、それがあるがゆえに先月ドメインを取得していたという事に頭の中でなってしまっていたんだと思う。

先月書かなかった分ネタは多分溜まっているはずなので、今月は積極的に書いていきたい。

という感じの雑な投稿を久しぶりに書いてみた。

chrome使っててアルクで簡単に検索出来るようにする

chrome検索エンジンを追加する事でちょっと早くなる。

before

  1. http://www.alc.co.jp/このページを開く
  2. ページが読み込みされてから(これが地味に遅い)、単語を入れて検索する
  3. 単語の検索結果がわかる

after

  1. chromeの検索バーにフォーカスを当てる
  2. alと入力してtabとかspaceキーを押す
  3. 検索したい単語を入れて検索
  4. 結果がわかる

how?

  1. chromeの検索バー?のところで右クリックして、検索エンジンの編集をクリック
  2. 検索エンジンを追加の部分にalcと入れる(これは好きな名前でよい)
  3. キーワードに、alと入れる(これも自分のお好みで。)
  4. URLの部分に、http://eow.alc.co.jp/search?q=%sと入れる

こんな感じで出来るようになる

所感

ちょっとだけ簡単に英語が検索出来るようになるので便利。

FABのSpeed dialっぽいやつを作ってみた

Buttons: Floating Action Button - Components - Google design guidelines

ここの Speed dialの部分に説明が乗っている。それっぽいやつを作ってみた。

https://github.com/mapyo/android-samples/blob/master/gif/FabSpeedDial.gif?raw=true

ソースはこちら。たいしたことは特にしてない。単純に各種ボタンやviewを表示したり非表示にしてるだけ。

android-samples/FabSpeedDial at master · mapyo/android-samples · GitHub

ちゃんとやるんだったら、もうちょっとアニメーションまわりとか、戻るボタンを押すとタップしている状態から元にもどるようにするとかなのだけど、作りこむのは大変だなーと思った今日この頃。

サンプルなのでとりあえずこんな感じです。

参考サイト

tiro105.hateblo.jp

www.learn2crack.com