タグ

設計に関するbraitomのブックマーク (82)

  • ソフトウェア設計についての原則や法則についてまとめてみた

    ソフトウェア設計について、YAGNIやSOLIDなど多くの原則・法則があることが知られていますが、その解釈にはぶれが存在することが多いです。そこで、特に有名なものあるいは有用と感じることが多いものをいくつかピックアップして、その解釈やトレードオフについてまとめてみました。 注意としては、SOLIDが入ってることからわかる通り、主にOOPに関する文脈になります。また、各原則の定義については概ね知っている前提で書いているのであまり初学者向けの記事ではないかもしれませんのでご承知おきください。 YAGNI(You ain't gonna need it.) YAGNIは、予測による実装が実際に役立つことは少ないという経験則から生まれた原則です。 一般にオーバーエンジニアリングが利益をもたらすケースは限定的で、どちらかというとプロジェクトに害を与えることが多いとされています。YAGNIは日々状況の

    ソフトウェア設計についての原則や法則についてまとめてみた
  • ソフトウェア設計の Why & What & How | Wantedly Engineer Blog

    こんにちは、開発チームのアーキテクトをやっている竹野(@Altech)です。先日、新人研修でソフトウェアの設計について話す機会がありました。 ソフトウェアの設計というのは関連する領域が広いため、どうしても断片的な理解になりがちです。そこで、早い段階で全体像を感じてもらうために、ソフトウェア設計の Why と How と What を1時間でまとめて話すというちょっと意欲的なコンセプトで研修を行いました。今回は、その内容を記事にしました。 この研修のねらいはじめにソフトウェアの設計について書かれた情報は世の中に多いですが、その情報の多くは How であり、それだけを読んで適切に使うことが難しいと感じています。その直接的な理由は、How に対しての What、How / What に対しての Why が語られることが少ないからです。 ただ、How だけを知っていると、それは当に問題を解決して

    ソフトウェア設計の Why & What & How | Wantedly Engineer Blog
  • 良いコードとは何か - エンジニア新卒研修 スライド公開|CyberZ Developer

    CyberZ CTO室のメンバーの森 (@at_sushi_at) です。 先日、株式会社サイバーエージェントの2021年度 エンジニア新卒研修でコードの品質に関する講義を行いました。 そこで話した内容とスライドを完全公開します。 45分の内容のため、かなり長いですが、個人的にぜひ一読して欲しい内容になっています。 はじめに こんにちは、森 篤史と言います。2019年度入社で今年で3年目になります。株式会社CyberZのOPENREC.tvというプロダクトでAndroidアプリチームのリーダをやっています。 最近はプログラムを書く仕事以外に、次世代マネジメント室という全社横断組織でDevelopers Blogの改善プロジェクトを実行したり、CyberZ CTO室で組織活性化に取り組んでいます。 あと、2019年度の未踏スーパークリエータにも認定されました。 メインの仕事としては、入社して

    良いコードとは何か - エンジニア新卒研修 スライド公開|CyberZ Developer
  • ITエンジニアのクラウド設計効率を向上させる、設計管理サービス「ForkMe!(フォークミー)」の提供を開始

    ITエンジニアのクラウド設計効率を向上させる、設計管理サービス「ForkMe!(フォークミー)」の提供を開始 レインディア テクノロジー(英文:REINDEER TECHNOLOGY PTE. LTD.、所在地:シンガポール、代表: 原伸太郎 CEO、池田祐樹、中水利久)は、ITエンジニアのクラウド設計効率を向上させる設計管理サービス、「ForkMe!(フォークミー)」ベータ版の提供を開始いたしました。サービスにより、ITエンジニア個々のスキルアップと同時に、DX(デジタル活用)の大きなテーマである、組織のクラウド活用を支援いたします。 無料で会員登録:  https://forkme.cloud/ja/signup/ ご利用マニュアル:  https://docs.reindeer.tech/forkme_ja.html​ サービスの特徴: ITエンジニアが、チームや有識者がつくったク

    ITエンジニアのクラウド設計効率を向上させる、設計管理サービス「ForkMe!(フォークミー)」の提供を開始
    braitom
    braitom 2021/04/26
    へーこんなサービスあるんだ。“チームや有識者がつくったクラウドの設計を、簡単に複製、再利用できるようになります。”
  • 実践ADR - kawasima

    Architecture Decision Records(ADRs)は、アーキテクチャ上の意思決定をドキュメントとして残す方法の1つです。Release It!の著者であるMichael Nygardのブログによって広まり、ThoughtWorks社のTechnology Raderでも「adopt」になっています。

    実践ADR - kawasima
  • Design Docs への思い

    Message Passing での話題を契機に、色々な人が自身の Design Docs 観を共有していて、とても興味深く読ませてもらいました。普段「仕事を進める上で当たり前に必要なもの」として書いている自分に気づき、これを機に自分の Design Docs 観も言語化してみようと思ったのが記事です。実践の一例を付け加えることが狙いであり、「Design Docs はかくあるべき」と主張するものではないです。 はじめに 「人によって思い浮かべる Design Docs 観が全然違う!多様で面白い!!」というのが話の出発点ですが、さすがに想定しているものが違いすぎると話が発散してしまうので、記事では Design Docs を「ソフトウェアエンジニア (私) が何らかのプロジェクトやタスクを進める上で書く文書」としておきます。 次に私の立場を明確にしておきます。私はオープンソースのウェ

    Design Docs への思い
  • 技術選定/アーキテクチャ設計で後悔しないためのガイドライン - Qiita

    はじめに 稿は、ソフトウェア開発を進める際に直面する様々な技術的な意思決定やライブラリ・フレームワーク・XaaS等を選択し正しく活用していくのかについての考え方をサポートすることを目的としています。「すべてにおいてこのようなワークフローを通じて検討すべきである」という主張ではありません。読者の抱える問題領域に応じて、必要な箇所を取捨選択するための1種の考え方を提供するものです。 そもそもアーキテクチャ・技術選定に時間をかけるべきか まず第一に伝えておきたいことは、技術選定やアーキテクチャ設計に常に慎重であるべきではないということです。ソフトウェアの規模やライフサイクルに応じて、そもそも時間をさく必要がないということも多くあります。書き捨てのシェルスクリプトにも読みやすいコードを求めて書くことは非常に重要ですが、だからといって組織だって議論・検討するようなものでもないのです。一方で、5年も

    技術選定/アーキテクチャ設計で後悔しないためのガイドライン - Qiita
  • SOLID原則をまとめてみた Part1 ~SOLID原則とはなんぞや編~ - ecbeing labs(イーシービーイング・ラボ)

    はじめに SOLID原則とは どうしてSOLID原則が生まれたのか ダメなソフトウェア設計の4つの原因 Rigidity-剛性 Fragility-脆弱性 Immobility-不動性 Viscosity-粘性 当の原因 どんな変更が設計をダメにするのか おわりに&次回記事に続く… はじめに はじめましてorこんにちは! ecbeing2年目、R&D部門所属のいかちゃんです。 これまでは、Dockerの記事やスクラムに関する所感記事、JavaScriptライブラリに関する記事を書きました。 blog.ecbeing.tech そして今回…というよりシリーズでは、泣く子も黙る『Clean Architecture』を参考に…。 https://www.amazon.co.jp/dp/B07FSBHS2Vwww.amazon.co.jp ソフトウェア設計の5つの原則として名高い「SOLI

    SOLID原則をまとめてみた Part1 ~SOLID原則とはなんぞや編~ - ecbeing labs(イーシービーイング・ラボ)
    braitom
    braitom 2020/08/25
    SOLID原則について。SOLID原則だけでなく論文に書かれているダメなソフトウエア設計の4つの原因についても書かれている。
  • AWS システム構築 非機能要件ヒアリングシートを公開してみた | DevelopersIO

    こんにちは。 ご機嫌いかがでしょうか。 "No human labor is no human error" が大好きなネクストモード株式会社の吉井 亮です。 日国内においても多くのシステムがクラウド上で稼働していることと思います。 俊敏性、拡張性、従量課金、IaS、セキュリティなどクラウドのメリットを享受しやすい所謂 SoE で多くの実績があるように感じます。 ここ1~2年は、社内基幹システム・情報システム、SoR 系のシステムのクラウド移行が格化してきたというのが肌感覚であります。 クラウドでのシステムインフラ構築は従来のようにゼロから非機能要件定義を行っていくものではなく、ベストプラクティスをまず実装して少しずつ微調整を行っていくものと考えています。とはいえ、システムごとの要件は予め明らかにしておくことがインフラ構築においても重要になります。 クラウド上では出来ること出来ないこと

    AWS システム構築 非機能要件ヒアリングシートを公開してみた | DevelopersIO
    braitom
    braitom 2020/07/28
    AWSでシステムを作るときの非機能要件ヒアリングシート。可用性、運用などのカテゴリごとに確認項目が書かれている。これはよい。
  • さよならアーキテクチャ議論|Seiji Takahashi@ベースマキナ

    ポエム。 つまり?予算やチームのリテラシーに合わせて最速で作れて、チーム内で「俺ら高凝集低結合だなー」と思えるなら、アーキテクチャはなんでもいいと思えてきました。 前提・まだ割と収益が安定してないプロジェクトでの話です。お金があるなら好きにやりましょう。Go Bold。 ・DDDやクリーンアーキテクチャがダメとは言ってないです。むしろ自分は直近そこまで厳格ではないクリーンアーキテクチャでAPI書いてます。 ・以前こういうポスト書くくらいにはアーキテクチャのこと試行錯誤してました。 アーキテクチャ導入議論への疲労以前僕は、DDDやクリーンアーキテクチャを導入するという話が出ると積極的に顔を出すようにしていました。でも、最近は「導入しましょう」「既に適用してあるのでキャッチアップしてください」などの議論をするのに少し疲れてしまい、足が重くなったように感じます。もうおじいちゃんなので体力がないん

    さよならアーキテクチャ議論|Seiji Takahashi@ベースマキナ
  • ソフトウェアのもっとも重要な品質は発展性 - ソフトウェア設計を考える

    ソフトウェアでもっとも重視すべき品質は「発展性」なんだと思う。 機能要求や非機能要求は、時間とともに変化する。その要求の変化に対応してソフトウェアを発展させていける能力、つまり発展性こそがソフトウェアの価値を大きく左右する。 発展性に問題があり変化ができないソフトウェアと、発展性に優れ変化と成長を続けやすいソフトウェアの価値の差ということだ。 発展性の価値 顧客のニーズは変化する。また、市場の競合関係も変化する。そういう事業環境の変化にあわせて、ソフトウェアにも変化を続ける能力が求められている。 また、顧客のニーズや市場環境の変化がゆるやかだとしても、事業活動をすれば組織は経験を通じて学び成長していく。開発チームに限っても、ソフトウェア開発運用の経験を積むことで、開発の考え方とやり方にさまざまな学びと成長がある。そうやって学んだ知識を適切にかつ迅速にソフトウェアに反映できるほど、事業により

    ソフトウェアのもっとも重要な品質は発展性 - ソフトウェア設計を考える
    braitom
    braitom 2020/04/06
    ソフトウエアに必要な発展性について。発展性の価値、発展性を向上させるための取り組みについてまとめられている。
  • 設計に「こだわる」とは / Sekkei-ni-kodawaru

    BPStudy#151〜オブジェクト指向、モデリング、設計 LT大会[リモート開催] https://bpstudy.connpass.com/event/170610/ にてお話した際のプレゼン資料です。 株式会社アクティアは、「モデル駆動開発でソフトウェア開発を効率化しよう!」 をキーワードにモデリングを活用したソフトウェア開発を実現させようという企業です。 そんなモデリングを活用することに主眼を置いている中で、アクティアでは設計に「こだわる」という文化が生まれています。 あらためて、設計に「こだわる」ということを考えた時に、経験値と感覚でやっている所が多い状況でした。この発表を機会に、自分自身がやっていることを言語化してみようと思います。 #設計こだわる #モデル駆動型開発 #ドメイン駆動設計 #DDD #ユビキタス言語 #RDRA #モデリング #匠Method #BPStudy

    設計に「こだわる」とは / Sekkei-ni-kodawaru
    braitom
    braitom 2020/04/01
    設計にこだわるとはどういうことかについて。背景や全体像を捉える、ステークホルダーとの認識共有、システムの将来を考えるという3つの視点についての考えがまとめられている。
  • 要件定義~システム設計ができる人材になれる記事 - Qiita

    はじめに 株式会社デジサク がお送りするプログラミング記事、 今回は要件定義・システム設計について扱っていこうと思います。 プログラミングを勉強していて、こんな事を感じた経験はないでしょうか。 「勉強してもプロダクトが作れない」 「そもそも開発ってどうやるの?」 「要件定義ってなに?」 その悩みを解決するために、まずは開発の全体感を理解しましょう。 下図『ソフトウェア開発プロセス』をご覧ください いつも勉強しているプログラミングは 『実装』 の部分に該当します。 つまり、プログラミングの実力を発揮する前に4つも壁が存在するのです。 そのため、記事では実装(プログラミング)を開始する前に必要となる、 『企画~設計』 について順を追って説明して行きます。 特に、エンジニアが理解しておくべき 『要件定義』『設計』 にフォーカスします。 なお、開発全体において実装(プログラミング)に使用する時間

    要件定義~システム設計ができる人材になれる記事 - Qiita
    braitom
    braitom 2020/01/13
    実装の前に必要ないわゆる上流工程について解説した記事。要件定義の必要性やプロセス、画面設計/機能設計/データ設計などの基本設計の作り方などがまとめられている。
  • モダンアプリケーション開発ホワイトペーパー(日本語改定版)が公開されました | Amazon Web Services

    Amazon Web Services ブログ モダンアプリケーション開発ホワイトペーパー(日語改定版)が公開されました 皆さん、こんにちは! モダンアプリケーション開発スペシャリスト ソリューションアーキテクトの福井です。 私が執筆したモダンアプリケーション開発のホワイトペーパー(日語版)がAWSホワイトペーパーサイトで公開されましたので、その内容を紹介させて頂きます。このホワイトペーパーは、以前こちらのブログで紹介させて頂いたModern Application Development on AWS英語版)の日語版になります。 ホワイトペーパーの内容 公開されたホワイトペーパードキュメントは、「AWS モダンアプリケーション開発 – AWS におけるクラウドネイティブ モダンアプリケーション開発と設計パターン」(日語版)というタイトルの51ページのドキュメントで、 はじめに

    モダンアプリケーション開発ホワイトペーパー(日本語改定版)が公開されました | Amazon Web Services
  • 私たちはなぜ SPA で開発するのか / Why you choose SPA

    2019.11.02 に FRONTEND CONFERENCE 2019 (#frontkansai) にて発表したスライドです。

    私たちはなぜ SPA で開発するのか / Why you choose SPA
    braitom
    braitom 2019/11/04
    SAPで開発する理由について。本質的にはUser ExperienceとDeveloper Experienceのため。SAP技術の選定フローや間違った技術選定の原因なども書かれている。よい資料だ。
  • 質とスピード / Quality and Speed

    質とスピード 初演: 2019/10/31 @ EOF2019

    質とスピード / Quality and Speed
    braitom
    braitom 2019/11/03
    品質とスピードは必ずしもトレードオフではないという話。定期的に読み直して考え直したい内容。
  • 【資料公開】レガシーコードからの脱却

    みなさんこんにちは。@ryuzeeです。 2019年10月4日に行われたAWS DevDayの「レガシーコードからの脱却」のセッション資料を公開します。 内容は、9月に発売になった同名書籍『レガシーコードからの脱却』の全体像と一部のプラクティスの紹介という形になっています。 時間の関係で紹介できたのはごく一部の内容になっていますので、スライドを見て内容に興味をお持ち頂いた方はぜひ書籍をお読み頂ければと思います。 なお、現在Amazonの在庫が高額な値付けの転売商品?だけになってしまっているので、オライリーの直販か電子書籍(PDF、epub)をご利用ください。 45分という短い時間の中で何をお話するかは結構迷いました。書はレガシーコードを「どうやって直すか」ではなく「どうやって作らないようにするか」に軸足を置いていて、そのためのプラクティスとして以下の9つを提唱しています。 やり方より先に

    【資料公開】レガシーコードからの脱却
  • 現在時刻が関わるユニットテストから、テスト容易性設計を学ぶ - t-wadaのブログ

    この文章の背景について この文章はテスト容易性設計をテーマに 2013/11/26 に CodeIQ MAGAZINE に寄稿したものです。残念ながら CodeIQ のサービス終了と共にアクセスできなくなっていたため、旧 CodeIQ MAGAZINE 編集部の皆様に承諾いただき、当時の原稿を部分的に再編集しつつ、ライセンス CC BY(クリエイティブ・コモンズ — 表示 4.0 国際 — CC BY 4.0) で再公開いたしました。 旧 URL にいただいたブックマークとご意見はこちらです(これであなたもテスト駆動開発マスター!?和田卓人さんがテスト駆動開発問題を解答コード使いながら解説します~現在時刻が関わるテストから、テスト容易性設計を学ぶ #tdd|CodeIQ MAGAZINE)。旧記事には当に多くの反響をいただき、誠に感謝しております。 目次 この文章の背景について 目次 出

    現在時刻が関わるユニットテストから、テスト容易性設計を学ぶ - t-wadaのブログ
    braitom
    braitom 2019/09/30
    テストの容易性設計について。考えるべきことの解説と現在時刻に関するテストを行うにあたりのいろいろなアプローチパターンとその設計のメリット/デメリットについて説明されている。
  • CSS設計全盛期に学ぶフロントエンド設計

    FROKAN x UIT #1 登壇資料

    CSS設計全盛期に学ぶフロントエンド設計
  • はじめてのGraphQLスキーマ設計

    GraphQLのよいスキーマ設計についてです。

    はじめてのGraphQLスキーマ設計
    braitom
    braitom 2019/09/04
    スキーマ設計のポイントについて。Trelloのようなカンバンツールを例に説明されている。実装の詳細を含めない、ビジネスロジックを提供するなど。