刊行に寄せて
Industry 4.0、Society 5.0など広範なICT技術による大変革に見られるように、科学技術は急速な発展を続けています。ICTは、ビジネスや企業の在り方を含め、私たちの生活を大きく変化させてきました。
近年、Internet of Things(IoT)や人工知能(AI)などは、実社会や実産業にその事例が見られる段階に入っています。その実現に必須なのは、通信回線、ハードウェアであり、クラウドサービスでありますが、それぞれを有機的に連携させ、最適化する必要があります。
このように新しいサービスや仕組みを創り上げるためにはソフトウェアが欠かせず、経済活動の効率化や社会生活の利便性向上に大きな役割を果たしています。その一旦で、事故を起こすと、社会に大きな影響を及ぼすことになり、スピード感を持ちつつ、安全で安心なソフトウェアを開発する手法が求められています。
一方で、ソフトウェア技術者の不足は、わが国のソフトウェア業界が直面している課題であり、労働集約的な人海戦術による開発がいまだ定常化しつつある状況において、ソフトウェア技術者育成は企業における課題でもあります。
本書は、2009年に当時のNTT情報流通基盤総合研究所が新入社員を対象に整理した内容で第1版が出版されてから10年の間、多くの方々に様々な分野で広く活用いただいてきました。NTTの研究所では、毎年、研修内容を改善しており、2014年に改訂した第2版から4年の時を経て、第3版を出版することになりました。
本改訂では、昨今、クラウドサービスやスマートフォンの普及に伴いアジャイル型開発プロセスを用いたアプリ開発などの需要も多くあることから、ソフトウェア開発の基本的作法に加えて、アジャイル型ソフトウェア開発プロセスについても、従来の開発プロセスとの比較を通して、わかりやすく、要点を伝えています。これまで同様、ソフトウェア開発の全体像を伝えつつ、学生時代に実施してきた個人的なプログラミング作業と、企業におけるソフトウェア開発の相違をわかりやすく解説することを心掛けた内容となっています。
各作業工程における指標やノウハウ、プロジェクト全体のマネジメントなども網羅しており、ソフトウェア開発に携わったことがある人にも、その意義と時代とともに変わる環境を確認していただける内容となっています。
また、もう1つの大きな特徴として、10年間で得た受講者との質疑から得た研修講師の気づき、受講者の誤解、理解の事例など、研修を進める上でのノウハウも多く詰め込まれており、講師と受講者の対話形式での展開は、受講者に可能な限り、自主的に考える姿勢を身につけてもらいたいという願いが込められています。どのような状況下におかれても、なぜ?と立ち止まり考える思考が、新たな価値創造につながります。
これからの時代を担う皆さんには、ソフトウェアが解決すべき社会的課題を意識し、常に、利用者目線で想像力豊かに、自ら考えて行動する姿勢で取り組んでほしいと願っています。
本書が、企業に限らず、研究機関、教育機関で広く活用され、わが国のICT産業を支えるソフトウェア開発技術者育成につながることを強く願います。
日本電信電話株式会社 取締役 研究企画部門長
川添雄彦
推薦のことば1 あなたに寄り添うソフトウェアエンジニアリング教育の入門書
ここ数年、ディープラーニングに代表される人工知能(AI)やそれを活用したコンピュータ将棋・囲碁など技術の進展は目覚ましいものがあります。これらは、皆、ソフトウェアの世界で実現されている事象です。このような状況の中で、ソフトウェア産業界は人材の不足がさらに顕著になってきており、ソフトウェア開発人材の育成は急務です。
本書の第1版は、当時のNTT情報流通基盤総合研究所にて新入社員を対象に実施したソフトウェア開発研修の内容を著者らがまとめ、2009年に出版されました。それから今日までの間、著者らは、技術の進展に研修内容を常に対応させつつ、イノベーションを創起する中核技術であるソフトウェアの開発力を格段に向上にさせるために必要な知識や技能を、自らのグループに対して研修という形で実践を続けてきました。
実際、産業界での現場に密着したノウハウを教科書として提供するという斬新な企画によって実現したシリーズ本「ずっと受けたかった」は、企業等におけるソフトウェア開発現場の方々に大変有用であるのみならず、産学連携による人材育成という観点から大学におけるソフトウェア教育においても一石を投じ続けています。
本書の4年ぶりの改訂は、ソフトウェア開発現場からの声に応えるものであり、アジャイル型開発プロセスにも触れ、今や、様々な場面において、スピーディに価値を提供、改善することが求められる時代の流れにマッチした、真のソフトウェア技術者養成に最適な書と言えます。
初版同様、本書を読み進めていると、登場する講師から投げかけられる質問におのずと回答してしまうほど、絶妙のタイミングで質問が投げかけられ、まるで研修教室の実況中継が目の前で繰り広げられているかのようです。また、ソフトウェア開発の手順や各工程の作業内容や成果物の作成手順について、受発注関係を明確に示しながら、システム提案から受入テストまで順を追って丁寧に、かつ、可能な限り平易な言葉で説明してあるため、初心者であっても本書に引き込まれていくことでしょう。まさに、あなたに寄り添うソフトウェアエンジニアリング教育の入門書となるものです。
本書による入門教育を通して、ソフトウェア開発における基本的知識や作法を身につけた上で、実戦経験を積むことが、知識や作法の深い理解と、真の意味での開発技能の習得に結びつくものと確信しています。本書が、多くのソフトウェアエンジニアリング教育に活用されることで、わが国を支える高度な技能を有するソフトウェア技術者が数多く輩出されることを願ってやみません。
国立大学法人大阪大学 総長
一般社団法人情報処理学会 会長
西尾章治郎
推薦のことば2 若手ソフトウェア技術者必読の名著
近年、企業におけるソフトウェア技術者の実践的な技術力不足が叫ばれ、産学官で様々な取り組みがなされてきました。私も、IPAのソフトウェア・エンジニアリング・センター所長として2004年から5年間にわたり、プロジェクトデータの収集と分析、ソフトウェア開発プロセス改善、プロジェクトの見える化など、わが国のソフトウェアエンジニアリング力を向上させる施策を推進してきました。
また、2003年から高知工科大学という大学教育の場で実践した内容は、翔泳社から『ずっと受けたかったソフトウェアエンジニアリングの授業』として出版し、多くの方々に読んでいただきました。あわせて、この書籍を用いて教育を行うためのFD(Faculty Development)活動を継続して実施してきました。
最近は、より創造的な発想や活動ができる人材を育てたいというニーズが高まってきました。特に、研究開発や先進的な技術を開発する企業では、技術者の自主的な思考力の向上を期待しています。
本書は、NTT研究所の新入社員を対象にしたソフトウェア開発のPBL(Project Based Learning)研修の内容をまとめたものですが、次のような特徴があります。
- 常に「なぜ」を考えながらPBLを進めることにより、受講者は受け身ではなく、自らが考えるようになっている
- ソフトウェアエンジニアリングの幅広い領域を俯瞰しながら技術が身につくようになっている
- 新入社員の皆さんは、入社して新しく聞く企業独特の言葉にとまどいますが、それを上手に解消できるようになっている
ソフトウェアエンジニアリングについては、品質管理の考え方など数十年前から変わらない知恵もあります。本書では、そのような先人の知恵と新しい技術を巧みに融合してあります。本書を読めば、きっと同僚だけではなく、先輩とのコミュニケーションも円滑になると思います。
さらに、私が入社したときは、学生時代のテストと異なり、仕事の課題には必ずしも答えがないことにとまどいましたが、本書の演習課題は、まさしく答えのない課題です。10人が考えると、10とおりの答えが出てくるでしょう。この演習課題に真剣に取り組むことで、レベルの高いスキルが身につくとともに、考える技術者になれるでしょう。
今回、研修内容の改善結果を反映するとともに、近年適用が進んでいるアジャイル開発の研修も追加され、より実践的になりました。
本書は、他の企業でもそのまま活用できるように汎用的な内容になっています。また、専門学校や大学でソフトウェアエンジニアを目指す人には、企業の活動内容を垣間見ながらスキルアップができる最適な書籍であると思います。
このような書籍がたくさん世の中に出て、わが国の技術力向上に貢献することを期待しています。
学校法人・専門学校 HAL東京、HAL大阪 校長
一般社団法人電子情報通信学会 フェロー
一般社団法人情報処理学会 フェロー
鶴保征城
オリエンテーション 研修の進め方
これから、新入社員のためのソフトウェア開発研修を始めます。最初に、この研修を進めるうえでの心構えや進め方を説明します。
皆さんは学校を卒業して、社会人になりました。これから大事なことは、自分の頭で考えなければならないということです。仕事を進める過程では、答えが1つに定まらないこともたくさんあります。いろいろと考えて、ベストな解決方法を見いださなければなりません。
自分の頭で考えるには、何が良いのかを判断するための基準が必要になります。
あなたの社会人としての夢は何ですか?
「世の中に役立つ技術を開発することです」
自分の人生において変わらない目標を持つことは、社会人として様々な問題に直面した際、迷いから脱出する助けとなります。
さらに、常に「なぜ」と考えてください。「なぜ」と立ち止まることによって、言われたとおりのことだけをする受け身の姿勢から、主体的に考える姿勢に変わっていきます。
研修の進め方
それでは、本書で行う研修の進め方について説明します。
研修は、講義と演習で構成されます。演習では5名程度のチームを作り、システムを開発します。講義では基本的なことは説明しますが、その後はチームで主体的に考え、進める時間です。どのようなシステムを開発するかについても、チームで相談して決めてください。
皆さんのこれからの仕事では、システムを受注して納品するだけではなく、企画(要件定義)して発注し、発注したシステムに対する受入テストも行います。適切に受入テストを行うためには、ソフトウェア開発の全体について把握する必要があります。そこで本研修では、要件定義から設計、開発、受入テストまでを行うシステム開発のうち、ソフトウェア開発の全工程を体験します。
ところで、今回の研修では、チーム内の役割分担をくじ引きで決めます。なぜ、くじ引きで決めるのかわかりますか?
「わかりません」
この研修を企画する際、スタッフの間で2つの意見がありました。くじ引きで決める方法と、チームメンバで相談して決める方法です。後者だと、チームリーダをやりたいと思っていても言い出せない人がいる可能性を考慮して、くじ引きを選択しました。ただし、両方にメリットとデメリットがあります。皆さんそれぞれで考えてみてください。そうすることで、チーム分けの方法の「なぜ」がわかると思います。
次に、研修の目標について説明します。この研修では、皆さんに次の3つを身につけてもらいたいと考えています。
- 自主的に考える姿勢を身につける
- チーム活動を通して、コミュニケーションを活発に行う姿勢を身につける
- ソフトウェア開発に関する基礎的な技術を身につけ、言葉によるコミュニケーションギャップを解決する
最後にお願いです。研修中は、気づきシートに「そうなんだ」と思ったことを記録してください。走り書きで結構です。後で振り返ったとき、自分の成長を実感することができますよ(表0.1)。
続きは本書で
本書『ずっと受けたかったソフトウェアエンジニアリングの新人研修 第3版』ではこのあと、実際にウォータフォール型開発モデルやアジャイル型開発モデルにおける開発手法について解説していきます。また、開発の全体像を把握し進行するプロジェクトマネジメントの方法論についても紹介しています。ぜひ参考にしてみてください。