狠狠撸

狠狠撸Share a Scribd company logo
技術要素への需要から示す
ソフトウェアエンジニアリングの知識
< ソフトウェアエンジニアに必要な知識
BPStudy #172 ソフトウェアエンジニアリングを学ぼう
2021/12/17
@masskaneko, 金子昌永
本書 “実践ソフトウェアエンジニアリング第9版” は
最良の手法が解説されている財産らしいぞ!
本書は米国においての第 1版の発行(1982年)以来、
世界累積300万部を超えるベストセラーの最新刊
である第9版の邦訳書です。ソフトウェア同様、改良が
続けられているソフトウェアエンジニアリングの
「最良の手法」を解説している書籍であり、現役の
ソフトウェアエンジニアならびに学生諸氏におすすめす
る1冊です。
https://www.ohmsha.co.jp/book/9784274227943/
読者としての本書の感想
● 基礎を示す本として素晴らしいもの(財産)
● 実務者個人の学習、組織的な技術向上に使える
● 独学のための入門書ではない (教師がいればいけそう)
● 独学で入門するなら、エクストリーム?プログラミング、カイゼン?ジャーニー、
チーム開発実践入門など、チームで長く開発を続けることを語った本がいい
● 実務経験を積んでから本書を読むと、経験と入門書の内容を抽象度を上げて
理解でき、周辺領域も理解しやすくなり、業界や職種が少々変わっても
通用する知識(財産)が手に入るのではないか
https://masskaneko.hatenablog.com/entry/2021/12/02/071049
そう書いたが、そもそも
● ソフトウェアエンジニアリングという知識領域
● ソフトウェアエンジニアに必要な知識領域
の認識を淡くでも持つのが先か?
と思い、以下の材料を借りて一緒に考えてみたい。
● 読まれている書籍
● 企業の技術ブログ
● 業界で人気の知識共有サービス
最後に私の見解を
載せます。深入り希望
なら第2部のトークで。
本書には多くの書籍が参考文献として
挙げられている。
では、ソフトウェアエンジニアがよく読んでい
る書籍はソフトウェアエンジニアリングの範
囲内なのか?
ITエンジニア本大賞 2021, 翔泳社
https://www.shoeisha.co.jp/campaign/award/2021/result/
『ITエンジニア本大賞』はITエンジニアのみなさんに読んでほしい技術書?ビジネス書を
選ぶイベントです。 2014年からスタートし、今回が8回目の开催となります。
ITエンジニア本大賞 2021, 翔泳社
https://www.shoeisha.co.jp/campaign/award/2021/result/
『ITエンジニア本大賞』はITエンジニアのみなさんに読んでほしい技術書?ビジネス書を
選ぶイベントです。 2014年からスタートし、今回が8回目の开催となります。
9-11章
2-4章 2-4章
9-12章
関連してそうな
本書の章
『Qiitaユーザーが選ぶ、2019年に読んで良かった技術書』アンケート結果発表
https://zine.qiita.com/topics/2019-book-mailmagazine/
分類 書名 ※副題を省略
プログラミング言語
?フレームワーク
プログラミング言語図鑑、やさしい C++、独学プログラマー、プログラミング言語 Go、
Vue.js入門
設計?コーディング オブジェクト指向設計実践ガイド、ドメイン特化言語、コーディングを支える技術、
CODE COMPLETE、リーダブルコード、レガシーコードからの脱却
WEBテクノロジー WebRTCをブラウザ外で使ってブラウザでできることを増やしてみませんか?
Real World HTTP、Webを支える技術
データベース 達人に学ぶSQL徹底指南書
OS The Art of UNIX Programming
データ分析?機械学習 Pythonではじめる機械学習、東京大学のデータサイエンティスト養成講座、
チーム開発 カイゼン?ジャーニー、アジャイルサムライ、ティール組織
『Qiitaユーザーが選ぶ、2019年に読んで良かった技術書』アンケート結果発表
https://zine.qiita.com/topics/2019-book-mailmagazine/
分類 書名 ※副題を省略
プログラミング言語
?フレームワーク
プログラミング言語図鑑、やさしい C++、独学プログラマー、プログラミング言語 Go、
Vue.js入門
設計?コーディング オブジェクト指向設計実践ガイド、ドメイン特化言語、コーディングを支える技術、
CODE COMPLETE、リーダブルコード、レガシーコードからの脱却
WEBテクノロジー WebRTCをブラウザ外で使ってブラウザでできることを増やしてみませんか?
Real World HTTP、Webを支える技術
データベース 達人に学ぶSQL徹底指南書
OS The Art of UNIX Programming
データ分析?機械学習 Pythonではじめる機械学習、東京大学のデータサイエンティスト養成講座、
チーム開発 カイゼン?ジャーニー、アジャイルサムライ、ティール組織
9-11章
2-5章
関連してそうな
本書の章
ソフトウェアビジネスを
手掛ける多くの企業が
実際のソフトウェアエンジニア
リングを公開している。
その媒体は、テックブログや
エンジニアリングブログ
と呼ばれる。
その内容はソフトウェアエンジ
ニアリングの範囲内なのか?
本書の範囲内なのか?
CyberAgent | Developers Blog https://developers.cyberagent.co.jp/blog/
● 12/16 プロダクトマネジメントで意識したい「PMのタテとヨコ」
● 12/16 8年運用したJavaScriptでの開発を段階的にTypeScript移行して~
● 12/16 クラウドネイティブなDBを使ってみよう!TiDBの社内ハンズオンを開催
mercari engineering https://engineering.mercari.com/
● 12/13 メルカリで築くエンジニアキャリア
● 12/13 GitHubリポジトリにおけるレビュープロセスの統制
● 12/11 メルカリ?メルペイで行ったリリースサイクルのアップデート
Future Tech Blog https://future-architect.github.io/
● 12/07 画面の解像度の要件定義の話
● 12/03 Redmine_single_mailプラグインを開発しました!
● 12/02 AB Open社と提携してRISC-V PCを開発しました
テックブログの公開は新興ソフトウェア企業によるものばかりでなく
老舗企業が “技報” という名前で数十年間公開し続けている (以下例)
● 日立評論, 株式会社日立製作所
https://www.hitachihyoron.com/jp/index.html
● パナソニック技報, パナソニック株式会社
https://www.panasonic.com/jp/corporate/technology-design/ptj/new.html
● MSS技報, 三菱スペース?ソフトウェア株式会社
https://www.mss.co.jp/technology/index.html
● ユニシス技報 > ソフトウェアエンジニアリング, 日本ユニシス
https://www.unisys.co.jp/tec_info/tr93/93abs.htm
● NISSAN TECHNICAL REVIEW, 日産自動車 (No.84 特集 ソフトウェア)
https://www.nissan-global.com/JP/TECHNICALREVIEW/
ソフトウェアエンジニア
個人も、学習履歴、方法、
実験結果、意見などを
公開している。
個人公開のものもあれば
サービスの機能によって
SNS化している場合も。
その内容はソフトウェア
エンジニアリングの範囲内
なのか?
Zenn https://zenn.dev/
Zennはエンジニアのための新しい情報共有コミュニティです。
誰かのために、自分のために知見を共有しましょう。
ほか多数の
トピックあり
Zenn https://zenn.dev/
Zennはエンジニアのための新しい情報共有コミュニティです。
誰かのために、自分のために知見を共有しましょう。
ほか多数の
トピックあり
22章
22章
関連してそうな
本書の章
DEV https://dev.to/
DEV is a community of software developers getting
together to help one another out. The software
industry relies on collaboration and networked
learning. We provide a place for that to happen.
DEV https://dev.to/
DEV is a community of software developers getting
together to help one another out. The software
industry relies on collaboration and networked
learning. We provide a place for that to happen.
19-21章
22章
22章
3, 22章
23章
18章
及川卓也氏をプロダクトマネジャーに迎え Incrementsが構想する「Qiita3.0」とは?, 2015
https://type.jp/et/feature/7360/
及川 現状の『Qiita』のコミュニティはスマホやWebの技術者に偏っており、日本の技術
者全体を反映したものにはなっていません。職業エンジニアが110万人とも120万人とも
言われる中で、ネット上でプレゼンスを持っているのはそのごく一部。『Qiita』にいるのは
そのさらに一部に過ぎない。
こうした現状を変え、技術者全体のコミュニティと限りなく一致させる方向にもっていきた
いと思っています。
https://twitter.com/monamour555/status/770481425623683074
5年経ってどうなったか?
DEVやZennはどうか?
● 読まれている書籍
● 企業の技術ブログ
● 業界で人気の知識共有サービス
これらの内容から、ソフトウェアエンジニアは、
実務で本書の範囲外の知識を必要としていることがわかる。
では、本書の範囲外とは何なのか?
そもそもソフトウェアエンジニアリングって何だっけ?
情報専門学科におけるカリキュラム標準 J07
https://www.ipsj.or.jp/annai/committee/education/j07/curriculum_j07.html
離散構造、アルゴリズム、言語、 OS、
グラフィックス、ネットワーク
回路、信号、論理、組込み
eビジネス戦略、プロジェクト管理、
知的作業用ソフトウェアツールキット
モデル化、要求開発、アーキテク
チャ、品質、V&V、マネジメント
システム管理とメンテナンス、
情報保証とセキュリティ
自身の知識、組織で重要視されている知識をこの視点で見ると
濃淡が出てくるのではないだろうか。
主なキーワード
情報専門学科におけるカリキュラム標準 J07
https://www.ipsj.or.jp/annai/committee/education/j07/curriculum_j07.html
理論とモデリングの側面に重点
ハードウェア、アーキテクチャおよ
び組み込みソフト開発に重点
ビジネス?経営、システム管理およ
びプロジェクト管理に重点
ソフトウェアエンジニアリング領域
に大きな重点
ISに比較的類似、コンピュータ管理
者の育成に重点
掛下, 大月: “カリキュラム標準 J07および情報処理
技術者試験の要求レベル分析と相互比較 ”, IPSJ
SIG Technical Report Vol.2014-CE-123 No.8,
5.J07各領域の分析結果より
各領域は異なるコミュニティによっ
て策定されているため,
これらの間の関係は必ずしも
明確でない.
要はこういうことよ
AtCoder
トラ技
CIO
アジャイル
シス管系女子
半分冗談だが、これくらい雑な方が領域の認識には向いているかもしれない。
本書の初版(1982) にあるまえがきより翻訳
1950-60年代はハードウェアの時代だった。次はソフトウェアを認識する転換期だった。
1970年代において、我々は「ソフトウェア危機(software crisis)」と称される状況を認識するに
至った。ソフトウェアに関するコストは爆発的に増大し、コンピューターを使用したシステムに
おいて最も高価な要素となった。開発計画の通りに進み、完了することはほとんどなかった。
ソフトウェアが大きくなるにつれ、品質が怪しくなってきた。そして、ソフトウェア危機に呼応す
る一連の技術、すなわち「ソフトウェアエンジニアリング」が誕生した。
1982 2019
P. Naur and B. Randell, (Eds.). Software Engineering: Report of
a conference sponsored by the NATO Science Committee,
Garmisch, Germany, 7-11 Oct. 1968, Brussels, Scientific Affairs
Division, NATO (1969)
http://homepages.cs.ncl.ac.uk/brian.randell/NATO/index.html
● ソフトウェアエンジニアリング(SE)の源流とされる
● software crisis も出てくる
● 問題領域をCS教育で扱っていないことが
書かれている(7.2 Education)
● だからSEが必要という結論?(読んでない)
本書 まえがき
経験をもとに失敗の真因に立ち向かうためには、設計や構築における規律(discipline)が必
要である。すなわちエンジニアリングというアプローチの必要性を意味する。
本書 第1章にある ISO/IEC/IEEE 24765:2017 の定義
ソフトウェアの開発、運用、メンテナンスに対するシステマティックで規律(discipline)ある
定量化できるアプローチの適用、すなわちソフトウェアに対するエンジニアリングの適用。
Google のソフトウェアエンジニアリング , 2021 にある定義
我々が提案するのは、「ソフトウェアエンジニアリング」とは単にコードを書く行為のみならず、
組織が時間の経過に応じてコードを構築し保守するために用いるツールとプロセス全てをも
包含するということである。… エンジニアたちはどのようにして、コードベース
(codebase)をさらに持
続可能にしつつ、ソフトウェアエンジニアリングの規律自体を厳格化できるだろうか。
… 本書が共有
する重要な認識に、ソフトウェアエンジニアリングとは
「時間で積分したプログラミング」とみなせる、と
いうものがある。
特定プロダクトのコードを何年も書き続けた人ならしっくりくるのでは?
飛
躍
し
て
私
の
見
解
● ソフトウェアエンジニアが必要とする専門知識は
ソフトウェアエンジニアリング(SE)と呼ばれている領域だけではない
● CS, CE, SE には重なる部分があるが、自分の知識や仕事で求められる
知識の濃淡を考えられる程度には有用な分類である
● 多くの開発者は、所望の機能と構造を実現する知識を求めている
(これだけでも難しい)
○ アルゴリズム、言語仕様、ライブラリ、カーネル、プロトコル、ネットワーク
● それだけでは解決できない問題の多くがSEに任されている
○ プロセスモデル、要求と設計のモデリング、構成マネジメント、テスト、デプロイ、モニタリング
● 問題の中には情報系で扱うものなのか直感的にわからないものもある
○ 組織、文化、心理 (みんなでアジャイル、ユニコーン企業のひみつ、 Joy Inc.)
● それらの知識領域は一朝一夕にマスターできないほど広いため、
自分や組織にとって有用な要素を見出し、適した順番で実践する必要がある
● ただし、その方法は確立されておらず、センスによる差が出ている。
これが確立すれば多くの現場もSEという分野も格段の進歩を遂げる。
第希深
2望入
部なり
でら  

More Related Content

BPStudy172-SEPA