<   2012年 09月 ( 6 )   > この月の画像一覧
あっごめん、イタリア風プログラム書いてたわ
こんばんワイン。どーもボキです。

3年前に初めて後輩が出来た。けど、彼は三年間の暫定メンバだった。
そのお勤めをキッチリ終え、元職場に帰任。そして、会社を辞めた。

その彼の仕事を引き継いでくれたのは一年間の研修メンバ。
しかし、この彼は一年間を過ごすことなく元職場に呼び戻された。

彼らが抜けてしまったので、仕事(ツール開発・運用・メンテ)を引き継いだ。

連続データから狙った特性波形を抽出・解析し、それをExcelレポートにするというもの。
Delphiでのデータ抽出・解析 と Excelマクロによるグラフレポート作成 で構成される小規模ツールだ。

研修メンバはプログラム経験者だった。自分でスマホアプリを作成してるらしい。
後輩が「彼(研修メンバ)のプログラムはすごい!すでに僕のレベルを超えています」との意見。

彼には、数年前に作成したコーディング規約を渡して、口頭で簡単な指導にとどめ、
ソースレベルまでのフォローはしなかった。(他にも理由があって干渉しなかったんだが)

これがマズかった。

引き継いだプログラム、蓋を開けてみると見事なまでのイタリア風
そう、スパゲティプログラムだ。

こちらのフォロー不足、彼の知識(意識)不足もあり、このツールはもうメンテできる状態にない。
この程度の規模なら、メンテ性も考慮しつつ作り直したほうが将来的に無駄が少ないと判断した。

今回の反省を生かし、コーディング規約をファイル構成・ユーザインタフェース部まで充実させよう。
新しい派遣社員が入ってくるらしいからね。ルールに従って書いてもらえるようにならんと困るし。
まぁこういったコーディング規約を提案・改善していける人だったらありがたいんだけどね。

誰でもメンテできるソースを書く・書かせるって本当に難しいわ。
とりあえず今回気づいた点は以下。(目立つもののみ)
①.単純なデータ処理プログラムにも関わらず、10を超えるユニット(ファイル)から構成されている
構成ファイルの概要
  1.メイン画面
  2.設定画面
  3.データ処理フロー管理クラス
  4.データ処理フロー実行スレッド
  5.処理対象ファイル格納クラス
  6.データ処理クラス親
  7.データ処理クラス子
  8.ユーザ設定値格納クラス
  9.データ出力用スレッド
 10.プロジェクト共通関数
 11.プロジェクト共通定数

 ⇒ 今回のツール規模なら2~3ファイルで構成する
   1.メイン画面
   2.ツール専用ユニット(定数、関数)
   3.(規模が大きくなってきた場合)設定画面


②.データ処理が2つ(6)と(7)のクラスに分けられている。
またこの親(6)は、この子(7)以外からは継承されない。(親子ともに、このツール専用)

 ⇒ クラス化の検討は「他での継承・利用が必要な場合」か「同様の変数・関数群が複数必要」かのどちらかのみ。
   今回のケースはそのどちらにも当てはまらない。ツール専用ユニットに記述すべき。


③.データ処理が2のクラスのみで完結せず、外部からのループ処理(4)が必要。

 ⇒ クラス化するならば、クラス内で処理が完結するように書くべき。
   親子の関係は「上司と部下」。「友達」には決してなるな!を参照。


④.ループ中の閾値判定を行うが、その判定関数が複数のファイル(5)(6)(7)にまたがっている

 ⇒ 「同僚」たるもの、仲良しクラブになるな!を参照。


⑤.ループ中の判定に用いる閾値(ユーザが設定する値)が、クラスに格納されている(8)
また、その閾値はプロパティで提供されておらず、Set***・Get***関数を用いて格納・取り出す

 ⇒ 判定処理やその基準値は一箇所(ツール専用ユニット)にまとめる。
   一箇所にまとめることでデバッグ時の確認箇所が一箇所で済む。


⑥.必須でないスレッド(4)(9)を利用している。(処理中に表示をフリーズさせないため)

 ⇒ 並列処理が必須の場合以外、トラブルの原因になりやすいスレッドは使うべきでない。
   その判断すらつかない実力しかないのなら、なおさら。

ユーザインタフェースに関しても、ずいぶんと気になる点があった。
①.メイン画面(1)と設定画面(2) の両方にユーザ設定項目が存在する。

 ⇒ ユーザによる設定はどちらかに集約する。今回の規模ならメイン画面のみでよい。


②.画面中に文章で説明が記述されている。

 ⇒ 基本的に説明は記述しない。どうしても必要なら文章ではなく、図やグラフを検討する。
   一度操作すれば、よほどのことがない限り二度目以降は説明を見なくても操作できる。
   また、文章でダラダラと表現するよりも、図やグラフ描くことで簡単に説明できることが多い。


③.検証育成段階にあるツールにもかかわらずヘルプファイルが作成されている

 ⇒ いつ画面・仕様が変わるかも知れないものにはヘルプはつけない。
   またヘルプが必要ならそれはユーザ側がフォローすればいい。(内製ツールだから)


④.同じ現象を表す単語は、場所によって異なる

 ⇒ 表現は統一する。これはツールに限った話ではないね。



[PR]
by yozda | 2012-09-22 23:00 | SE♂日誌 | Trackback | Comments(0)
[VBScript] メッセージダイアログを実現する
こんにチワワ。ドーモボキです。

[VBScript] ラジオボタンダイアログを実現する その3

ラジオボタンダイアログのソースを利用して、メッセージダイアログを作成した。

実行ソース
r = MessageDlg("タイトル","キャプション","アイテム0,アイテム1,アイテム2")
a0021757_21263884.gif

戻り値は、押されたボタンのインデックス (0~)。
[×]で終了した場合は、-1。

◆ソース◆
[PR]
by yozda | 2012-09-22 18:08 | プログラミング | Trackback | Comments(0)
[VBScript] ラジオボタンダイアログを実現する その3
こんにチワワ。どーもボキです。

前回の記事 ⇒ [VBScript] ラジオボタンダイアログを実現する その2

ラジオボタンダイアログを改良した。タイトルバーに「http:/// -」を出なくした。

実行ソース
r = RadioGroupBox("タイトル","キャプション","アイテム0,アイテム1,アイテム2",1)
a0021757_21244099.gif
戻り値は、[OK]ボタンが押された場合は項目インデックス (0~)。
[キャンセル]ボタン や [×]で終了した場合は、-1。

RadioGroupBox_MaxCount = 3
とすることで、項目が指定数(この場合は3)以上になった場合、プルダウンメニュータイプに変更できる。
a0021757_21243675.gif





◆ソース◆
[PR]
by yozda | 2012-09-22 17:37 | プログラミング | Trackback(2) | Comments(10)
ニンテンドウ64
こんばんワイン。どーもボキです。

a0021757_2230264.jpg人に貸してたニンテンドウ64が帰ってきた。(ニンテンドー64じゃないよ、ニンテンドウ64)
久しぶり眺めてみると、コントローラは奇抜なデザインだが、本体はなかなか格好良い。

久々に触った印象では、コントローラは大きいと感じた。これ、当時の子供たちには大きすぎたんじゃないかな。
けど、ボタン操作はZボタンも含め違和感がない。数年ぶりだが、すぐにコツを思い出した。


貸してたソフトのいくつかが帰ってこなかった。
こないだ中古屋を覗いてみたら、ウェーブレースが100円で売ってたので買ってしまった。
その後、古本屋にいくと、振動パック対応版が250円で売っていたので、これも買ってしまった。
ウェーブレースはたしか持っていたので、それをあわせると3本もっていることになるな。

このゲームはゲームキューブ版のキレイな映像よりも、
こっちの方がハードウェアの性能を頑張って引き出しましたよ感が出ていて好みだ。

ゲームキューブ版は、本体と一緒に買ったが、あまりにオモシロくなくてすぐに売った。
けど、Amazonで1円(+送料350円)で売っていたので、また買ってしまった。

それにしても、1円ってすごい値段だ。
Amazonでは文庫本などを1円で売っていたりすぐが、何かメリットがあるのかな?


64の中でも名作と思うのは、「ドンキーコング64」。
メモリ拡張パックってのを、本体に追加して、本体メモリを(今ではたったの)9MBに増強してやる必要がある。
そのお陰で、このソフトはポリゴンオブジェクトがグルングルン動く。映像もその当時キレイだなと驚いたと思う。
今プレイするとさすがに驚いたりはしないが、キャラクタのもっさり感と視点を改善できれば今でも充分遊べる。

地デジ化でくっきりはっきりした映像が当たり前になった今、64のモヤモヤグラフィックはプレイにつらい。
けど、いっぱい思い出が詰まっているんだな。

大学に入学した年に発売されたマリオを発売日当日に買って、それまでになかった3D空間に夢中になってやりまくったっけ。
友達と集まって延々とマリオカートの風船バトルをしたり、マリオをクリアするまで友達が泊り込んだり。
購入(回線契約)にクレジットカードが必要だった64DD(フロッピディスク様のディスクでゲームを拡張するもの)は、
当時付き合っていた彼女(=嫁)のカードを使ったりね。

ただ同然の値段にしかならないし、よほどのことがない限り手放さないと思うわ。

[PR]
by yozda | 2012-09-20 22:21 | ゲーム | Trackback | Comments(0)
ロフトのカラーボックスを追加
こんにチワワ。どーもボキです。

この週末、ロフトのカラーボックスを追加した。かなり収納出来るようになった。(追加前)
秘密基地のような雰囲気で結構気に入ってる。

それにしてもCDが多い。これから先、二度と聞かないようなCDが大量にある。
輸入版やレンタル落ちは中古で引き取ってくれないから捨てるしかない。硬質プラは捨てるのがやっかいだ。
a0021757_14304010.jpg

a0021757_1430425.jpg
5年ほど前、サークルKサンクスのペットボトルのオマケについていたマツダのミニカー。手すりに飾ってみた。
ご当地+サークルKサンクスが少ないということもあって、手に入れるのが大変だった。

右のRX-8は別シリーズのもの。何だったかは忘れた。
サークルKのものはまだ開けてないものもあった。787Bって奴とか。
a0021757_14304795.jpg


[PR]
by yozda | 2012-09-17 14:25 | 暮らし | Trackback | Comments(0)
くっだらないけど、超重要な仕事
こんにチワワ。どーもボキです。

昨日、くっだらないけど、超重要&ブチ急ぐ仕事が舞い込んだ。

失敗できないテストに使う計測器(ペンレコーダー)が壊れたので、その代わりのデータロガーソフトを用意してほしいってものだ。
いまだにペンレコを使い続けていたことが信じられないし、ずいぶん前から調子が悪かったらしい。

担当者間ではそのことを把握しておきながら、誰もトスアップせず。異常を放置していたこともだが、
壊れる/壊れない以前に、いまだペンレコを使ってレコードキープしてること事態がおかしいって思わないのかね?



新人の勉強を兼ね、ペンレコの代用となるソフトを作らせていたが、
実際の電圧を測らせたこともなければ、日をまたぐような連続運転もさせたことがなかった。
しかも、当の新人は、長期研修で不在のため連絡が取れない。

つまり、開発環境での試用がOK確認済みだったが、本番でマトモに動くか確認していないソフトを、
明日ぶっつけ本番で利用する。しかも、そのテストの計測は失敗できない。

さらに悪いのは、新人のソフトは借り物の計測機器を利用して開発していた。
悪いことは重なるもので、ちょうど返してほしいとの連絡が入っていた。これの代わりになる計測器は持っていない。

無理言って、返却期限を伸ばしてもらい、何とかソフトが使えるまでの準備はできた。
この時点で、テスト開始一時間前。


新人の開発PC(ノートでなくデスクトップ)を現場に持ち込み、設備との配線を試みたが、ここでも問題が起きた。
端子が開口部から40cmくらい奥にあり、しかも素人の仕業だろう、雑に分岐されていた。
こんな作業性の悪い、しかもすでに素人の手がはいったものの配線を変更すると、ペンレコへの信号自体もダメになる恐れがあった。

現状を依頼元に説明し、今回の対応はあきらめてもらうつもりだった。

すると「それは仕方がないが、失敗は会社にとって大打撃」とのこと。
なんでもっと早く言わないのか?と思ったが、この人の問題ではないので言っても意味がない。

作業のフォローとして、データを使って仕事をしている人(後輩)も呼んでくれた。

このお陰で、ボキが使った開口部とは別に、作業用として側面すべてが開口できることがわかった。
分岐線は計器につながっていたわけでなく、開放されていることも分かった。
つまり、そのまま今回の計測器に使える。
分岐されていない信号もあったのだが、分岐作業は後輩が手伝ってくれた。これで作業は一気に進んだ。

端子と分岐配線の末端径があってなくて、何度も配線が取れたが、テストまでに準備が整い、
ソフトの表示電圧と設備での表示電圧もほぼ一致していることの確認が取れた。

あとはこの週末で無事計測し続けていることを祈るだけ。


[PR]
by yozda | 2012-09-01 13:48 | SE♂日誌 | Trackback | Comments(2)