タグ

設計に関するkawa-_-kawaのブックマーク (18)

  • Azure アプリケーションの設計原則 | Microsoft Docs

    次の設計原則に従って、アプリケーションのスケーラビリティを上げて、回復力や管理しやすさを強化します。 自動修復機能を設計します 。 分散システムでは、障害が発生します。 障害の発生に備えてアプリケーションの自動修復機能を設計します。 すべての要素を冗長にします 。 単一障害点をなくすようにアプリケーションに冗長性を組み込みます。 調整を最小限に抑えます 。 アプリケーション サービス間の調整を最小限に抑えてスケーラビリティを実現します。 スケール アウトするように設計します 。需要に応じて新規インスタンスを追加または削除し、水平方向に拡張できるようにアプリケーションを設計します。 制限に対処するようにパーティション化します 。 パーティション分割を使用して、データベース、ネットワーク、コンピューティングの制限に対処します。 操作に合わせて設計します 。 運用チームが必要なツールを得られるよ

    Azure アプリケーションの設計原則 | Microsoft Docs
  • ソフトウェア設計についてtwada技術顧問と話してみた 〜 A Philosophy of Software Design をベースに 〜 - NTT Communications Engineers' Blog

    はじめに スタンフォード大学の John Ousterhout 教授が執筆された “A Philosophy of Software Design”(以下 APoSD と略す) という書籍をご存じでしょうか? 書籍のタイトルを直訳すると、「ソフトウェア設計の哲学」となります。書籍の内容はまさに、ソフトウェア設計について扱っています。 書籍をベースに、「A Philosophy of Software Design を30分でざっと理解する」というお題で社内ランチ勉強会が開催されました。記事執筆者である岩瀬(@iwashi86)が発表者であり、勉強会資料は以下のとおりです。 スライド P.4 に記載したとおり、書籍は John Ousterhout 教授の意見が強く反映されており、ソフトウェアエンジニアであれば、議論を呼ぶ箇所があります。実際、勉強会の実況Slackでは、「これはどうな

    ソフトウェア設計についてtwada技術顧問と話してみた 〜 A Philosophy of Software Design をベースに 〜 - NTT Communications Engineers' Blog
    kawa-_-kawa
    kawa-_-kawa 2022/05/23
    いい深掘り♪ こういう会話できる環境を用意できる時点で尊敬。しかも外部にアウトプットしてて素晴らしいです。
  • 役割駆動設計で巨大クラスを爆殺する - Qiita

    大量のメソッドを保有し、数千、数万行単位にぶくぶく膨れ上がった巨大クラス。別名「神クラス」とも「大きな泥団子」とも呼ばれる、長大で複雑で密結合で極めて変更が困難なアイツ。 そんな巨大クラスの退治に有効な、ドメイン駆動設計を基思想とする「役割駆動設計」を紹介致します。 解決したい課題、狙う効果 数千、数万行単位の巨大クラスの登場を抑止する。 小さくシンプルな構造に落とし込み、堅牢で変更容易性の高い設計へ昇華させる。 例1:筆者をモデリング 分かりやすくなるよう、まず私を例にモデリングしてみます。私は以下のような特徴があります。 IT企業の従業員 家族がいる(, 子供) 趣味ゲーム制作している ダメな設計 何も考えずに人クラスとして設計すると、よく以下のような構造になりがちです。 従業員として仕事をする、父親として家族サービスする、趣味としてゲーム制作する、それぞれのメソッドが備わってい

    役割駆動設計で巨大クラスを爆殺する - Qiita
    kawa-_-kawa
    kawa-_-kawa 2019/04/08
    記事を見ておぉと思った人は「責務(駆動)」「ロール」「コラボレーション」などで調べると色々出てくるので幸せになれると思う。次はこの概念を、どう構築するか設計方法に話が進むと思う。
  • ORMがアンチパターンである11の理由

    サンフランシスコのプログラマLaurie Voss氏が書いた見逃せない記事が賑わっています。近年のフレームワークやライブラリの定番中の定番ORマッパーが既にアンチパターンなのではというのが彼の主張です。この記事を書くきっかけになったのはこのツイートだそうです。 I cannot overstate the degree to which ORM is a dangerous antipattern. — Laurie Voss (@seldo) June 9, 2011 ORM が危険なアンチパターンだっていうのはどれだけ言っても言い過ぎることはない このツイートに対して各方面(ActiveRecord, Doctrine, Hibernate)から多くの(激しい)返信が寄せられて書かれたのが問題のエントリです。まずはアンチパターンとは何かの定義として下記の2つを挙げています。 当初は有益

    ORMがアンチパターンである11の理由
    kawa-_-kawa
    kawa-_-kawa 2018/05/02
    ORMの問題点
  • DB設計がマトモであれば何とかなる - 設計者の発言

    3月にJUASで開催された「データモデリング&超高速開発ライブ」の動画が公開された(これ)。4分程度のダイジェスト版であるが、当日の雰囲気がよくわかる。私にとって興味深いのはデータモデリングで、描き拡げられる過程がコマ落としで示される様子が面白い。 このときは、私がやったことがないという理由もあって「配員管理システム」を開発課題にした。提案してくださった方の口頭説明にもとづいて、参加者からの意見を取り入れつつ11個のテーブルを含むデータモデルとして40分でまとめ、各チームが60分で実装した。実装だけでなく、それに先行する設計もまた「超高速」である。 これほどの俊敏さで業務システムが出来上がるのは驚くべきことなのだが、このイベントは開発ツールの生産性を示すだけのものではない。当たり前の話だが、データモデルが不細工ならば不細工なシステムしか生み出されない。ツールが発展・普及する過程で実装作業は

    DB設計がマトモであれば何とかなる - 設計者の発言
    kawa-_-kawa
    kawa-_-kawa 2018/04/11
    100分で動くモノが出来上がるのはスゴイ事だと思う。作ることが好きなので、開発≒プログラミングと考えてしまうが、超高速開発ツールのような道具も手駒として常に把握しておきたい。
  • ヘロヘロスクラム、内部の質、変化のための設計〜『健全なビジネスの継続的成長のためには健全なコードが必要だ』対談 (3)

    ヘロヘロスクラムを見かける話懸田:さて、次の話題がたぶんテーマの根幹だと思うんですけど、そこらへん少しお願いします。 和田:ブログエントリーで一個ずつタイトル並べたみたいな感じですね。じゃあトピック「スクラムは広まったがコードや設計がダメだとエンジニアは生き生きしないのではないか?」。 家永:これはいわゆるファウラーの所のヘロヘロスクラムとかっていうキーワードですね。 和田:角さんが訳したやつ。 家永:和訳があるので、知られてはいるんだけれども、実際僕がアジャイルコーチというポジションで入ると、期待されるところの最初はまずはプロセス面を見るというところがあって、コードまで見るという機会が逆に離れてしまっている。プロセス部分にもまずフォーカスが当たるんだけれども、実際にもう一歩踏み込んでコードを見てみると、「これ大丈夫か!?」とドキッとする機会が何度もある。例えば、僕は(Ruby on)Ra

    ヘロヘロスクラム、内部の質、変化のための設計〜『健全なビジネスの継続的成長のためには健全なコードが必要だ』対談 (3)
    kawa-_-kawa
    kawa-_-kawa 2018/02/20
    おぉぉ! /“何かね、削除しやすさとか、後腐れなく外しやすいかどうかというのが、設計の質としてあまり認識されてこなかった節があって。”
  • システム設計と創造性 - 設計者の発言

    これまでさまざまな開発プロジェクトを脇から見てきたのだが、ありがちなパターンとして「分析・設計工程に想定以上の時間がかかってしまって、実装工程の時間が短縮される」というのがある。ほとんどのプロジェクトがこのパターンに陥ると言えるほどに頻発している。 べつに担当者がサボっているわけではない。遅くまで残業してがんばっていたりするのだが、出来上がる成果物はひどく心もとない。では何を熱心にやっているかというと、関係者へのヒアリングと、旧システムの仕様分析である。それの何が問題かというと、「創造的要素」が希薄な点だ。「分析ばかりに夢中になって、設計がほとんどなされていない」と言い換えてもいい。 これに関して私が以前から疑問だったのは、「問題モデル(分析モデル)」と「解決モデル(設計モデル)」とが連続しているような言い方だ。問題モデルを誠実にまとめれば、そこから解決モデルを導出できる――これは信念では

    システム設計と創造性 - 設計者の発言
    kawa-_-kawa
    kawa-_-kawa 2017/09/28
    速い馬ではなく車。ドリルではなく穴。メタ思考で考えたとしても、現在無いモノをどうやってステークホルダーに伝えるのかが難しいと思う。「雨どい付竪穴式住居」ワロタww
  • だんだん開発スピードが遅くなっていくのをどうやってとめたら良かったんだろう? - Mitsuyuki.Shiiba

    先日、モブプロをやってきた。その中で、モブプロとは別で、いくつか感じたことがあって、今日はその中のひとつを思い浮かんだままにメモ。 bufferings.hatenablog.com 要件を満たすプロダクトをより早く出す モブプロでTDDしながら、要件を満たすプロダクトをより早く出すことに集中してみた。例えば、第2ラウンドのお題はTDDBCなどでお馴染みの「自販機」。 「100円を入れてボタンを押すとコーラが1買えること」 最初に「100円を入れてボタンを押すとコーラが1買えること」と言われ。 assertThat(get(100), is("コーラ")); みたいなテストを書いて。 String get(int money) { return "コーラ"; } みたいな実装を書いた。爆速! 「200円を入れてボタンを押すとオレンジジュースが1買えること」 次に「200円を入れてボタ

    だんだん開発スピードが遅くなっていくのをどうやってとめたら良かったんだろう? - Mitsuyuki.Shiiba
    kawa-_-kawa
    kawa-_-kawa 2017/06/01
    深い洞察。んーどうしたら良かったのか判らない。
  • データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3

    Similar to データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3

    データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
    kawa-_-kawa
    kawa-_-kawa 2017/05/24
    わかり易い良い資料♪ あのパターンに名前あったんだ。知らなかった。
  • 「単独主キー専用環境」と賢くつきあうために - 設計者の発言

    「ORマッピングの功罪」の続きである。複合主キーが忌避される開発環境について、もう少しつっこんで考えてみたい。まともなORマッパーであればふつうに複合主キーを扱えるのにもかかわらず、ORマッパー上で組み立てられた開発環境ではしばしば複合主キーが非推奨とされる。なぜなのか。 その種の開発環境において、データ要件を「オブジェクト(クラス)構造」として認識し、それをRDBに落とし込むといった設計スタイルを実践することが前提になっているためだ。個別案件においてOOP(オブジェクト指向プログラミング)を使う余地が大きい開発環境ほど、この傾向が強まる。その独特なスタイルは、かつてはOOA/OODと呼ばれ、今ではDDDと名前を変えつつも(*1)、OOP使いの間で根強い人気がある。 その枠組みにおいてクラスの実際値(オブジェクト)は、RDBテーブルのレコードとして永続化(保存)されることになる。オブジェク

    「単独主キー専用環境」と賢くつきあうために - 設計者の発言
    kawa-_-kawa
    kawa-_-kawa 2017/05/08
    答えが無い問とはいえ、それぞれのメリット・デメリットは理解しておきたいとは思う。
  • microXchgマイクロサービスカンファレンス第1日 - DDD、プラットフォーム、企業への影響

    ベルリンで開催されたmicroXchgカンファレンスで、ソフトウェア開発の実務家たちが、マイクロサービスアーキテクチャスタイルに関する最新の実践成果を発表した。論じられたのは、機能サービス設計、ドメイン駆動開発(DDD)とRESTの統合、トランスクルージョン(transclusion)を用いたマイクロサービスによるWebサイト開発、マイクロサービスプラットフォームの選択、企業や個人に対するマイクロサービスの影響、IoT(モノのインターネット)を活用する上でマイクロサービスをどのように利用するか、といった話題だ。 カンファレンスのオープニングトークではUwe Friedrichsen氏が、‘Resilient Functional Service Design’というタイトルで、中核概念としてのレジリエントな機能サービス設計について論じた。この講演についてはInfoQのニュースとしてすでに伝

    microXchgマイクロサービスカンファレンス第1日 - DDD、プラットフォーム、企業への影響
  • Eric Evans氏はDDDが完璧主義者のためのものではないと述べた

    Mark Fussell氏とYaron Schneider氏とDaprを知ろう 日のエピソードでは、Thomas Betts氏がMark Fussell氏とYaron Schneider氏に、分散アプリケーション・ランタイム(Dapr)について話を聞いた。最新のInfoQ Architecture and Design Trends Reportでは、Daprはポータビリティとクラウドアプリケーションのための設計というアーリーアダプターのアイデアの一部となっている。

    Eric Evans氏はDDDが完璧主義者のためのものではないと述べた
    kawa-_-kawa
    kawa-_-kawa 2017/02/23
    “モデルに関するトレードオフを意識し、現在のモデルに完全に満足していないときに実行すべき手法を持っている場合にとても良い結果を得られるのである”
  • #jjug_ccc DDDとMicroservicesについて喋ってきましたー(∩´∀`)∩ - Mitsuyuki.Shiiba

    楽しかった! DDD & Microservices with Spring Cloud 前半がこれまで僕が経験してきたDDD 後半がこれからのために素振りしておきたいこと これまで僕が経験してきたDDD 最近、組織について考えるようになってきたのもあって「境界づけられたコンテキスト」が一番大切だなって実感してる。全てを一度に相手にするのではなく、切り取られた世界を作って、その中で適用していく。その切り取られた世界の間の関係性もデザインしていく。そうすることで複雑さを手に負える大きさでコントロールできる。 DDDを知った当初は、エンジニアとしてEntityやValueObjectのところが面白いなーって思ってゴニョゴニョコード書いてたりしてたんだけど、しばらくして「もっと良いコード書くためにはその土台となるチームづくりをしなきゃ!」と思ってスクラムを導入してたんだけど、しばらくして「チーム

    #jjug_ccc DDDとMicroservicesについて喋ってきましたー(∩´∀`)∩ - Mitsuyuki.Shiiba
  • タコヤキ業務にタコヤキテーブルは必要か - 設計者の発言

    前々回と前回の記事で紹介した「WEBサービス事業管理システム」のモデルと実装が、「CONCEPTWARE/サービス管理」として近日公開される(2016/10/12に公開済)。このモデリング課題にもとづいて大阪と東京でハンズオンセミナーを開催したわけだが、その中で気づいたことをひとつ紹介したい。DB構造が業務構成や機能構成に必要以上に引きずられてはいけないという話だ。 1回目のセミナーではシステム要件をほとんど口頭で説明しただけだったのだが、2回目では時間の節約のために、あらかじめリストにしたものを事前に配布したうえでデータモデリングしてもらった。その一部が以下である。 ・顧客に利用明細書を送付した時点で売上確定され、顧客は規定の銀行口座に利用料を振り込む ・利用料が未入金であるような顧客に対しては、適宜に督促メールを送信する 4~5名で8チームに分かれてモデリングしたのだが、ほとんどのチー

    タコヤキ業務にタコヤキテーブルは必要か - 設計者の発言
    kawa-_-kawa
    kawa-_-kawa 2016/11/08
    画面案からDB設計していくと、DBは単純なGetter/Setterに成り下がり、業務作業から設計すると不安定なDBが出来上がる。ほんと「三要素分析法」超大事!
  • 私がMVCフレームワークをもはや使わない理由

    数ヶ月前、私はなぜここにたどり着き、何が可能かを理解する旅に出ました。この旅は、私にアプリケーションアーキテクチャ、MVCという強烈な宗教に対する疑いをもたらしました。そして、リアクティブ、関数型プログラミングの真の実力に触れたのです。また、シンプルさに集中する旅でもあり、私たちの産業はうまくやっているという考えを捨てる旅でもありました。どんなことを見つけたか興味がある方もいるでしょう。 私たちの見ている画面の背後にあるパターンはMVC –Model-View-Controllerです。まだウェブがなくソフトウエアアーキテクチャも分厚いクライアントが単一のデータベースに原始的なネットワークでアクセスするのがせいぜい、という時代にMVCは生まれました。そして数十年後、MVCはまだ現役であり、衰え知らずでオムニチャネルアプリケーションの開発に使われています。 Angular2のリリースの前にM

    私がMVCフレームワークをもはや使わない理由
  • 「外部設計・内部設計」の危うさ - 設計者の発言

    「外部設計」という用語がある。業務システム開発の世界では昔からあって、「ウォーターフォール方式(WF)」で工程を区別するために使われている。「外から見える部分の設計」という意味のexternal designを訳したものと思われるが、これがなかなかのくせ者だ。 建築に喩えることを許してもらえるなら、「外から見える部分」は壁の色だの玄関の形だのといった「見た目」であって、そんなものを高層ビル建築の上流工程で提出しても「これだけでは不十分」とつっかえされるのがオチだ。ユーザから見える「フォーム」や「帳票」のデザインをまとめただけの上流工程成果物が役に立たないのも同様であって、この意味で建築とシステム開発は似ている。 「外部設計」のタイミングで優先的になされるべき仕事は何か。それは「見た目」ではなく「骨格」の構想と決定である。高層ビルの設計で言えば基礎や鉄筋の構造に相当する。これらの多くはユーザ

    「外部設計・内部設計」の危うさ - 設計者の発言
    kawa-_-kawa
    kawa-_-kawa 2016/06/27
    外部・内部よりも、概要・詳細を良く使っていましたが、構造・制御のほうが直観的でいいですね。しかし社内で使うとなると今までの慣例やらなにやらで、”たかが言葉ぐらい”っと却下されそう。。。
  • RESTful#とは勉強会で(Railsでの)ルーティングの考えだし方の話をしました - moroのブログ

    RESTful な設計って、ってマスタメンテ作るにはいいけどまともなサービス作れるの? という疑問に対して、結構やればアプリケーションできるので安心してください、という話をしました。 「独自研究」セクション以外はだいたいふつうに経験したことです。「独自研究」セクションはたぶん、今流行りのオーケストレイションレイヤをどうするかというところになるのかな、と。APIといいつつ、HTMLを返す話ばかりですが、これはAPIHTMLをあえて区別せずそれは単にリプレゼンテーションが違うだけです、という意図でした。 転職してから初の社外発表が前職オフィスでやるというのが面白かったです。永和メンバーも結構たくさん会えてよかった。来てくださった方、開催をアレンジしてくださった方、ありがとうございました。

    RESTful#とは勉強会で(Railsでの)ルーティングの考えだし方の話をしました - moroのブログ
  • プログラミングの「抽象化」ってどういう意味で、なぜ必要なのか - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    <追記>いろいろ反応あってたしかになーって思いましたが、ここで説明されてるのは「汎化」とか「パラメタライズ」としたほうが正しいですね。抽象化というと、一塊の手続きをブラックボックスにして、実装を隠蔽する面のほうが正解に近いです。でもまあそこを差し引いて読んでいただければ、それなりに有用ではある記事だと思うので、このまま残しておきます</追記> プログラミングに限らない話かもしれませんが、ふだんの生活で触れないような概念というのは、一度わかってしまえば便利なんだけど、どうしてもとらえどころがない、というようなことが多いと思います。プログラミングにもそういう概念はたくさんあって、わたしのような凡人は新しい概念にぶち当たるたびに苦労しています。今日はそんな中で「抽象化」という言葉について、「昔の自分にこうやって説明してあげたかったな〜」という説明をします。 プログラミングを学んでいく中で、「とり

    プログラミングの「抽象化」ってどういう意味で、なぜ必要なのか - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
  • 1