3707187124_546942ec87_z

エンティティの識別子をラップしたクラスを用意するとよい理由

ギルドワークスさんとパートナーとして一緒にお仕事させていただいています、木目沢(@pilgrim_reds)と申します。

今回は、ドメイン駆動設計における、エンティティの識別子の実装面について考えてみたいと思います。(あまり本質的な話題でなくてすみません。。。)

エンティティの識別子、どう実装していますか?

私の場合、以下の図のようにエンティティが直接LongやStringなどプリミティブの型で持ってもよいと思っていました。エンティティの識別にしか使われないのでエンティティが直接持っていた方が使いやすいと思っていたのです。

VoyageClass

ドメイン駆動設計本の例はどうでしょう・・・。

ドメイン駆動設計ではプリミティブの型を使用している例も載っていますが、書籍内のサンプルを実装したDDDSampleではVoyageNumberやTrackingIdなど識別子をラップしたクラスを使ってます。

VoyageAndVoyageNumberClass

実践ドメイン駆動設計本では日付時刻を含んでいるような識別子を例にあげてこのような複雑な識別子はラップしたクラスを使うべきとあります。

要は識別子の複雑さや使われ方によるのかなと思います。

という曖昧な結論では記事になりませんので、識別子用のクラスを持つことで効果がでるケースを紹介したいと思います。

例は、よくある求人サイトの想定で、求職者が求人に応募するようなモデルです。

まずは、求人パッケージ(モジュール)。
求人

そして、求職者パッケージ(モジュール)。
求職者は求人に応募しますので、応募クラスは求人IDクラスを持っています。
求職者

・・・と、クラス図だけではなんてことないのですが、パッケージ図を見るとこうなります。
求人サイト

これが求人や求職者の識別子がプリミティブな型の場合は以下の通り依存関係を持つことはありません。

求職者2

求人サイト2

実装上はこれでも問題ないのですが、ドメインの知識をソースコードに反映するということを考えると、パッケージ間の依存関係がきちんと表現できるとよりわかりやすい設計になると思います。

エンティティの識別子はそのエンティティの同一性を保証してあげるだけの役割ですので、わざわざラップして使う必要がないと思いがちです。
しかし、ラップして使うことで、プリミティブな型をそのまま使うことに比べてモデルをより豊かに表現することができ、ドメインの知識をより深く理解する手掛かりとすることができます。

ぜひ試してみてください。

この記事を読んでギルドワークスに興味を持たれた方はお気軽に【ギルドワークスに依頼する】をご覧の上、お問合せください

※ アイキャッチ画像(Original Update by paurian https://www.flickr.com/photos/paurian/3707187124)

新規事業立ち上げの3つの柱

「デザインスクラム」で新規事業の企画を小さく始めよう

ギルドワークスの佐々木です。

みなさん、新規事業企画が何かうまくいかないなぁ、もっとうまいやり方があるんじゃないかなぁ、と思ったことはありませんか?…私も過去にたくさんありました!
自社サービスを考えているのだけど、なかなか先に進まなかったり…費用をどれだけかけたらいいか分からなかったり…そもそもやり方が分からなかったり…

そんなお悩みを持っている皆様向けに、これまでもこれからも、ギルドワークスでは「価値探索」というサービスを提供しています。
http://guildworks.jp/service/#servicedesign
※なお、今月8月末までの期間限定で、メソッド集をダウンロードできます!
http://guildworks.jp/download_201506/

先日、ギルドワークスではこの「価値探索」をもっとお試しいただけるように、新たなサービス「デザインスクラム」の提供を始めました!
http://design-scrum.guildworks.jp/
この記事では、「デザインスクラム」のご紹介をしたいと思います。

続きを読む

スクリーンショット 2015-08-25 0.20.05

定期的に自分戦略を見なおしてみよう!

ギルドーワークスの上野です。

ギルドーワークスでは「自分戦略発見ラボ」というサービスを行っていますが、その中に「自分戦略ステートメント」というものがあります。

※ 自分戦略とは、自分のやりたいことを明確にし、それを実現ための手段を練ることです。
自分の仕事の道筋(キャリア)を発見するために、改めて自分の仕事や自分のいる会社のミッションなどを見つめ、自分のやりたいことを明確にし、それをどう実現できるかを考えます。

今回はこの「自分戦略」について書いてみます。

自分戦略ステートメント

「自分戦略」には2つの戦略と4つのエリアがあります。

戦略〜方針〜

  • やりたいこと(What)
  • なぜやりたいか(Why)

戦略〜行動〜

  • 今の強み・弱み(Now)
  • これからどう行動するか(How)

この内容を自分なりに書いてみることをオススメします。

初めて書く人はやりたいことは何か、そしてなぜやりたいのか。
1度書いた人は定期的にやりたいことは変わっていないか。

自分にとって今の強み・弱みは何かを知る。
強み・弱みを知ることで見えなかった方向性や強化したいことが見つかったりすることもあります。
それらを踏まえてどう行動していくかを伴うことで、自分の今後の歩み方も見えてくるのではないでしょうか。

1度書いて終わりではなく、定期的にアップデートしてみることで自分の変化を感じることもできるはずです。

仮説キャンバス

自分戦略ステートメント以外にも自分戦略を書き出すこともできます。

自分ができることをベースに仮説キャンバスを書いてみましょう。
(顧客に)どんな課題があるか。
どんな相手(顧客)なのか。
どんな課題に対する解決策があるか。
※ 自分のできることの整理にもなります。

自分戦略と同じく、自分の強みからどんな相手にどんな解決策を提供できるかということを考えると見えてなかった自分のできることが見えてきたりもします。

みなさんもぜひお試しください。

また「自分戦略発見ラボ」では以下のような方はお気軽にご相談いただけるサービスです。

  • 現在の会社・職場にこのまま居てもいいのかわからない
  • 自分のスキルをどう伸ばしていいかわからない
  • 現在の自分の仕事の状況に漠然とした不安がある

自分戦略を考えてみたいという方、自分戦略をどう考えていいかわからないという方もお気軽にご相談ください。

arrogance_by_italianmare-d4gqh5o

現場改善でハマる罠

ギルドワークス 前川です。

ギルドワークスでは、様々な現場に入り込んで現場改善を行っています。もちろん皆さんの現場でも、様々な改善が試行されているのではないかと思います。そんななかでハマりやすい罠について、今日はお話します。

改善をリードする立場とされる立場の間の意識ズレ

あなたが現場改善をリードする立場だった時、あなたの頭のなかには、それが最高にうまく行った場合のバラ色の未来が思い浮かんでいることでしょう。

しかし、改善というのは大抵、即効性のある効果があるものではありません。これまで慣れたプロセスを変えてしまったら、どこかで不慣れによる作業効率の低下や、手順が変わったことによるミスなどがでてくるでしょう。

あなたにとっては、それは改善の効果が出るまでの一過性の痛みに過ぎません。しかし、他のメンバーにとってはどうでしょう?

「いらんことをされて、面倒くさくなった」と思われていませんか?

それを、「分かっていない。利点が見えていない。ずっと使っていたら分かってくれるはず。」と無視するのは簡単です。しかし、そんなふうに強引に進めた改善がたどるのは、早晩打ち捨てられてしまう衰退の道です。

改善をスムーズに進めるために

では、どうすればいいか?

そこに大切なのは、「誠意」です。

丁寧な説明でその「誠意」が事足りる場合もあるでしょうが、もう少し踏み込んだ対策として、即効性のある短期的な改善を組み合わせる、ということがあげられます。

たとえば、バージョン管理システムを新たに取り入れることを考えてみましょう。さきのことを考えると、自分の更新を追うことができ、またいつでも戻ることができる、というのは大きなメリットです。

しかし、最初の導入では、多くの人は「”コミット”とかいうわけのわからない手順が増えてしまった」「新しいツールを導入して怖い」「勝手にマージされて壊れたりしないのか?」などの不安や手間を考えてしまいます。

そこで、バージョン管理の利点を語って皆が納得すればよいのですが、それで納得できない人もいます。

そういう人には、先述した短期的な改善を組み合わせて提示するといいでしょう。例えば、コミットフックの機能をうまく使って、エラーを自動検知したり、同時にJenkinsも導入してテストを回してみたり、など、多少導入の手間が増えてしまっても、メリットがすぐ受けられる、即効性のある改善とセットにするのです。

このように、改善を進めていく側だけの目線や都合だけでなく、改善の結果を受け取る人達の気持ちにも寄り添っていく姿勢が、現場改善では重要となる場合が多いです。

自信と傲慢は違います。皆さん、その点気をつけて、現場を良くしていきましょう!

ギルドワークスが、そのお手伝いをできるのならば、お気軽にお問い合わせください。

アイキャッチ: http://fav.me/d4gqh5o

Green5_bite20141123160246

「塩分15%カットチーズ」に学ぶ、「それ、本当に伝わってますか?」

こんにちは、ギルドワークスの藤田です。

先日、塩分15%カットのチーズを酒のつまみに食べたところ、なんだかもちゃっとしていて、チーズっちゃチーズなんだけど、うーん、人の味覚にとって塩分というのがどれほど重要なのかを思い知りました。
見た目は本当に普通のチーズと変わりがないのですが、やはり味は違いますね。

ということで、本エントリでお伝えしたいのはチーズの話ではなく、「塩分15%カットって書いてあっても、味がどうかなんてこちらには食べるまでわからないよなあ」という話です。(チーズの話でした)

こうした、ユーザーにとっては「実はそんなに伝わってない」というのは、私が携わっている、サイト制作でも多々起きています。「自分たちはこう伝えたい」が、ユーザーにとっては「いやそれはそんなに知りたくないです」だったり。「塩分15%カットです!」と言われても、「いやそれより味の差を教えてください、大事な酒のつまみなんで」だったり。(やっぱりチーズの話でした)

ユーザーにとって知りたいことを伝え、私たちが伝えたいことを伝えることは非常に困難ですが、人間中心設計(HCD)のプロセスや、情報設計の手法に、多くのヒントがあるように思います。
ユーザーがどういう状況にあって、どういう期待をもっているのかを汲み取りながら、最適な情報をどのようなタッチポイントで伝えていくことができるのか、重い課題ですが、今一度、考えてみるのも面白いのではないかと思います。

そこで、ギルドワークスのコーポレートサイト http://guildworks.jp/ を対象に、サイトの設計についてのミートアップを行うことにしました。
1時間ほどですが、再設計のためにはどのような取り組みや、考え方が必要なのか、簡易ワークショップの体裁をとりながら、参加者の皆様と一緒に考えていけたらと思います。

ギルドミートアップ!〜サイト設計ミートアップ〜
2015年8月26日(水)19:00〜
https://guildworks.doorkeeper.jp/events/29914
ぜひ、ご参加ください。

29913_normal_1439796740___________________________________________

現場・組織を改善する現場コーチのやり方をより深くお伝えします

ギルドミートアップ!〜現場コーチミートアップ〜という少人数によるミートアップを8月25日(火) 19:00から開催します。
あまり日がない中ですが、興味がある方はお越しください!

なにそれ?

10名程度の少人数でギルドワークスの現場コーチの事例をお話し、また皆さんの現場の課題の解決のヒントやアクションするきっかけをつかむため、ギルドワークスの現場コーチを始め皆様で話し合うカジュアルな場です。

以下、募集サイトより

どんな組織、現場にも必ず課題は存在します。
その課題は現場自身で対処し解決できることもありますが、現場の力だけでは難しい、解決できるとしても時間がかかりすぎる課題もあります。

また別の組織では「目標に向かって突き進みたいが、何かの重力が足を引っ張っている」と感じているかもしれません。

そのような時にギルドワークスの「現場コーチ」は価値をもたらすことができます。
「現場コーチ」は現場の方々と一緒になってチーム、組織の改善に取り組みます。
また現場の制約(=重力)に縛られず、独自の視点より改善案を提示し、実施していきます。

この中で現場は自律的に考え、動くようになってきます。

ギルドワークスでは、「現場コーチ」としてこのような現場、組織の改善に取り組んできました。

なぜやるの?

先日の開発者ギルドカンファレンス2015のセッション【現場コーチから見えてきた越境する現場の3つの特徴】冒頭で「”現場コーチ”という役割を知っている人?」と聞いたところ70人の参加者のうち、10人程でした。

セッションでは、現場コーチがもたらす価値、実施するアクション、考えていることをお話しましたが、より多くのことを知っていただきたいと思ったからです。

一方で、現場ごとの背景などのコンテキストがあり、セッションだけでは伝わりきらないこともあります。
このミートアップでは、このようなコンテキストを共有した上で、どのような選択肢を考え、なぜその道具やアクションを取ったのか?といった踏み込んだお話も少人数のミートアップだからこそできると考えています。

どんな人に来て欲しいの?

  • 現場改善の必要性を感じているが、その時間がない経営者、管理職の皆様
  • 自分の現場をより良い方向にしていきたいが、うまくできず悩んでいる方
  • 自分の現場で「現場コーチ」のようなことをされている方
  • 「現場コーチ」というロールに興味のある方

このような方であれば、良い時間になると思いますのでぜひギルドミートアップ!〜現場コーチミートアップ〜にお越しください!

「当日のミートアップには参加できないが、現場コーチを始めとして、ギルドワークスのやっていることに興味を持った」という方はお気軽に【ギルドワークスに依頼する】をご覧の上、お問合せください。

13049644443_a75bac1eb2_z

やりたいことができない場合は小さく分解すればいい

こんにちは、ギルドワークスの中村 洋です。

皆さんの現場では「ふりかえり」であがったTryはどれほど実行されているでしょうか?

一見良さそうなTryが出て、チームもそのTryに合意しているが、次のふりかえりで聞いてみると実行されていない」という現象を見聞きします。特に手強いProblemに対するTryや、(壮大な遠い目標を掲げた)新しいチャレンジとしてのTryなどはその傾向は強くなります。
このようなパターンの場合、ふりかえりの会話で「◯◯のTryをやろうと思ったのですが、”いろいろ”あってできませんでした…」という会話が出てきます。

このパターンが続くと「結局Tryを出しても何も変わらない」と雰囲気が沈みがちになりチームのパフォーマンスが落ちたり、Problemが解決されず大きな問題が発生するといった悪影響が出てきます。このようなパターンが発生する原因はなんでしょうか?
続きを読む