STAFF BLOG

2013年11月28日


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

インテグラルのシステム開発担当です。 システム開発のメインの業務といえばプログラムを書くことであるわけですが、そんな業務の中でしばしば感じることを書いてみようと思います。 今日は、システム開発者にとっての「学校で勉強してきたことの価値」について。 一般に、勉強が嫌いな子供が両親に「勉強しなさい」と言われたときに反抗的に口にする言葉の代表と言えば「こんな勉強が将来何の役に立つんだよ」ではないかと思います。特に、それは数学や物理・化学などの、いわゆる「理系科目」についてよく言われることであり、大人になってからも「数学なんて四則演算くらいできれば十分だよね」と思っている人が多いのではないでしょうか。 また、システム開発という職種に関していえば、いわゆる技術職であるにもかかわらず学校の勉強が必要ない職種であるといわれることが多いようです。実際、「情報科学科卒の新人が職場で役に立たない」なんてことはwebでもよく見る話です。自分自身の感覚としても、プログラム言語の習得や適切なプログラムの書き方は別に学校の勉強として学ぶ必然性は無く、独力で(または周りの詳しい人に質問しつつ)実際に書きながら覚えるほうがよっぽど身に付くものと感じています。 そういう意味では、「プログラムを書く」ということに関する適性としては、学校で勉強してきたことよりも、個人が持っているプログラムに対するセンスやモチベーションの方がよほど比重が大きいと思っています。 それでは、システム開発者にとっては学校で勉強してきたことは役に立たないのかと聞かれれば…「そんなことはない」というのが自分の答えです。 自分はインテグラルに入社してから、主力商品のホームズ君シリーズをはじめ、いくつかのソフトやシステムの開発にかかわってきましたが、その過程では、自分がそれまで学んできた色々な分野の知識が活用されました。 ホームズ君「耐震診断Pro」で建物を3D表示するためには様々な図形処理が必要ですが、特に、地震を受けて変形した建物を表示するためには、「三角関数」(いわゆる「sinθ」とか「cosθ」とか)を使った演算が必須でした。また、地震による建物の振動のアニメーションを行うためには「振動・波動論」の基礎知識が必要でしたし、3階建ての建物についてはさらに「3次方程式」を解くための「複素数」の計算を行いました。木造住宅の微小な揺れから耐震性を評価する「常時微動計測システム」を構成するうえでは「スペクトル解析」の知識が必要でしたし、その過程では「フーリエ変換」をプログラム化する必要がありました。その他にも、建物の省エネの計算を扱う上では「熱力学」の基礎知識が、構造計算を扱う上では「古典力学」の基礎知識が理解の助けになりました。 とはいえ、ここまで挙げてきた様々な分野について、自分はインテグラルに入社した時点で熟知していたというわけではありません。(そもそもそれぞれの分野に対してそんな高いレベルの知識を持っていたとしたら、そちらの方面の研究職に進んでいた可能性が高いですしね…)「確かこれは高校や大学の授業でやったはずだったなぁ」という程度のうろ覚えな状態にすぎなかったわけです。ただ、その程度の知識であっても、大雑把に「どのような計算をすることになるか」、「どんな資料や文献を調べればいいか」、「それをプログラム化するのがどのくらい大変か」を判断するためには十分に役に立ちました。また、改めて学ぶ必要がある場合にも、「過去に一度勉強したことがある」分野であれば、理解のスムーズさが違います。 仮に、自分がそういった知識を全く持たずにインテグラルに入社していたとしても、おそらく「伝えられた仕様を単純にプログラム化する」だけの仕事はこなせたとは思います。しかし、それは時間さえあれば「誰でもできる」仕事ですし、やはり今まで勉強してきたことがあってこそ「自分だからできる」仕事があったのは間違いないことです。そして何より、今まで行ってきた理系科目の勉強全体が、自分の「ロジカルなものの考え方、捉え方」の元となり、「開発者としての基礎体力」のようなものとなっていることは実感できます。 そのようなあれこれを考えると、システム開発者にとっては、情報系(コンピュータ関連)の勉強を集中的にしてきたことよりも、むしろ幅広い理系の分野の勉強をしてきたことの方が強みになるのかも…と思ったりします。(…情報科学科の先生に怒られそうな結論ですが)