bouzuya.hatenablog.com

ぼうずやのにっき

リスク管理

リスク管理。たぶん検索すれば JIS や ISO などの標準規格を含めて様々なものが出る。

リスクを管理するためには、まずリスクを挙げる。未知のリスクは未知のものとして挙げる。経験のあることなら未知の要素は減っていくはずだ。

リスクを評価する。発生確率と影響度で考える。定量的な数値が出なくてもいい。

それらを踏まえて、対処を考える。

避ける。回避する。発生確率をゼロにする。そもそも起きないようにする。

下げる。軽減する。発生確率を下げる、影響度を減らす。

移す。移転する。分散する。共有する。誰かに押し付ける。保険をかける。

受け入れる。許容する。保有する。

なるほど。

避けられない、そもそもぼくに決定権がなかった。下げるために前倒ししようと残業している……が、焼け石に水だ。よその責任らしいものはいくつかある……が、全体でうまく行くかが問題だ。受け入れる。気合で乗り切る。

なるほど。

毎日 Android ……

今日の Android の知見。


bouzuya/bbna にテストを追加しようとしている。 assertThat って懐かしいな。 2012-11-25 で読んだ JUnit 実践入門や 2013-04-20 あたりで『 JUnit 実践入門』読書会に参加していたのを思い出した。実はほとんど業務で使わなかったんだよな……。 Android に特化した部分はまだ。あと細かい点を追いかけるつもりもないので、これまた雰囲気で書いている。

Android アプリ開発中……

疲れている。今日の Android の知見。

  • ダイアログは Dialog クラスを new & show すると表示される
  • AlertDialog.Buildernew & setTitle & setMessage ... & createAlertDialog をつくれる
  • DialogFragment を継承した Fragment をつくると良い
  • ViewPager入れ子にできる
  • FragmentPagerAdapter は思ったように Fragment を破棄しないので、getItemId などを継承して状態別に id を変えると良い。
  • Fragment入れ子にした場合の FragmentManagergetChildFragmentManager を使う
    • Fragment 内で Fragment を使う場合のための private な FragmentManager を返す
  • Intent の Flag 。次第で Activity A -> B -> C と複数開いた状態から一気に A に戻れる (startActivity & FLAG_ACTIVITY_CLEAR_TOP)

いたるところで、どう書くべきか迷う。たとえばひとつの Fragment で複数の Layout に対応したほうが簡潔な気もするのだけど、 ButterKnife に邪魔される。

FrameLayout + LinearLayout でだいたいなんとかなる

いろいろやっている。

Android の知見。

  • FrameLayout + LinearLayout でだいたいなんとかなる
  • Space は地味だけど良い
  • Picasso は URL から画像表示までの処理をお手軽にしてくれて良い
  • drawable resource を background などに突っ込むと色々できる
  • Gson で JSON をお手軽になんとかする
  • retrofit で HTTP リクエストをおしゃれになんとかする

FrameLayout は重ねたいとき、LinearLayout は並べたいとき。

左端と右端に起きたいときとか、真ん中に Space を置くといい感じになる。

Picassosquare/picasso 。 Image Loader ??? 適当に URL を食わせるだけで画像表示できて幸せ。通信して BitMap として読み込んで……とか、低レイヤーすぎてやってらんない……。

drawable resource はまだあまり把握していない。ちょっとした図形の描画をしたい場合に android:background などに突っ込んでなんとかする。状態に合わせて切り替えたりもできるので、意外と出てくる。

Gson 。賢くやってくれるのだけど、標準っぽくないクラスをつくっている場合、いちいち Deserializer が要る印象。使いかたを間違えているかもしれない。

Retrofit 。 square/retrofit 。また Square 。 HTTP Client 。 interface を書けば class を生成してくれる感じ。 @Path とかきっちり書かせる感じ。 GsonConverter と組み合わせてごにょごにょする感じ。

全体的に雰囲気で書いている。

追記: FrameLayoutLinearLayout だけじゃなく ConstraintLayout も要ると 2017-06-13 に書いた。


bouzuya/blog.bouzuya.net 3.3.6 を公開した。依存している bouzuya 固有のパッケージを scoped package として公開した。

  • @bouzuya/black-sam@4.2.0
  • @bouzuya/borage@3.1.2
  • @bouzuya/kraken@3.3.1
  • @bouzuya/myjekyll@2.0.1

気まぐれに。

2017-W20 ふりかえり

2017-W20 をふりかえる。

2017-05 の目標

  • iOS アプリをつくる (ストアには公開しない)
  • Haskell でなにかつくる

2017-W20 の目標

  • Haskell で画像アップローダーをつくる
  • ☐ アンダースタンディングコンピュテーションを読み進める

まったく計画どおりでない。先週に続き、業務の都合。 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 のことを書いていくつもりだ。

2017-W21 の目標

Android の Butter Knife をためした

Android の Butter Knifebouzuya/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 のタイミングでそれら設定するようになっている。

しばらく使ってみる。