hirakiucの日記

いろいろ

ソフトウェアの品質とテスト

ソフトウェアの品質についてお勉強が必要になったため、いい本を探してました。

とりあえず、本屋さんで目についたこの本を読んでみました。

テストから見えてくる グーグルのソフトウェア開発

テストから見えてくる グーグルのソフトウェア開発

以下、自分の理解と思った事を混ぜてまとめました。


品質とは

  • 「品質」とは、何も無い状態が最もいい状態。
    • 設計が始まった直後から品質が低下する可能性が増えていく。
    • コードが追加/変更される事によって品質の低下が具体化する。
      • 設計不備、コードの誤り、などなど
    • 「テスト」という手段で、品質の低下を抑止/改善する。

テストとは

  • 品質の低下を抑止/改善する手段。
    • 対象の「製品」の品質を維持/改善する事がゴール。
    • テストの結果をまとめた成果物が目的ではない。
  • 開発ペースを遅くする摩擦をもつものであってはならない。

テストチームの役割

  • テストすること品質の維持を目的としない。
    • 開発者がテストしやすい環境を作り、開発者の生産性を向上する事をめざす。

開発者と品質の関係

  • ソフトウェアの品質は開発者が責任を持つ
    • テストチームだけの責任ではない。

テストプロセス(行程)

  • 各テストプロセス(行程)は、テストの対象/範囲を明確に定義しておく。

    • 呼び方/名称はなんでもいい。
    • 関係する人全員が意識を共有出来ている事が大事。
  • 人間の直感/思考を挟まなくても解けるなら、自動化すべき。

    • できるとこから少しずつ。
    • 「人間の思考領域の一歩手前」までを自動化するを目標に

設計思想

  • 単純性と統一性を守る

いろいろと勉強になりました。

読みながら参考になったページに付箋ペタペタ貼ってたら、付箋だらけになってました。

もっと早く読めばよかった。

MySQLのencoding utf8

MySQLのutf8は3byteまでのUTF8文字しか格納できないらしい。

先日、4byteな絵文字のUTF-8が入ってきてクローラとbackground jobをさばくプロセスがお亡くなりになるという悲しい事に。

4byte文字に対応したutf8mb4なるencodingがあるらしいので、早めにencodingを変えるようにしないといけない。

UIWebViewでload失敗する件

iOSアプリon iOS7 でUIWebViewで指定されたNSURLをロードする動作に失敗する話。

この話は対策がまだ見えてません。

NSString から [NSURL URLWithString:]で作ったNSURLを使って作ったNSURLRequestでloadしてます。

iOS7のsimulator、実機 with iOS7では動作してました。

しかし、test flight経由でinstallしたアプリではUIWebViewで指定したURLがloadされない...。

Organizerのconsoleで見てみると、以下のようなログが出てました。

<Warning>: void SendDelegateMessage(NSInvocation *): delegate 
(webView:decidePolicyForNavigationAction:request:frame:decisionListener:) failed to return
 after waiting 10 seconds. main run loop mode: kCFRunLoopDefaultMode

ただいま、原因を調査中... 。

UITableViewCellのprepareForReueseではsuperを呼ぶこと

uitableview - dequeueReusableCellWithIdentifier returning cells in editing state in IOS 7 - Stack Overflow

UITableViewCellのカスタムクラスを使っているとき、prepareForReuseをoverrideして自身の必要な情報を初期化する。

このとき、superを呼び出していないと、cellの状態がきちんと初期化されない様子。

具体的には、UITableViewから deleteRowsAtIndexPaths:withRowAnimation: でrowを削除した後、同じrowを作ると初期状態で表示されない(削除なボタンが表示されたままな状態になる)

これまでのiOS6まででは特に問題なかった気がする。

iOS7からはきちんとsuperを呼ばないといけないのかも。

イヤフォンチップを初めて使ってみたらいい感じだった

ずっと迷ってようやく買った Jaybird BlueBuds X とかいうbluetooth イヤフォンを使ってます。

せっかくいいお値段のイヤフォンを使ってるので、汚れやすい耳に入れる部分を買い替えられるイヤフォンチップを使ってみようと思いました。

yodobashi.comで見かけた Comply Tx-500 とかいうものを買ってみてつけてみるといい感じでした。

Comply (コンプライ) イヤホンチップ Tx-500 ブラック Lサイズ (3ペア)

Comply (コンプライ) イヤホンチップ Tx-500 ブラック Lサイズ (3ペア)

大きさはS、M、Lの三種類あるみたいですが、Lサイズを購入。

いざ Tx-500のイヤフォンチップをJaybird BlueBuds Xにつけてみようとしたところ、 どうみてもTx-500の方が穴が小さくて入らなさそう...。

でも、Tx-500は伸縮性があるため、ちょっと広げてから力を混めて入れてみると入ってくれた。

Tx-500は伸縮性があるため耳の穴にピッタリとフィットしてくれるし、耳垢ガードついてるしでいいお買い物しました。

二段階認証

Providing your 2FA security code

githubさんが二段階認証を始めたらしい。

Google Authenticatorが使えるのだけど、仕組みが気になってぐぐってみた。

Googleの2段階認証で使われているOTPの仕様が気になった

なるほどねー。

Developer CenterはSafariで見た方がいいらしい

Developer CenterにあるProvisioning Profileを更新する画面を使おうとしてると、どうしても画面が進まなくなる事があった。

よく観察してみると、どうやらchrome on macで操作しているとjavascriptのエラーが出ていて動いてくれていなかった。

数時間悩んだ挙げ句、safari on macを使ってみるとすんなり動いた。

appleのサービスを使うときは、safariを使った方がいいらしい。