HOME > ソフテックだより > 第166号(2012年7月18日発行) 現場の声編「入社して3ヶ月で学んだこと、感じたこと」

「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。

ソフテックだより(発行日順)のページへ
ソフテックだより 技術レポート(技術分野別)のページへ
ソフテックだより 現場の声(シーン別)のページへ


ソフテックだより 第166号(2012年7月18日発行)
現場の声編

「入社して3ヶ月で学んだこと、感じたこと」

1. はじめに

私は中国出身で、日本の大学院への留学を経て、2012年4月に入社した入社3ヶ月の新入社員です。ソフテックに入社した動機は、「少人数でも大きなプロジェクトの遂行が可能、ソフトウェア技術力が高い」というところに魅力を感じたことです。ソフトウェア技術者として社会に出るからには高い技術力を身につけ、今までの学生生活にはなかった新しいことにチャレンジしたいと思っていました。幸いソフテックの一員になり、研修やOJT(On-the-Job Training) を通して先輩や上司の方々から親切に指導していただき、未熟ながらも技術力が高まってきていると感じています。新入社員としての3ヶ月間を振り返って、入社後研修で受けたソフトウェア教育の内容や開発現場で感じたソフテックの技術力の源、社会人になって感じたコミュニケーションの重要さをご紹介させていただきたいと思います。

2. 研修課題

ソフテックにはソフトウェアの受託開発を行うという一つの大きな特徴があり、組み込みソフトウェア、Windowsアプリケーション、PLC(Programmable Logic Controller)など、多岐にわたって業務を展開しております。そのため、入社後研修課題も多方面に取り組みました。今までの3ヶ月間の研修課題を表1に示します。

  テーマ 内容 分類
課題1 マイコン研修 RSKを使用したストップウォッチの作成 組み込みソフトウェア/構造化分析・設計
ハイパーターミナルを利用しての電卓作成
課題2 ITRON学習 ITRONを使用したストップウォッチの作成 組み込みソフトウェア/構造化分析・設計
課題3 音声ガイダンスソフト
(OJT)
音声でガイダンスを行うソフトウェアの作成 Windowsアプリケーション/オブジェクト指向分析・設計

表1. 研修課題の一覧

入社後の研修は、所属するグループの先輩エンジニアの下で行います。私は表1に示したように、3つの解題に取り組みました。
課題1に関しては、RSK(※1)やハイパーターミナル(※2)を使用し、HEW(※3)という開発環境でマイコンの組み込みソフトウェア作成を行いました。作成したソフトウェアは2つあり、1つ目のソフトウェア作成ではマイコン開発やC言語のコーディングに慣れることを目的として取り組みました。2つ目のソフトウェア作成では実際のソフトウェア開発の手順に沿って作業を進め、開発作業に慣れることを目的として研修を行いました。本課題を通して、組み込みソフトウェア開発の特性の理解ができるようになりました。組み込みソフトウェアは、ハードウェアを制御する専用ソフトウェアであり、高い品質と信頼性が求められるものが多いとの特徴を有しています。そのため、組み込みソフトウェア開発においては、その特徴を反映したNTCR条件(Nature:自然の法則の扱い、Time: リアルタイム性の要求、Constraint: 制約事項が厳しい、Reliability: 高品質と信頼性)の認識が重要となります。そのNTCR条件を考慮した組み込みソフトウェア開発の特性は図1のようにまとめられます。(※4)

組み込みソフトウェア開発の特性とその関係
図1. 組み込みソフトウェア開発の特性とその関係

課題2では、組み込みシステム用リアルタイムOSの一つである、ITRON(※5)仕様の基本とその特徴を理解し、C言語でのソフトウェア作成を通して、各機能の使い方に慣れることを目的として研修を行いました。本課題を経て、リアルタイムOSの最大の特徴であるマルチタスク機構を理解することができるようになりました。タスクとは、プログラムの並行実行の単位であり、マルチタスク機構によって、複数のタスクを擬似的に並行実行ができます。独立した処理の流れを独立したタスクに割り当てることにより、同一のプロセッサで複数のサブシステムの処理が行え、論理的な処理の順序と時間的な処理の順序を分離することができます。そのため、時間制約を持った多重処理システムの構築も容易となります。

課題3では、初めての実案件として、OJTの形で研修を行いました。本課題を通して、Windowsアプリケーション開発やC++の言語仕様、オブジェクト指向設計に携わることができ、未だわからないことが多いですが、理解できる部分もだいぶ増えてきたように思います。本課題の製作過程では様々な試行錯誤ができ、楽しい作業でした。こうした実案件で得た経験は今後様々なプロジェクトに参加する上で、大いに活用できると感じています。

3. 技術力の源

入社してまだ3ヶ月も経たない短い間ですが、新入社員の視点から開発現場を見て、肌で感じたソフテックの技術力の源について述べさせていただきます。

3-1. 品質管理の徹底

ソフテックでは、ソフトウェア開発において、常に高い品質を保つため、様々な品質管理を行っています。その一つの取り組みとして、ISO推進室を開設し、ISO9001:2008に対応した品質並びに顧客満足の向上を目的とした活動を行っています。ISO推進室が作成した品質マニュアルに沿った手順で開発を行うことで、ソフトウェア開発の各段階で徹底的な文書化により記録が残ります。整理ができた情報は社員全体、特に新入社員の技術力を高めるための材料となり、非常に重要な財産となっています。私も表1の課題3を始める際、作業スケジュールを立てた後に、先輩エンジニアが作成した要求仕様書に沿って、外部設計書の作成から進めました。設計作業においては、先輩エンジニアのご指導の下、以前の設計文書を参考し、その中から外部・内部設計のノウハウを取り入れるおかけで、無事に完成することができました。

3-2. レビューの徹底

ソフテックでは、ソフトウェア開発の各段階でレビューを徹底的に行います。ここでその中のコードレビューを取り上げ、ご紹介させていただこうと思います。単体テストの前に、コードレビューを行います。レビューでは、先輩エンジニアと対面で約1時間実施し、正確な機能、わかりやすい命名、十分なエラー処理、適切なコメント、読みやすいコードなどを、全般にわたってチェックします。私も研修中に作成したコードに対して、こうしたレビューを受けることで、大変勉強になりました。以下にそのレビュー記録の一部を表2にご紹介させていただきます。

項番 問題点 修正内容または検討結果
1 63 SetRegistryKey()は不要。 SetRegistryKey()を削除するか、引数を適切な文字列に変更する。
2 126〜128 bInputKey_AltなどのBoolean型変数に対して、== TRUE という判定は不適切。Boolean型変数は、原則的に0と非0の二値を扱うため、TRUE(値は1)以外の数値であっても真と判定する必要がある。 If文の==TRUEを削除する。
3 141 SetTimer()の戻り値を見ていない。 SetTimer()の戻り値を見て、エラーならエラーの文言を表示する。(RegisterHotKey()と同じ)
4 145 なぜ、SetDateTime()をするかの理由が不明。ソースを見た人が混乱する可能性がある。 コメントを追加する。
5 217〜 マジックナンバーが使用されている。(9999、3600、-1、10、99、9など) 目的、意味がわかるような定数名で定義する。
6 368〜370 Boolean型変数にint型の値を格納している。さらにBoolean型変数を0、1といった値と比較している。 iniファイルからの読み込み値をint型で扱いたいのであれば、いったんローカル変数に格納し、Boolean型にはTRUE/FALSE以外の値を代入しないようにする。
7 450 If文ではなく、switch-case文を使用したほうがよい。 switch-case文に修正する。
8 842 GetWaveFilePath()にWAVファイルが存在しなかった場合の明確な処理(戻り値を空で返すなど)がない。 WAVファイルが存在しなかった場合の処理を追加する。
9 939 曜日の判定の時だけ、dwStartTime、dwEndTimeの正常チェックをしているが不要ではないか? dwStartTime、dwEndTimeのチェックは削除する。
10 953 No.9の対応により、953行のif文に入ってくることもなくなるので、この処理は不要。 953行のif文を削除する。
11 984 m_dwTimeElapsedはメンバ変数(グローバル変数)である必要はない。 m_dwTimeElapsedはローカル変数にする。
12 979 m_AppTime.nNormalCycleを直接参照すればよいのでm_bPlayOnlyOnceFlagは不要。 m_bPlayOnlyOnceFlagは削除する。

表2. レビュー記録の具体例

このようなコードレビューを実施することで、経験や知識が豊富な先輩エンジニアからの知識の伝達を効率的に行うことができます。この効果は、ソフトウェアの地道な品質向上に繋がるだけでなく、社員全体の技術力のレベルを底上げするうえで非常に重要となります。

4. コミュニケーションの重要さ

ソフトウェアエンジニアにとって最も重要なのは、技術力つまりITスキルです。しかし、ITスキルだけでは一人前の「プロフェッショナル」とは言えません。ほかのビジネススキルを兼ね備えていることが不可欠です。ソフテックでは、ビジネススキルを高めるための様々な取り組みを行っています。ここでは、自分がそういった取り組みを通して感じたコミュニケーションの重要さをご紹介させていただこうと思います。

ソフテックでは、ソフトウェア開発において、社員が単なるソフトウェアの設計やプログラミングだけができればそれでよいということではなく、文章や会話によるコミュニケーション能力も非常に重視します。われわれ入社1年目の新入社員は、IBM社のLotus Notesというグループウェアを用いて、1日1通以上の日報作成を行うことになっており、その返信よるフィードバックを通して、文章力も含めたコミュニケーション能力の向上に繋がっています。私は、入社前に上司からソフトウェア開発においてのコミュニケーション能力の重要性を教えて頂き、日本語の勉強に力を入れました。そのおかけで、2011年12月には、日本語能力試験の一番難しいレベルであるN1に合格することができました。

入社してからは、毎日の日報作成などを通して、日本語の文章力を磨いています。こうした日々の文章作成の効果は、情報を正確に伝えることにとどまず、文章で表すというプロセスを経て、自分の考えが整理されます。そして、考えが整理されると、理解ができていないことが浮かびあがって、物事をきちんと理解することを強いられることになり、ソフトウェアエンジニアとしての成長につながっていると強く感じています。ここまで、日報に関しては文章力や思考力の向上について述べていましたが、それ以外にも重要な効果があります。
それは、自分の気持ちや感じたことなども日報に反映されることです。そのような日報報告には社長から直ちにコメントを頂いたこともあります。私の場合では、日報を通して、直接社長から「こういう考えで自分はこの会社を経営していくんだ」という明快な経営哲学や、「あなたの場合、日本語の文章を磨き上げることが、日本語会話を完成させることの近道であると、私は思う」という日本語勉強の指導、「焦らず、じっくりと取り組んで欲しい。この仕事により、もっとも重要な仕様把握力が高まるのだ」という仕事に対する姿勢まで教えて頂きました。すごく心強くなりました。

会話によるコミュニケーション能力の向上を目的とした活動は、月2回のSAMSグループミーティング、毎週水曜日の挨拶運動、新入社員が積極的に行う電話応対などが挙げられます。

  1. SAMSグループについては (ソフテックだより 第156号(2012年2月15日発行)現場の声編「ソフテックへ入社して(中途採用)」) に記載されていますのでそちらを参照ください。数人単位のSAMSグループであるため、新入社員でもいろいろな議論に積極的に発言ができ、自分の考えがダイレクトに反映されるようになっています。その結果、SAMSグループ内では、よいコミュニケーションがとれ、新入社員の会話力向上を促していることを実感しました。
  2. 挨拶運動については(ソフテックだより 第148号(2011年10月19日発行)現場の声編「ソフテックの挨拶の取り組み」) に記載されていますのでそちらを参照ください。挨拶運動は毎週水曜日に開催され、挨拶を行う中で担当の社員によるチェックを行い、挨拶の様子を評価します。最近のテーマとしては大きな声での挨拶に取り組んでいますが、実際にやってみると、取締役から「日本語に慣れていないこともあり、如何にも自信なさそうな感じの挨拶となり、語尾も不明瞭になっていました」という評価をいただきました。それを受けて、取締役に頂いたアドバイスにしたがい、毎日朝、何回かひとりで挨拶の練習を繰り返すことで、自信もつき、語尾もはっきりと話せるように改善してきました。挨拶運動を通して、挨拶はお客様との最初のコミュニケーションとなり非常に重要であることが認識できるようになってきました。
  3. 入社後研修の一環として、新入社員が積極的に電話応対を行います。先輩のご指導の下、内線電話で練習し、マナーについて学習を行いましたが、実際に電話に出てみると間違ってばかりで、難しさを感じました。今では、少しずつですけど、電話応対に慣れてきていますが、相手の方に合わせた臨機応変な対応ができるようにはなっていません。先輩社員の電話対応を見ると、対応が冷静で、会話の筋も通っているため、きっと相手の方も納得して下さっているだろうと感じます。これからの課題としては、先輩社員の電話対応を見習いながら、相手に失礼のないような対応が身につくように積極的に実践していきたいと考えています。

入社したばかりの頃と比べて今では文章や会話によるコミュニケーション能力は少しずつ良くなってきましたが、まだまだ力不足を感じる時が多くあります。今後も、日々挑戦する気持ちでコミュニケーション能力を養いながら、知識と経験を積み重ねていきたいです。

5. 最後に

入社してから3ヶ月経ち、先輩からのご指導のおかげで、未熟ながらも技術力が身についてきていると感じています。技術力をしっかりと身につけていき、会社や社会に貢献できる人間になれるよう頑張っていきたいです。今までは先輩エンジニアに教わってばかりですが、早期に一人前のソフトウェア開発技術者になれるように、知識と経験を蓄えていきたいと思っております。

拙い文章ですが、最後までお読みいただき、ありがとうございました。

(S.S.)

[注釈]
※1
RSK: Renesas Starter Kitsの略称であり、ルネサスマイコン用の評価ツールです。
※2
ハイパーターミナル: Microsoft Windowsシリーズに搭載されているターミナルエミュレータの名称です。通信ケーブルを経由して別の端末に接続して作業を行うことができます。
※3
HEW: High-performance Embedded Workshopの略称であり、ルネサスマイコン向けの統合開発環境です。
※4
「組込みソフトウェア開発のための構造化モデリング 要求定義/分析/設計からソースコード作成までソフトウェア開発上流工程の基本を構造化手法に学ぶ」.SESSAME WG(セサミ ワーキング グループ)2 (著). 翔泳社. 2006年1月. ISBN-10: 4798110477.
※5
ITRON: Industrial TRON(The Real-time Operating system Nucleus)の略称で、工業用途に利用することを想定したリアルタイムOSの仕様の一つです。

関連ページへのリンク

関連するソフテックだより

ページTOPへ