私は2年間プログラマー/システムエンジニアの仕事をしていました。作業内容としては、ダムの水位を管理するいわゆる組み込み系のソフト開発でした。
エンベデッドCというような名前の統合開発環境を利用し、制御するためのプログラムの内容を、先輩から教わり、要求仕様書などの内容も精読していきました。
この時点で、印象に残っている仕事は、チェッカーで電圧を計測する仕事で、その他はよく覚えていません。
SE/PGの仕事について
次の仕事は、EXCEL VBAを利用しで、「平成の大合併」のときの資料をそれぞれ新しく出来た市町村をプログラムに追加していくような内容でした。この仕組みは、理解すると興味を持つことが出来ました。
その年の6月には東京への転勤が命ぜられました。実際に働いたところは、川崎にあるNEC系列の子会社です。その会社でスイッチングハブのファームウェアの開発を行いました。
作業内容としては、システム開発のV次曲線(基本仕様書、詳細仕様書の作成、コーディング、単体テスト、結合テスト、システム耐久テストなど)を行いました。
1年目は、システムテスト、耐久テストを行うデバッグが主な仕事です。テスト項目書を見て、スイッチングハブの何番目のポートが正常に機能するかを確認するために、LANケーブルをたくさん挿してして、ハブ同士をつなぎました。
カッセン挿抜といって、ハブが入っているケースからスイッチの部分を抜き出し、また刺した時に、正常に動作するかも確認しました。またヒートランといって、パラメータを最大状態にして、何日間耐久出来るかのテストなども行いました。
2年目は、仕様書の作成からコーディング、テストなどが主な仕事になりました。基本仕様書は、現状の機能を要求仕様書や定例会の情報で、改良していく作業で、そこから詳細仕様書、関数仕様書に、処理の流れなど詳細に記述していきました。
そして、仕様書に基づき、C言語でプログラミングを行い、どの関数を追加するか、どの構造体を追加するか、メモリリークを起こさないように、構造体のメモリーをallocateした後は、必ず終了処理として、free()を行うように気をつけながらコーディングをしていきました。
プログラミングについて
情報系の大学・会社に在籍していたので、今もプログラミングには興味はあります。
現在学習している言語は、Java,Javascript,PHP,CSS,SQLなどです。大学では、C言語とJavaを中心に勉強してきたので、この2つは、最近かなりの興味・関心が出てきました。
また、現在、仕事でホームページ作成を行っている影響で、HTML,CSS,JavaScript(Jquery)に興味が出てきました。
スマホ用のサイトとパソコン用のサイトを分けるためにJavaScriptで機器・ブラウザのユーザーエージェントの判定を行い、ヘッダー部分のリストを削除したり、追加したり行っています。
既存サイトは、レスポンシブサイトで、画面のサイズを変えると、CSSで自動的に切り替わる仕組みになっていました。
しかし、スマホを横にするとスワイプしても何も、反応しないというバグがありました。
そこで、サンプルのアコーディオンリストをインターネット上で探し、それをサイトに適用することで、機能を置き換えることが出来ました。
プログラム言語は1つ覚えれば、色々な言語に応用できることが、最近わかってきました。
文法構造的には、C言語とJava,JavaScriptは違いが有りますが、同じ使い方が可能です。
オブジェクト指向の観点でいえば、JavaとPHPは文法構造がかなり似通っています。普通にクラスを定義して、そのクラスを利用するときは、インスタンス化してフィールドやメソッドにアクセスできるところは、ほとんど同じといっても過言ではありません。
ここ数日間は、自宅でJavaを使ったフォルダーの管理をするソフトをJava Swingを使って、作成しています。作っていくうちに、この機能も必要だとどんどんとコードの量や画面やボタンの量が大きくなっていました。
また、ThreadクラスとJProgressbarクラスを使って、処理が長い時は、進捗状況を「見える化」することに成功しました。このソフトは、classひとつで動いていますが、進捗機能の表示は内部クラス化して、クラスの中にクラスを定義しているプログラムになっています。
またフォルダの階層構造ごとコピーする機能は、既存のAPIには、含まれていなかったので、他の人が作ったjarファイルの内容をインポートして使えたので助かりました。