書評『現場で役立つシステム設計の原則』

下記の本のレビュー記事。

 

現場で役立つシステム設計の原則 ~変更を楽で安全にするオブジェクト指向の実践技法

現場で役立つシステム設計の原則 ~変更を楽で安全にするオブジェクト指向の実践技法

 

 

内容

特定の理論や手法を説明したものではなく、それらをどのように組み合わせていけば、変更が楽で品質の高いシステムを開発できるのか、って問いに答えるオブジェクト指向アプリケーション開発の秘伝の書。

基盤となっているのは

あたり

 

感想

最初の雑感

とにかく様々なことを勉強した上で、現場の実践で考え抜かれ、蒸留されたノウハウが詰め込まれている。ありがとうございます、としかいいようがない。本当に使えるノウハウが体系的に整理されている。

教育コンテンツとしても完成度がめちゃめちゃ高い。前提知識をほとんど要求しないので、Javaなどの静的オブジェクト指向言語とデータベースの入門書レベルをしっかり理解している人ならそれなりに理解できるように記述されている。語られている範囲が広いのに、ボリュームも少なく、頭に自然に入ってくる。これは驚異的。相当推敲を繰り返したんではないか。

古い設計理論や開発プロセスも踏まえて語られているので、昔ながらのSIの現場にも伝わる内容になっている。そして、伝統的なやり方がなぜだめなのか、どうすればうまくいくのか、がしっかりと書かれている。あとは現場で考えてね!で逃げないのって本当にすごく難易度が高い。

 

誰向けか

若手~ベテランまで広くお勧め。そして、SIのマネジメント層に読んでほしい。

 

ドメイン駆動設計との関係

エヴァンスドメイン駆動設計にある、Entity(エンティティ)やAggregate(集約)みたいな重要なものが語られていない。これは、実は重要でない、というか、意識して作らなくてもいいんでないか、という主張なのではないか、と自分は思っている。エヴァンズのドメイン駆動設計のアップデート。だから、エヴァドメイン駆動設計を知りたかったら、やっぱり原典に当たったほうが良いかと思う。

エリック・エヴァンスのドメイン駆動設計

エリック・エヴァンスのドメイン駆動設計

 

 

プロセス

アジャイルのような反復開発でどのように開発を進めていくのか、ということも書かれている。重要なところに当たりをつけて部品を作っていって全体をくみ上げるってのがオブジェクト指向開発、とな。。こういうのが明確に語られている本は記憶にないなあ。

そして、これはScrumみたいのを形式的に適用したらオブジェクト指向開発はうまくいかないってことになるんだよね。バックログがPO任せだと、POのやりたいことが順番に降ってくるだけ。ウォーターフォールと大差なくなってしまう。

 

画面とデータベースに真っ向から取り組んでいるのがいい

従来の教科書的なオブジェクト指向設計の話だと画面設計やデータベース設計と絡めて語られることがほとんどなくて、現場で一番苦労するのがそこだったりするので、

オブジェクト指向使えない」

みたいなことになってたような気がする。

この本では、画面とデータベースという、コードを汚くする2大源泉に真っ向から取り組んで、成功しているように思える。そのブレークスルーの源は「ドメインオブジェクトの主役は値オブジェクトのようなスモールオブジェクト」って洞察だと思う。

 

読んでなるほどーと思ったとこ
  • 画面は利用者の関心事(ドメイン)を反映してるって視点。
  • ドメインモデルとデータモデルの本質的なミスマッチ
  • 業務マニュアルを初期から作っていく

なんとなくもやもやしてたけど、明確になった。

 

まだもやもやしているとこ
  • 小さいWebAPI→性能大丈夫か??
  • メッセージ文字列をドメインオブジェクトに直書き→国際化とかは?メッセージ一覧ほしくならないのかな?
書いてないけど、書かなくていいと思っていること
  • フレームワークとか、下回り(Radisとか)の話
  • 非機能面(性能とか)の対処→疎結合、高凝集の構造だと問題起こっても何とかしやすいからね。

 

書いてほしかったこと
  • テスト→多分、ユニットテストの重要性は小さくなっているはず。メンテもつらいし。開発の中でどうテストし、モデルの成長に合わせてメンテしていくのか、って話をちょっとだけでも書いてほしかった。

プログラミング初心者にはGoがいいんではないか、という話

一応、リンク張っとく
 
よいと思う理由
  • 文法が少なく、覚えやすい
  • 実行可能なバイナリをつくるもので、ソフトウェアがどういうものか、って基本が実感できる。
  • 手続き型言語であり、関数、構造体、抽象データ型、ポリモーフィズム(インタフェースによる)という歴史をなぞる形で学んでいくことができる
  • モダンなプログラミングスタイルのいくつかは備えている(クロージャなど)
  • 例外処理が簡潔
  • 標準ライブラリが充実していて、どれも簡潔な記述ですむ素晴らしい設計(Webアプリ、並列処理、DBアクセス)
  • 新しい言語であり、どんな企業いっても知っていて無駄になるってことはない(と思う)
OOPは手続き型の後に出てきたもの。Javaのようにいきなりクラスってのはつらい。Rubyとかもいいと思うけど、コンパイルって概念とか、型の存在とかは最初に知っておいたほうがいいと思う。
 
Javaを教えていて、これ、本質じゃないんだよなあ、って感じるところがさっくり教える必要がなくなっているイメージ。
 
ある程度センスのある人なら、短期間でかなりしっかり身につけられるんじゃないだろうか
プログラミングやアプリケーション開発がどんなものか、って全体像が最短距離で分かると思う。高校や大学で文系がやるんなら絶対にお勧めする
 
初心者向けのいい入門書が待ち望まれる

心理学的ワークショップを組織でやるときに注意すべきこと

コミュニケーショントレーングやリーダーシップ開発、組織開発で、瞑想や深い内省を促すワークを取り入れる場合がある。

 

昔の感受性トレーニングなんかでは、色々事故も起こっているのでそれなりにリスクある。けど、うまく設計すれば、コミュニケーションの取り方や対人関係構築力、指導力なんかが劇的に向上することもあるので、それなりには各企業で取り入れられている。

 

最低限注意すべきこととしてはこんなのがあると思う。

  • ワークへの参加を拒否する権利を認める。
  • グループへシェアするのは自分の判断でシェアすることを強調する。

 

変な自己啓発セミナー紛いのワークショップだと、トラウマみたいのをシェアするのをファシリテータが強制したり、促したりすることがあるけど、そういうのははっきり言ってろくなもんじゃない。ファシリテータは出てきた時は受け止める必要あるけど、そうした上で、そういうセンシティブなコンテンツに過剰な重要性を持たせない方がいいと思う。

 

ビジョンなるもの

経営にも、製品にも、人生にもビジョンは必要。

けど、経営ビジョン作っても、現場ではしらけたり、製品ビジョン作っても、設計段階で意味なくなったり。

 

ビジョンに駆動されていない人や組織がそうなるためにはどうすれば良いのか。例えば、こんなことを考えたらいいと思う。

 

  • とりあえず、作る。部外者が理解できるかよりも、自分たちがテンション上がるかを重視して作る。世の中の良いとされるビジョンは、大抵、その言葉だけでは理解できない。具体的な組織や個人の実践あってはじめて理解される。
  • ビジョンが実現した状態と現在の状態を定義する。現在とどう異なるのかを考える
  • 具体的な行動が、ビジョンに向かっているかをチェックする
  • 必要に応じて修正する。いきなりいいビジョンが描けるって幻想は捨てた方が良い。ただ、テンションは下がる感じに修正してはいけない。
  • 重要でないものを削る。削ってもテンションが下がらないものが結構あるもの。

 

ポエムだが。。。

 

 

 

 

プラユキ・ナラテボーさんの瞑想会行ってきた。

プラユキさんについてはこちら。備忘録として書く

 

blog.goo.ne.jp

 

インド系の勉強や座禅(臨済宗)は、教わったことあったけど、上座部仏教系については独学で、ちゃんとワークショップ行ったことなかった。普通の人たちに実際に役に立つことを教えてくれてる感じでとても良かった。

スケジュール

午前中   仏教の基本的な考えの講義と手動瞑想

午後  歩く瞑想、呼吸の瞑想、手動瞑想、グループで振り返り+質疑応答

 

仏教の基本

 世界は関係性で成り立っている。因(直接条件)と縁(間接条件)でできている。物事の認識の仕方(触⇨受⇨渇愛)で苦しみは起こる。縁は家族や会社、友人関係、読書みたいな環境要因。因はその人のものの見方や心。

 

 苦しみから抜け出すには、受(快・不快・中性)から5力を使って渇愛に至らないようにし、苦しみを滅していく。そして、他の人に楽を与える(抜苦与楽=慈悲)

 

5力

 五力 - Wikipedia

 結構独自の説明があって面白かった。

 基盤となる力

  • 信:信頼力。心にしっかりと向き合うこと。自己信頼、起こってくる感情などへの信頼。オープンハート。
  • 精進:努力。悪を減らし、善を増していく

 3つの中心

  • 念:覚醒力。今ここに生じている心身現象をあるがままに気づく力。自覚する力。マインドフルネス。
  • 定:受容力。大きな心の器、深い懐。
  • 慧:洞察力。心身現象をあるがままに洞察し、理解する力 

 

特に「三昧」とも漢語で言われる「定」について、集中力ってニュアンスで語られることが多いけど、全てを受け入れて動じない心、みたいな説明。

 

瞑想中でも、微細に集中するのではなく、気づくこと、心が乱されてもそれを観察して、OKと受け入れることを強調していた。そうでない瞑想の仕方もあるみたいだけど、自分が最初に習った瞑想もそうやってたからそういうもんだと思ってた。

仏教とは

 ヴェーダ哲学やそれを継承した仏教は、人の世で起こることを全て関係性と認知の問題として見る。これは、システム論的なものの見方。非常に合理的な世界観で何よりも実益がある。自分の中では仏教は宗教というより心身のトレーニング法。武道みたいなものに近い。仏教ではなく、仏道。変に脳科学みたいな怪しい話を持ってくるより、作業仮説として釈迦の理論をちゃんと参照した方が科学的とすら言えるのではないかなあ。

 

だから、適度な瞑想は、本当に人を変容させる。

 

ちなみに、自分の中で、このシステム的な世界観で、非常に効果的なアプローチとしてはクリーンランゲージがある。

 

今現在、

  • 瞑想
  • クリーンアプローチ(クリーンランゲージ/クリーンスペース)
  • エニアグラムのタイプ論

が、自分の中での自己変容のための3種の神器かなあ。その全ての根底にシステム思考がある。もちろん、どれも単なるツールに過ぎないし、イケテナイ瞑想、イケテナイエニアグラムは腐る程あるので、あれなんだけど。。。

 

自由に生きる

自由に生きる

 

 

苦しまなくて、いいんだよ。

苦しまなくて、いいんだよ。

 

 

 

「気づきの瞑想」を生きる―タイで出家した日本人僧の物語

「気づきの瞑想」を生きる―タイで出家した日本人僧の物語

 

 

 

 

 

 

  

 

 

 

「この世界の片隅に」で受けた何かを供養するための感想

先週末に見に行った「この世界の片隅に

 

 

自分は大して映画は見ないが、自分内ベスト3に入る傑作と思った。少し時間が取れたこともあるが、今日入れて3回見に行ってしまった。。。

 

何が、そんなに自分にアピールしたのか、ちょっと考えて見た。

悲劇の中で生きる「人間」を描いている

 特に、あの戦争という、左右のイデオロギーによって、個人の生活や心情がともすれば無視されてしまいがちな題材にあって、徹底的に人間を描ききっている。これが刺さる。戦争や社会について、いろいろ思い巡らす人もいるし、そういうの無視して、登場人物に感情移入することもできる。この作品は見る人に答えではなく、「問い」を突きつけている。

登場人物は善人ばかり

 この物語は人の良い面に光を一貫して当て続けている。これは一種のファンタジーでもあり、でも現実の1側面でもある。主人公をはじめとする登場人物の、その「いい人」ぶりが心に刺さってくる。

一人の女性の成長物語でもある。

監督が下記のインタビューでも触れているように、この物語は一人の女性の成長の物語でもある。

 

上記のインタビューを通じて、3回目を見て気づいたのは、主人公のすずさんは、物語を通じて、神話の普遍的なアーキタイプ(原型)としての「英雄の旅」のプロセスをしっかり辿っていた、ということ。

英雄の旅では、大雑把にいって下記のようなプロセスを踏む。

 異界への旅立ち → 試練と変容 → 帰還と恩恵をもたらす

これをものすごく、平凡な日常の物語の中でしっかりと描ききっている。

 

神話の法則―ライターズ・ジャーニー (夢を語る技術シリーズ 5)

神話の法則―ライターズ・ジャーニー (夢を語る技術シリーズ 5)

  • 作者: Christopher Voglar,クリストファーボグラー,岡田勲,講元美香
  • 出版社/メーカー: ストーリーアーツ&サイエンス研究所
  • 発売日: 2002/11
  • メディア: 単行本
  • 購入: 5人 クリック: 34回
  • この商品を含むブログ (13件) を見る
 

 

 

 

結論として、これは戦争を背景にした人間賛歌の物語だったってこと

つまり、

 「この世界の片隅に」 =「JoJoの奇妙な冒険」

ってことだ。

 

f:id:masatsugumatsus:20161126235952p:plain

 

 

f:id:masatsugumatsus:20161127000053p:plain

 

 

素晴らしい作品をありがとうございました。

konosekai.jp

人の変化を支援するコミュニケーションとしてのクリーンランゲージ

最近ハマっているクリーンランゲージについて、現時点での考察をメモっとく。検証は不十分なので、間違っていることもあるかも。

 

クリーンランゲージ(Clean Language)とは

セラピストであるDavid Groveが使っていたコミュニケーション技法。

  • セラピストの思い込みや期待などが極力排除された「クリーンな(clean)」質問のみを使う
  • セラピーやコーチングのセッションでは、クライアントが実際に話した言葉、行ったジェスチャーをそのまま尊重し、活用する
  • 事実やクライアント本人ではなく、メタファーに着目して、コミュニケーションを続けていく。

クリーンランゲージの基本的な前提は、人はメタファーで世界を捉える、ということ。クライアントが持つメタファーの全体像を明らかにしていくことは、クライアントのものの見方を明らかにしていく、ということ。

 

参考

Less Is More: The Art of Clean Language

クリーン・ランゲージ

 

Clean Language: Revealing metaphors and opening minds

Clean Language: Revealing metaphors and opening minds

 

 

Metaphors in Mind: Transformation through Symbolic Modelling (English Edition)

Metaphors in Mind: Transformation through Symbolic Modelling (English Edition)

 

 クリーンな質問

クリーンな質問どんなものか、ということについて、創始者のDavid Grove自体は定式化できない、と述べていたそうだけど、David Groveの手法をモデリングし、体系化したペニー・トンプキンスとジェイムス・ローリィや彼らに学んだ人たちはクリーンな質問を色々と整理している。

上に紹介しているWendy Sullivan,Judy Reesの『Clean Language』では下記の12の質問がクリーンな質問としている。日本語訳はちゃんと考えたほうがいいので、参考程度に。

1.What kind of X(is that X)                Attribute   

   Xはどんな(種類の)Xですか?   属性/性質

2.is there anything else about X?       Attribute

   Xについて他に何かありますか?  属性/性質

3.Where is X? or whereabouts is X?   Location 

   Xはどこにありますか?          位置/場所

 Xはどのあたりにありますか ?

4.that’s X like What?                             Metaphor

 Xは何のようですか?         隠喩/比喩

5.is there a relationship between X and Y?  Relationship

 XとYの間に関係はありますか?       関係

6.when X, what happens to Y?                    Relationship

 Xの時、Yに何が起きますか?       関係

7.then what happens? or(and) what happens next?          Sequence

   それで、何が起きますか?              順序

 次に何が起きますか?

8.what happens just before X?                   Sequence

 Xの直前/すぐ前には何が起きますか?    順序

9.where could X come from?          Source

   Xはどこから来るのですか?         根源(Locationと言っている人もいる)

10.what would X like to have happen?   Intention

   Xは何が起きると良いですか?             意図 

11.what needs  to happen for X?        Necessary Conditions

 Xには何が起きる必要がありますか? 必要条件

12.can X happen?                              Necessary Conditions

 Xは起こりえますか?       必要条件

 クリーンランゲージを使ったセッション

クリーンランゲージを使った個人セッッションは「シンボリックモデリング」と呼ばれる。質問する方はファシリテータと呼ばれる。例えばこんな感じ。

C:最近、仕事のモチベーションが上がらなくて...

F:「仕事のモチベーションが上がらない」で、何が起これば良いですか?

C:仕事のモチベーションが上がればいい。

F:「仕事のモチベーションが上がればいい」で、その「モチベーション」はどんな種類の「モチベーション」ですか。

C:うーん。なんか、毎日朝起きて、やるぞーって思える感じ

F:「仕事のモチベーションが上がればよい」、で、その「モチベーション」は「毎日朝起きて、やるぞーって思える感じ」、で「やるぞーって思える感じ」のとき、「やるぞーって思える感じ」は何のようですか?

C:うーん。登山して、山の頂上で叫んでいる感じ。

F:その「山の頂上」はどんな種類の「山の頂上」ですか?

 こうして出てきた「山の頂上で叫んでいる」みたいなメタファーを掘り下げていくと、クライアントはかなり色々な気づきが得られる。(ここら辺は体験しないとわからないと思うが。)

 

これがクライアント中心のコーチング手法だと、例えばこんな感じになると思う。

C:最近、仕事のモチベーションが上がらなくて...

F:仕事に対して、真摯に取り組もうとする姿勢が素晴らしいですね。どんな仕事がしたいのですか?

C:もっと、世の中の為になっているって実感が得られるような仕事がしたいんです。

F:世の中の為になるなることがモチベーションになるなんて、Cさんらしいですね。もし、奇跡が起こって、世の中の為になっているって実感が得られるような仕事ができたら、Cさんには何が起きますか?

 まあ、コーチング手法には色々あるので、一概には言えないけど、クライアントを「認知」したり、クライアントが持っているリソースやゴールを探っていくってのは結構共通していると思う。コーチは人に興味を持つ。クリーンなファシリテータは、少なくとも質問はクライアント本人というよりもメタファー中心になる。

 

何で、クリーンランゲージが自分にとってこんなに衝撃的なのか、は記事を分けて書く。