Gleyzer両氏によって共同開発されました。2019で、同言語の発表を行いました。InfoQはPurdy氏に言語と、氏らが解決を目指した問題について聞きました。設計/アーキテクチャアジャイルマニュフェスト:ソフトウェアアーキテクトの視点ソフトウェアアーキテクトの役割と責任はアジャイルソフトウェア開発のためのマニフェストの価値と矛盾していると見えますが、優れたアーキテクトはアジャイル開発チームをサポートするテクニックを見つけています。Streamingは、ストリーミングデータのためのSQLライクなインターフェースを提供します。Streamsによって、Redisがストリーミングデータを複数のプロデューサとコンシューマの間で消費、保持、配信することができるようになります。ソフトウェア開発のマニフェストたゆまず息もつかずに市場に突進することで、会社を静かに消滅の崖っぷちへと追い込みます。それは設計してコードを書く方法を再考する時です。簡単さへの投資は、速さへの投資です。簡単さは知的財産の主鉱脈でもあります。競争上の優位性は、一度失ったら、もう一度手に入れることはほとんど不可能です。Buytaerts氏が過去10年間にわたって、企業がDevOps採用のハイプサイクルをくぐり抜け、変革に対する誤解を解消する過程を支援してきた経験について語ります。誠はじめにある程度以上の規模/複雑さを持つ対象をモデリングする際に、私はよく「概念モデル」「分析モデル」「設計モデル」という抽象度の異なる三種類のモデルのセットを作成します。問題領域に対する「理解のしやすさ」を重視したモデル。実現手段の詳細によらない、問題領域の本質的な構造/特性を素直に表現したもの。概念モデルをベースに、抽象化/一般化を加えてドメイン・フレームワークを分離/再構成したモデル。広い範囲での再利用性/拡張性の向上を狙う。分析モデルをベースに、特定のアーキテクチャ/ライブラリ/プログラミング言語等を想定して具体的な実現手段を組み込んで詳細化したモデル。関連スポンサーコンテンツ前回の記事では概念モデルのイメージについて解説しました。引き続いてGreedゲームを題材にしながら、今回は「分析モデル」のイメージと効果を解説していきます。本記事におけるドメイン・フレームワークとは、ある特定の問題領域およびそれに類似した問題領域に共通して適用可能なドメイン・オブジェクト群のためのフレームワークの事を指します。メッセージ伝搬機構など)とは異なり、ドメイン・フレームワークは特定の問題領域毎に特有の構造/振る舞い/意図を持って構成されます。ドメイン・フレームワークを考える場合、現在対象としているシステムそのものだけでなく、将来作られる可能性のある類似のシステムに関する想定を組み合わせ、それらのシステム群にとって共通に流用可能な部分を枠組みとして抽出/整理していきます。その際、現在対象としているシステムの概念モデルをベースに、一部を分解したり抽象化/一般化を加えたりなど変形を行い、適用範囲の広い枠組みの部分(ドメイン・フレームワーク)を抜き出し、さらに、いくつかのサブクラスを追加するなどして現在対象としているシステムのドメイン構造と同等な機能を持つ構成をその枠組の構造を使用して再構築していきます。Greedゲームの概念モデルを参考に主要な概念を整理し、Greedゲーム以外の類似のゲームも想定しながら抽象化/一般化を加えて変形しつつ、それらのゲーム群で共通に成り立つと思われる枠組み(ゲーム・フレームワーク)の部分を抜き出した概略クラス図を示します。ゲーム・フレームワークの例この枠組はGreedゲームを含む複数プレイヤー参加の一般的な対戦型ゲームに共通すると思われる部分を表わしています。いくつかのクラスが抽象クラス(クラス名がイタリック体で表記されている)になっていることに注意してください。この枠組では、ゲームを「ある局面の順序付けされた階層構造」として認識しています。ゲームを構成する局面の種類や階層順などは具体的なゲームの種類によって変わってきます。そのため、「ゲーム局面」「複合ゲーム局面」「単純ゲーム局面」によって構成されるコンポジット・パターンで局面を抽象化し、任意種類/任意深さの局面の木構造を扱えるようにしています。この枠組は「ラウンド」「ターン」「手」「番」などの概念を持つさまざまなゲームに対して応用可能なはずです(すごろく、ポーカー、ボーリング、ビリヤード、将棋、麻雀、テニス、バレーボール、野球、などなど...)。抽象化/一般化されたフレームワーク層が分離/抽出されたので、今度はその枠組を用いて現在対象としているシステムの構造を再構成して表現していきます。※クリックして拡大表示この図の中では、フレームワーク側で定義されているクラス名に「ゲーム・フレームワーク」というパッケージ名を付けて表記しています。「ゲーム・フレームワーク」というパッケージ名が表示されていないクラスはGreedゲームのために特殊化された具象クラス群であることを示しています(さらに、Greedゲーム用に特殊化されたクラス群のアイコンは、塗りつぶし色を少し濃いめの色にしてあります)。フレームワーク側で定義されていなかった関係線は赤色で表示して、どこが追加されたものかが目立つようにしています。前回の記事で示したGreedゲームの概念モデルの例と上記の分析モデルの例とを見比べてみてください。できれば、両方のクラス図からそれぞれオブジェクト図を描いてみて、同等の構造を持つオブジェクト群が矛盾なく扱えることを確認してみると、さらに理解が深まるものと思います。分析モデルの利点・欠点Greedゲームの分析モデルでは、Greedゲームに限らず他のゲームにも適用可能な部分(ドメイン・フレームワーク部分)とGreedゲーム固有の都合に左右される具象部分とが、モジュール(クラス)としても明確に分離/整理されています。そのため、このようなモデルをベースに設計/実装されるソース・コードのうち、少なくともドメイン・フレームワーク部分については他のゲームを実装する場合にもそのまま再利用できる可能性が高くなります。まとめ方(抽象化や一般化の方法)を工夫してなるべく多くの部分をドメイン・フレームワークとして抽出できれば、それだけ再利用率を上げることができるでしょう。一方で、抽象化/一般化による変形/分離が施された分析モデルはある意味「素直な構造」ではなくなっているので、「問題領域の構造/特性を理解する」という目的にはあまり向いていない(理解するのが難しい)モデルになります。示した分析モデルだけを見て、Greedゲームが「ゲーム」「ラウンド」「ターン」「ロール」の階層構造を持つということをパッと読み切るのは困難です。ドメイン・フレームワーク化はドメイン・レベルでの再利用性/拡張性を確保するために必要なのですが、抽象化/一般化と理解のしやすさはトレードオフの関係にあります。新たにモデルを見る人がそもそもの問題領域を素直に理解できるように、分析モデルの元になった概念モデルも対にして残しておく(抽象度の異なる目的別のモデルを作成する)のが良いでしょう。「概念モデル」「分析モデル」「設計モデル」という用語には明確な定義が無く、人によってさまざまな意味合いで使われています。本記事でのこれらの用語の解釈/用法は著者独自のものであり、一般的に広く認識が統一されているものではないということにご注意ください。毎週火曜日に前週のまとめコンテンツがお送りいたします。25万人ものシニアデベロッパーのコミュニティーにぜひご参加ください。サンプルを見るあなたのメールアドレスはこちら国を選んでください。プライバシーポリシーに従って私の個人情報を扱うことに同意します。登録するとさまざまなことができます。アカウント登録をしてInfoQをお楽しみください。あなたの意見をお聞かせください。/スパムの可能性があると認識されました。モデレーターが確認し問題がなければ24時間以内に公開します。その際あなたへの通知は行われませんのでご了承ください。画像をクリックしても拡大表示できない。AccessDeniedとなります。その1もそうかもしれません。毎週火曜日に前週のまとめコンテンツがお送りいたします。25万人ものシニアデベロッパーのコミュニティーにぜひご参加ください。サンプルを見る様々なイノベーターとアーリーアダプターがお送りするテクノロジーの概要を見る。自分がまだ知らないことに気づいていないと知るあなたが興味のあるトピックスをいつでも最新な情報に。あなたのメールアドレスはこちら国を選んでください。プライバシーポリシーに従って私の個人情報を扱うことに同意します。よい世界へ私たちが暮らす世界を大切に思い、よりよいものにしたいと考えています。人のためのソフトウェア開発を加速し私たちのミッションを実現することで、この思いを成し遂げようとしています。私たちは利益の1%をさまざまな慈善団体に寄付しています。会社として、また従業員として、そうしたことの価値を強く信じているからです。with.プライバシーBTあなたのプロファイルは最新ですか?プロフィールを確認してアップデートしてください。アドレス*Eメールを変更すると確認のメールが配信されます。会社名:現在の会社名をご入力ください。Other組織規模:現在の組織規模をご入力ください。2,501+国:現在の国を設定してください。Zimbabwe都道府県:現在の都道府県に設定してください。次の都道府県にアップデートする:ニュースレターを購読しますか?インダストリーメールを購読しますか?本Eメールに登録すると、以前より関心のあったトピックの関連情報をお送りする場合がございます。詳細はこちらのプライバシーポリシーをご覧ください。newsletter?新しいメールアドレスに確認用のメールを送信します。このポップアップ画面は自動的に閉じられます。