かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

ソフトウェア工学とは何か を読んだよ

1992年に書かれた論文らしいですが、ほとんど古臭さを感じさせない文章です。古臭さを感じるとすれば、それはC++が素晴らしい!!C++が最先端だぜみたいな空気を感じる所でしょうか。C++は素晴らしい言語だと思いますが、全盛期と比べると、C#Javaなどの後発の言語がカバーする範囲がひろがってきてるのもあって、前ほど万能に使われてる感は無いような気がします。(あくまで個人的な感覚)


さて、記事の内容ですが、誤解を恐れずにざっくりと印象に残ったところだけ抜き出すと以下のようなところです。

  • コーディング≠製造 コーディング=設計
  • ドキュメントはコーディング前に書くよりコーディング後に書いた方が正確になるw
  • C++は正しい方向に向けての一歩であるものの,さらなる進歩が必要とされている

ソフトウェアの作成においてコーディングはよく製造工程だと思われがちですが、実は設計工程なんだぜ?という過程を立てて、どんどん話を進めていってます。これは、個人的には正しいと思います。これが正しくないとすると、Excelにプログラムと1対1に対応するくらいまで細かいドキュメントを書くようなことをしてるようなものだと思います。
これは、普通に考えるとデバッグもテストも出来ない状況に自らを追い込んでプログラミングしてるという楽しくもなんともない苦行でしかないと思います。

あと、ドキュメントはコード書いたあとに書くほうが正確だよみたいなことが途中書かれてますが、これも正しいと思います。ただ、全部のドキュメントを後に書くのかと言われれば違うと思います。作るものの全体像の把握やなんかは絶対先にやっといたほうがいいと思うし、そういうのはプログラムで書けないから、ドキュメントとしてきちんと他人に伝えれる形で残しておくべきだと思います。

そして、最後にC++の進んでる方向は正しいけど、もっと進化しないとね!って書かれてますが、ここで言われてる進化というのは、おそらくこの論文が書かれてから今までの10年間で歩んできた歴史が進化の歴史そのものだと思います。JavaC#みたいなオブジェクト指向言語なんかの進化の歴史ですね。OOP最高!部品化最高!という風潮から重量級な開発フレームワークが流行って、段々と、ライトウェイトな感じになっていって、最終的に「設定よりも規約」といったようなRoRで大きなイノベーションが起きたと思います。最近は、その流れを洗練していくといったフェーズなのかな?それとも、もっと素敵なものが出てきてるのでしょうか?最近、しっかり追いかけれてないのが、ちょっと残念です。


今後は、どのように進化していくのか。プログラミングはいらなくなるのか?とか将来のことはわかりませんが、今後もソフトウェア開発関連のテクノロジの進化は止まらないと思います。そんな進化の歴史を追いかける(あるいは道を切り開く??)ことが出来るのは、幸せなことなんだなと思います。


とりとめのない文章になってしまいましたが、最後に、この論文はブラウザで見ると異常に見づらいのでワードかなんかにコピペして、もっと見やすいフォントで見た方が精神衛生上いいと思います。