ブログは死なず、ただ放置されるのみ。

終わっちゃいましたね。

ひとりペアプロ

hanadi land が、やっと 2 Increase industry に到達。

よかったら踏んでください。
だけだとアレなので、ちょっと日記らしきこと。

仕事の件、先週ぐらいに仕様がある程度固まり、今週はずっとコード書いてました。
C で大量に可変長のデータを処理するコードなので malloc() しまくり。GC ほしい。というか Ruby で書きたい。でも現時点では Ruby が default install されてることを想定できないし、オレしかメンテできない。役立たずなオレ。

コード書いてると、文章が書けなくなる。脳のモードが切り替わっている感じだ。集中しすぎて夜眠くなる時間が遅くなってきた。

ドキュメンテーションとコーディングはいろんな意味で違うけど、今一番大きく感じるのは、ドキュメントは全体を通じてある1つの視点(仕様を満たしており、かつ実装可能であるか)から読んでもらうことを想定するが、コードはある程度以上の規模になると、レイヤを最低でもアプリケーションとライブラリの2つに切り分ける。その時点で2つの視点で書かないといけない。

  • アプリケーション - 抽象化のレベルを適切にすること(抽象化レベルが大きいと小回りが効かない。小さいと見通しが悪くなる)
  • ライブラリ - APIは適切か。(楽するために無駄なパラメータを要求すると、まず痛い目に会う)

この時点で脳内でアプリ担当とライブラリ担当が相談しながら、コードを書いている。

アプリ  :「こんな処理はアプリでやるべきじゃない」
ライブラリ:「じゃあこっちでやるよ、foo(), bar(), baz()の順で呼んで」
アプリ  :「foo() 一発にしてよ」
ライブラリ:「それだと、業務ロジックがこっちに入りすぎだ」
アプリ  :「でも実際、シナリオA,B,C を同時にやることはないよ」
ライブラリ:「じゃあ foo() でアレしとくから bar() ぐらいは呼んで欲しい」
アプリ  :「うーん、ちょい面倒だけど、何かあったらそのほうがこっちも対応しやすいかな」
ライブラリ:「じゃ、そういうことで」

という感じのことが1日に何度となく起こるわけだが。

ライブラリ:「ごめん、例の処理、あのAPIだとシナリオXのときに情報が足らん」
アプリ  :「なんだってー!」
ライブラリ:「初期化のときの hoge() にパラメータ1個追加してくれ」
アプリ  :「hoge() 呼ぶ処理でその値もってない」
ライブラリ:「でもどうしようもないです」
アプリ  :「ぐはあ(吐血)じゃあ上位からもらってきて渡すようにするよ」
ライブラリ:「すいませんお願いします m(_ _;)m」

とか、一人でブツブツいいながらコーディングしてるので、さぞや隣の机の新人は気持ち悪く思っていることでしょう。

というわけで、とりあえず大方のコードが書けたところで今年は仕事納めとなりました。年が明けたらきっとかなり忘れてそうですが、自分の書いたソース読んで「このコメント意味不明」とか思わないことを祈ります。