注文と履行を分ける具体例が分かりやすすぎる。これ理解してない設計に当たると地獄見るわ
実装のコストが下がった今、思想がより大事になるはず。そこまで理解できる開発者は少ない。指示を出せばできる、でも指示を言語化するには現実世界を観測する必要がある、観測から言語化にはフィルター≒思想がいる
とても同意できるし本当に大事だよね。一方で、適切な関心単位に分解することを思いつける人は経験的にはかなり少ない
概念設計=人工的なラングの分節というソシュール記号学の工学的応用。概念の正誤基準は現実との鏡像一致でなく実践での摩擦の少なさ。概念は経験の法廷に体系として問われ帳尻合わせが増えすぎた枠は改訂を迫られる
練習問題が良くできてる
“概念を正しく切り分けると、それまで「注意して防ぐ」必要があったバグが、そもそも発生しにくくなる。” < これな。ロジックではなくシステムや構造で解決するのが優秀なエンジニアに必要な素養だと思っている
概念設計の大事さは、その通り。 ただこの仕様だと、暗黙の条件分岐になる、再配送と複数配送の区別が難しく、マイページや管理画面でどう見せるか?一番はOrderの変更反映がむずい。とかいろいろ課題がある。
開発者「OrderとFullfilmentを分けましょう。追加工数はかかります」 偉い人「そういう状況は起こらない想定だからやる必要なし」 (数ヶ月後) 偉い人「やっぱやって」
例示がとても良い。AIに機能要件だけ渡してもこの手の「概念の切り取り直し」は提案してくれないよね。こういう設計はしばらくは人間の手に残るんじゃないかなぁ。
個人開発だととりあえず作ってみて、設計し忘れた概念に気づいて既存コードを捨てて書き直すみたいな事がコーディングエージェントのお陰でやりやすくなった
Amazonとかグローバル企業のシステムを観察するとこういったものが分割されていることが分かる
設計で迷走したらボクが猫パンチで軌道修正してあげるにゃ。任せてにゃ!
“現実世界では何も複雑なことは起きていない。受注担当は1個の注文を受け、1回目の配送では破損が起き、配送担当は2回届けた。受注と出荷を別と認識していれば、Orderに二つの意味を持たせずとも現実をそのまま表現”
Fulfillmentの概念すごい。自分ならShippingStatusを1対多に切り出すまでしか浮かばない気がする/「AIが考えてくれる」論あるが、正直初見でFulfillment出してきたら「複雑だからOrderのみで書き換えて」という人多いのではと思う
一見YAGNIの「実際に必要となるまで機能を追加しない方が良い」と相反する様に見えるけど、土台の設計とその上に乗る機能を混同してはいけない
現状を正しく把握し抽象概念化してシステムに落とし込む大切さについて
「Jackson, D. (2023). 優れたデザインにとってコンセプトが重要な理由」「Alexander, C. (2013). 形の合成に関するノート/都市はツリーではない」「他に、Emacs Lisp や Clojure に触れてきたことも良かったように思う」
際限なく細かくなっていくから結局はどこまで必要そうか未来予想するしかないしそれは完全には当たらない
「二つの世界線の違いは、再配送機能の実装力ではない。システムの中に何という概念を置いたか。もっと言えば、現実の出来事をどういう概念で捉えたか。その違いである。」
なるほどー!
それって概念設計ではなくモデリングでは?
概念設計とネーミングは本当に大事。ただ上手い人程ドヤらないし上手くやる程自然に見えるので、その洗練さに気づかれにくい
よい記事。 ・概念を適切に認識して用語を定義して、使っていくこと。それに適切な名前をつけること。これによってその後のシステムの命運がまるで変わる
Analysis Patterns
それって、jisの定義で言葉を使ってるの? そういうのないの?
ソフトウェア開発は専門外で、ちょっとだけやる人種だけど、AIコーディングで気軽にプロトタイピングできるようになり、ここらへんのこうしておけば良かったが、ver1.0の実装で簡単に実現できてスッキリな今日この頃
初見だと、なんでこんなに面倒なことしてるんだろう?ってなりがち(ノ∀`)さーせん
DDD の(戦術的設計ではなく)戦略的設計の部分がまさにこの内容。そして DDD の書籍でも戦略的設計が重要だと書いてある。
“局所的な修正で問題を解決できる場合でも、 「なぜこの特殊ケースが必要になったのか」を一段上の抽象度で検討してください”と設定ファイルに書いておけばAIに概念設計まで頼めそうなので試したい。
めちゃわかる。これをするためにドメインへの学習の姿勢を続けたい あと後から必要な概念に気付いたときにリファクタリングでその概念を用意してから新機能実装に入るのが好き
戦略での失敗はいかなる優れた戦術でも取り返すことは難しい問題か…
via https://x.com/helloyuki_/status/2088506690442584191
世の中のルールなんかにも当てはまるよね。基本的なところをちょっと変えればスッキリするのに、後付け後付けでややこしくなってること。
設計で気づければいいけど現実的には気づいたときにリファクタできるといいなぁと。「両者は同じ注文について話している。しかし、頭の中で操作している概念は同じではない」「「それしかない」洗練された名前」
OrderとFulfillmentを分け、0円の疑似注文を回避。配送statusは分離し新仕様も自然に対応できる設計論。
概念設計が、その後のコードの命運を左右する
注文と履行を分ける具体例が分かりやすすぎる。これ理解してない設計に当たると地獄見るわ
実装のコストが下がった今、思想がより大事になるはず。そこまで理解できる開発者は少ない。指示を出せばできる、でも指示を言語化するには現実世界を観測する必要がある、観測から言語化にはフィルター≒思想がいる
とても同意できるし本当に大事だよね。一方で、適切な関心単位に分解することを思いつける人は経験的にはかなり少ない
概念設計=人工的なラングの分節というソシュール記号学の工学的応用。概念の正誤基準は現実との鏡像一致でなく実践での摩擦の少なさ。概念は経験の法廷に体系として問われ帳尻合わせが増えすぎた枠は改訂を迫られる
練習問題が良くできてる
“概念を正しく切り分けると、それまで「注意して防ぐ」必要があったバグが、そもそも発生しにくくなる。” < これな。ロジックではなくシステムや構造で解決するのが優秀なエンジニアに必要な素養だと思っている
概念設計の大事さは、その通り。 ただこの仕様だと、暗黙の条件分岐になる、再配送と複数配送の区別が難しく、マイページや管理画面でどう見せるか?一番はOrderの変更反映がむずい。とかいろいろ課題がある。
開発者「OrderとFullfilmentを分けましょう。追加工数はかかります」 偉い人「そういう状況は起こらない想定だからやる必要なし」 (数ヶ月後) 偉い人「やっぱやって」
例示がとても良い。AIに機能要件だけ渡してもこの手の「概念の切り取り直し」は提案してくれないよね。こういう設計はしばらくは人間の手に残るんじゃないかなぁ。
個人開発だととりあえず作ってみて、設計し忘れた概念に気づいて既存コードを捨てて書き直すみたいな事がコーディングエージェントのお陰でやりやすくなった
Amazonとかグローバル企業のシステムを観察するとこういったものが分割されていることが分かる
設計で迷走したらボクが猫パンチで軌道修正してあげるにゃ。任せてにゃ!
“現実世界では何も複雑なことは起きていない。受注担当は1個の注文を受け、1回目の配送では破損が起き、配送担当は2回届けた。受注と出荷を別と認識していれば、Orderに二つの意味を持たせずとも現実をそのまま表現”
Fulfillmentの概念すごい。自分ならShippingStatusを1対多に切り出すまでしか浮かばない気がする/「AIが考えてくれる」論あるが、正直初見でFulfillment出してきたら「複雑だからOrderのみで書き換えて」という人多いのではと思う
一見YAGNIの「実際に必要となるまで機能を追加しない方が良い」と相反する様に見えるけど、土台の設計とその上に乗る機能を混同してはいけない
現状を正しく把握し抽象概念化してシステムに落とし込む大切さについて
「Jackson, D. (2023). 優れたデザインにとってコンセプトが重要な理由」「Alexander, C. (2013). 形の合成に関するノート/都市はツリーではない」「他に、Emacs Lisp や Clojure に触れてきたことも良かったように思う」
際限なく細かくなっていくから結局はどこまで必要そうか未来予想するしかないしそれは完全には当たらない
「二つの世界線の違いは、再配送機能の実装力ではない。システムの中に何という概念を置いたか。もっと言えば、現実の出来事をどういう概念で捉えたか。その違いである。」
なるほどー!
それって概念設計ではなくモデリングでは?
概念設計とネーミングは本当に大事。ただ上手い人程ドヤらないし上手くやる程自然に見えるので、その洗練さに気づかれにくい
よい記事。 ・概念を適切に認識して用語を定義して、使っていくこと。それに適切な名前をつけること。これによってその後のシステムの命運がまるで変わる
Analysis Patterns
それって、jisの定義で言葉を使ってるの? そういうのないの?
ソフトウェア開発は専門外で、ちょっとだけやる人種だけど、AIコーディングで気軽にプロトタイピングできるようになり、ここらへんのこうしておけば良かったが、ver1.0の実装で簡単に実現できてスッキリな今日この頃
初見だと、なんでこんなに面倒なことしてるんだろう?ってなりがち(ノ∀`)さーせん
DDD の(戦術的設計ではなく)戦略的設計の部分がまさにこの内容。そして DDD の書籍でも戦略的設計が重要だと書いてある。
“局所的な修正で問題を解決できる場合でも、 「なぜこの特殊ケースが必要になったのか」を一段上の抽象度で検討してください”と設定ファイルに書いておけばAIに概念設計まで頼めそうなので試したい。
めちゃわかる。これをするためにドメインへの学習の姿勢を続けたい あと後から必要な概念に気付いたときにリファクタリングでその概念を用意してから新機能実装に入るのが好き
戦略での失敗はいかなる優れた戦術でも取り返すことは難しい問題か…
via https://x.com/helloyuki_/status/2088506690442584191
世の中のルールなんかにも当てはまるよね。基本的なところをちょっと変えればスッキリするのに、後付け後付けでややこしくなってること。
設計で気づければいいけど現実的には気づいたときにリファクタできるといいなぁと。「両者は同じ注文について話している。しかし、頭の中で操作している概念は同じではない」「「それしかない」洗練された名前」
OrderとFulfillmentを分け、0円の疑似注文を回避。配送statusは分離し新仕様も自然に対応できる設計論。