My Favorite Things - Coding or die.

とある技術者の経験記録、的な。

Haskell :: mapとfilterをfoldrで実装してみた。

Functional Programming in Swift で 同様のコード例があったのでHaskellでも書いてみた。

関数プログラミング実践入門で、「筆者がfoldrの方が好きなので」的な記述があったけれど、consリストで畳み込むコードを考えると、確かにfoldrの方が自然に感じる気もしてきた。

関数プログラミング実践入門 - ランレングス復号化を書いてみた

ランレングス圧縮が例題として載っていたので、練習がてら復号化を書いてみることに。

とりあえず書けたのだが。

安全でないreadを使っているのはさておき、なんだろうこの微妙感は。

追記(2016/05/05):
`let`を活用することで少し読みやすくなった。冗長だった処理もリファクタリング出来た。

テスト自動化勉強会のスライド

前に自分で作ったスライドが行方不明になって探してしまったけれど見つかった。

www.slideshare.net

最近、仕事でユニットテストをよく書くようになったり、テスト駆動でやるようになったので、久しぶりに自分で作ったスライドを読んでみた。
発表用スライドとしてはチープさがあって、一般論を多く語っているけれど、それなりに上手くまとまっていると1年前の自分を褒めてやりたいと思った。

一緒に仕事をしているメンバーにもせっかくだし共有してあげようかしら・・・ありがた迷惑かもわからないけど。

ベロシティを上げるには運動しかない

www.amazon.co.jp

を読んで、実際に運動してみて思った。もちろんネタであるが半分は本気であり、本心でもある。

・・・戯言だけれど。

iOS8開発テクニック集 Xcode6編を読んだ

Kindleで1コイン以下で購入できたので試しに買って読んでみた。www.amazon.co.jp

いわゆるXcode Tips本なのだけれど、以外と知らないテクニックも多かったので良い買い物だった。

以下、初めて知ったことなど。

Tips.05 途中まで補完する

入力補完においてTabキーで点線の部分までキーワード保管できる。

Tips.09 スコープの可視化

Editor → Code Folding → Focus Follows Selection で。(使う機会は少ないかも)

Tips.11 ヘルプとDOxygen

存在は知っていたけれど、スニペット活用という発想はなかった。

Tips.13 検索結果を見やすく

Xcode設定 → General → Find Navigator Detail で1件あたりの行数を指定できる。
実際にやってみた感じ、1行にしたほうが視認性がよくて効率良さそう。

Tips.15 ビルドエラーで該当場所を表示

ビルドエラー時に、エラー箇所に自動的に飛ぶというもの。
便利そうなので使ってみたいと思ったのだが、うまく動かなかった・・・。
Xcode → Behaviors → Edit Behaviors... でそういった設定を全部カスタマイズできるらしい)

Tips.17 Storyboardのプレビュー

言語ごとのプレビューもできるのは初めて知った。

Tips.19 Exitで戻る

Storyboard上の「Exit」使わずに、 `[self.navigationController popViewController]`とかやってた。

Tips.20 FirstResponderを使う

どういったケースで使うと便利なのかイマイチ分かってないけれど、複数ViewControllerで同じ処理を書くときに便利なのかもしれない。

Tips.21 アセットカタログでプレビュー

アセットカタログでもQuickLookが使える。

Tips.22 伸縮自在なイメージ

アセットカタログでのやり方は知っていたけれど、Stretchingでも指定できる。

Tips.24 ブレークポイントでログ出力

Edit Breakpoint... → Actionを「LogMessage」に。@変数名@で変数内容も表示できる。
普段はNSLogで済ませていたけれど、案外便利かもしれない。(他にも色々出来るみたいだし)

Tips.26 シンボリックブレークポイント

全ViewControllerのviewDidLoadの動きをデバッグしたい、といった時に使える。(ログ出力だけでもOK)
デバッグナビゲータ → Add Symbolic Breakpoint

Tips.27 ブレークポイントのスコープと共有

ブレークポイントを右クリック → Share Breakpoint。
プロジェクト内できっちりルールとメリットを考えないと運用は難しいかもだけれど。

Tips.28 ウォッチポイント

今まで使っていなかったけれど、変数の変更監視に便利なはず。

Tips.29 デバッグ時のQuickLook

debugQuickLookObjectメソッドを定義すれば表示内容をカスタマイズできる。

Tips.30 もう一度やり直す

一時停止中の現在行のマーカーはドラッグで移動できる。

Tips.33 素早い言語切り替え

シミュレータの設定ではなくて、スキーム設定でも行える。

Tips.34 着信ステータスバー

シミュレータ上で⌘+Y。

Tips.40 タスクベースドタブ

タブ名はダブルクリックで編集できる!
Project、Storyboard、Edit、Image、Debugみたいな感じで分けると良さげらしい。

1スプリントごとの振り返りで本当に問題は解決するか?

アジャイル開発プロセスの1つ「スクラム」では1スプリント(1イテレーション)ごとの終わりに「振り返り」をやる決まりになっている。

振り返ることは良いことだ。
振り返ることで、チームの生産性(ベロシティ)や結束力・協力性などが向上するだろう。

問題となるのは、プロジェクトが多くのトラブルを抱えているケースである。

例えば、頭でさっと考えるだけで7つも8つも問題が思い浮かぶような状況だった場合、振り返りだけでプロジェクトが抱える多くの問題を(いずれは)解決できるだろうか?

私はそうは思わない。

それは例えるなら、あちこちにガタがきている建物に対して、その場しのぎの補強を繰り返しているようなもので、そこだけピンポイントで解決できたとしても、すぐに新しい場所にガタがくるだろう。

最初にも言ったけれど、振り返り自体はとても良いものだ。それは単なる「問題解決」以上の効果を開発チーム、あるいはプロジェクトにもたらすものだ。

しかし、プロジェクトが多くの問題を抱えすぎている場合は、振り返りだけで解決することを期待しないことだ。現状の問題に対して真摯に向き合い、必要であれば振り返り以外のタイミングでも問題の解決を試みる・・・それが健全なアジャイル開発の姿だと私は思う。

・・・戯言だけれど。