2013年6月6日木曜日

システム開発でやってはいけないこと

業務システム開発でしてはいけない事を備忘録としてまとめました。
今後の開発に役立てていきたいです。

1.システムが遅いというのは最大のバグ。データが正しくないより大きい。
 ・今のシステムはレポートが1個5分程度掛かります。(200件程度のデータ)
  そうなると正しいかどうかチェックするのに5分掛かるという事。
  これだけ遅いと以下の悪影響が考えられます。
  ・品質も下がる(結果をチェックする頻度が減る)
  ・顧客の生産性も下がる。→顧客満足度も下がる。

2.DBの作りがクソだとプログラマはバグを作りこんでしまいます。
 <DBの正規化について>
 ・僕はDB正規化に賛成です。ただパフォーマンスが要求される所には、  正規化をあえて崩すのも有りだと思っていますが、あくまで限定的であるべきでしょう。
  プログラマにこれもこれも同時に更新と言うのは無理がありますし、レポート出力等のデータ取得の際に 正解が2つあるのも誤りを生む原因になります。

 <DBのセオリーについて>
 ・他人との意見を一致させてDBは設計すべきでしょう。奇策を用いて良い結果を招くことは、この世界では絶対にありません。奇策を用いる場合は開発の人間全員の意見の一致を持ってやるべきでしょうが それも開発の人間はしばしば入れ替わるという事を考えるとオススメはできません。
 例えばIDという項目があった場合、通常はIDのみでユニークになると思いますが、あるシステムは何らかの区分+IDでユニークになる場合があります。その場合はIDではなくて、何たら番号等にすべきだと思います。

3.一貫性がない。
 ・命名規則であったり、DBの作りであったりするところには、一貫性をもたせる必要があります。例えばDBフィールドの命名があるところは、BARCODE、あるところがBCode あるところ、BRCODEとなっているシステムがあります。どれも同じ意味なのに… 正直こういうシステムを見るとやる気がなくなりますし、絶対に品質は低いです…

4.プロセスは少ない程良い。
 ・正直、無駄なプロセスが多いとやる気を失います。
 この辺は正直バランスが大切だと思いますが…

 <1.単純なシステム>
 ・伝票入力→締め処理

 <2.普通のシステム>
 ・伝票入力→伝票承認→締め処理

 <3.複雑なシステム>
 ・伝票入力→伝票承認→入力締め処理→残高更新

 ※僕は理想は「1.単純なシステム」だと思いますが、
  承認が無いと不安な人が多いので「2.普通のシステム」だと思います。
  ただし、3は無いと思います。なぜなら、入力締めも残高更新も
  同じ締め作業で人間のイベントで残高更新というイベントはありません。
  →そんなもん締めた時に勝手に更新しろよと思うわけです。
  →基本的に人間ベースでのモデリングにすべきで、
   システムの都合をモデルにすべきではありません。
   そうしないと処理をミスして戻る時に、
   残高更新キャンセル→入力締めキャンセル→伝票承認キャンセル→伝票修正
   →伝票承認→入力締め→残高更新という作業をする必要があります。
   アホらしいくらい面倒臭いですよね。人間誰しもミスくらい犯すというのにですよ…
 
 ※これが単純なシステムなら、締めキャンセル→伝票修正→締め処理
  という簡単に戻れるようになります。こっちの方がどう考えても人間的ですよね。

 ※もし伝票承認をするのであれば、毎日承認すべきでしょう。
  それであれば、毎日サインした分だけ承認をするというプロセスが出来上がります。
  これを本当に人間がやっているのであれば、システムとして実装すべきでしょう。

コードを綺麗に書くことも大切ですが、上記の基本的な設計も大切だと思います。肝に命じていきたいと思います。

2013年5月30日木曜日

JavaFXを利用してプログラムを作る(作りたい)

タイに来て5年程経っているが、その間触れたプログラム言語が
VB6.0とかVBA(Excelマクロ)といった今やデファクトスタンダードの
オブジェクト指向ですら無い言語のみ…

これではプログラマーとしての今後が心配になってきたので、
自宅ではJavaプログラマーになろうと思う。
Java自体は5年以上前の日本時代からやっているし、
基本的な文法や使い方は理解しているつもりである。

ただし、完全にオブジェクト指向という所は忘れてしまっているというか
前の会社もオブジェクト指向というよりはDOA(データ中心アプローチ)を取っていた。
それはそれで良かったと思うが、改めてオブジェクト指向について勉強していきたい。
後、個人的にはJavaFXに興味がある。JavaもVBみたいにGUI(Java Scene Editor)で開発出来るようになったので、一度Javaのデスクトップアプリケーション作成に挑戦してみたいと思う。

タイでのTOEIC受験

タイ(バンコク)でTOEIC受験をしてきました。備忘録として、申し込み方法等を残しておきます。

<申し込み手順>

1.受験申し込み
 TOEICの受験センター Center for Professional Assessment (Thailand)に電話して受験申し込みをする。英語かタイ語で予約可能です。電話番号は以下のURLを参照
 http://cpathailand.co.th/?article=7
 ・試験は日曜日と祝日を除く毎日実施している。
 ・費用は1回受験につき1,500 THB掛かります。
 ・試験会場には、パスポートとワークパーミット(ある場合だけだと思う)を持っていく必要があります。
 ・午前9時開始、午後1時開始の1日2回開催です。

2.試験会場へ
 受験当日にBB TowerというBTSアソーク駅とMRTペッブリー駅の間にあるビルに行く。私の場合はアソーク駅からモーターサイを使っていきました。

3.試験会場での手続き
 試験会場はBB Tower 19階になります。当日受験者は結構いるみたいで、その人達に付いていったら何とかなりました。午前受験だったのですが、1時間前には着いておいてくださいと電話で言われたのですが、実際手続きには30分以上かかりました。実際にやったのは以下の作業
 ・写真撮影(PCのカメラで簡単な写真を撮影)
 ・支払い(1,500THB)
 ・登録(サインさせられたけど、実際何のためかは謎)−ここで教室を指定されました。受験教室は全部で4−5室くらいあったと思います。

4.試験教室へ
 試験会場に入る前には、財布・パスポート・ワークパーミット以外の物は全てキャッシャーの後ろのスペースに保管しろと言われました。いつも財布に鍵を入れているのですが、それも駄目だそうです。赤外線検査と結構入念な財布の中身チェックを指定された教室前で実施されました。その後、教室へ入室

5.受験開始
 9時から名前等のマークを行いまして、実際の試験開始はだいたいその40分後くらいだったと思います。11時40分くらいに終了、部屋を出たのは12時前くらいでした。

6.最後必要であれば結果の郵送手続き
 結果の受取方法は2種類あって、郵送か翌営業日から3ヶ月後までに試験会場に取りに行くかを選択できます。郵送の場合は、郵便封筒を手続き場(オフィス)で配っていますので、それを受け取って、その表紙に自分の住所と名前を書いて(英語もしくはタイ語)、それを渡して送料50THBを払えば手続き完了です。試験会場まで結果を取りに行く場合は、何もせず帰って問題ありません。