変わるもの・変わらないもの

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

今日は創立記念日、みんなでブログを書く日です。 特に技術的なネタを用意していないので、「変わるもの・変わらないもの」という観点から思うことについて書こうと思います。

この記事は、最近(ここ半年くらい)で私が見聞きしたり経験した中で蓄積された考えを出力したものです。 あくまで ポエム特集 ですので、出典などは示さずゆるくいきたいと思います。

ソフトウェア工学は変わるものとの戦い

ソフトウェア工学の始まりは、おそらく工業(ハードウェア)的なプロセスモデルをベースに誕生したのではないかと思います。工業的なので基本的には計画して設計して開発して完成です。あとは細々と保守を続けたりしますが、基本的には完成したものに変更を加えることは想定していません。しかしソフトウェアというものは、ソフト(やわらかい)ゆえに変えようと思えばいくらでも変えられるものですから、市場のニーズの変化から鶴の一声まで、変わる理由はたくさんあります。また昨今ではトレンドの変化が早く、顧客自身でさえ自身の要求を把握し損ねる中で仮説・検証を繰り返し開発するというのもよくあることです。そんな中で、変化に対応するべく、ソフトウェア工学もまた変化(進化)を続けてきたのだと思います。

ソフトウェア開発プロセス

私が知っている最も古い開発プロセスは「ウォーターフォールモデル」です。これは上流工程から下流工程までをひとつづつ順番に行っていくモデルです。下流工程まで来たところで変更があると影響(後戻り)が大きいため、基本的には変更を受け入れないモデルだと思っています。しかし前述の通り、ソフトウェア開発に変更は付き物ですから、変更の影響をなるべく小さくするために「プロトタイプモデル」「スパイラルモデル」などが登場した後、ついに人類は「アジャイルソフトウェア開発宣言」を発表します。

アジャイルソフトウェア開発宣言

これは「変化への対応」を謳っているのはもちろんのことなんですが、もうひとつこれまでと異なる点として「人」や「顧客」との協調に注目した点も大きな変化だと思います。そしてこの宣言以降、XPやScrumなどのプラクティスが考案され広まることになります。もちろんこれらのプラクティスは銀の弾丸ではないのですが、あまりにも日本社会は習慣的にウォーターフォールモデルが強く根付いていることが歯がゆいです。こういった考え方はエンジニア側にとってはよく知られたことですが、顧客側からするとそんな知識もないし会社のしがらみがあるのもよく分かりますが、やはり、いちエンジニアとしては、お客さんともっと協調して良いモノづくりがしたいなあと強く思います。

ソフトウェア設計

ソフトウェア設計のパラダイムもまた変更に対応するために進化してきたという側面がある(他にもいろいろあるので一概には言えないですが)と思います。「構造化プログラミング」に始まり(?)、いろいろなパラダイムを経て、また、それらの理論を組み合わせて「オブジェクト指向設計」という歴史的なパラダイムが登場しました。私は最近これを学び直しているのですが、これを端的にいうなら「変更に対応するための設計」だと言えるのではないかと思っています。これらの歴史から感じ取れる教訓としては、「変化するものを見極めることで、良い設計が可能になる」のだと思います。また最近では「リアクティブプログラミング」や「関数型プログラミング」など新しいパラダイムも主流になってきていて、私はまだこれらの本質的なお考えを理解できていないので、次はこれらを学びたいと思っています。

学び方

何かを学ぶときの姿勢もまた、変わるもの・変わらないもの(変わりにくいもの)を意識すると良いかと思います。

変わるものを学ぶ

技術の進化は早く、例えばフロントエンドの技術に対して「ライブラリの移り流行りが速すぎて足踏みしてしまう」という話はよく聞きます。ここで一つの考え方としては、技術の表面的なことだけを知ろうとするのではなく、本質的な考え方の部分を知ろうとするのが大事かなと思います。そのためには、その分野で脈々と続いてきた進化の歴史を見ることで、前に流行っていた技術はなぜ廃れてしまい、いま流行っている技術が何を目的としているのかが見えてくるのではないかと思います。これを行う簡単な方法として、「XXX is dead」でググると(だいたい流行りの技術は何度も死んだことにされたりしている)、そのへんのことが書かれていることが多いです。

変わらないものを学ぶ

変わらないものというものはそうそうないと思いますが、例えばLinuxやシェルなどは何十年と存在し続けています。こういったものは、(いまとなっては)地味で、表面的なものに比べて学習コストが高い傾向にありますが、一度学べばずっと長く使えるという面ではリターンも大きいし、地力となるものです。表面的な技術だけを追うのではなく、変わらないものにも目を向けて意識的に学ぶのも大事だと思います。

おわりに

思うことをつらつらと書いてきました。誰かの参考になれば幸いです。さいごに、クラスメソッドが15周年を迎えられたのも、社長 横田が時代の変化に気づき市場のニーズを先取りしてきたからだと思います。これからのクラスメソッドの進化にご期待下さい!