体重

年末から新年にかけては,忘年会,新年会など何かと食べたり飲んだりする機会が多いものです。そうすると気になるのが,体重の増加。久しぶりに体重計にのって驚いたなんて人も多いと思います。

それに今月は甘いものを食べる機会も増えるのです。

この時期,お菓子業界はかき入れ時なので,いろいろな新製品やらプロモーションなどに力が入っているはずです。

筆者はお菓子に目がないので,ピエールマルコリーニだ,ジャン=ポール・エヴァンだ,ピエール・エルメだ,テオブロマだと大騒ぎして買いに走っています。というのも,新発売や季節限定商品などがあるからですね。

食べる時は楽しいのですが,問題はやはり食べた後。

簡単にいえば体重増加に戦々恐々としているわけです。まぁ,自業自得なのですが。

やはり,日頃から健康の管理をちゃんとしていなくてはいけないなぁ,とこういうときだけ感じています。

健康管理ももちろん大事なのですが,その他にもちゃんと管理をしてあげなくてはいけないものがあります。そう,それが今月のお題であるソフトウエアの管理なのです。

ソフトウエアの管理とは

体重

ソフトウエアのライフサイクルは企画,仕様設計,実装,テスト,リリースと続きます。設計で苦労したとか,実装が長くかかってしまったということもあるかもしれません。

でも,ライフサイクル的にいえば最も長いのは通常リリースの後です。つまり,ソフトウエアを運用していく期間になるはずです。

例えば,工場の制御システムなどは10年は当たり前,20年,30年前のプログラムが動いているなんてことがよくあります。そういえば,2000年問題なんていうのもありましたね。システムを作ったときには,そんなに長く使われるとは思いもしなかったのだと思います。

このように長い運用期間の間,何も問題がおきなければいいのですが,実際にはなかなかそうもいかないことは,皆さんもよくご存じだと思います。

あるとき急にシステムのレスポンスが悪くなったり,挙動不審の動作を起こしたり。挙げ句の果てには原因不明で止まってしまったりすることもあるかもしれません。

社会的に影響が大きいシステムでは,システムが止まってしまうことでニュースにまでなってしまうこともあります(去年はそんなニュースがいくつもありましたが)。

このようなことが起らないようにするには,コードの品質を上げたり,テストを十分にやることが重要です。しかし,すべてのバグをつぶすことはどだい不可能です。

テストにおけるバグ収束曲線からバグの潜伏率を予想し,それがある程度収束したら検証を終了する,というのがよく行われている手法です。しかし,それはあくまで予想であって,すべてのバグを発見できるわけではありません。

また,テストの項目もすべての場合を網羅できるかというと,それも難しいと思います。

だいたい問題になるのは想定外のことが多いと思います。それはしかたないことでもあります。だからといって,手をあぐねているわけにはいきません。ソフトウエアも健康と同様,日頃の管理が重要なのです。

皆さんは健康管理といったらどのようなことを思い浮かべますか? もちろん,ダイエットするとか,ジョギングなどの運動をするというのを思い浮かべる方も多いと思います。

そして,体重計に乗って,がっくりするか,嬉々とするか。お勤めの企業や病院での定期的な健康診断もありますね。

体重計に乗るとか健康診断をするということは,現状がどのような状態にあるかということを知るために必要です。どのような状態にあるかわからないのに,やみくもに行動に移すことはできないですから。

体重が増加傾向にあるからこそ,ダイエットするとか,運動に結びつきます。また,健康診断の結果,コレステロールが多い場合は食事制限をしたりしますよね。

ダイエットとか運動するというのは,現状がわかっているからこそできる行動です。

ソフトウエア管理でもそれは同じです。

基本は,現在の状況の把握。そして,問題があればそれに対応する方策を練るわけです。

体重というのはJavaのシステムでいえばヒープでしょうか。体重が増加すると,ちょっと階段を歩いただけでゼーゼーしてしまいますね。ヒープも使用量が増加すると,始終ガーベジ・コレクション(GC)がかかってしまうのとなんとなく似てませんか。

これに対して毎日体重計に乗るように,ヒープをどれくらい使用しているかを普段から監視していれば,「いきなりOutOfMemoyErrorでダウン」なんてことが防げるはずです。

また,コレステロールは何に相当するでしょうか。コレステロールによって血液が流れにくくなると考えると,負荷状況と考えられるかもしれません。処理が集中している部分に多大な負荷がかかってしまえば,レスポンスやスループットが低下してしまいます。

このような状況把握を行い,何らかの方策をとるための管理フレームワークがJavaでは用意されています。それがJava Maangement Extensions(JMX)なのです。

著者紹介 櫻庭祐一

横河電機の研究部門に勤務。同氏のJavaプログラマ向け情報ページ「Java in the Box」はあまりに有名