tomoima525's blog

Androidとか技術とかその他気になったことを書いているブログ。世界の秘密はカレーの中にある!サンフランシスコから発信中。

サンフランシスコで強盗にあった話

こともあろうにサンフランシスコで強盗にあうというステータス解除をしてしまいました。今回はその顛末と、周りの反応がアメリカっぽかったので、それについて書きます。

経緯

その日は19時半頃にオフィスを出て、最寄りの地下鉄駅(BART)に向かいました。ところが一駅移動したタイミングで車が線路に立ち入ったということで、電車が運転を停止。(そもそもこんな事態が初めて)再開を見込んで1時間ほど待ったものの結局復旧のメドは立たず、代替輸送のバスも200m位の列が出来ていたので、諦めてオフィスに戻ることにしました。

続きを読む

Firebase Test Lab使ってみた雑感

f:id:tomoima525:20160601065604p:plain:w400
Google IO 2016にて発表されたFirebase Test Labを試してみました。メリデメ、感じたことなどまとめました。 (6/2/2016 追記しました)

tl;dr

2016年5月時点では、サポート端末の観点からアメリカ以外で使うにはまだ早そう。またネットワーク通信エラーでテストがぽこぽこ落ちるのでまだ様子見レベルで使うのが良さそう。

続きを読む

イースター島旅行についてガイドブックに載ってないことをまとめてみる(2016)

f:id:tomoima525:20160430095313j:plain:w400
4月28-5月2日(現地3泊4日)で、モアイで有名なあのイースター島を旅行してきました。ガイドブックは持っておらず、滞在中は現地の人に話を聞いて観光してきました。ガイドブックには載ってない(あるいはなさそうな)ナマの現地情報をまとめてみます。 今週のお題ゴールデンウィーク2016」というのにもちょうどマッチしたテーマです。

続きを読む

RxJavaで再帰処理をする、あるいは集合知は素晴らしいという話

f:id:tomoima525:20160424160637p:plain:w400
先日、TwitterSDKのTwitterApiClientについてちょっとしたTipsを書こうと思い、サンプルアプリを作り始めました。当初はシンプルなものにする予定だったのですが、RxJavaを勉強中ということもあり、RxJavaで再帰処理を実装してみることにしました。この実装についてAndroidのSlackチームであるandroid-jpにて相談したところ、@hydrakecatさんより素晴らしいフィードバックをいただくことができました。
Slackでせっかく得られた知見は流れてしまうので、ここにまとめておきます。最終的な成果物だけ興味ある方は一番下の実装見ていただくとよいです。

tl;dr

続きを読む

ブラウザタブの断捨離したら集中力が上がった話とその運用方法

ちょっと前なのですが、Chromeブラウザがクラッシュして開いていたタブが全部消える&リカバーできない事態に陥りました。が、それをきっかけにタブの断捨離を進めたところ、身長が伸びたり彼女が出来たりとかはなかったんですが、集中力が上がって精神疲労が緩和したので、ここに共有します。

続きを読む

個人でサービス、OSS開発をする時にモチベーションを継続させるノウハウ

個人で(≒会社とは別に)サービスやOSS開発することは、会社で身につけられる以上のスキル、実績が得られたり、コミュニティを広げたりするなどメリットが多くあります。

tomoima525.hatenablog.com

自分自身もこれまでいくつかサービスやOSSを開発してきたのですが、一番課題なのが、モチベーションの継続です。最初はテンション高く開発しますが、段々とやる気が下がってきます。一旦リリースした後のメンテも面倒です。そうしていくつかのサービスをクローズしてきました(涙)。
けど、これってとてももったいないです。そこで意識して改善した結果、TwitCalというカレンダーアプリを開発期間も含めると1年間以上継続してメンテ、機能追加を続けられました。今回は自分がどうやって取り組んできたかを整理してみたいです。

※ 飽きっぽい性格だったりなかなかサービスを継続メンテできない方向けです。たった1年?何言っているの?という方はそっ閉じしてやってください。

続きを読む

Rxjavaで川をズンドコする

このツイートを見て。
Rxjavaでズンドコしてみました。ご査収ください。

public class Zundoko {
  private static final String ZUN = "ズン";
  private static final String DOKO = "ドコ";
  HashMap<String, Integer> map = new HashMap();
  Integer[] zundoko = {0, 0, 0, 0, 1};
  Random rand = new Random();
  boolean isKiyoshi = false;

  public void run(){
    map.put(ZUN, 0);
    map.put(DOKO, 1);
    LinkedList<String> list = new LinkedList<>();
    while (!isKiyoshi) {
      list.add(rand.nextInt() % 2 == 0 ? ZUN : DOKO);
      if (list.size() > zundoko.length) {
          list.removeFirst();
      }
      System.out.println("¥¥ " + list.getLast());
      doLambdaKiyoshi(list);
    }
    System.out.println("¥¥キ・ヨ・シ!");
  }

  public void doLambdaKiyoshi(List<String> list) {
    Observable.from(list)
      .map(s -> map.get(s))
      .toList().map(zunInts ->
      {
          if (zunInts.size() < zundoko.length) return false;
          return Arrays.equals(zunInts.toArray(new Integer[zundoko.length]), zundoko);
      }
    ).subscribe(matched -> isKiyoshi = matched);
  }
}

github.com f:id:tomoima525:20160312082051j:plain