2011年4月6日水曜日

本稼働に入ってから修正依頼が出てくる問題。

昨年、開発したシステムが本稼働に入った最近になって、ここを直してくれとか

こっちを直してくれと言う修正依頼が来ます。

本来、修正を行っている段階では、本稼働とは、言わないと思うのです。

お客さんが本格的に使ってからでないと、バグや不具合が出てこないというのは

どうなのでしょうね。

たとえば、このような状況になってから、この機能は、いらないとか、

もっとこんな機能を付けてくれ、とかいう話になったら、

開発側としては、大事です。

また、開発フェーズに入らなければならない。

まぁ、アジャイルでは、ウォーターフォールではないから、

そういうのを許容するのでしょうかね。。。。

そう考えるとアジャイル的には、このような状況は、しょうがない。

許容範囲。なのかもしれません。

2011年3月24日木曜日

最近 Ruby の試験勉強をしています。

今度、Ruby の認定試験のシルバーを受けようとしています。
その練習。
きれいに書けた気がするので公開します。

このコードのポイントは、階乗の計算をするメソッドと
階乗の式を出力するメソッドを分けたところです。

私も初めは、両方の機能を一つのメソッド内に収める設計だった
のですが、それを分割することでプログラムが読みやすく
なっているのでは、ないかと思います。

読みやすいプログラムを記述するというのは、プログラマの
腕の見せ所です。

皆さんも読みやすいプログラムの記述を心がけてください。


if __FILE__ == $0

# ------------------------------------------
# exit が入力されるまで i の階乗を出力し続ける
# ------------------------------------------

# ******************************************
# calc_fractal
# ***
def calc_fractal(i)

if i == 1 then

return 1

else

return i * calc_fractal(i - 1)

end

end

# ******************************************
# fractal_expression
# ***
def fractal_expression(i)

if i == 1 then

return "1"

else

expression = i.to_s

return expression << " * "
+ fractal_expression(i - 1)

end

end

# //////////////////////////////////////////
# Main Process
# ///

i = 1

begin

puts fractal_expression(i) + " = "
+ calc_fractal(i).to_s

i += 1

puts "Please hit Enter key ! "
+ "if you want continue. "
+ "if not type 'exit'"

line = STDIN.gets.chop

end while line != "exit"

# //////////////////////////////////////////

end



-------------------------------------------------------------

出力は、こんな感じです。

1 = 1
Please hit Enter key ! if you want continue. if not type 'exit'

2 * 1 = 2
Please hit Enter key ! if you want continue. if not type 'exit'

3 * 2 * 1 = 6
Please hit Enter key ! if you want continue. if not type 'exit'

4 * 3 * 2 * 1 = 24
Please hit Enter key ! if you want continue. if not type 'exit'

5 * 4 * 3 * 2 * 1 = 120
Please hit Enter key ! if you want continue. if not type 'exit'

6 * 5 * 4 * 3 * 2 * 1 = 720
Please hit Enter key ! if you want continue. if not type 'exit'

7 * 6 * 5 * 4 * 3 * 2 * 1 = 5040
Please hit Enter key ! if you want continue. if not type 'exit'

8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 40320
Please hit Enter key ! if you want continue. if not type 'exit'

9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 362880
Please hit Enter key ! if you want continue. if not type 'exit'

10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 3628800
Please hit Enter key ! if you want continue. if not type 'exit'

11 * 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 39916800
Please hit Enter key ! if you want continue. if not type 'exit'

12 * 11 * 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 479001600
Please hit Enter key ! if you want continue. if not type 'exit'

13 * 12 * 11 * 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 6227020800
Please hit Enter key ! if you want continue. if not type 'exit'

14 * 13 * 12 * 11 * 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 87178291200
Please hit Enter key ! if you want continue. if not type 'exit'

15 * 14 * 13 * 12 * 11 * 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 1307674368000
Please hit Enter key ! if you want continue. if not type 'exit'

16 * 15 * 14 * 13 * 12 * 11 * 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 20922789888000
Please hit Enter key ! if you want continue. if not type 'exit'

17 * 16 * 15 * 14 * 13 * 12 * 11 * 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 355687428096000
Please hit Enter key ! if you want continue. if not type 'exit'

18 * 17 * 16 * 15 * 14 * 13 * 12 * 11 * 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 6402373705728000
Please hit Enter key ! if you want continue. if not type 'exit'

19 * 18 * 17 * 16 * 15 * 14 * 13 * 12 * 11 * 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 121645100408832000
Please hit Enter key ! if you want continue. if not type 'exit'

20 * 19 * 18 * 17 * 16 * 15 * 14 * 13 * 12 * 11 * 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 2432902008176640000
Please hit Enter key ! if you want continue. if not type 'exit'

21 * 20 * 19 * 18 * 17 * 16 * 15 * 14 * 13 * 12 * 11 * 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 51090942171709440000
Please hit Enter key ! if you want continue. if not type 'exit'

22 * 21 * 20 * 19 * 18 * 17 * 16 * 15 * 14 * 13 * 12 * 11 * 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 1124000727777607680000
Please hit Enter key ! if you want continue. if not type 'exit'

23 * 22 * 21 * 20 * 19 * 18 * 17 * 16 * 15 * 14 * 13 * 12 * 11 * 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 25852016738884976640000
Please hit Enter key ! if you want continue. if not type 'exit'

24 * 23 * 22 * 21 * 20 * 19 * 18 * 17 * 16 * 15 * 14 * 13 * 12 * 11 * 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 620448401733239439360000
Please hit Enter key ! if you want continue. if not type 'exit'

25 * 24 * 23 * 22 * 21 * 20 * 19 * 18 * 17 * 16 * 15 * 14 * 13 * 12 * 11 * 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 15511210043330985984000000
Please hit Enter key ! if you want continue. if not type 'exit'

26 * 25 * 24 * 23 * 22 * 21 * 20 * 19 * 18 * 17 * 16 * 15 * 14 * 13 * 12 * 11 * 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 403291461126605635584000000
Please hit Enter key ! if you want continue. if not type 'exit'

27 * 26 * 25 * 24 * 23 * 22 * 21 * 20 * 19 * 18 * 17 * 16 * 15 * 14 * 13 * 12 * 11 * 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 10888869450418352160768000000
Please hit Enter key ! if you want continue. if not type 'exit'

28 * 27 * 26 * 25 * 24 * 23 * 22 * 21 * 20 * 19 * 18 * 17 * 16 * 15 * 14 * 13 * 12 * 11 * 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 304888344611713860501504000000
Please hit Enter key ! if you want continue. if not type 'exit'

29 * 28 * 27 * 26 * 25 * 24 * 23 * 22 * 21 * 20 * 19 * 18 * 17 * 16 * 15 * 14 * 13 * 12 * 11 * 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 8841761993739701954543616000000
Please hit Enter key ! if you want continue. if not type 'exit'

30 * 29 * 28 * 27 * 26 * 25 * 24 * 23 * 22 * 21 * 20 * 19 * 18 * 17 * 16 * 15 * 14 * 13 * 12 * 11 * 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 265252859812191058636308480000000
Please hit Enter key ! if you want continue. if not type 'exit'

31 * 30 * 29 * 28 * 27 * 26 * 25 * 24 * 23 * 22 * 21 * 20 * 19 * 18 * 17 * 16 * 15 * 14 * 13 * 12 * 11 * 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 8222838654177922817725562880000000
Please hit Enter key ! if you want continue. if not type 'exit'
exit

ここまでやって疑問。。。。階乗って、×でいいんだっけ?

それとこのプログラムが間違っているかどうかの問題。

私の立場は、

・読みにくいがバグがないプログラム



・バグはあるかもしれないが、読みやすいプログラム

では、

後者を支持します。

なので、このプログラムにバグがないことは、保証しません。

それは、保証できないわけではありません。

私は、プログラムにバグがないことを保証するプロセスは、

計画的なテストによって解決すると考えています。

今回は、保証しない方針なので、計画的なテストとか、

そういう堅苦しいことは、していません。

このソースコードは、プログラミングという仕事が好きな人と

楽しみを共有するためのものです。

なのでバグがあったら恥ずかしいですが、

恥ずかしいからと言って、公開しないという選択肢は、

選びません。

私のブログは、プログラミングを仕事としているすべての人が

楽しく仕事をするための活動の一環です。

以上!

2011年3月22日火曜日

自分の職業。

最近自分の職業がよくわからなくなってきた。

Webページを作ることもあるし、プログラムを作ることもある。

職業で言うと、Webデザイナー兼ソフトウェアエンジニアという

長ったらしい名称になってしまう。

一応、まとめて、ソフトウェアエンジニアということに

しているけど、それは、すべてを表していない気がする。

他に言うとすれば、Webエンジニアなのかな?

Webディレクターでもいいかも。。。。

でも、これでプログラマは、卒業できそうです。

これからどうしようかな。。。。

もともとプログラマになったのは、技術者になれば、

食いっぱぐれしないだろうというのと、

その時、付き合ってた彼女と結婚したいから、

ある程、手堅い職業に就きたかったというのが

理由なのです。

自分の今いる場所では、キャリアパスがあまり

はっきりしていない。

何を目指してもいいけど、何になれるかは、

はっきりしていない。

普通のある程度の規模の会社に勤めていれば、

次は、係長だとか、課長だとか、そういう

キャリアパスがはっきりしている。

その代り、自分が本当になりたいものという

こだわりは捨てて、その会社の役職を目指さなきゃ

けない。

自由でもあるけど、その分、自分の判断が

シビアに自分に返ってくる。

おもしろいけど、中途半端では、いけない。

果たして、どうしたものか。。。。

2011年2月24日木曜日

時代の流れ。

今までソフトウェアエンジニアとして仕事をしてきましたが、

ここ何年かは、宇都宮では、ソフトウェア開発の仕事は、

ほとんどないように感じます。

声がかかることもほとんどないし。これも時代の流れかな?

昔は、ITで業界内での差別化や競争優位に立つことが

信じられていたけど、今の時代は、もうITの時代では、

ないんじゃないかと思います。

いま、私が気になっているワードは、

マネイジメンとネットワークかな?昔のITは、もう古い。

久々に日記更新してみる。。。

久々の日記更新。。。。7か月ぶりです。。。だいぶ放置したな。。。

最近の仕事は、去年の12月以来、ソフト開発の仕事はしていません。

今の主な業務内容は。。。。何と言ったらよいのでしょうか?

http://npocc.org/ ← このNPOに籍を置いてます。