現在の優れたSE・プログラマーは?
我々は、多くのモノに囲まれて生活しているが、人がものを作っている理由のほとんどが「面白いから」と「楽をしたいから」であろう。特に企業システムとなると、表向きは「コスト削減」「経営改善」と流行の言葉を理由として言っているが、実は「楽をしたい」という理由がベースとなっていることが多いのではないだろうか。
システムを作るために、ずいぶんと開発言語・開発形式は様変わりしてきた。言語はマシン語・初期の手続き型言語から始まり、現在はJava、.Net等のオブジェクト指向言語に取って代わった感がある。さらには「アスペクト指向」や「エージェント指向」等を取り入れた言語が登場している。開発形式もゼロから全てを開発するパターンから「フレームワーク」・「コンポーネント」を利用して開発するパターンへと変化している。
昔の言語に比べ、最新の言語は開発効率がずっと良くなったため、最新のものを使ったほうがコストは削減できる。そのため、次々に登場する言語をいち早く習得できるのが最先端で優れたSE・プログラマーと言えよう。
『楽なシステム開発』とは?
さて、システム開発者・保守者などシステムに関わる人に聞きたいのだが、みなさんは新しい言語が登場するたびに「また新しい言語かよ・・・」と思ったことはないだろうか。私は「BASIC」に始まり、Pascal、Lisp、Prolog、VHDL・・・Java、PHPと様々な言語を習得し、その数は10を超えている(そして忘れている)。2000年には「C#」、2001年には「Curl」、2002年には「VB .Net」が発表されたとき、私は真っ先にこう思った。「新しい言語は楽に開発できるものが多いだろうが、これからも新しい言語が登場するたびに習得することになるのだろうか。正直嫌だ。楽させて欲しい」と。
図 1:私のイメージする『楽なシステム開発』 |
|
---|---|
この願望を達成するには、「言語習得する必要がないシステム開発」が存在しなければならない。言い方を替えれば「プログラミングがないシステム開発」が一番『楽ができる』といえる。私がイメージしている『楽なシステム開発』はこうだ。
-----------------------
コード生成・配備ロボットがいて、私は思い描いているシステムの内容をロボットに口頭で伝える。そうすると、ロボットが自動的にソースコードを生成・配備する。私は、出来上がったシステムをテストして思い描いたように動くか確認するだけだ。もしイメージどおりに動かないなら、修正内容を口頭で伝えて、再度テストを行う。これを繰り返すことで、システムが完成する。
----------------------
※「ロボット」と言ってしまうと、ドラえもんやAIBOをイメージする人がいるかもしれないが、そこまで高性能なロボットでなくても、音声認識機能・ユーザとの会話を学習するソフトウェアを組み合わせれば十分である。
現時点の『楽なシステム開発』は?
システム開発者全てがこのようなイメージを持っているかは分からないが、同じような考えをもっている人がいろいろなアイデアを出すことで、少しずつこのような理想に近づいている。では、先ほど「最新の言語は開発効率が良い」と言った、昔に比べてどれだけ「楽なシステム開発」ができるだろうか。
現時点では新しい言語が登場するたびに習得することは変わりないが、昔に比べ「楽なシステム開発」ができるようになったのは間違いないだろう。その要因として大きく2つ挙げられる。
1つ目はソースコードがある程度自動生成できるようになったことである。システム開発はプログラミングの段階の前に、分析・設計の段階が当然ある。その段階で人間同士によるコミュニケーションのあいまいさを失くすために、UMLという言語も登場した。現在はUMLの図からJava、C++、C#等のソースコードがある程度自動生成できるようになった。代表的なもの表1に挙げておく。
|
||||||||||||||||||||||
|
2つ目の要因として、プログラミング作業そのものを楽にするツールが登場したことである。プログラミング・デバッグ・テストまで含めた環境を統合開発環境(IDE)と呼んでいるがEclipseプロジェクトのEclipse、ボーランドのJBuilder、NetBeansプロジェクトのNetBeansのように統合開発環境は、言語特有のメソッド(関数) を使用する際、説明が付属しているため、覚える必要が減った。こちらについても代表的なものを表2に挙げておく。
|
||||||||||||||||||||||
|
将来の優れたSE・プログラマーは?
約10年前の上記で挙げたようなUMLツール・統合開発環境などなかった頃に比べ、現在のSEのおかれた環境は格段に進歩した。私のイメージする「楽なシステム開発」を実現するにはいろいろと課題はあるが、技術革新のスピードを考えて20年後には実現するのではと私は思っている。今までは「次々登場する言語をいち早く習得できるのが最先端で優れたSE・プログラマー」だったが、近い将来は逆に「言語をいち早く捨てた人が最先端で優れたSE・プログラマー」になるのではないだろうか。
参考:MDA (Model Driven Architecture)
ベンダーに依存しないシステムの相互運用を実現するためのアーキテクチャ。「プラットフォーム技術に依存しないアプリケーションのモデル情報(機能、振る舞いの仕様)を作成し、CORBAやJava,.NET、XMI/XML、Webなどのプラットフォームにマッピングする。」というシステム開発を行う。
URL:http://www.omgj.org/technology/mda/
富士総合研究所 システムエンジニア 老川正志
この記事の内容に関するお問い合わせはCNET Japanまでお願いいたします。CNET Japanの記事を毎朝メールでまとめ読み(無料)
ものづくりの革新と社会課題の解決
ニコンが描く「人と機械が共創する社会」
ZDNET×マイクロソフトが贈る特別企画
今、必要な戦略的セキュリティとガバナンス