タグ

設計に関するnunulkのブックマーク (50)

  • 0063 号 巻頭言

    DDD を理解したいあなたのための DDD 入門以前 Rubyist Magazine 63 号をお届けする。 突然のお知らせで恐縮だが、日 Ruby の会の主たる事務所が東京から北海道に移転した。それもあってあまりまとまった時間がとれず、11 月のうちに書くはずだったのが気がつくと 12 月も半ばを過ぎていたので、今回は以前書きかけていた文章を発掘してお茶を濁したい。 Ruby とは直接関係がなくて恐縮だが、Ruby に限らずソフトウェア開発では現在でもちょくちょく話題になることがある、DDD についての話である。 ドメイン駆動設計こと DDD は 2020 年代のソフトウェア開発でもよく話題にされるが、率直に言うとストレートにポジティブな評価が行われているとは言い難い。 どちらかというと、ある種マニアックで、対象分野が制限されており、また初心者にはとっつきにくいところがある手法と思わ

  • “A Philosophy of Software Design” を30分でざっと理解する / Understand roughly "Philosophy of Software Design" in 30 minutes

    NTT Communications の社内ランチ勉強会 (TechLunch) で講演した資料です。

    “A Philosophy of Software Design” を30分でざっと理解する / Understand roughly "Philosophy of Software Design" in 30 minutes
  • 【日本人エンジニア必携】英語命名規則の決定版 - Qiita

    弊社Nucoでは、他にも様々なお役立ち記事を公開しています。よかったら、Organizationのページも覗いてみてください。 また、Nucoでは一緒に働く仲間も募集しています!興味をお持ちいただける方は、こちらまで。 はじめに 英語での適切な命名は、コードの可読性や保守性を向上させるために重要です。適切な命名規則を守ることがコードの理解や共有において不可欠です。 英語での命名規則を学び、適切な命名を行うことで、コードの読みやすさや保守性を向上させ、チーム全体でのコードの理解を促進する手助けとなります。 この記事では、日エンジニア英語での命名規則を理解し、適切な命名を行うための指針を提供します。 命名フローチャート 変数 関数 クラス 1. 変数 1-1. boolean 1-1-1. 存在するかどうかのフラグ 名詞 + exists

    【日本人エンジニア必携】英語命名規則の決定版 - Qiita
    nunulk
    nunulk 2023/12/25
    show + 名詞はどうかなぁ、visible 使ってほしい
  • private 関数にもテストを書きたいとき

    「private 関数にはテストを書かない」というのが多数派だと思う。だが昨日、仕事で In-source testing を書いていたらふと private 関数にテストを書きたくなった。そこで、In-source testingができる環境下でもprivate 関数にテストを書くべきかを X で聞いてみたら何か盛り上がっていた。 (In-source Testing: https://vitest.dev/guide/in-source.html) 反応を見る限り、やはり「private 関数にはテストを書かない」の方が主流だった。Kent Beck先生の http://shoulditestprivatemethods.com を紹介するツイートにもそういった反応が寄せられていた。(ぶんぶんさん、教えてくれてありがとうございます。) (このサイト面白すぎますよね・・・) 自分の立場を

    private 関数にもテストを書きたいとき
    nunulk
    nunulk 2023/08/25
    自分もおおむねこういう意識“「private 関数にテストを書いても良いよ」”
  • 凄腕エンジニアさんから学んだ例外の話 - Qiita

    はじめに 今携わっているプロジェクトで凄腕エンジニアさんと一緒に開発をさせていただいているのですが、その凄腕エンジニアさんから教えていただいた例外の話がとても勉強になり、 さらにこの例外の話を他のプロジェクトエンジニアさんに伝えたところ、反応が良く、とても勉強になりました!という声をいただけたので、アウトプットしていきたいと思います。 (この記事の中で凄腕エンジニアさんのことはTさんと呼ぶことにします。) ※【凄腕エンジニアさんから学んだ例外の話】の補足 というQiita記事を書きました。 この記事を読み終わった後に疑問が残った人などは補足資料として読んでいただけると嬉しいです。 例外の考え方の源 Tさんの例外の考え方は http://diveintopython3-ja.rdy.jp/your-first-python-program.html#exceptions ↑こちらのPyth

    凄腕エンジニアさんから学んだ例外の話 - Qiita
    nunulk
    nunulk 2023/06/27
    意外と賛否両論なのでブクマ
  • デザインパターン〜とかアーキテクチャ〜〜とか・・・に行く途中の話

    こんにちは、NE会社で働いておりますきんじょう(@o0h_)がお送りします。 弊社ではPHPを用いてアプリケーション開発を行っています(Ruby, Go, Javaも領域によっては利用しております) さて、つい先日のことですが、社内にいるメンバーから「デザインパターンについて、勉強してみてるんだけど・・・」「ちょっとついていくのが難しくて」「どうしたらいいですかね?それとも、先にやっておくべきことが他にありますか?」なんて雑談をしました。 なるほど、コレは頻出質問になりそうだな・・・という気持ちにもなったので、今回はこの場を借りて「デザインパターン[1]、その前に〜個人的に思ったことをツラツラと〜」でお届けしていきたいと思います。 「デザインパターンを(から)勉強してみる」ことの、オススメ/オススメナイ いちおう、今回は「リーダブルコードくらいは読んでいる」「デザインパターンの勉強をしてい

    デザインパターン〜とかアーキテクチャ〜〜とか・・・に行く途中の話
    nunulk
    nunulk 2023/06/13
    こういう意識で学ぶ人が増えるといいなと思う、目的を忘れてパターンを当てはめたいだけの人けっこういるので
  • 「Amazonでさえサーバレスやマイクロサービスを理解できない」とDHH氏が主張する一方で、「進化可能なアーキテクチャこそ重要」とAmazonのVogels博士

    Ruby on Railsの作者として知られるDavid Heinemeier Hansson(DHH)氏が自身のブログに5月4日付けで投稿した記事「Even Amazon can't make sense of serverless or microservices」(Amazonでさえサーバレスやマイクロサービスを理解できない)が話題になっています。 これはAmazon Prime Videoの技術部門が3月に自社ブログに投稿した記事「Scaling up the Prime Video audio/video monitoring service and reducing costs by 90%」(Prime Videoの音声映像監視サービスにおけるスケールアップと90%のコスト削減の実現)で紹介された、AWS Lambdaのサーバレスで作られたPrime Videoの監視サービス

    「Amazonでさえサーバレスやマイクロサービスを理解できない」とDHH氏が主張する一方で、「進化可能なアーキテクチャこそ重要」とAmazonのVogels博士
    nunulk
    nunulk 2023/05/15
    "「there is not one architectural pattern to rule them all」(すべてを支配する1つのアーキテクチャパターンはない)"
  • 現実世界におけるスキーマ設計の妥協

    ビジネスとエンジニアリングの接合点 そしてコード品質がそこに及ぼす影響 v1.1 / The Intersections of Business and Engineering, and The Impact of Code Quality There (v1.1)

    現実世界におけるスキーマ設計の妥協
  • DDD Demystified ~結局DDDとは何なのか?何でないのか?~ #phperkaigi_reject

    PHPerKaigi2023 リジェクトコンで発表するスライドです。 エリック・エヴァンスの『ドメイン駆動設計』日語版から11年。後発の書籍も多数出版され、各カンファレンスでDDDについて話す人も増えてました。PHPerの中にも実際にDDDで開発する(?)・DDDを実践する(?)人や組織も増えてきたと思います。 約10年前、まだPHPerでDDDを学ぶ人が少なかった頃から、私はPHPメンターズの指導を受けてDDDを読み、楽しみながら・苦しみながらDDDを意識して開発してきました。コードサンプルを交えながら、実際にやってきた中で学んだこと、世間のDDDに対する言説に対して思うことについてお話しします。

    DDD Demystified ~結局DDDとは何なのか?何でないのか?~ #phperkaigi_reject
    nunulk
    nunulk 2023/03/17
    入力は西暦にしてほしい、和暦パッと出てこないし、表示のときだけ和暦表記が必要ならフォーマッタだけあれば済むし
  • バックエンドの設計で直したほうが良いコード9選

    バックエンド兼インフラエンジニアのrevenue-hackです! 今回は今までバックエンドエンジニア10年くらいやってきて、「これはまずいなー」と思ったコードについて紹介していきます。 ↓記事はこちらに移しました!↓

    バックエンドの設計で直したほうが良いコード9選
    nunulk
    nunulk 2023/03/14
    「コントローラーにデータ取得処理も実装している」のは別に問題なくて、往々にしてデータ取得のロジックの詳細が記述されてしまうのが問題だけど、例示されてるコードは問題ないように思う
  • ラーメンの構造に学ぶ、コード設計 - そこに汎用性はあるんか (≠Rahmen編)

    プログラムを使ってある仕様を実現するとき、多くの場合、そこに"唯一の答"はありません。 同じ仕様、機能を実現するコードにも多様性があります。 プログラミングにおいてしばしば問題になるのが、「その様々なコードのうち、どのコードを選んで実装するか?」ということです。 とりあえず機能が実現されるという点においてはどのコードを選んでも同じであっても、その後の保守性や拡張性などにおいて、自分がどんなコードを選んで書くか という事は重要です。 今の時点では正しく動作しているコードであっても、可読性や拡張性などの観点でクソコード、悪いコードなどと揶揄される場面がしばしば見受けられます。クソコードというのはかなり強い言葉で、あまり良い言葉だとは思わないですが、その言葉を発する人からすると、どうしてもそう言いたくなるような問題があるのでしょう。 ところで、同じ労力で悪いコードを避けて実装できるのであれば、そ

    ラーメンの構造に学ぶ、コード設計 - そこに汎用性はあるんか (≠Rahmen編)
    nunulk
    nunulk 2023/02/05
    つけ麺はラーメンに入りますか?
  • 美しいコードは“シンプルで無駄がない” イケてるエンジニアが大事にする「良いコード」「良いアーキテクチャ」とは

    エンジニアはプログラミングの力で世界を変えることができる 篭橋裕紀氏(以下、篭橋):ありがとうございます。他に質問したい方はいますか? 次のところのほうがもう少し詳しくいろいろな話が聞けるかなと思うので、そしたらテーマ2に。城倉さんお願いします。 城倉和孝氏(以下、城倉):じゃあテーマ2ですね。先ほどのコースが3つあります。じゃあそれになるためにまずどうしたらいいのかという話ですが、みなさんはエンジニアなので、やはりエンジニアとしてそれなりに大成するということは大事だと思います。 例えば、「VPoEになります」と言っても、やはりエンジニアの気持ちがわからないとマネジメントもできないですよね。だから、まずは「イケてるエンジニア」を目指してほしいなというのがテーマ2になります。 今わりと「エンジニアが不足してる」という声もありますが、なんでかという話を少し話すと、まず時代背景があります。DX

    美しいコードは“シンプルで無駄がない” イケてるエンジニアが大事にする「良いコード」「良いアーキテクチャ」とは
    nunulk
    nunulk 2023/01/17
    無駄の定義にもよるけど、each に比べて select, map のほうが無駄(パフォーマンス的に)って考えもあるし、filter_map とどっちがシンプルと感じるかとか
  • 名前空間をさっくり理解する - Qiita

    名前、つけてますか? PHPにはnamespace(名前空間)という言語機能があります。 原初のPHPにはなかったのですが、PHP 5.3くらいからあるので、まあ平安時代には成立していたということです。それ以前の時代は App_Http_Controllers_User のような _ 区切りの擬似名前空間が用いられていたことがありました。現在では App\Http\Controllers\User のような \ 区切りの名前空間が利用できます。 名前空間付きのコード 名前空間が見慣れないという方のためにnamespaceのあるコードとしてLaravelで自動生成したControllerファイルの例を先に出しておきます。 <?php namespace App\Http\Controllers; use App\Models\Book; use App\Http\Requests\Store

    名前空間をさっくり理解する - Qiita
    nunulk
    nunulk 2022/12/17
    クラス名に関しては、自分は原則的に短いほうで書くけど、コンテキスト内で同一単語が多用されることが予想されるならプレフィックスを付けるようにしてる
  • 不幸を再生産しないための設計に対する向き合い方

    「オープンセミナー岡山2022」のイベント登壇で用いた資料です。 https://okayama.open-seminar.org/

    不幸を再生産しないための設計に対する向き合い方
    nunulk
    nunulk 2022/08/20
    "チームビルディングなくして設計は上手くいかない"
  • 良いコード/悪いコードで学ぶ設計入門の感想と注意点

    「良いコード/悪いコードで学ぶ設計入門」というがとても売れているようです。私の所属している開発チームでも、何人か購入した人がいたので、私も購入して一通り読んでみました。 結果として、いくつかの考えが整理され、私としてはこのによって考えが深まり、を読んで考えた事自体は有意義であったと思いました。ただし一方で、あまり知識がない状態で(自分の中での判断軸が無い状態で)このを読むと、色々と誤解が生まれるのではないか?という事を感じました。 一つの技術書がこれだけ売れるという事はそんなに多くはない事だと思うので、つまり、 その内容が改善されるとその効果は相対的に大きい という事になります。そこで、私がを読んでいて思ったことや、このの内容で正しいこと、現在も賛否両論とされること、事実として認識が間違っているであろうこと、こので触れられていないが設計において大事なこと、などについてまとめて

    良いコード/悪いコードで学ぶ設計入門の感想と注意点
    nunulk
    nunulk 2022/08/06
    "つまり、「Domain Primitiveを使おう!」という事は、新機能の機能的な設計そのものには全く寄与しないのです。"
  • なぜオブジェクト指向方法論に代わる方法論が出ないのか - きしだのHatena

    1990年代にオブジェクト指向分析・設計の方法論がめちゃ流行ったことがあります。 ただ、そのブームが終わって、後続となるような方法論が流行ることはありませんでした。 で、なぜなのか考えていたのですけど、オブジェクト指向方法論のウリは分析段階で出てきたオブジェクト(といいつつクラス)がコードにそのまま引き継がれるというものでした。ようするにオブジェクト指向方法論というのはコードのスケッチを書いて詳細化していくというものだったのです。 しかしながらこれは、スケッチとして書いた分析・設計が間違っていればコードも間違うわけで、強くウォーターフォールの性質をもつものでした。 結局のところスケッチの妥当性というのはコードを書かないと検証ができません。分析・設計段階で見出されたクラスが妥当かというのは、コード書かなければわからなかったのです。逆に、コードを書けば妥当かどうかわかります。であれば、最初から

    なぜオブジェクト指向方法論に代わる方法論が出ないのか - きしだのHatena
    nunulk
    nunulk 2022/08/05
    自分は、パラダイムは適材適所だから、原理主義的なパラダイムありきの方法論は意識しなくなってきてる
  • 設計の考え方とやり方

    #asken_dev「設計の考え方とやり方」勉強会 https://asken.connpass.com/event/254709/ ・良い設計は悪い設計より変更が楽で安全である ・ドメインモデル方式のクラス設計 ・イミュータブル方式のテーブル設計 ・設計スキルの身につけかた ・設計のためのモデリング

    設計の考え方とやり方
    nunulk
    nunulk 2022/08/04
    スナップショットの情報取得はマテリアライズド ビュー使ってるんだろうか、それとも毎回クエリ書いてるんだろうか
  • ドメイン駆動設計の源流のPofEAAを読んでみる | フューチャー技術ブログ

    最近、ドメイン駆動設計(以下DDD)とかそのあたりを読みこんでいる人から、DDDの読み方を教えてもらいました。ここではDDDはエリック・エヴァンスのドメイン駆動設計の方を参照しました。 @katzchang さんから教わったのは「DDDはパターンランゲージの形式を意識してるよ」ということでした。ただし、きちんとしたパターンランゲージの形式になっておらず、記述が著者のものになってるので、読者は注意して読む必要があるのかもとのことです。 @ryoaitaさんから教わったのは「DDDはエンタープライズアプリケーションアーキテクチャパターン(以下PofEAA)を下敷きにしているだよ」ということでした。 DDDももう時代的にはかなり古いです。自分で読んだ限りは全然好きになれなくて、でもきっと何かあるはずだと3-4冊読んでみましたが感想は変わらずでした。ユビキタス言語も「当たり前のものを先頭に

    nunulk
    nunulk 2022/06/10
    "つまり、ドメインを表現しない値オブジェクトとか、エンティティなんてものはないぞ、という誤解を生み出す源泉はこの魔改造にありそうです。"
  • ソフトウェア設計について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
  • Service Objectがアンチパターンである理由とよりよい代替手段(翻訳)|TechRacho by BPS株式会社

    近年、RailsアプリにService Objectを追加するメリットを説く記事が次から次へと量産されています。私は記事において、それがなぜ正しくないかを述べたいと思う次第であります。もっとよい方法はあるのです。 私はこれまで、Service Objectに関するネット上の議論にときおり参加しては、問題に対するまっとうな解決方法としてService Objectが正しくない理由について繰り返し見解を述べてきました。実際、私は多くの場合においてService Objectよりもっとよい解決方法があると考えるのみならず、Service Objectはオブジェクト指向設計原則への配慮が損なわれている兆候を示すアンチパターンとして取り扱っています。 このような深遠なポイントを細切れのツイートやコメント欄を追って理解するのは大変です。そこで私は、私の見解を正確に表すいくつかの現実的なコードを詳しく

    Service Objectがアンチパターンである理由とよりよい代替手段(翻訳)|TechRacho by BPS株式会社
    nunulk
    nunulk 2022/05/21
    "本質的には関数であるものがぎっしり詰まったapp/servicesフォルダを見て心が折れるくらいなら、"