AndroidでRealmを使ってみた〜お気に入り機能の実装(其の二)〜

前回は登録はできました。 お気に入り機能は簡単に登録と削除ができなければいけないですね。 今度は削除機能を作ってみます!! (前回のものから少々変わっている部分があるかもしれないですが悪しからず。。。) まずは、表示したデータがお気に入りに登録されているか判定します。 今回は一意のidで管理しているので、 そのidがRealmに保存されているか確認します。 今回はRealmを利用する準備の部分は省略します。 (前回の記事を見てもらえればわかると思います。) やり方はidで検索して(それぞれのidはサーバー等から取得済み) query.size == 0 になった時は該当するデータがなく、elseになった時はお気に入りに登録されているということです!! では、お気に入りに登録されていて、お気に入りから削除する場合は このようにおこなってデータを削除します。 削除の場合はTramsaction内で処理をする必要があります!! だいぶ簡単ですね!! 登録がされていない場合は、前回の記事を参考に登録するという流れです!! 最後に realm.close()をするのをお忘れずに!! (僕は終了させるのを忘れてエラー続出でした(汗)) 今度はお気に入りをListViewで表示させてみます!!

AndroidでRealmを使ってみた〜お気に入り機能の実装(其の一)〜

今回はAndroidアプリでReamlを利用してデータの管理をしてみようと思います。 実装したい機能は「お気に入り機能」 SQLiteは触ったことあったけど、 NoSQLであるReamlを使うのには勉強時間がかかるのではないかと心配・・・ しかし、日本語のドキュメントがありとても親切↓ https://realm.io/jp/docs/java/latest/ 更に、GitHubで「Android Realm」と検索すれば結構簡単なコードがでてくるのでこれらを拝見しながら いざ、実装!! RealmはNoSQLなのでキーと値のペアでデータを格納していきます。 最初にキーとなるModelなるクラスを作ります。 こんな感じで作成します。 重要なのが です。 RealmのModelとして宣言して、あとはカプセル化してゲッター・セッターを書くだけ!! 続いては、データをRealmに格納する処理を書いていきましょう!! 格納はとても簡単にできました!! 次は格納したデータを取得して表示してみたいと思います!!

AndroidStudioのバージョンをあげたらファイルをcompileできなくなった

Androidアプリを開発しているのですが、 最近、AndroidStudioのバージョンを上げたらビルド時にエラーがでてしまい、 1日つぶしてしまいました。 なので、解決方法を記載します。 (バージョンは1.2から1.4へのアップデートです。) エラーは下記のようなものでした。 解決方法は実に簡単で、 build.gradleのdefaultConfig{}に の1文を加えるだけです。 こんなことで1日悩むなんて・・・

Google Apps ScriptとdocomoAPIで遊んでみた

Google Apps ScriptとDocomoAPIで遊んでみた どら(マコト)です。 最近はマーケティング続きであんまりコードを書けてなかったのでちょっとちょっと遊んでみた。

雑談対話API

以前勉強会でこんな面白いAPIを紹介してもらったのでGASで叩いてみた 雑談対話API こんな感じで適当に会話してくれる リクエストはこんな感じ これをもとにGASでちょっとした進捗管理くんを作ってみた 後はonOpen()にしてあるのでシートを開く度に進捗を聞いてくる進捗くんの完成!

Java学習記録~コレクション②:Iterator~

ドラ(マコト)です。 ArrayListでget()メソッドを使わなくてもListから値を取ってくることができる そのためにはイテレータというものを使う List2.java 結果 iterator()メソッドの
hasNext()は次の要素を調査して、カラでなければtrueを返す
next()はその内容を返す
つまりいちいちfor文でローカル変数を宣言してやらなくてもいいということ!

Java学習記録~コレクション:ArrayList~

ドラ(マコト)です。 これまでまとまった値を処理する場合、配列を使ってた 配列にはString型やデータ型は格納できるが、インスタンスを格納することできないという弱点もある そんな弱点を解決するのが、コレクション!! コレクションは逆に基本データ型を格納する場合はラッパークラス(int型であればIntegerクラス)を使わなければならないが、配列ができなっかったインスタンスを格納することができる コレクションは大きく分けて3つ * List * Set * map

List

ArrayList

使い方は簡単♫ 例でこれを使って色々試してみる 結果 ということで一旦ここまで

Java8の日付APIを使ってみる

ドラ(マコト)です. 今までDateクラスとか日付を扱うクラスではエポックを利用してミリ単位で日付を表現してた。 それ自体にそこまで不満は感じていなかっけど、SimpeDateFormatクラスCalendarクラスを用いる際、月 + 1 を考えないといけなかった。それほど大したことではないかもしれないけど、直感的でないしなんかめんどい。 この方法がデファクスタンダードかもしれないけど、せっかっく Java8から使えるようになったTimeAIPがあるのでそちらを積極的に使って、覚えていこうと思う。

Java.timeパッケージの代表的なクラス

  • Instant
  • ZoneDateTime
  • LocalDateTime
  • Duration
  • Period
Instantクラス Dateクラスのようなものだけどナノ単位になった ZoneDateTimeクラス タイムゾーンを指定し、それを基準にした日付クラス 結果 LocalDateTimeクラス 曖昧な瞬間を表したい時がある タイムゾーンの指定なしに単に”12月25日はクリスマスだね、、、”みたいなものを表現したい場合LocalDateTimeを使う 結果

Google Apps Scriptでスクレイピング

GAS使えると便利〜と毎日つぶやいてるドラ(マコト)です。
そうなんです。社内ツールでspreadsheetを使う機会が圧倒的に多いのでGASは便利すぎる奴なんです。
今日はデータの入力などちょっと面倒な作業をspreadsheetにまとめたい時に使えるスクレイピングに挑戦! 後はトリガーとなるメイン関数を書いて引数を持たせて上げれば完了!
これはいい意味でハマる!
gas_part2

Google Apps ScriptでAPIをぶっ叩く②

正規表現に絶賛苦戦中のどら(マコト)です. 前回DoorKeeperからGASを使ってイベントの情報を取ってきた 今回はその他のイベントサイトからAPIを叩いて少しこったものにしてみる 今回はこの4つからそれぞれ タイトル、URL、場所、開始時間、終了時間を取ってくる * DoorKeeper * こくちーず * Partake * Zusaar まずソースはこんな感じ requset.gs 最近正規表現の勉強をしたので改めてみてみるとsplitのあたりとかもっとうまくできるなsplit(“[-T]”)とかな まあ動くことは動くということでとりあえずいいでしょう(笑) あとはそれぞれのページにトリガーとなるようなボタンを配置してメソッドを設定してやればよい gas_part2 更新ボタンを押すことで最新の情報を最大100件まで取ってくることができる うんうん!いい仕事したな(笑) 結構GASにいい意味でハマって来たので今はマーケティングを作業の効率化を図るためスクレイピングを試してるところ そのための正規表現なんだけどね、、、

Java学習記録~復習:標準クラスを使ってみる

最近APIを叩くことにハマりまくってるドラ(マコト)です。 日付を扱うDateクラスの存在は知っているけど、その時その時調べればいいやとあまり本格的に学ばなかったので、今回はDateクラスについて復習してみる。 どうやらJavaでは日付を扱う方法が4パターンあるらしい 一つがエポックと呼ばれるものである日にちからミリ秒単位で日時情報を表現するものらしい long型を使って表現するためコンピュータにとって扱いやすい 例えばこんな感じ TakeTime.java 結果 ただこれだと年月日時分秒を読み取ることができない そこで使うのがよく見かけるDateクラス このインスタンスはそのまま現時刻を取得することができる またインスタンスを生成する際、long型の引数を持たせてやれば、long値の日時を持つインスタンスを生成することができる UseDate.java 結果 とこんな感じでよく見慣れてる(笑) でもこれでも結局はエポックから経過ミリ秒を使っているのに間違いはないらしく人間が扱うには少し不便だ そこでDateインスタンスから年月日時分秒をそれぞれ抜き出してみる 結果 この他にもString型のインスタンスとしても扱うことができる 結果 といった感じ