桶屋ブログ

風が吹いても儲からないSE(仮)のブログ

アジャイルサムライ――達人開発者への道

☆☆☆☆☆

3日でざっと読めてしまったので良著です(唐突)

恐らく、私はこの本に出てくる開発とは正反対の開発(日本式システム開発的なアレ)に組み込まれることになるでしょう。
この本にはそういった理想の反対側にあるような開発環境であっても役立つ記述が数多くありました。開発法が何式かは関係ない共通した部分のトピックや、反面教師的な役立ち方をするであろうトピックばかりで、逆にこれは使えないだろうなという部分はPM的立場での融通の付け方くらいに思えました。

また、PMでなく一構成員であっても活用できる知識が豊富で、また思い出したように読んで気を引き締めたり、自分を慰めたりしたいです。
著内にも出てくるイテレーション・ゼロ、いざ開発!といったプロジェクト始動時で読んだらいい本ですね。

 

しかし、読めば読むほど「何故自分はこれに出てくるような開発者がキビキビと、ノビノビとできるような開発のできる環境を選ばなかったのか」と心が荒みます。
もちろん、著内でも記述の通り、必ずしも従来の日本式が愚かしく、そしてアジャイル開発が正しいわけではありません。日本のベンチャーや若い開発会社で行われている「なんちゃってアジャイル」を見るにそれもまた事実であろうことが窺えます。

 

私のように心に迷いを生むかもしれませんが、PMもメンバーも役立つこと間違いなしの良著です。
どれだけ役に立つのかは実戦で試してみたいと思います。

あと、何処かに時給$100と書いてあったような気がします。気のせいですよね?

Pythonでオブジェクト指向を知りたい

オブジェクト指向とは何なのか。それは、作法。と悟りを開きつつあります。

カプセル化 - encapsulation(クラス)

class Example_class: # クラス
  _mem_var = "This is python's private style" # 外部参照不可
  def example_method(self):
    print("it's over!")

ようはクラスでネスト(くくれ)って話なんだろ?
もちろん再利用云々もあるんだけど、元々はそれよりも"グローバル撲滅キャンペーン"の色が強かったらしい。まあ今は"再利用"自体が営業のバズワードっぽいけどね。
_付きはprivateとして扱え!という習慣です。基本的にPythonでは秘匿化を実装する予定はありません。ともかく蓋をしてしまうのもカプセル化なのです。

ポリモーフィズム - Polymorphism(多用性)

class Example_base:
  word = ""
  def oprint(self):
    print(self.word)

class Example_A(Example_base):
  word = "継承とは"
class Example_B(Example_base):
  word = "ちょっと違う"

def main():
  Example_A().oprint() # 継承とは
  Example_B().oprint() # ちょっと違う

なんかぁ、部品の共通化でぇ、どれでやっても一緒じゃん?みたいなことが言いたいらしい…感じ?
型でメソッドの動作が違うとかも該当するらしいんだけど、型…ねぇ…。
そもそも+や*がポリモーフィズムなんだと。確かに!…これ自分で実装するのがポリモーフィズムなのか?
と???が頭から消えないがそんなに重要でもないような(放棄)

継承 - inheritance

class A:
  pass
class A_plus(A):
  pass

例を作るの飽きました。
共通化できるところはしていきたいと思っていますが、ワンオフしか書いてないのであんまりしないっすね継承。

というわけで全く参考にならないエントリーでした…。

Fortranとは

1954年IBM製。名前の由来はFormula Translation(数式翻訳)。世界で最初の広く使われた高級言語。手続き型に属する。
数値解析に優れており、いわゆるベクトル演算やパラレル演算などを得意とし、最新版の2008ではConcurrent Conputing(並行計算)などが導入されている。

主なversion
FORTRAN(無印,Ⅱ,Ⅲ,Ⅳ,66):IBM機用に開発された。
FORTRAN 77:古式FORTRANの完成版みたいな感じ。大幅な改訂に後方互換がガバガバ。
Fortran 90:完全後方互換の新バージョン。構造化をサポート(goto滅ぶべし?)。
Fortran 95:90の調整版。77以下の不要な機能や互換をオミットした。
Fortran 2003:オブジェクト指向が導入されたメジャーアップデート。C言語と仲良しに(相互運用)。
Fortran 2008:2003の調整版。並列処理、並行計算など。C言語と超仲良しに(インターオペラビリティ=値の受け渡し)。

以下いろいろ拾ってくる。

学部生はFortranを学ぶべき? | スラッシュドット・ジャパン デベロッパー
計算屋さんではバリバリの現役だ!と2009年のコメントではありますね。最近流行りのデータマイニングでは僕の好きなPythonをよく目にするので嬉しい限りなのですが、numpyなどの高速高機能計算モジュールはCとFortranを使っています。

どのFortranを勉強すべきか? - fortran66の日記

"一方 Fortran2003 は、未だ Cray と IBM 以外からは完全に対応したコンパイラが出ていません。"

2012年の記事です。ま、まあ大本営IBMコンパイラがあれば別に問題ないじゃないんでしょうか。

結局なんで早いのかって、手続き型だから!なんだってさ(雑)。
かっこいいね。

GUID/UUIDの信頼性

GUID=Globally Unique Identifier(大域的一意識別子)
マイクロソフトが実施しているUUID。簡単に言うと『違いはない!』そうです。
詳しそうなのはここ。
Is there any difference between a GUID and a UUID? - Stack Overflow

してその内容は128bitに16進数で{8桁-4桁-4桁-4桁-12桁}で2^122通りだそうです。ちなみに5.316912e+36、5澗(カン)3169溝(コウ)1198穣(ジョウ)3139?(ジョ)6634垓(ガイ)9161京5228兆2411億2137万8304通りであるそうなのでまあ間違いないですね。

以下GUID=UUIDで話を進めますが
UUIDにはversionがあり
Version.1:The time-based version to MAC address.
Version.2:DCE Security version embeded POSIX UID.
Version.3:The name-based version to MD5 hash.
Version.4:randomly generated version.
Version.5:The name-based version to SHA-1 hash
RFC 4122 - A Universally Unique IDentifier (UUID) URN Namespace
Universally unique identifier - Wikipedia, the free encyclopedia
まあ全部ここに載ってます。enWikipediaのほうが簡潔で分かりやすいッス。

この中でも絶対的信頼がおけるのはVersion.1で意図的に作らない限りは被ることはあり得ないことが分かります。Javaなどで利用されているものはVersion.4だそうで絶対的信頼性はなさそうです。

できたものをマイクロソフトとかUUID財団に問い合わせて一意かどうか確認するとかそういうことではないんですね!(それはすごい手間だよね…)

ちなみに我らのPythonではVer.1,3,4,5を提供しています。
21.20. uuid — RFC 4122 に準拠した UUID オブジェクト — Python 3.3.3 ドキュメント

読んだ本その1

面倒なのでアフィは貼りません。

サーバ/インフラエンジニア養成読本 [現場で役立つ知恵と知識が満載!]
☆☆☆★★
わかりやすい文体だけど、まるで雑誌を読んでる気持ちになる章事のシナジーの無さ。というか雑誌記事のまとめなんでその通りなんです…。
優しい文体なので超初心者にオススメかな?はぇ~こんなのあるんだ~って純粋な気持ちを持ってる人なら楽しめる。

今夜わかるHTTP
☆☆☆☆☆
非常にわかりやすく、入門書にはいいと思いますが、あくまで入門書です。
意識せずHTTPは扱わなくてもGET/POSTを実装したことがある人や基本情報の勉強をした人などは多分パラパラっと読めてしまいます。
明確な目的を持った人には良書ですが、なんとなくHTTPという人間には向きません。(反省)

最短経路の本 レナのふしぎな数学の旅
意識の低い人間に難しい数学の本は厳しい。(実体験)
というかアルゴリズムマンになる気はないのでしょうがないね。

機械学習超入門1を読む

機械学習SVMっぽい上、詳しい方の入門エントリーが見つかったので読んでいこうと思う。

機械学習超入門 〜そろそろナイーブベイズについてひとこと言っておくか〜 - EchizenBlog-Zwei
(続きあります)

"使いたい人はまず使ってみよう!"
ということらしく、名前が挙がっているのがLibSVMとSVMlight。LastUpdateがLibSVMは2013/4/1、SVMlightは2008/8/14。それと少し気になるのがGoogleのヒット数が386000と107000ということ。手詰まったら大変そうだ。

"ナイーブベイズは忘れよう"
横浜ベイスターズベイブルース
ナイーブベイズ分類器を頑張って丁寧に解説してみる - Qiita
基礎確率論の単位取ったけど、はぇ~眩暈がしそう。あとで読む(白目)

やっぱりスコアで判断するんだね。

昨日「Aの要素が+4、ではそのAと比較してBの要素は+いくつなのか?」と悩みましたが、その+値、重み自体も導き出してくれるのかな?
何せ僕がやろうとしていることは素性(簡単にいうとパラメータ)が多すぎるといっても過言でないものなので、とりあえず素性をまとめあげてみて、どうするか考えた方がいいかもしれません。

機械学習超入門II 〜Gmailの優先トレイでも使っているPA法を30分で習得しよう!〜 - EchizenBlog-Zwei

やっぱり重み計算してくれるんだね。
でも、この式に値を当て嵌められるのが何時になるか、眩暈はしないけど目が霞んできた。

 

しかし、目的のためとはいえ後の業務とかけ離れた分野に手を出すことになるとは…。おそらく5月前には一応の決着がつくと思うので、無理ならそこで方向転換しても間に合いそうなのでそれまで頑張ります。

14/3/29の記事拾い

「でも優れたコーディングルールを持つ○○ではこういう風に書くことになってるんですよ。」とは言わない大人になりたい。

売上1億の開発会社が20人採用したあと黒字をキープするためにやったこと | TechRacho
創設メンバーの何人かが見解の相違で退社。あとはもう瞬く間に見るも無残になりそう。

jQueryのメモリーリークの傾向と対策 — KaoriYa
迂闊にBuild-in Functionとか使うと良くない例の一つですかね。ああ、めんどうだなぁ…。

ぼくもウンコ漏らしました
僕も気を付けます。