とあるSEの適当日記(仮)

その時のプロジェクトで必要になって調べた技術や読んだ書籍についてメモしていく場です。誰かの役にたったらいいなくらいのものです。最近の関心事は、「スクラム」「アジャイル」です。

「ふくおかスクラム vol.4」に参加してきました。

昨日は、「ふくおかスクラム vol.4」に参加してきましたー。

fukuoka-scrum.connpass.com

場所はYahooさんの会議室。初めて行ったー


今回は、開発面におけることを学んだ気がします。

はじめから重厚な設計(デザインパターンなど)することは後々の負債となる

具体的に、ブラジルの首都ブラジリアを例としてあげてました。

Google Mapのキャプチャですが、ナスカの地上絵の如く美しい区画整備がなされています。

f:id:jun_higuchi:20191109044026p:plain
ブラジリア[全体]

ブラジリアの都市計画では、区画をきっちり分けて、その区画単位で生活のために必要となる建物を全て準備し、区画間で行き来の必要が無く、生活できるという空間を作ったそうです。

f:id:jun_higuchi:20191109044147p:plain
ブラジリア[詳細]

ところが、実際、人が住んでみてしばらく経つと、そう思い通りの状況とならなかったようで、↑の地図の大きな信号もないハイウェイと芝生を挟んでるとこを人が行き来するもんだから、芝生にはその移動軌跡がついてしまってるそうです。

そして、そのせいで、後からあったら便利だとわかった区画間の移動手段を作ろうとしても、作り難いという状況になってしまっている。ということをお話されてました。

はじめから重厚な設計(デザインパターンなど)することは後々の負債となってしまう事も多々あるという事でした。

設計は後から考える。創発的であるべきだ

創発」という言葉は、

創発(そうはつ、英語:emergence)とは、部分の性質の単純な総和にとどまらない性質が、全体として現れることである。局所的な複数の相互作用が複雑に組織化することで、個別の要素の振る舞いからは予測できないようなシステムが構成される。
・・・

参考:創発 - Wikipedia

なんか改めて読んでみると、マイクロサービスみたいな事言ってますねぇ。。
つまりは、1つのフレームワークに載せて拡張していくのでは無く、1つ1つが単純な追加により、それが群となり、1つのものに進化していくなる。みたいな感じだと思います。

TDDの考え方と合わせると。

・まずは、テストを作成
・単純でよいのでそれを満たすコードを作成し、テストが通る状態にする
リファクタリング(※ここで設計する)

創発的設計」とは、「初めの設計よりもリファクタによる再設計を重視する」という考え方のようです。

リファクタリングは「Code smell」に対する対応のみでよい

だからといって、リファクタリングで気合い入れて再設計で重厚な枠組みを作ってしまったら、それはそれで拡張できなくなってしまいます。
リファクタリングは、「Code smell(臭うコード)」のみを対象に直すのが良いみたいです。
「Code smell(臭うコード)」というのは、例えば「長過ぎるクラス名やメソッド名」とか、「可読性の悪いコード」とか、、ですが、開発メンバー全員でその基準を決めるのがいいとのことでした。

まとめ

創発的設計」というのは初めて聞くキーワードでした。
もう少し調べてその言葉を使いこなせるようになりたいと思います。

今回も勉強になりましたー。

プライバシーポリシー お問い合わせ