ソフトウェアエンジニアの悩み

go back to frame topframe top

一歩間違うと何も出来ない人<ソフトウェア・エンジニア>(2001/2/?)

ソフトウェアエンジニアと言う仕事

ソフトウェア・エンジニアと言う仕事があります。『エンジニア』と言うと、半田ごて持って電子回路を設計したり、車のエンジンをいじれる人のような響きがあります。モノを作る、と言う意味ではそれらと同業です。でも電機メーカーに勤めているからと言って、そういう人とは職種が違うので、テレビは直せません(^。^;)。お願いなのでなんでもできると思わないでよん>僕の田舎のおばちゃん

ソフトウェアと言う言葉はしばしば耳にされるかと思うのですが、なかなか説明が難しい分野です。パソコン上で動く、WORDEXCELや一太郎やPhotoShopみたいなアプリケーションソフトを作る人から、PlayStationファイナルファンタジーと言ったゲームソフトを作る人、iModeJavaゲームを作る人、様々あります。

一番わかり易い所で、ゲームをあげてみましょう。
ファイナルファンタジーは、PlayStation上で動くゲームですが、コントローラを押してフィールド上を上下左右に動く、だとかそこにはグラフィックが表示されて、誰かに会ったら会話が始まる、といったことは、予め PlayStation 本体にはありませんよね。
CD-ROMの中に、その動作が書いてあるわけです。この動作の記述そのものが『ソフトウェア』です。

どうやってその動作を記述するか、と言いますと、プログラム言語と言うものを使って書きます。言語と言うからには言葉みたいなもんです。

もし、そこが街ならば、町の画面へ行け
もし、人がいるならば、会話をしろ
もし、モンスターに会ったならば、戦闘画面へ行け

といった具合に、PlayStationに命令を書いていくわけです。こんなような調子で携帯電話の中でもこんな風なソフトウェアが動いています。

もし、着信があったならば、着信音を鳴らせ
もし、通話ボタンが押されたら通話を始めろ

もし、通話中に着信があったら、キャッチホンにしろ

みたいな。こういう細かい動作は全部電子回路でやってたら大変なので、こういう言葉を解釈するCPUメモリを用意して、プログラムで書けるようになっているのです。

さて、これらプログラムは具体的にはプログラム言語と言うもので書きます。
このプログラム言語と言うものがクセモノです。

プログラミング言語

プログラミング言語には、様々なものがあります。今はC/C++(シープラスプラスと読みます)が主流ですが、他にもJavaFortranCOBOLPascalアセンブラ、最近ではMicrosoft社独自のC#(シーシャープと読みます)なんて言うのまであります。コンピュータサイエンスの世界では、LispAdaSmallTalkPrologなんて言うマニアックなものまで。このHPを記述している、HTMLなんて言うのも言語の一つですね。

で、それぞれの言語でポリシーが違えば書き方も違うんです。

昔、専門学校などでは、COBOLが教えられていました。COBOLは多くの銀行系システムが採用していたプログラミング言語でしたので、即戦力になれたのです。ところが、このCOBOL、最近はめっきり使われなくなってしまいました。その原因は良く知らないのですが(少なくとも、僕が社会に出た1995年にはあまり注目されなくなっていました)、これはCOBOLを勉強されていた方々にはオオゴトです。

何しろ職を失うことになってしまうからです。普段日本語で仕事していたのに、明日から英語で話せ、と言われるようなものです。

昔のアニメとかで、パンチカードって言うのが良くでてきましたよね。なんか、博士らしい人がいて、コンピュータらしいものからカタカタと出てくる0101で書かれた記号を読んでる。

昔は言葉をこの0101に変える、パンチカード(言葉と0101の関係については、こちら)職人がいっぱいいたのだそうです。でも、今パソコンがこの変換を自動でやっちゃうので、こんな仕事は仕事になりません。大枠女の子がされていたそうですが、別の仕事を探さざるおえなくなってしまったのではないでしょうか。

余談ですけど、昔の漫画に出てくる学者さんって凄いですよね。
あの0101をダイレクトに読んで、「むっ、これは大変だ。怪獣が来てるぞ。」とか言っちゃうんですから(^。^;)。頭がコンピュータになってるのかも知れん(^。^;)

凄く、はかない仕事<ソフトウェア

ソフトウェアも似たようなもので、せっかくC++を覚えたのに、明日からJavaを使ってくれ、えーっみたいなことがおきうるわけです。それでもC++とJavaはポリシーが似ているので、大体大丈夫なんですが、いつポリシーも全く違うもんが世間に現れないとも限りません。

実際、オブジェクト指向と言う新しいソフトウェア・パラダイムが現れたときの混乱といったらないです。どれだけの人がこの業界から去っていくか、マネージャに就くとか違う畑を探して旅立っていったか。

まあ、そういうことは必然的に起きてしまうので、一生懸命勉強するしかないのですが、その勉強するモノとしてどれを選ぶか、と言うことはソフトウェア・エンジニアにとっては切実な問題です。
要は勝ち組みにつきたい。

今だと、iModeでも採用されたし、一部ファームウェアでも採用されているので、Javaが良いかな、と思うのですが、Microsoft社が提唱している.NETテクノロジー(詳細はこちら)で採用しているC#だとかVisualBasicだとかも、いずれは携帯電話とかの世界にも入ってきてしまうかもしれない。

言語の根底には大抵オブジェクト指向、だとかポリシーがあるので、そのポリシーを徹底して勉強すれば良いのだけど、やっぱり幅広く言語は勉強していないと、ポリシーは頭に入ってこないもんね。そんなこんなで、ちょっと仕事以外で勉強を始めています。

これが妥当なやり方かわからないけど、頭は使える時に使っておかないと。
僕らソフトウェアエンジニアに休息の時はない、常に行け行け飛馬、どんと行けってなもんだい。

ソフトウェアは常にプラットフォーム依存。プラットフォームが倒れると僕らも倒れてしまいます。
そうであれば、長いものには巻かれろ、常に勝てそうな場所を探しつづける必要があるのです。
なんてはかない商売なのかしら(^。^;)

go back to frame topframe top