seraphyの日記

日記というよりは過去を振り返るときのための単なる備忘録

PSP(Personal Software Process?)を実践中

6/6からの習得内容

自分用の簡単なスクリプト数種だけれど、一応、要件定義かいて基本設計書かいて詳細設計書かいて単体テスト仕様書書いて、コーディングして、自動テストコードかいて作ってみた。
アドホックに作るよりも手間はかかったけれど、やはり基本設計書とか、とくに単体テスト仕様書は重要だな。個人ユースでも。
安心感が違う。

自動テストを書いたといっても、基本設計と詳細設計のがちゃまぜみたいなテストで全網羅C0とは言い難い。
詳細設計レベルならば分岐・繰り返しを認識できるのでC1の網羅を考えることは可能だと思うが、その規模から的確に枝切りするためには実験計画法などを取り入れる必要があるだろうし、
実験計画法とかHAYST法とか勉強しないとテスト計画も十分とは言えないのだろうと思ってる。
(うちらが今までやってきたテストって、要するにアドホックテストだし、C1レベルのテストを計画できる人間なんていなそう。そうゆう技術不足を認識できず、ただ忙しく手を動かせばいいっていう姿勢が敗因だったかなー。)

  • Perl5

今更だけど、リファレンスの使い方とか、utf8の意味とか、perldoc(POD)の書き方とか、DBIパッケージだとか習得。
PODは覚えて良かったと思う。これは絶対必要。

今更だけど、ファイル記述子とかパイプ全般の使い方を見てるところ。
ポータブルなスクリプトの書き方というのも難しい。
うちには、レガシー感漂うWindows Vista Ultimateに搭載のSUA(Interix)と、自宅サーバとして重要な地位を得たCentOS5.3と、結構気に入ってるMacOS10.5 Leopardとあって、
どれもBashは使えるけれど、コマンドがあったりなかったりオプションが違ったりetcで、移植性のあるスクリプトを書くのは、とても大変だということが分かってきた。
っていうか、いままで知らなすぎた感じがする。
よく、これで仕事ができたものだと思う。
(いや、ふつうに考えて出来てなかったんだよ。泥棒SEだな。)

  • AHP(階層化分析プロセス)の学習

意志薄弱優柔不断な私が最初に学ぶべきことではないかと思って学習している。
理屈はわかったが、手で計算するのはめんどくさそう。固有値法は収束させるまで繰り返し計算させる必要があるので手では無理?
ちょっとがんばる。

少し暇ができたので、ScanSnap S510で技術書だけじゃなくて古い漫画本もスキャンしはじめてみた。
マンガも原理的には白黒のはずだけどスクリーントーンの淡い色が白黒モードで読み取ると消し飛ぶので仕方なくカラーモードでスキャン。
これをグレースケールに変換する。
ついでに古い本なので全体的に黄ばんだりしているのでレベル調整も必要。

これを1ページづつ手でやってたら心が折れるので、

  1. S510で何冊かをまとめてスキャンしてPDF化(表紙・カラページと、それ以外を分離してスキャンしておく。)
  2. Acrobat9Professionalのバッチ機能で複数のPDFをtiffファイル形式で全ページ画像化
  3. 自作スクリプト1(perl製)でtiff化された画像ファイル群をブックごとにフォルダに分類
  4. 自作スクリプト2(SUA/Interix上のc++製)でフォルダおよびページの連番ごとにリネーム
  5. 自作スクリプト3(SUA/Interix上のBash製)で、ImageMagickのconvert.exeでレベル変換とグレースケール化。(グレースケール化するだけならImageMagickを使うまでもなく、Acrobat9Proのプリフライトのフィックスアップでもできたんだけど。)
  6. できあがったグレースケールのtiff手作業でAcrobat9Professionalのファイルの連結機能で連結
  7. tiffを連結後、表紙・カラページ等を連結して、見開きモードや右綴じ設定にして最適化保存

ってなことをしている。

スクリプト1〜3が、今回の学習の成果かな。
漫画本でも一回の作業が20冊ぐらいだとすると、200ページx20=4000ページで、これを手でレベル調整するのはとても無理。
スクリプトならば、ほっとけば1〜2時間もあれば終わるので、このスクリプトは役に立ってると思う。
Acrobat9ProfessionalはOLEオートメーションに対応しているので、もしかすればtiffにバラすところと、tiffからpdfを組み立てるところも自動化できるのかもしれないが、
バラすのはAcrobatのバッチ機能で一発だし、組み立てるのも、そんなに手間でもないので、ここは自動化は考えてない。

ようやく時間ができたので八年も放置していたソフトウェアの改修案を練っている最中。
画面のデザインとか操作方法も一新したいとおもって、DotNETC#あたりで書いたほうが楽かなー、とか探していたら、
身近にいました。MFC
MFCがVS2008SP1で超絶進化していて、MDIドキュメントがタブ化できたり、ドッキングペインを自由にどこでもつけられたり、
ちょっと前なら有償ライブラリを使わなければダメだったみたいなものが標準でできるようになっている。
なんで、こんな進化に半年以上も気がつかなかったのだろう。
やっぱり仕事が忙しいと重要なものを失ってゆくんだね。
とりあえず、ここらへんはおさえておきたい。

ついでにC++もstd::tr1ネームスペースにshared_ptrとか、boostライブラリにあったもが取り込まれていて、
これでようやく気兼ねなく使えるようになったかな、とか思ったり。