15 min/d

ぼうずやのにっき

POJO / 映画『アサシン クリード』

仕事。 Android アプリも半分ほどできてきたような……。

ところどころで marker interface を使っている。 data A = B | C 的なことがやりたい場合の A を marker interface にしている。 marker interface ではなく abstract class にすることもある。

どちらにせよダウンキャストがつらい。 if (a instanceof B) { /* ... */ }B b = (B) a; するのが。 Kotlin は TypeScript のような文脈での型推論をしてくれるんだっけ。少なくとも null まわりはしてくれるらしいね。

冗長ではあるけど、 typeenum でつくっておくこともある。type に文字列や数値のキーを割り当てる場合に都合が良い。 API のレスポンスに type 列があって……とか普通にある。 type-safe を気にしないなら String で保持して String 定数クラスのフィールドと比較して……とかになるのかな。つまらない間違いはコンパイルエラーになってほしいので、 enum と併用してガリガリやる。

文章で説明すると分かりにくいので、コードで説明すると↓のような形。

enum AType { B, C }

abstract class A {
  private final AType type;
  protected A(AType type) { this.type = type; }
  AType getType() { return this.type; }
}

final class B<T> extends A {
  private final T value;
  B(T value) { this.value = value; }
  T getValue() { return this.value }
}

final class C extends A {
  C() {}
}

だいたい↑っぽい形に落ち着くことが多いのだけど、ここまで進めるのがわりとだるい。 Java かそれを使うぼくとの組み合わせが悪い。

書いていないけど Optional を自作した。 Android では API level 24 以降で使用できる のだけど、 API level 24 って Android 7.0 (N) なので……。どう考えてもとうぶんは使えない。

serialize (Parcelable) まわりで NullPointerException がでてしまって、テストしなきゃ……という気持ちになっている。 Parcelable をテストするためには Android 上でテストを動かす Instrumented Unit Test にしないといけなくてつらい。 android.os.Parcel not mocked が出る。

最初はデータとして扱うクラスをそのまま Parcelable にしていたけど、↑のような Android 依存に気持ち悪さがあったので、 Parcelable 用にクラスを分離した。たとえば UserParcelableUser にして、それを Parcel にする。 シリアライザー的な。

class User {
  private final String name;
  User(String name) { this.name; }
  String getName() { return this.name; }
}

class ParcelableUser implement Parcelable {
  ParcelableUser(User user) { this.user = user; }
  User toUser() { return this.user; }
  /* ParcelableUser(Parcel in) ほか Parcelable としてのメソッド ... */
}

なんだろう。 Java の持つ冗長さと、ぼくの持つ冗長でもいいからきれいにしたい感じが相まって悪い結果をもたらしているような……。


映画『アサシン クリード』を観た。 Google Play で購入。 Paypal が 200 円引きクーポンを配っていたのをきっかけに。 500 円から 200 円引きで 300 円って値引いても別に安くないけど、絶対的に高いわけじゃないので気にしない。

ゲームの『アサシン クリード』は持っているのだけど、すっかり忘れている。そもそも確かクリアしてないはず。パルクール駆使しつつ、かっこつけて移動する、おつかいゲーなイメージ。 2017-04-04 にも似たようなことを書いている。そのくせクリアしていないはず。

動きの再現度は高そう。確かにこんな動きだった。まあ、はっきり覚えてないんだけど。……ていうかこんなごついアームの装置だっけ、アニムス。 Portal の GLaDOS を連想させる。カッコいいけど、場所も食うし、金がかかりそうなデザインだな。でもまあ映画は絵にならないといけないもんな……。

いかにも続編をつくれる感じの終わりかただった。