読者です 読者をやめる 読者になる 読者になる

パルカワ2

PerlとRubyとイチャラブ

吉祥寺.pm でエンジニア立ち居振る舞いについて話してきた

そうです、吉祥寺です。
今はPerlはまったくやっておらず、Android Javaと戯れる日々ですが、はてなブログで話題になっていたお題「エンジニア立ち居振舞い」について話してきました。

ありがとうございました!!

マンガでわかる大人のADHDコントロールガイド を読んだ。

マンガでわかる大人のADHDコントロールガイド

マンガでわかる大人のADHDコントロールガイド

togetter.com
これを読んで結構当てはまるな〜と思ったので読んだ。
困っていることチェックシートを眺めてると「なるほどね〜」という気持ちになった。

DeepLinkのドキュメントを自動生成する

アプリには、DeepLinkというのがある。DeepLinkとは、各アプリ画面に紐づくURIで、めんどいので詳細は省く。Androidアプリでは、Airbnbが公開している DeepLinkDispatch というライブラリがあって、それを使えばActivityにアノテーションを指定するといい感じにそのActivityに遷移するところまでやってくれる。

github.com

ギョームでもそれを利用しているのだけど、DeepLinkを追加したり更新したりしてもwikiのドキュメントを更新するのを忘れがちであった。なので、アノテーションプロセッサでドキュメント生成を自動化出来ないかなーと思ってやってみた。

github.com

服買い替えてる

悲しいことに30歳に近づいてきたので、そろそろ大学生のときに買った服着るのやめるかと夏頃思い立ち、服を買い換え始めた。

僕は何事にもレベルがあると思っていて、なにか新しくやるときはレベルを大きく3つくらいに分けたあとに次に目指すべきは何か考える。

今回は、「シャレてない」「外してない」「シャレてる」の3つに分けて、自分は言わずもがな「シャレてない」の部類だったので、まずは「外してない」を目指すことにした。

「外してない」になるために必要なのはなにか考えて、以下を満たせば「外してない」のでは?と思ったので、それを満たすように服を買った。

  • 上が明るい色の時は下は暗い色にする
  • 下が明るい色の時は上は暗い色にする
  • 白黒だけにはならないようにする
  • 一昔前の量産型大学生にならないようにする
  • チェック柄やボーダーは買わない
  • 雑誌を見て、良さそうならそれを買う
  • 金額はあんまり気にしない

やってみると結構お金がかかってつらい事がわかった。
あと変化に気づく人が案外多くて、CTOには「色気づいた」などと小馬鹿にされましたが無視しました。

ButterKnifeのView lists便利

AndroidアプリのViewのXMLは、平べったくなるように書いてる。
今までは、ある条件を満たす時にはAとBとCを消して、満たさない時はAとBとCを表示するみたいな事をやりたい時に全部のViewを指定していた。

そうすると後で何かViewを追加した時にどちらかの方では変更し忘れるとか起きうる。変化に弱い。

@BindView(R.id.hoge_name)
View hogeNameView;

@BindView(R.id.hoge_address)
View hogeAddressView;

@BindView(R.id.hoge_tel)
View hogeTelView;

void onCreate() {
  ...
  ButterKnife.bind(this);
  ...
}

public void hideHoge() {
  hogeNameView.setVisibility(View.GONE);
  hogeAddressView.setVisibility(View.GONE);
  hogeTelView.setVisibility(View.GONE);
}

public void showHoge() {
  hogeNameView.setVisibility(View.VISIBLE);
  hogeAddressView.setVisibility(View.VISIBLE);
  hogeTelView.setVisibility(View.VISIBLE);
}

ButterKnifeのview listsを使うとこう書ける。ひとまとめに出来るので、変更が起きた時も変更しやすい。

@BindViews({
  R.id.hoge_name,
  R.id.hoge_address,
  R.id.hoge_tel
})
List<View> hogeViews;

void onCreate() {
  ...
  ButterKnife.bind(this);
  ...
}

public void hideHoge() {
  ButterKnife.apply(hogeViews, new ButterKnife.Action<View>() {
    @Override public void apply(View view, int index) {
      view.setVisibility(View.GONE);
    }
  });
}

public void showHoge() {
  ButterKnife.apply(hogeViews, new ButterKnife.Action<View>() {
    @Override public void apply(View view, int index) {
      view.setVisibility(View.VISIBLE);
    }
  });
}

ただこのブログを書いてる時に以下のようなコードを書いた場合、値はどうなるんだろうなぁと思った。確かめてはないけど、VISIBLEのままだとハマったりしそう。

@BindView(R.id.hoge_name)
TextView hogeNameView;

@BindViews({
  R.id.hoge_name,
  R.id.hoge_address,
  R.id.hoge_tel
})
List<View> hogeViews;

onCreate() {
  hogeNameView.setVisibility(View.VISIBLE);

  ButterKnife.apply(hogeViews, new ButterKnife.Action<View>() {
    @Override public void apply(View view, int index) {
      view.setVisibility(View.GONE);
    }
  });

  hogeNameView.getVisibility();  //=> ???
}

もっと早く使っとけば良かった。もしくはもっといい方法があれば知りたい。

インターネットヤミ市に行った。

100円払って同僚の家の灯りを付けたり消したりする権利とキラキラ光るステッカーもらったりした。人が多いのが苦手なので、遅めに行ったんだけど、まだ人が結構いてびっくりした。頭にデカイなにか付けた人とか全身白タイツの人とかいて、わあって思った。すごい熱気だった。

見終わった後に良さげなビールバーがあったのでそこで飲んでたら、インターネットヤミ市の人たちが来たので一緒に飲んだ。そこで合い挽き肉Tを買った。気に入ったので常用したい。

そこで「よくわからない飲み会がありますが、来ますか」と聞かれたので「行きます」って答えてよくわからない飲み会に参加した。

良さげな飲み屋も教えてもらったし、面白かった。