2017-06-10 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 まわりはしてくれるらしいね。
冗長ではあるけど、 type
を enum
でつくっておくこともある。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
用にクラスを分離した。たとえば User
を ParcelableUser
にして、それを 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 を連想させる。カッコいいけど、場所も食うし、金がかかりそうなデザインだな。でもまあ映画は絵にならないといけないもんな……。
いかにも続編をつくれる感じの終わりかただった。