並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 114件

新着順 人気順

yagniの検索結果1 - 40 件 / 114件

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

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

      ソフトウェア設計についての原則や法則についてまとめてみた
    • Value Objectについて整理しよう - Software Transactional Memo

      Value Objectとは何であるか? マーチン・ファウラーのPatterns of Enterprise Application Architecture(PofEAA)やエヴァンス・エリックのDomain Driven Design: Tackling Complexity in the Heart of Software(DDD)が原典であるが、PofEAAではこう切り出している。 When programming, I often find it's useful to represent things as a compound. プログラミング時は物をcompound(合成物)として表現すると便利なことがしばしばある。 例えば2次元空間上での座標のように複数のメンバ(属性)を持つ物は便利である、と。しかしそれらを比較する方法は一意ではない、そこで Objects that a

        Value Objectについて整理しよう - Software Transactional Memo
      • コードレビュー虎の巻 - Qiita

        レビューガイドライン(Review GuideLine) ここで述べているレビューはピアレビューについての方法です。 (作業成果物の欠陥と改善の機会を探すレビュー) 「最悪を最初に」を基本としてレビューすべき、 たとえば、仕様やアルゴリズムに欠陥があるのに、typoにこだわってもしょうがないので、なにが最悪かを考え、それを防ぐための物からレビューをします。 誤りがプロダクト全体に影響し、手戻りのコストが高くつく、あるいは失敗するようなリスクがないかを考慮にいれてレビューの対象を選択します。 たとえば、基本的な初期フェーズの要求仕様や、クリティカルな決定の基礎になる仕様、使用頻度が高いモジュールなどを重点的にレビューします。 以下に書く項目はレビュアーに負担をかけないようにするのが前提なのでレビュアーに出す前にそもそもテストしたい項目です。 参考: あなたのおっしゃるレビューってどのことかし

          コードレビュー虎の巻 - Qiita
        • 【Web】知っておきたいWebエンジニアリング各分野の基礎知見80

          この記事は? それぞれが専門にしている領域に関わらず、Webエンジニアリングの基礎知識として知っておきたいと思う事を対話形式でまとめていく。知識はインプットだけではなく、技術面接や現場では、専門用語の正しい理解をもとにした使用が必要なので、専門がなんであれ理解できるようなシンプルな回答を目指したものになっています。解答の正しさはこれまでの実務と各分野の専門書をベースに確認してはいますが、著者は各技術の全領域の専門家ではなく100%の正しさを保証して提供しているものではないので、そこはご認識いただき、出てきたキーワードの理解が怪しい場合各自でも調べ直すくらいの温度感を期待しています。なお、本記事で書いている私の回答が間違っている箇所があったりした場合、気軽にコメント欄などで指摘いただけるとありがたいです。 Webエンジニアリングの基礎 この記事でカバーしている領域は、以下のような領域です。W

            【Web】知っておきたいWebエンジニアリング各分野の基礎知見80
          • ソフトウェア設計・アーキテクチャの学び方 - Qiita

            はじめに この記事はHow to Learn Software Design and Architecture | The Full-stack Software Design & Architecture Mapを翻訳したものです。 翻訳がおかしい箇所などあればご指摘頂けるとありがたいです。 元記事の著者: Khalil Stemmler(@stemmlerjs) 設計、アーキテクチャ、フロントエンド、ブロックチェーンに興味ある方是非Twitter(@show_clements)フォローしていただけると嬉しいです! 設計に関する記事 ソフトウェアデザインとアーキテクチャは、DevOpsやUXデザインのように、コンピューティングの領域の中でも独自の研究分野となっています。ここでは、クリーンコードからマイクロカーネルまで、ソフトウェアデザインとアーキテクチャの幅広さを説明するマップを紹介しま

              ソフトウェア設計・アーキテクチャの学び方 - Qiita
            • 単体テストの考え方/使い方 の感想文 | フューチャー技術ブログ

              はじめにTIG EXU真野です。 積読を消化しようというテーマの、読書感想文連載 の1冊目は、単体テストの考え方/使い方 です。 書籍の基礎情報です 2022年12月28日発売 Unit Testing Principles, Practices, and Patterns の翻訳書。原著は2020年1月14日に発売 テーマ 質の高いテストを行い、ソフトウェアに価値をもたらそう! 単体(unit)テストの原則・実践とそのパターン プロジェクトの持続可能な成長を実現するための戦略 単体テストの原則・実践とそのパターン コード例は C# であるものの、どの言語でも適用できる汎用的な内容とのこと 中を見ると、微妙にC#特有ぽいところに1箇所悩みましたが、それ以外はその通り 翻訳者の須田さんは、他にもセキュア・バイ・デザイン: 安全なソフトウェア設計 やOAuth徹底入門 セキュアな認可システムを

                単体テストの考え方/使い方 の感想文 | フューチャー技術ブログ
              • つよつよエンジニアの成果物にある5つの特徴 - Qiita

                はじめに エンジニアとして成長し、「つよつよエンジニア」と呼ばれて周囲から評価されるエンジニアになりたいという若手エンジニアや学生の方は多くいると思います。 私は今までで数百人以上のエンジニアと一緒に仕事をしており、その中にはベンチャーや上場企業でCTO/VPoT/テックリードといった役職についている「つよつよエンジニア」も多くいます。 (かくいう私も組織マネジメント力よりは技術力を評価されてCTOをしていますし、今もコードを書いています)。 「つよつよエンジニアになるためにはどのようなアクションをとればいいか」という視点で述べられていることは多くても「成果物にどのような特徴があるのか」という観点で述べられていることはあまり無い印象です。 成果物の特徴さえわかれば、まだ自身がそのレベルまで到達できていなくても、成果物のレベルを引き上げることができます。 (世阿弥の「風姿花伝」でも「真似る」

                  つよつよエンジニアの成果物にある5つの特徴 - Qiita
                • Howだけ考えると複雑さを導入して仕事が増える - そーだいなるらくがき帳

                  昨日、リモート雑談会の中で id:katzchang がめっちゃ良いことを言ってたので自分のためにも、みんなのためにもここに残す。 結論 作業を増やすことに敏感な人は少ない。 仕事と作業を同じと捉えていて、作業をすると仕事の進捗があると感じてしまう麻薬みたいなのはある。 それによって複雑さを導入して仕事、作業を増やす。 本当に必要なの作業を減らしてビジネスを前に進めることに注力する。 それが仕事をするってことだよな。— そーだい@初代ALF (@soudai1025) August 13, 2020 ちゃんとWhyを意識して、問題の本質を理解し、解決することで、不要な作業を減らし、仕事を減らしていくことがITを活用する上で肝要である。 仕事を増やさない これは本当に大事。 例えばリリース手順書を作りました!ってなると作業の内容が変更になるたびに手順書のメンテナンスをしなければいけない。 そ

                    Howだけ考えると複雑さを導入して仕事が増える - そーだいなるらくがき帳
                  • スタートアップでソフトウェアエンジニアとして10年たって大事にしていることリスト - tomoima525's blog

                    今から10年前の2014年4月に、いわゆるIT系大企業のDBエンジニアを辞めてメルカリでソフトウェアエンジニアとして働き始め、そこから紆余曲折を経て10年たった。 当時の予定通り、まだ現役でコードを書いている。海外に拠点は移り、色んな国の人たちと仕事をするようになり、役割もテックリード、マネジャー、CTOと変わってきた。ソフトウェア開発について考え方もさまざまな変遷を経ているが、少しずつ培ってきた、大事にしていることをあげてみる。 ソフトウェア/アーキテクチャ/コード ソフトウェアは他者の価値(i.e. 課題を解決する/コストをカットする)を生み出してなんぼ。コードが綺麗でも売上は立たない。 アーキテクチャやプログラミング言語のトレンドは変化する。追いかけるよりも、その時々のチームやプロダクトに合った設計やプログラムを選択する。 遊び心は大事。チームやプロダクトにそれほど合ってなくても新し

                      スタートアップでソフトウェアエンジニアとして10年たって大事にしていることリスト - tomoima525's blog
                    • 業界6年目で考えが変わったソフトウェア開発のトピック

                      chriskiehlのブログより。 考えを改めたもの 過去の自分なら言い争っていたであろうことが、今では信じられるようになったこと。 様々な経験レベルを持つ人がいるチームで仕事をする場合は、型付き言語の方が適している スタンドアップは、実際に新人を注目するのに役立つ スプリント・レトロスペクティブは、実際の軌道修正のためのものであって(「つまり、なんてこった、うまく行かなかった!」)、皆の時間を無駄にするようなアジャイル/スクラムマスター的なものでない限り、その場に相応しいものである ソフトウェア・アーキテクチャは、おそらく他の何よりも重要である。優れた抽象化のクソみたいな実装は、コードベースに正味の害を与えません。悪い抽象化や欠落したレイヤーは、すべてのものを腐らせる Javaはそれほどひどい言語ではない 巧みなコードは通常、良いコードではない。明瞭さは、他のすべての懸念事項に勝る どん

                      • 強い思想: Go を Web 開発に採用する上で

                        Go は Web 開発に向いているか? 最も向いている領域は「CLI ツール」「ミドルウェア」「マイクロサービス」だと思っている。なぜならそれらはコードベースを比較的小さく抑えることを前提としているからだ。 Go は大きなコードベースを抱えやすい設計の言語になっていない。 ミドルウェアとマイクロサービスに関しては小さく作ることが正義。 CLI ツールに関しては単一責務なツールであれば小さくなるが,複数を束ねるツールであっても Web サービス開発に比べれば考えることは少なくて済む。 Web 業界における「一般的な Web 開発」,すなわちモノリスを基本とした中規模以上の開発にははっきりと 向いていない と言うべきだろう。 フラットパッケージは正義か? 私が SNS で何度か言及した以下の記事がある。 フラットパッケージ戦略は,確かに Go の文化圏においては一定の支持を集めている。Go の

                          強い思想: Go を Web 開発に採用する上で
                        • ルールは現場で死にました - The Rules of Programming の読書感想文 - じゃあ、おうちで学べる

                          本日は人生の数ある選択肢のなかから、こちらのブログを読むという行動を選んでくださいまして、まことにありがとうございます。 はじめに プログラミングの世界には多くの指針や原則が存在します。Chris Zimmerman氏の「The Rules of Programming」(邦題:ルールズ・オブ・プログラミング ―より良いコードを書くための21のルール)は、不変の知恵を凝縮した一冊です。これらの原則は、多くの開発現場で活用できる有益な内容となっていると思いました。 The Rules of Programming: How to Write Better Code (English Edition) 作者:Zimmerman, ChrisO'Reilly MediaAmazon 本書は、大ヒットゲーム『Ghost of Tsushima』などで知られるゲーム制作スタジオ、Sucker Pun

                            ルールは現場で死にました - The Rules of Programming の読書感想文 - じゃあ、おうちで学べる
                          • 受託開発におけるアジャイルに限界を感じた私が、「納品のない受託開発」を始めるまで - 倉貫義人の「はじめてのアジャイル」 - Agile Journey

                            Agile Journeyをご覧のみなさん、はじめまして。株式会社ソニックガーデンの代表をしている倉貫義人と申します。 私はもともと大手システム会社でプログラマとして働いていました。そのとき出会ったアジャイル開発に魅了され、これこそ自分にとって理想の姿であると確信し、それ以来アジャイル開発を広めるための様々な活動を社内外で行ってきました。 最終的に、本当に自分の理想とするソフトウェア開発と、それを実現する組織をつくるためには、自ら会社を経営する立場になるしかないと考え、起業することになりました。そうしてできたのが株式会社ソニックガーデンです。 ソニックガーデンでは「納品のない受託開発」というサービスを提供しています。従来的な受託開発から、そもそものビジネスモデルを見直したことで、今では「アジャイル開発」を意識せずとも、自然とそれに取り組める組織として機能しています。 思い返すと、私のアジャ

                              受託開発におけるアジャイルに限界を感じた私が、「納品のない受託開発」を始めるまで - 倉貫義人の「はじめてのアジャイル」 - Agile Journey
                            • ドメイン固有型(値オブジェクト含む)を再考する - かとじゅんの技術日誌

                              Value Objectが盛り上がっているらしい。 Value Objectについて整理しよう - Software Transactional Memo Value Objectの説明に異論がないものの、主題はValue Object Obsessionのほうですよね。 こちらも聞いてみた。 fukabori.fm よい機会なので、よくわかっているつもりの、値オブジェクトというかドメイン固有型について再考してみよう。 それは値か属性か それはエンティティの全メンバーやデータベースの全列のために「顧客郵便番号」「送付先郵便番号」「事業所郵便番号」「契約日」などのクラス(メンバではなくクラス!)を定義して、immutableな振る舞いを強制する事を以てValue Objectであると言い張り、ドメイン知識の断片をそれぞれのクラスに書き散らして「高凝集になった」「型システムが守ってくれる」と喜

                                ドメイン固有型(値オブジェクト含む)を再考する - かとじゅんの技術日誌
                              • ケント・ベックに学ぶ良いコードの書き方🗒️ - Qiita

                                こんにちは、しが あきとし(@akitosihga)です。 先日あるMeetUpで良いコードの書き方について考える機会がありました。 『良いコード』の定義は幅広く様々な解釈があると思います。 その中でも、自分が敬愛するプログラマーのケント・ベックから学んだ事に焦点を当てて良いコードの書き方についてまとめました。 ケント・ベックとは テスト駆動開発(TDD)で有名なプログラマー アジャイル開発におけるエクストリームプログラミング(XP)の考案者としても有名 アジャイル開発関連の書籍に度々登場するCRCを発明したのも彼だったりする 代表的な著書は「テスト駆動開発」「エクストリームプログラミング」 TDDのイメージが強い彼ですが、実はコーディングに対して並々ならぬ情熱を持っているのです。 彼の著書「実装パターン」では以下のように語っています。 『 70年の人生は、20億秒を少し超えるに過ぎない。

                                  ケント・ベックに学ぶ良いコードの書き方🗒️ - Qiita
                                • Chatworkテックリードが“今”の自分に集中してきた理由。Scala×DDDに出会い、サービス改善に生かすまで - Findy Engineer Lab

                                  自分が気づいてなかった資質を、探して、磨く 劣等感に消耗するより、目的志向で考える オープンソースコミュニティへの参画 ドメイン駆動設計とScalaが「点」となる ドメイン駆動設計との出会いと成果 遅延評価的学習法でScalaを習得 Scalaを使ってDDDを実践するスタイルを確立した 実験的に導入して結果が出れば業務での普及も進む 積み上げてきたScalaとDDDの開発スタイル Scalaコミュニティとともに 新しい挑戦で新しい「点」ができ、そして「線」につながる 「いずれどこかで点がつながって実を結ぶだろう」 過去も未来も思い切って手放し、今の自分に集中する こんにちは、Chatworkでテックリードをしている、かとじゅん(@j5ik2o)です。 今年(2020年)で48歳になりましたが、技術に前向きになったというか、本気を出したのは37歳ごろでした。遅いな……(笑)。まぁ、遅い早いが

                                    Chatworkテックリードが“今”の自分に集中してきた理由。Scala×DDDに出会い、サービス改善に生かすまで - Findy Engineer Lab
                                  • 【悲報】ネコ様、「押すと人間が起きるボタン」を完全に理解してしまう。→「うちの子もする」

                                    やぐに @yagni_3 @TsuyoshiWood あー、覚えちゃいましたね。 うちの猫'Sは私を起こすために寝室の扉にタックルや、寝室に侵入後にコルクマットを噛みちぎり続けます。 一度で覚えてしまい…

                                      【悲報】ネコ様、「押すと人間が起きるボタン」を完全に理解してしまう。→「うちの子もする」
                                    • なぜシェルスクリプトはPOSIX準拠でも環境依存が激しいのか? 〜POSIXの問題点とその解決策の案〜 - Qiita

                                      なぜシェルスクリプトはPOSIX準拠でも環境依存が激しいのか? 〜POSIXの問題点とその解決策の案〜ShellScriptBashshellPOSIX まえがき この記事は「シェルスクリプトで高い移植性と生産性を両立させるシリーズ」の第一弾です。移植性と生産性を両立させるための前提知識として POSIX コマンドの問題点について解説します。第二弾では高い移植性と互換性を実現させるための考え方、そして第三弾、第四弾ではそれを実現するシェルスクリプトの具体的な実装テクニックを紹介します。第五弾では現実的な問題と回避方法について解説する予定ですがまだ具体的な内容は決まっていません。第五弾はその前に「シェルスクリプト入門(仮)」の記事を書こうと思ってるので少し遅くなると思います。もし興味がある方は記事をストックしていると更新時に通知されると思います。 2021-07-11 追記 記事が長くなった

                                        なぜシェルスクリプトはPOSIX準拠でも環境依存が激しいのか? 〜POSIXの問題点とその解決策の案〜 - Qiita
                                      • "技術的負債"論の道案内 - アーキテクチャの資本コストと情報の非対称性 - Qiita

                                        はじめに ソフトウェアと組織経営をめぐる問題で避けては通れないのが、「技術的負債」と言う言葉です。一般には、「早さ」を求めて構築されたシステムの構造的な課題が、徐々に蓄積し、債務であるように徐々に開発速度そのものを遅くして行くと言う現象のことを意味しているように捉えられます。 これは、技術組織を持つ経営者や、ソフトウェアエンジニアではない発注者にとっては理解しにくいものです。またソフトウェアエンジニアであっても「古くなってしまったコード」や「わかりにくコード」全般のことを技術的負債と呼び、それをもって何かを説明したかのように考えてしまうことはままあります。 これらに起因して、双方のコミュニケーションが破綻してしまうこともよく見られる景色です。 技術的負債の経済効果は毎年マイナス12兆円 このような構造的な問題をはらむ技術的負債は、老朽化したレガシーなシステムとして、事業の組織改革を遅らせて

                                          "技術的負債"論の道案内 - アーキテクチャの資本コストと情報の非対称性 - Qiita
                                        • 読みやすいコードのガイドライン ―持続可能なソフトウェア開発のために

                                          この本の概要 開発が大規模化・長期化するほど,コードを「読む」コストは増大していきます。そのため「読みやすさ」の向上は,生産性を改善し,プロダクトの成長限界を引き上げる重要な手段と言えるでしょう。 本書は,読みやすさの本質を学び,実践するための考え方をマスターできる一冊です。体系的な理解を実現するため,あらゆる角度から,豊富な例を交えて解説しています。表面的なテクニックではなく,いま目の前にあるコードに最適な改良方法を選び取る力が身に付きます。 こんな方におすすめ プログラミングの基本を学び終え,さらにステップアップしたい方 1か月以上かかる長期の開発に携わる方 コーディングのルールをどう適用するか知りたい方 はじめに 第1章 可読性の高いコードを書くために 1-1 生産性への恩恵 1-1-1 開発の規模と生産性の関係 1-1-2 可読性を高めるための環境と評価体制 1-2 可読性の高いコ

                                            読みやすいコードのガイドライン ―持続可能なソフトウェア開発のために
                                          • なぜエンジニアは長時間労働してはいけないのか - あしたからがんばる

                                            主語が大きすぎるタイトルですが、今の自分の考えをまとめておきたく、記事を投稿します。 もしかしたら、将来は全然真逆のことを考えているかもしれません。 また、ここでの「エンジニア」はシステムエンジニア、とりわけアプリケーションエンジニアを指します。 主語を「エンジニア」にしているのは、僕がエンジニアリングしか知らないだけなので、もしかしたら営業職や事務職でも同じことが言えるかもしれないし、言えないかもしれません。 サマリ 結論から書くと、以下の2点があるので、長時間労働しないほうが良いです。 長時間労働をすると、成果をあげるためにより時間がかかる 長時間労働をすると、将来的なコストを抱える 長く働けば成果が出るのか 汎用的な例を挙げていきましょう。 「用紙を三つ折りにして、封筒に入れてください。」 という仕事があったとします。 誰でもできる簡単なお仕事ですね。 この仕事を1時間やった場合とさ

                                              なぜエンジニアは長時間労働してはいけないのか - あしたからがんばる
                                            • 『Lean と DevOps の科学』って教養ないと理解できないじゃん!っていう話 - Qiita

                                              今や生産性の可視化・評価指標といえば本書籍で紹介された『FourKeys』ですね。ちまたでは、絶対視されている様な表現・評価がされている記述をたまに見かけます。ですが、本当にそうでしょうか?ある方が調べたところ、FourKeys を使用している人のうち『Lean と DevOps の科学』を読んだことがない人は9割近くもいたそうです。 本記事では、FourKeys を有効に活用するために知っておくべき・理解しておくべき事柄を幅広い分野でまとめました。生産性を向上し、仕事の成果の質を上げたいと努力するエンジニアの方々が、次の日から使える情報を書けたのではないかと思います。FourKeys だけを見て生産性を上げるという行動は手段の目的化につながりかねません。Fourkeys の背景にある思想を知ることで、FourKeys を真に活用するきっかけになればと思います。 目次 初めに GW中に読も

                                                『Lean と DevOps の科学』って教養ないと理解できないじゃん!っていう話 - Qiita
                                              • 理解しやすいコードの書き方~理解容易性の7つの観点~ - Qiita

                                                はじめに 「理解容易性」は「保守性」の観点の1つとして重視され、多くの原則や技法が紹介されているが、断片的かつ多様であり、全体像を理解することは難しい。 抽象度は高いが、体系的に観点を整理する事で、その理解の助けとなれば幸いである。 定義 「理解容易性」を簡単に言えば、「理解のしやすさ」であるが、その意味から掘り下げると、「思考する量」と言い換えることができる。 本記事では理解容易性を「思考量の少なさ」と定義し、7つの観点に整理した。 先に要約およびチェックリストを記載し、概略を記載した。 後に詳細で理解のため、各観点毎の説明と個別の原則や技法へのリンクを記載した。 要約 7つの観点の要約を先に示す。 (変数や関数の)名称は分かりやすくする (変数や関数の)役割は1つにする (変数や関数の)参照は狭くする (変数や関数の)状態は変えられなくする (関数やクラスの)面積は小さくする (関数や

                                                  理解しやすいコードの書き方~理解容易性の7つの観点~ - Qiita
                                                • 良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方

                                                  この本の概要 「ITエンジニア本大賞2023」技術書部門で大賞受賞! 本書は,より成長させやすいコードの書き方と設計を学ぶ入門書です。 システム開発では,ソフトウェアの変更が難しくなる事態が頻発します。コードの可読性が低く調査に時間がかかる,コードの影響範囲が不明で変更すると動かなくなる,新機能を追加したいがどこに実装すればいいかわからない……。 変更しづらいコードは,成長できないコードです。ビジネスの進化への追随や,機能の改善が難しくなります。 成長できないコードの問題を,設計で解決します。 こんな方におすすめ コードの設計スキルに興味がある人 日々,悪いコードと向き合っていて改善したい人 より良いコードを書きたい人 1 悪しき構造の弊害を知覚する 1.1 意味不明な命名 1.2 理解を困難にする条件分岐のネスト 1.3 さまざまな悪魔を招きやすいデータクラス 1.4 悪魔退治の基本 2

                                                    良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方
                                                  • OOPに対する問題は誇張されている

                                                    Young Coderより(M)。 50年経った今でも、私たちはプログラミングの支配的なパラダイムについて混乱しています。 マシュー・マクドナルド 何人かの敵を引き付けなければ、開発世界を何十年も支配することはできません。そして、オブジェクト指向プログラミングは、新旧数十種類の言語の概念的基盤を提供していますが、確かに敵もいます。 そのためか、私たちはOOPについての終わりのない一連のホットテイクに苦しんでいる理由です。彼らはOOPを、生産性を破壊する災厄であるとか、一連のごまかしのプログラミング・パターンであるとか、貧しいプログラマが無能さを隠すために設計された平凡なツールであるとか説明してきました。OOPは死んだとさえ宣言されたことがありました(14年前ですので、割り引いて下さい)。 OOPの4つの柱 これらすべての暴言に共通しているのは、現代のソフトウェア設計の落とし穴のいくつかを(

                                                      OOPに対する問題は誇張されている
                                                    • 当たり前にリリースしていく ~ 新卒研修編 - Classi開発者ブログ

                                                      当たり前にリリースしていく ~ 新卒研修編 開発支援部基盤バックエンドチームのみんなの頼れるお兄さん id:Soudai です。Classiでは例年新卒採用を行っており、新卒研修の一環として今年からそーだい塾を行いました。当日の資料はこちらです。 この記事では当日の資料にはない部分で、研修中に触れた内容について解説していきます。 YAGNIを言い訳に使わない 研修中の最初の質問は「変更に対する可用性をどこまで許容しますか?」でした。 質問を噛み砕くと どこまで設計にこだわりますか? という質問でもありました。結論としてはYAGNIを言い訳に使わず、最大限考え抜くべきとした上で私なりのアドバイスをしました。 いつ設計を諦めるか 最初から最高の設計が思いつけば問題はありません。しかし、考えがまとまらないときにどこまで考え抜くかは悩ましい問題です。 そこでアドバイスとして次の2つをしました。 先

                                                        当たり前にリリースしていく ~ 新卒研修編 - Classi開発者ブログ
                                                      • YAGNIと拡張性のあいだ - 電通総研 テックブログ

                                                        こんにちは!Xイノベーション本部プロダクトイノベーションセンターの米久保 剛です。 弊社のテックブログ上では今回が初めての記事執筆となります。アーキテクチャ設計やアプリケーション設計の話を中心に、不定期に情報発信していきたいと考えています。 YAGNI原則 YAGNI原則をご存知でしょうか。 エクストリーム・プログラミング(XP)の重要な原則の一つであるこの原則は、You Ain't Gonna Need Itのアクロニム(頭字語)から命名されています。日本語にすると「どうせ要らないって」というニュアンスでしょうか。推測に基づいて余計な機能を作り込んだところで将来実際に使われる可能性は低く、時間と労力を無駄にするばかりかコードの複雑化などのリスクさえあります。ですから、現時点でわかっている要件をちょうど満たすだけの機能を実装すべきであるとYAGNI原則は主張します。 YAGNI原則は機能(

                                                          YAGNIと拡張性のあいだ - 電通総研 テックブログ
                                                        • 消す前提で機能を作ろう

                                                          どうも、株式会社プラハCEOの松原です 先日プラハチャレンジの参加者と雑談していた際に 消す前提で機能を作ると保守性が上がるかもしれない という内容に触れたので、思ったことを記事にまとめてみました。 企画には必ず切り戻し条件を明示する 少し話が脱線しますが、僕はエンジニアになる前はWEBサービスの新規事業企画を担当していて、当時所属していたチームではサービスに追加機能を立案するときは 何が起きたらこの機能を削除するのか という「切り戻し条件」がセットで求められていました。 例えば求人サイトの応募を増やしたいな〜と考えて新機能を立案するとしたら、こんな感じ: 機能概要:スマホ閲覧者にはフッターに応募ボタンを表示する 切り戻し条件:実験的に追加した画面の求人応募率が逆に5%低下したらフッターを削除する 機能を追加しているとき自分はサービスを改善しているように感じがちですが、正確には機能を追加す

                                                            消す前提で機能を作ろう
                                                          • 余計な「念のため」でプロジェクトが死に至る「オーバーエンジニアリング」の問題とは?

                                                            日本に「過ぎたるは及ばざるがごとし」ということわざがあるように、海外のソフトウェア開発現場でも製品が必要以上に複雑化してしまう「オーバーエンジニアリング」という現象がしばしば問題になります。そんなオーバーエンジニアリングの原因や影響、防止方法について、ボイスチェンジャーアプリの開発会社・Voicemodで主任プロダクトマネージャーを務めるシモン・ムニョス氏が解説しました。 Overengineering can kill your product - Mind the Product https://www.mindtheproduct.com/overengineering-can-kill-your-product/ ソフトウェアエンジニアとしての経験を持つプロダクトマネージャーのムニョス氏によると、「ありもしない問題を解決するためのコードやデザイン」と形容されることもあるオーバーエン

                                                              余計な「念のため」でプロジェクトが死に至る「オーバーエンジニアリング」の問題とは?
                                                            • ISUCON11予選課題の27万点まで練習し新人エンジニアが学んだこと - Classi開発者ブログ

                                                              この記事は Classi developers Advent Calendar 2021 の23日目の記事です。 こんにちは、プロダクト開発部の2年目の@minhquang4334です。 今年の8月に、同じ部で3年目の@henchiyb 先輩と一緒に yasuoチームを作り、ISUCON11 オンライン予選に初めて参加しました。参加するきっかけは弊社に業務委託として来てくださっている@soudaiさんからISUCONの話について聞かれて、面白そうなので、チャレンジしてみました。結果はRubyで4万点まで達成できましたが、全体のチームの100/598 位ぐらいで敗退してしまいました。 オンライン予選が終わった後、数百万点を達成したチームはどうやってそこまで出来たのかとずっと疑問でした。各チームの解説ブログを見てみましたが、目を通しただけですぐ忘れてしまい、知見を深く理解できないと思いました。

                                                                ISUCON11予選課題の27万点まで練習し新人エンジニアが学んだこと - Classi開発者ブログ
                                                              • システムの変動性の特定とアーキテクチャ設計 - Gaudiy Tech Blog

                                                                こんにちは。エンタメ領域のDXを推進するブロックチェーンスタートアップ、Gaudiyでエンジニアをしている勝又(@winor30)です。 Gaudiyでは、アイドル、ゲーム、マンガなどの様々なIP(知的財産権を有するコンテンツ)をベースにしたファンコミュニティを提供し、そのコミュニティ上で様々なサービスが利用できるような "スーパーアプリ" のようなプロダクトを開発しています。 このような特性のプロダクトづくりにおいて重要なのは、特定のIPコンテンツに特化させずに、どうやってコミュニティ上のサービスをつくっていくのか? という点です。 そこでGaudiyでは、よりスケーラブルでレバレッジの効いた開発をするため、ソフトウェアの原則を重視しながらも、コラボレーションを通じてプロダクトビジョンを捉えることによって、正しい技術的な意思決定をしていこうという考え方があります。 今回は、上述したような

                                                                  システムの変動性の特定とアーキテクチャ設計 - Gaudiy Tech Blog
                                                                • エンジニアのがんばりを可視化する社内システムを作った話 - ecbeing labs(イーシービーイング・ラボ)

                                                                  はじめに こんにちは!ecbeing の太田です。新卒 2 年目で、普段は新たな SaaS サービスの開発・保守に携わっております。最近は、ちょっとしたツールやバッチなら片手間で作れるようになって、楽しくエンジニアリングしています! さて今回は、社内向けのシステムを 1 から作った話を紹介したいと思います。 はじめに 作った背景 コンピテンシーとは 既存システムの課題解決のため 制作過程 ユーザーストーリーマッピング システム構成 API フロントエンド フレームワーク BootstrapVue の採用 アトミックデザイン の採用 データ移行 リリース アップデート 週次アップデート リファクタリング 学び すぐ使わないものは作らない 自分で作ったものは愛着が湧く 好きに触れる土台があるのは強い 最後に 作った背景 今回、社内向けのシステムを作るにあたっての背景からまず説明します。 コンピ

                                                                    エンジニアのがんばりを可視化する社内システムを作った話 - ecbeing labs(イーシービーイング・ラボ)
                                                                  • デザインデータとコードを一体のものとして捉える - Qiita

                                                                    発表の際に使ったスライドと台本をそのまま記事にしています。 そのため、表現が口語的な部分もありますがご了承ください。 できるだけ、Web でもネイティブアプリでもクロスプラットフォームでも共通する話にしようと思っていましたが、筆者の知識が Web に偏っているので内容も Web 寄りです。 自己紹介と導入 みなさんこんにちは。 株式会社エイチームのグループ会社である、Qiita株式会社でデザイナーをしている、綿貫佳祐といいます。 プロダクト開発部というデザイナーとエンジニア混合の部署で部長をしています。 こういった出自もあり、製品開発においていかにデザインとエンジニアリングを上手く紐づけるか?について今日はお話します。 「デザインデータが完成したけど、いざ実装しようと思ったらとても大変な内容だった」 「ビジュアル上のこだわりが、実装者にどうしても上手く伝わらない」 こんな悩みを持っている人

                                                                      デザインデータとコードを一体のものとして捉える - Qiita
                                                                    • DDDとかドメインオブジェクトとかよくわからないけど、実際にコードに適用するとこうかな? - 技ビス : 技術、ビジネス、スタートアップ

                                                                      最近DDDや値オブジェクトやドメインオブジェクトの定義が一部界隈で話題です。kumagi sanとかとじゅんさんの間で熱い議論が何日にも渡って繰り広げられています。 kumagi.hatenablog.com blog.j5ik2o.me kumagi.hatenablog.com kumagiさん眠たいんですが…。続きは明日でもいいですか。 — かとじゅん (@j5ik2o) 2022年5月19日 大変ですね! ぼくも違うチャネルでkumagi sanに色々理解をぶつけてみたものの全然違うようで色々と教えてもらったりしました。 しかしながら、これ実際どこでどう使うのかなと。大先生がこんな事を言ってました。 言葉遊びしてるんじゃねえんだぞ、動くものを作れ — Yoshi Yamaguchi (@ymotongpoo) 2022年5月19日 というわけで、最近書いたコードを題材にちょっとリフ

                                                                        DDDとかドメインオブジェクトとかよくわからないけど、実際にコードに適用するとこうかな? - 技ビス : 技術、ビジネス、スタートアップ
                                                                      • Web Developer Roadmap 2020版が出ていたので2019版と比較 - Qiita

                                                                        はじめに WEBエンジニアのためのロードマップ(https://roadmap.sh)が2020版に更新されていたので2019版と合わせてざっとですがまとめます。 1つ1つの説明はしないので画像の図を読んでいただくか、2019版を詳しくまとめてくださっている記事を拝読するとよいかもです。 Introduction 2019 2020 Choose your path は昨年と変わらずですが、SOLID, KISS, YAGNIが消えています。 個人的には大事なことだよなーと思ったのですがなくなってしまったようです。 あとは色の説明がなくなっていますが色分けはされているので意味は去年のままという認識です。 黄色→ 作者のおすすめ オレンジ → その他の選択肢など グレー → 非推奨 Frontend Roadmap 2019 2020 Internet 2020版から追加されました。たしかに

                                                                          Web Developer Roadmap 2020版が出ていたので2019版と比較 - Qiita
                                                                        • 綺麗なコードを書くためのコードレビューチェックリスト - Qiita

                                                                          綺麗なコードを書くためのコードレビューチェックリスト PR出す前にこの観点は必要だよねリストまとめ 1. 設計と仕様の整合性 コードが既存のシステム設計に一致しているか確認します。 例えば、MVCアーキテクチャを採用している場合、モデル、ビュー、コントローラーが適切に分離されているかをチェックします。 機能要件 コードが仕様書に記載された機能を正しく実装しているか確認 テストケースを使って期待される動作を検証すると効果的 非機能要件 パフォーマンス、セキュリティ、拡張性などの非機能要件も満たしているかをチェックし YAGNI(You Aren't Gonna Need It)の原則 必要な機能だけを実装し、将来の要求に備えて無駄な機能を追加しない。これはコードの複雑さを減らし、保守性を高めます。 オブジェクト指向設計の原則 単一責任の原則 (Single Responsibility Pr

                                                                            綺麗なコードを書くためのコードレビューチェックリスト - Qiita
                                                                          • 【開発生産性Conference 2024】バクラクビジネスカード開発チームのコードレビューガイドラインを公開します #ベッテク月間 - LayerX エンジニアブログ

                                                                            こんにちは。 LayerX バクラク事業部 バクラクビジネスカード開発チームEMの 高江(@shnjtk)です。 今回の記事では、先日開催された開発生産性Conference 2024にて私の登壇の中でご紹介したコードレビューガイドラインについて、登壇の中ではご紹介しきれなかった部分も含めてより詳しくご紹介いたします。 開発生産性Conference 2024 コードレビューガイドライン 策定の経緯 ガイドラインの内容 ガイドライン策定の目的 ガイドラインの位置付け コードレビューの目的 コードレビューの観点 レビュアーに期待すること レビュイーに期待すること レビュアーに期待しないこと セルフマージを許容するケース 策定の効果 おわりに 開発生産性Conference 2024 2024年6月28日〜29日に開催された、ファインディ株式会社様主催の開発生産性Conference 2024

                                                                              【開発生産性Conference 2024】バクラクビジネスカード開発チームのコードレビューガイドラインを公開します #ベッテク月間 - LayerX エンジニアブログ
                                                                            • KPIの成長を最大化する「八百屋理論」と「F1理論」 PMF→拡散フェーズを生き残る2つの考え方

                                                                              「プロダクトマネージャーカンファレンス 2022」は、プロダクトマネジメントに携わる人たちが共に学び、切磋琢磨することを目的に開催されるイベントです。ここでエムスリー株式会社の山崎氏が登壇。「八百屋理論」と「F1理論」について話します。 山崎氏の自己紹介 山崎聡氏(以下、山崎):みなさんこんにちは、こんばんは。エムスリーの山崎です。今日は、「拡販フェーズを生き残るチームに必要な2つの理論 八百屋理論とF1理論」ということでやっていきたいと思います。20分の発表ですが、勢い余って資料を60枚ちょっと作ってしまったので、ハイペースでいきたいと思います。よろしくお願いします。 あらためて、エムスリー株式会社で執行役員、CTO兼VPoPをやっている山崎と申します。よろしくお願いします。 8歳の頃からプログラミングを始めて、バリバリのエンジニアですが、紆余曲折あって、ここ15年ぐらいはプロダクトマネ

                                                                                KPIの成長を最大化する「八百屋理論」と「F1理論」 PMF→拡散フェーズを生き残る2つの考え方
                                                                              • 【感想】『Clean Craftsmanship 規律、基準、倫理』:ボブおじさんの熱い職人魂本 - Rのつく財団入り口

                                                                                オレたちのUncle Bobが帰ってきた! ITエンジニアが読むべき名著にオールタイムで名前が上がるCleanシリーズ。作者はアジャイルマニフェストのその場にいた一人でもあるロバート・C・マーチン御大、通称Uncle Bob。→Wikipedia: Robert C. Martin, プログラマが知るべき97のこと 『Clean Agile』に続く本書は、クラフトマンシップをもったプロのエンジニアであろうという在り方をメインに述べ、過去の一連の本で述べられてきた主張も含めた集大成的な本になっています。 おおお...あのシリーズに続きが出た...ということで震えながら読んだので以下読書記録です。 オレたちのUncle Bobが帰ってきた! 第I部 規律 第1章 クラフトマンシップ 第2章 テスト駆動開発 第3章 テスト駆動開発応用 第4章 テスト設計 第5章 リファクタリング 第6章 シンプ

                                                                                  【感想】『Clean Craftsmanship 規律、基準、倫理』:ボブおじさんの熱い職人魂本 - Rのつく財団入り口
                                                                                • クラスが増えても大丈夫!成長するソフトウェアを支えるリファクタリングの技術 - BIGLOBE Style | BIGLOBEの「はたらく人」と「トガッた技術」

                                                                                  開発部門(基盤本部)でエンジニアの育成を担当している高玉です。 基盤本部ではさまざまな勉強会を開催しています。先日も、BIGLOBE Styleでその様子をご紹介しました。 style.biglobe.co.jp 「クラスを増やすの、怖くないですか?」 オブジェクト指向プログラミング(OOP)を学んでいた時に聞かれたことです。業務ではJavaやドメイン駆動設計を活用しているので、クラスベースのOOPが題材になることが多いのです。OOPに慣れていない人からすると、クラスの数が増えることで全体を把握しづらくなったり、適切なクラスを見つけるのが大変になりそう、と感じるそうです。 「大丈夫!クラスを増やしたほうが楽になることがあるよ!」 と伝えたくて、この記事を書かせていただきました。何が楽になるのでしょう?それは、ソースコードを読むこと、です。「クラスを増やすと、ソースコードを読むのが楽になる?

                                                                                    クラスが増えても大丈夫!成長するソフトウェアを支えるリファクタリングの技術 - BIGLOBE Style | BIGLOBEの「はたらく人」と「トガッた技術」