情報処理学会ソフトウェア工学研究会ウィンターワークショップ 2010・イン・倉敷参加報告(その1)

情報処理学会ソフトウェア工学研究会ウィンターワークショップ 2010・イン・倉敷「アーキテクチャとパターン」セッションに参加しました。
今まであまり縁がなくて学会のイベントに参加するのは今回が初めてでしたが大いに得るものがあって非常に良い経験になりました。
昼間のワークショップももちろんですが夜の食事会そして交流会(宴会)で大学の研究者の方々の話が聞けたことが非常に良かったです。
私が印象に残っていることについて報告したいと思います。

□ワークショップ「アーキテクチャとパターン」セッション参加

サブタイトルは「ソフトウェアの設計とパターン・アジャイル開発」でした。
このワークショップへ参加するにあたってのポジションペーパージャムズホームページに置いておきました。
このワークショップに参加することで以下の様な気付きを得ることができました。

◇混沌とした「問題」を「フォース」の葛藤としてとらえることの可能性

従来よりパターン技術に対する興味は大きかったのですが実際にはGoFのパターンなどの有名なパターンを設計に利用するぐらいでそれ以上には理解や探究は深くありませんでした。
今回ワークショップに参加するということで積読になっていた「ソフトウェアアーキテクチャ―ソフトウェア開発のためのパターン体系」を読んだりして一夜漬け勉強をしました。
この調査を通じてパターンの体系化に関してなるほどと思う気づきの点が多くあったのですが、その中でも特に印象に残ったことは「問題」を「フォース」の葛藤としてとらえるというアイデアでした。
それからワークショップ参加して議論を重ねるうちにこの「問題」を「フォース」の葛藤としてとらえることの可能性について、自分の中でますます期待が膨らんで行くことを感じました。
「フォース」というアイデアを知らなかったのは単に私の不勉強であってパターンについて深く理解する人たちにとっては当たり前のことで今更と思われるかもしれません。
私にとって大きい発見であったことはこのアイデアをパターンのコンテキストだけではなくもっと一般にまで広げた場合にも非常に有効であるということでした。
一般的に「問題」というものは現状とあるべき姿とのギャップと言われていて正にその通だと思うのですが、その様な表現では単に「問題」を外から観察した現象として表現するに留まっています。
「問題」が学校のテスト問題の様に解くべき課題が定義されていて短期的に論理的で完全な解を求めることができるものであればそれでも十分かもしれません。
しかしソフトウェア設計上の「問題」やその他社会的な「問題」はそもそも解くべき課題が定義されていなくて混沌としており、かつ、長い時間をかけて完全な解を求めるよりも状況に応じて短期的に妥当な解を見つけて適当なアクションをとることが必要となることが多いのではないかと思っています。(むしろそのようなことばかり)
そのような状況で混沌とした「問題」に対してその要因として「フォース」を抽出してそれぞれの「フォース」の関係を整理することにより、適用できるパターンを見出したり、トレードオフの条件を見出して妥当な対応を行うなどのことができる様になるのではないかと思いました。
今後は業務の中でも「問題」とそれを取り巻く「フォース」について考えてみたいと思います。

◇ソフトウェアアーキテクチャの身体表現

豆蔵の羽生田さんが発表されたパターンダンスを踊ってみて動くモデルを臨場感をもって感じることの意味について考える機会を得ることができました。
私個人的には動くモデルということで言えばMDAよりパターンダンスの方が興味深く思います。
私は以前からオブジェクトを擬人化してオブジェクトの気持になってみるというアプローチは面白そう(関西人はオブジェクト指向分析・設計が得意? - Jamzzの日々)と思っていましたが実際に設計レビューとしてウォークスルー等の場面でオブジェクト、あるいはスレッドに人を割り当ててシーケンス図の振る舞いを演じてみるのは効果的かもしれないと思いました。

◇パターン適用結果の客観的(自動的)評価とパターン適用リコメンデーションのニーズ

夜の交流会(宴会)の際に他のセッション参加者の方がパターンについての話をされるときに皆さん口をそろえたように「パターンをうまく使えていることを評価してくれたらうれしい」そして「パターンが使えるところを教えてくれたらうれしい」とおっしゃいました。
それまではあまり深く考えていなかったのですが私が思っている以上にパターン適用の評価とリコメンデーションのニーズは大きいことに率直に驚きました。
ここでやはり課題となることがパターン適用の評価を行うためのメトリクスと方法だと思います。
ソースコードの解析により得られる従来のメトリクスのほとんどはソフトウェアの外側から客観的な設計の善し悪しを評価するものがほとんどだと理解しているのですが、それではパターン適用の評価は難しいように思います。
ここでソフトウェアの内側に存在する「フォース」を観測することができればこのメトリクスによりパターン適用の評価とリコメンデーションの可能性が高まる様に思います。
ここでいう「フォース」はリファクタリングでいうコードの「不吉な匂い」と似ているかもしれません。

◇文化としてのパターン

ソフトウェアのパターンといえば文明であり一つの技術ですが一方でパターンというものは文化の一部あるいはそのものであると言えると思います。
つまりパターンが技術的に利用できるということと無関係にパターンの形成と発展は文化的に行われるものだと思っています。
よってパターンを考えるときに、例えば武道における「型」など、さまざまな文化に対するアナロジーというものが考えられると思います。
私の「アジャイルとパターンと音楽理論のアナロジー」という発表もそういうアプローチの一つでしたが、本橋さんの発表を聞かせていただいて確信を深めることができました。
他にも羽生田さんの道元やタオイズム(Taoism)との関連などの発言があって、私にとっては新たな探求の方向性を得ることができました。

◇パターン・マニフェスト2010倉敷

ワークショップ「アーキテクチャとパターン」セッションのまとめとしてセッション参加者全員で「パターン・マニフェスト2010倉敷」を宣言しました。
その内容を以下に引用しておきます。

「パターン・マニフェスト2010倉敷」
私たちは

  • お仕着せの用語よりも、私たちの現場に根差した納得できる言葉を大切にする。
  • やみくもに従うのではなく、個人とチームが自律的に型を育てていく場を大切にする。
  • 机上での予見よりも、現場での適応を重視する。
  • シンタックスよりも、セマンティクスを重視する。
  • 表層的な解決策よりも、普遍的なフォースを大切にする。

私たちは左側よりも右側に重きを置く。
 - 玉牧、羽生田、本橋、ジョナタン、久保、鷲崎


私が参加したワークショップ「アーキテクチャとパターン」セッションに関連する報告は以上です。
ウィンターワークショップ 2010・イン・倉敷ではこのセッションに関すること以外にも色々と気付きがありました。
その内容は改めて別の投稿にしようと思います。