STAFF BLOG

2013年7月31日


システム開発担当の「徒然なるままに」

インテグラルのシステム開発担当です。システム開発のメインの業務といえばプログラムを書くことであるわけですが、そんな業務の中でしばしば感じることを書いてみようと思います。 今日は、プログラムの「難しさ」について。例えば皆さんは、以下の計算式を見てどのような印象を受けるでしょうか。 これは、インテグラルが販売しているソフト ホームズ君「構造EX」で「許容応力度計算」という計算を行う際に途中で出てくる計算式です。普段から計算式を見慣れている人を除いた多くの人は、このような計算式を見ると「難しそうな計算をやってるんだなぁ」という印象を受けるのではないかと思います。 一方、ホームズ君「構造EX」では計算の過程で、建物の1階のうち上に2階が乗っていない部分(建築の用語では「下屋部分」と言います)の平面図上の形を求めることがよくあります。この形を求めることは、一見とても簡単なことに思えます。少なくとも、目の前の平面図に「ここが下屋部分」と手書きで示すのは、定規とペンがあればあっという間にできることです。 しかし、これらをプログラムで行おうとすると…実は、後者の下屋部分の形を求める計算は、前者の計算式の計算よりもずっと難しいことなのです。計算式は、どんなに複雑で長い式であったとしても、「そのまま」プログラムに直してしまえばそれまでです。極端に言えば、計算式の意味を全く理解できなかったとしても、それをプログラムにすることは問題なく出来てしまいます。 一方、下屋部分の形を求めるためには、まず1階部分と2階部分の形を多角形で表し、片方の多角形からもう片方の多角形と重なる範囲を除くという「図形処理」が必要になります。これは、非常に多くの処理を行って初めて実現できる計算で、必要なプログラムの分量は大雑把に言っても前者の計算式を計算するプログラムの1000倍以上になります。 このように、計算の見た目の難しさとプログラムとしての難しさが食い違うことは良くあることだったりします。その辺りの感覚を持てていないと、プログラムを書く前は大して時間をかけないつもりだったのに、実際には大変な手間が必要だった…などという目にもあってしまいます。そういったことがあると、「この問題はプログラムにするとどのくらい難しいか」を判断するのもシステム開発者としての実力のうちなんだよなぁ…と痛感します。