毎日 Android 。
AltBeacon を使っている。 2017-04-27 に書いたものだ。良い。お手軽だ。
Intent の CATEGORY_BROWSABLE` で URL からアプリを開けることを知る。良い。 bouzuya/bbna にも付けたい。
毎日 Android 。
AltBeacon を使っている。 2017-04-27 に書いたものだ。良い。お手軽だ。
Intent の CATEGORY_BROWSABLE` で URL からアプリを開けることを知る。良い。 bouzuya/bbna にも付けたい。
リスク管理。たぶん検索すれば JIS や ISO などの標準規格を含めて様々なものが出る。
リスクを管理するためには、まずリスクを挙げる。未知のリスクは未知のものとして挙げる。経験のあることなら未知の要素は減っていくはずだ。
リスクを評価する。発生確率と影響度で考える。定量的な数値が出なくてもいい。
それらを踏まえて、対処を考える。
避ける。回避する。発生確率をゼロにする。そもそも起きないようにする。
下げる。軽減する。発生確率を下げる、影響度を減らす。
移す。移転する。分散する。共有する。誰かに押し付ける。保険をかける。
受け入れる。許容する。保有する。
なるほど。
避けられない、そもそもぼくに決定権がなかった。下げるために前倒ししようと残業している……が、焼け石に水だ。よその責任らしいものはいくつかある……が、全体でうまく行くかが問題だ。受け入れる。気合で乗り切る。
なるほど。
今日の Android の知見。
String uniqueID = UUID.randomUUID().toString();
でたいてい十分。getPreferences
で十分っぽい。Calendar
& Date
つらい。 java.time
を使いたい。bouzuya/bbna にテストを追加しようとしている。 assertThat
って懐かしいな。 2012-11-25 で読んだ JUnit 実践入門や 2013-04-20 あたりで『 JUnit 実践入門』読書会に参加していたのを思い出した。実はほとんど業務で使わなかったんだよな……。 Android に特化した部分はまだ。あと細かい点を追いかけるつもりもないので、これまた雰囲気で書いている。
疲れている。今日の Android の知見。
Dialog
クラスを new
& show
すると表示されるAlertDialog.Builder
を new
& setTitle
& setMessage
... & create
で AlertDialog
をつくれるDialogFragment
を継承した Fragment
をつくると良い
Dialog
を使っているだけViewPager
は入れ子にできるFragmentPagerAdapter
は思ったように Fragment
を破棄しないので、getItemId
などを継承して状態別に id を変えると良い。Fragment
を入れ子にした場合の FragmentManager
は getChildFragmentManager
を使う
Fragment
内で Fragment
を使う場合のための private な FragmentManager
を返すIntent
の Flag 。次第で Activity A -> B -> C と複数開いた状態から一気に A に戻れる (startActivity
& FLAG_ACTIVITY_CLEAR_TOP
)いたるところで、どう書くべきか迷う。たとえばひとつの Fragment
で複数の Layout に対応したほうが簡潔な気もするのだけど、 ButterKnife
に邪魔される。
いろいろやっている。
Android の知見。
FrameLayout は重ねたいとき、LinearLayout は並べたいとき。
左端と右端に起きたいときとか、真ん中に Space を置くといい感じになる。
Picasso 。 square/picasso 。 Image Loader ??? 適当に URL を食わせるだけで画像表示できて幸せ。通信して BitMap として読み込んで……とか、低レイヤーすぎてやってらんない……。
drawable resource はまだあまり把握していない。ちょっとした図形の描画をしたい場合に android:background
などに突っ込んでなんとかする。状態に合わせて切り替えたりもできるので、意外と出てくる。
Gson 。賢くやってくれるのだけど、標準っぽくないクラスをつくっている場合、いちいち Deserializer が要る印象。使いかたを間違えているかもしれない。
Retrofit 。 square/retrofit 。また Square 。 HTTP Client 。 interface を書けば class を生成してくれる感じ。 @Path
とかきっちり書かせる感じ。 GsonConverter と組み合わせてごにょごにょする感じ。
全体的に雰囲気で書いている。
追記: FrameLayout
と LinearLayout
だけじゃなく ConstraintLayout
も要ると 2017-06-13 に書いた。
bouzuya/blog.bouzuya.net 3.3.6 を公開した。依存している bouzuya 固有のパッケージを scoped package として公開した。
気まぐれに。
2017-W20 をふりかえる。
まったく計画どおりでない。先週に続き、業務の都合。 ErgoDox EZ については収束している。
先週は ErgoDox EZ のことばかりを書いていたけど、先週・今週を通してだいたい Ruby on Rails を使っていた。ようやく v5 へ。週末には Android をはじめた。やるべきやりたくないことをやっていくだけではつらいので Amazon ECS / AWS Lambda などを試している。
2017-05-15/2017-05-21
cookie-storage の v3 と bbna の Butter Knife 導入だけ。
業務。 ErgoDox EZ を業務でも使いはじめた。なんとか使えるようになってきた。ストレッチも指示通りにしており、腰の痛みはマシになっている。
業務時間については、進捗が悪い(そもそも計画の時点でひとりの一ヶ月の作業が一人月を越えている気が……)ので、今週はさらにひどくなりそうだ。そも、今日も出勤している。
いろいろなものを諦めて、来週は Android のことを書いていくつもりだ。
Android の Butter Knife を bouzuya/bbna で使ってみた。
Butter Knife は field や method を View に binding するためのライブラリ。 bbna は blog.bouzuya.net for Android 。 blog.bouzuya.net の Android クライアント。
試してみたんだけど、 bbna だと画面項目が少ないので、そこまで恩恵は得られていないと感じる。行数的には bind
/ unbind
呼び出し分だけ増えている。嫌いなダウンキャストが減るのはうれしいけど、代わりに嫌いなアノテーションが増えるので……。命令的ではなく宣言的になる感じ。
private Button mButton;
mButton = (Button) findViewById(R.id.button);
上記が下記のように変わる。
@BindView(R.id.button) Button mButton;
ButterKnife.bind(this);
reflection の都合だろうか、 private が外れる。
古いものだと指定された ID の view を探して field に設定している。新たなものだと bind する view ( ID ) をメタ情報として付与しておき、 bind のタイミングでそれら設定するようになっている。
しばらく使ってみる。