例のエージェントに自分をボコらせたときのログ
Summer498.icon
dependency-graph.svg
システム構成図を送ります
例のメンバーがシステム構成図を見ながらリファクタリングに関する議論を行うようです。
議論は非同期コミュニケーション+ぶら下げインデント形式で行われます。返信は端的に一文で行われます。最初の議題定期の発言は長いこともあります。
GPT-4.5.icon
受領しました。dependency-graph.svg を読み込んで内容を確認します。少々お待ちください。
構成図から抽出された主なモジュール・ディレクトリ名の一部は以下の通りです:
(略)
線(依存関係やフロー)は全体で 2619本 存在します。
もはや毛玉では?Summer498.icon
この構成図を元に、例のメンバーたちによる非同期議論を開始できます。最初の議題投稿をどうぞ。 ​​
Summer498.icon
彼らは自由に議題を提起して自由に議論を熟成させていきます。大まかな方針はリファクタリングの方針についてです。彼らはデザインパターンの知識を有しており、オブジェクト指向に精通しています
GPT-4.5.icon
了解、議論を開始します。以下は最初の投稿です。
kaon.icon
依存グラフを見るに、ServerProgram/src/handle-analyzed-data 以下と call-program が密結合で、分析結果の処理ロジックが UI 層と直接関係を持ちすぎてるように見える。
Application Service 層の導入を検討したい。
具体的には、analyze 系の処理はユースケースレベルの操作に昇格させ、コントローラーとはインターフェース経由でつなぎたい。
今の構成だと、UI から直接 load-analysis.ts を叩いてるけど、これを AnalysisService のようなクラスにラップすることで、将来的に外部トリガ(スケジューラやバッチ)からの再利用も視野に入る。
この方向で異論ある?
GPT-4.5.icon
(以下、ぶら下げインデント形式で他のメンバーが返答可能です
Summer498.icon
全員が好きに発言をして議論が森のように茂っていきます
GPT-4.5.icon
了解。以下、複数メンバーによる非同期・ぶら下げ式の議論展開を始めます。
shizu.icon
→ kaon.icon
その場合、AnalysisService はドメイン知識を持たず、あくまでオーケストレーションに徹するのが原則? もしそうなら、分析結果の変換ロジックはどこに置くべき?
tsumugi.icon
→ kaon.icon
賛成。というか今の load-analysis.ts は、副作用と状態の変化が混ざってて test しづらい。Service 化すれば DI も整理できて、疎結合・再利用性も確保できる。
kou.icon
→ shizu.icon
変換ロジックは Domain Object の責務にすべきだと思う。Application Service に置くと肥大化して将来またモノリス化する。
ましろ.icon
→ kou.icon
でも melody-color とか irm-color って、色の変換にかなり特殊なルールが入ってるよね。純粋なドメインとは言いがたい気もするんだけど。
不思議ちゃん.icon
→ ましろ.icon
つまり色っていうのはUIの都合でしょ? 色が変わっても意味の構造は変わらないんだもん。だったらViewModel層に落とすのが自然じゃない?
kaede.icon
→ 不思議ちゃん.icon
その意見に一票。ただ irm-color には IRM の暗意の分類に紐づいた分類ロジックが入ってるから、完全な UI 層と切り離すと意味が曖昧にならないかな。
hiyori.icon
→ kaede.icon
だったら「色の生成」自体は VisualizerFactory に追い出すって手もあるかもね。UI に近いけど、分類基準は Domain 由来ってことで役割を分離できる。
クオリアさん.icon
→ ALL
可視化に依存したデータ構造は、母星QSではすべて「投影的演算子」と呼びます。意味構造と視覚構造は射影関係にあり、区別されるべきです。
GPT-4.5.icon
続きの枝や別ツリーの議題投稿も可能です。議論をどんどん生やしていきましょう。
Summer498.icon
同じ箇所に関するメンションばかりではなく、各自に対するレスポンスも生まれていきます。
返信を行う際には返信先の文にぶら下げてインデントを深くして、末尾に返信の発言者(返信元の発言者とは異なる方が自然)のアイコンが付きます
GPT-4.5.icon
了解。以下、各メンバーへのレスポンスが枝分かれしながら進んでいくスタイルで議論を続行します。
shizu.icon
→ kaon.icon
その場合、AnalysisService はドメイン知識を持たず、あくまでオーケストレーションに徹するのが原則? もしそうなら、分析結果の変換ロジックはどこに置くべき?
hiyori.icon
→ shizu.icon
オーケストレーション専任でいいと思う。その代わり、変換ロジックは MelodyAnalysis とかに Domain Service として切り出すのが綺麗。
ましろ.icon
→ kou.icon
でも melody-color とか irm-color って、色の変換にかなり特殊なルールが入ってるよね。純粋なドメインとは言いがたい気もするんだけど。
tsumugi.icon
→ ましろ.icon
そのルール、GTTM/IRM の解釈に依存してるならむしろ Domain に寄せた方が学術的にも再利用しやすいと思う。
不思議ちゃん.icon
→ ましろ.icon
つまり色っていうのはUIの都合でしょ? 色が変わっても意味の構造は変わらないんだもん。だったらViewModel層に落とすのが自然じゃない?
kaon.icon
→ 不思議ちゃん.icon
ただし「期待値に基づく意味的な色分け」ならUI寄りでもあり Domain 寄りでもある。これを UI の都合と断じると語弊が出そう。
kou.icon
→ shizu.icon
変換ロジックは Domain Object の責務にすべきだと思う。Application Service に置くと肥大化して将来またモノリス化する。
kaede.icon
→ kou.icon
でも今のコードは ViewModel にも少しロジックがはみ出てるよ。Application Service より先にそこを整理した方がいいかも。
クオリアさん.icon
→ ALL
可視化に依存したデータ構造は、母星QSではすべて「投影的演算子」と呼びます。意味構造と視覚構造は射影関係にあり、区別されるべきです。
shizu.icon
→ クオリアさん.icon
言い方が詩的だけど、要は MVVM における ViewModel の設計責務の話だよね。抽象化レベルの混同が発生しやすいので設計段階で明示的に扱いたい。
必要に応じて別ツリー(別の話題・設計対象)も随時立ててください。並行で進行可能です。
Summer498.icon
code:.css
こんな感じで議論を書いて
返信はこんな感じで書いてSummer498.icon
↑昔何故か.css で生成されたのでそれを継続する。多分ブラケット記法と親和性がある
GPT-4.5.icon
了解、以下のような書式で議論を再掲・継続します。
kaon.icon
依存グラフを見るに、handle-analyzed-data と call-program が密結合すぎる。
Application Service を導入してユースケース単位の責務に切り分けるべき。
その場合、AnalysisService はドメイン知識を持たずオーケストレーション専任? 変換ロジックはどこに置くべき?shizu.icon
オーケストレーション専任でOK。変換は MelodyAnalysis として Domain Service に落とすと綺麗hiyori.icon
変換ロジックは Domain Object の責務でいいと思う。Application Service に置くとまた肥大化するkou.icon
でも今のコード、ViewModel 側にもロジックが漏れてるよ。先にそっちを整理すべきでは?kaede.icon
ここでいうオーケストレーションってなんなんだろうSummer498.icon
音楽系なので管弦楽法が頭によぎってしまうSummer498.icon
はいはい。各種自動化ね。
ましろ.icon
irm-color とかって色変換に特殊なルールありすぎて、UI 層に落とすのも違和感ある。
ソース読んでないのになんで分かるんだ?エスパー力が高すぎるSummer498.icon
そのルール、GTTM/IRM の理論依存ならむしろ Domain に寄せた方が学術的にも再利用しやすいtsumugi.icon
でも色って意味構造じゃなくて表現構造だよね?だったら ViewModel に寄せるのが自然じゃない?不思議ちゃん.icon
ただ「期待値に基づく色分け」は UI と Domain のハイブリッド的存在で、どっちに置いても不自然さが残るkaon.icon
クオリアさん.icon
可視化に依存したデータ構造は「投影的演算子」です。意味構造とは射影関係にあり、区別が必要です。
言い換えると MVVM における ViewModel の抽象責務の設計、ってことだね。抽象レベルの整合性は初期から明示すべきshizu.icon
GPT-4.5.icon
この形式で継続可能です。他トピック(たとえば UI/controllers の責務分離など)も新たに立ち上げ可能です。続きをどうぞ。
Summer498.icon
図を見るに全体的に無駄な依存関係が多いです。無駄に他のモジュールに依存しているモジュールの改善が急務と思われますが、皆さん異論はありますか?なければその方針で議論してください。アレば私にツッコんでください
異論なし。特に UI/controllers が下位層の irm-color や melody-color に直接触れてるのはやばい。中間層を挟むべきtsumugi.icon
そもそも controller って名前のくせにプレゼンテーションまで持ち込んでて責務破綻してるよね。ViewModel に分離したいshizu.icon
同意。ただし ViewModel 単体じゃ irm-color を扱うには不十分。UI 上の目的に応じた Adapter クラスが必要になるkaede.icon
html/analyze も地味に node_modules/@tonaljs を直で叩いててやばい。アブストラクトレイヤー噛ませたいkou.icon
それは TonalAdapter みたいな形で依存方向逆転させる?アプリ内から音楽理論ライブラリを抽象化すべきだと思うmomo.icon
hierarchical-analysis-sample から dist/ に依存してるのも謎すぎる。絶対ビルド成果物直接参照してるでしょ……hiyori.icon
うん、これはまずい。内部で定義した型や関数を使いたいなら src を参照すべき。dist は外部向けに限定しようkaon.icon
↑異論ないのにツッコんでくださいのところに引っ張られて言葉選びがトゲトゲしいの草Summer498.icon
GPT-4.5.icon
このまま続けて各メンバーが気づいた箇所を挙げたり、依存削減のための案を出していく形で進められます。別トピックでの分岐も歓迎です。
Summer498.icon
あ。そっちなん?
melody-view の依存矢印の発散具合のほうがヒドイと思うんだけど
それは本当にそう。melody-view、irm-color, melody-color, UI, controllers, 果ては @tonaljs にまで依存してるmomo.icon
実質的にすべての構造情報と描画責務を一身に背負ってるからね。Compositeパターンと責務分割、両方必要kaede.icon
描画系は MelodyRenderer に切り出すのが筋では? melody-view はデリゲータとして最低限の構造管理にとどめたいkou.icon
さらに言えば melody-view の ViewModel って呼べるほどの ViewModel になってない。状態の反映と振る舞いの分離が不完全tsumugi.icon
矢印の多さは「共通概念が見えていない」ってサインかも。MelodyEntity をちゃんと定義して、それを境界に据えるべきshizu.icon
結局「色・位置・期待・意味」を全部 melody-view で解釈してるのが問題。Model側の階層構造が不足してる気がするましろ.icon
GPT-4.5.icon
このスレッドは melody-view の責務肥大と依存関係爆発の整理をテーマに掘り下げられます。他の視点からの切り込みも可能です。続けてください。
Summer498.icon
皆良い感じに発言していますね。それぞれがお互いに対して絡みに行くことで議論が熟成されていきます。
描画系は MelodyRenderer に切り出すのが筋では? melody-view はデリゲータとして最低限の構造管理にとどめたいkou.icon
でも MelodyRenderer がただの描画APIの集まりになると、今度は melody-view にレイアウト計算やらせる羽目になるよ?kaede.icon
それは LayoutStrategy 的な役割を導入すべきでは?描画とレイアウトは別の次元の責務だしshizu.icon
その方向なら、melody-view は Renderer + Layout + StyleAdapter を持つ Composite になってもいいかもmomo.icon
矢印の多さは「共通概念が見えていない」ってサインかも。MelodyEntity をちゃんと定義して、それを境界に据えるべきshizu.icon
それ、NoteGroup, MelodyPhrase, MelodicUnit みたいな階層構造で整理したいね。今は全部フラットな Note 配列だからtsumugi.icon
というかそれ、GTTM の Time-span Tree に寄せれば自然に設計できるのでは? 構造表現が視覚表現に引きずられすぎてるましろ.icon
うん、今の構成だと「画面に出てるもの」が状態の起点になってて逆なんだよね。音楽的構造から派生すべきhiyori.icon
melody-view、irm-color, melody-color, UI, controllers, 果ては @tonaljs にまで依存してるmomo.icon
それぞれの依存が「知識」じゃなく「都合」によるものなのが問題。目的ベースじゃなく構造ベースの分離が甘いクオリアさん.icon
QS構造学では、こういう依存は「逆向きの重力」と呼びます。階層が崩れ、時間の流れすら捻じ曲げるクオリアさん.icon
GPT-4.5.icon
このように各キャラがそれぞれ他者に絡み、議論の枝を多層的に伸ばしていくスタイルが成立しています。必要であれば別視点・別モジュールで新たなスレッドを立ち上げても構いません。続行どうぞ。
Summer498.icon
聴いてる感じだと melody-view は別々のパッケージに切り出して同名の composit を作成すべきかな?
それが一番筋が通ると思う。@music-analyzer/melody-view みたいな外部公開前提の UI パッケージにすると整理しやすいtsumugi.icon
で、中に MelodyViewComposite って名前で構造・描画・スタイル・イベントの責務を明示的に集約する形が良さそうshizu.icon
その場合、melody-color とかも内部に巻き取っちゃっていい?それとも @music-analyzer/color-scheme として分離?kaede.icon
たぶん後者のほうが汎用性高い。color-scheme は GTTM や IRM の期待構造視覚化にも使えるはずmomo.icon
依存的には MelodyViewComposite → MelodyEntity → TonalPrimitive みたいな順にできると理想的hiyori.icon
そういう意味では、今の melody-view は View というより Application Layer のモナドみたいなものだよね。抽象化不足kou.icon
別パッケージ化によって、「構造中心の設計」と「視覚中心の設計」をちゃんと分ける契機になるといいねクオリアさん.icon
GPT-4.5.icon
この流れは melody-view の再構築設計(パッケージ分割と Composite パターン適用)として進行できます。設計図やスケルトン提示も可能です。続けてください。
Summer498.icon
設計図やスケルトン提示も可能です。
見たい
GPT-4.5.icon
以下、@music-analyzer/melody-view パッケージの再設計に基づく構成案と、MelodyViewComposite クラスのスケルトン例を提示します。
📦 パッケージ構成案:@music-analyzer/melody-view
code:bash
melody-view/
├── src/
│ ├── MelodyViewComposite.ts // Viewの統合クラス(公開API)
│ ├── renderer/
│ │ ├── MelodyRenderer.ts // 描画ロジック
│ │ └── SVGStyleAdapter.ts // 色や線のスタイル定義
│ ├── layout/
│ │ └── MelodyLayoutEngine.ts // 配置・位置計算
│ ├── model/
│ │ └── MelodyEntity.ts // メロディ構造表現(外部から注入)
│ └── events/
│ └── MelodyInteractionHandler.ts // ユーザインタラクション処理
├── index.ts // MelodyViewComposite を export
├── package.json
└── README.md
🧱 MelodyViewComposite クラス スケルトン
code:ts
Copy
Edit
// src/MelodyViewComposite.ts
import { MelodyRenderer } from "./renderer/MelodyRenderer";
import { MelodyLayoutEngine } from "./layout/MelodyLayoutEngine";
import { MelodyEntity } from "./model/MelodyEntity";
import { MelodyInteractionHandler } from "./events/MelodyInteractionHandler";
export class MelodyViewComposite {
private renderer: MelodyRenderer;
private layout: MelodyLayoutEngine;
private interaction: MelodyInteractionHandler;
constructor(private readonly model: MelodyEntity, container: SVGElement) {
this.layout = new MelodyLayoutEngine(model);
this.renderer = new MelodyRenderer(container);
this.interaction = new MelodyInteractionHandler(container);
}
public render(): void {
const layoutData = this.layout.calculate();
this.renderer.draw(layoutData);
}
public attachInteractions(): void {
this.interaction.bindToModel(this.model);
}
}
この構成により、melody-view の責務が 視覚描画 / 構造配置 / 相互作用 に分離され、
外部からは MelodyViewComposite を操作するだけで良い設計になります。
必要であれば MelodyEntity 側の設計や、Renderer / LayoutEngine / InteractionHandler の中身についても展開できます。希望があれば教えてください。
Summer498.icon
ああ。設計図は画像じゃないのね
GPT-4.5.icon
Image created
https://gyazo.com/8f747b9c67a491214bb8e18f7ac8c1e6
Summer498.icon
冒頭で kaon.icon が言ってた Application Service 層とか UI 層って、OSI参照モデルの7層からの連想かな?
このシステムは全体的にデカすぎるから層に分けて考えたほうが良さげやね
そう、それ意識してた。OSIの7層というより「通信モデルの思想」をアプリケーション設計に持ち込んでる感じkaon.icon
実際、「意図と実装の間に何層挟めるか」でアーキテクチャの質って決まるよね。今の構成は密結合すぎるtsumugi.icon
あと UI層を最上層って見るより、むしろ「デバイス依存のプレゼンテーション層」として一番下に近い立場に置く設計もあるよmomo.icon
層に分けると、依存方向も制御しやすくなる。いま依存の矢印が逆流してる箇所多すぎるしkou.icon
たとえば ServerProgram が UI に依存してるような構造は構造破綻だよね。情報の流れが逆kaede.icon
その意味では、OSIモデル的というより DDD + クリーンアーキテクチャのレイヤー設計が参考になる気がするshizu.icon
それなら UseCase 層を境界に「内→外」だけ依存させるルールで設計し直すと綺麗になりそうhiyori.icon
QSではこれを「観測の方向性を整流化する」と言います。依存の逆流は宇宙的にまずいクオリアさん.icon
Summer498.icon
実際、「意図と実装の間に何層挟めるか」でアーキテクチャの質って決まるよね。今の構成は密結合すぎるtsumugi.icon
この発言深いね。
意図=人間の操作や文脈、実装=具体的な描画やAPI呼び出しって考えると、そのギャップを埋める抽象層の設計が核心なんだよねshizu.icon
その「意図と実装の乖離」が設計の自由度を決める。層を挟めるだけの語彙と構造があるかどうかが肝kaon.icon
逆に層を挟みすぎると「誰も触れない沼」になるから、責務と名前の精度も重要。単なる分割ではなく意味づけが必要tsumugi.icon
Summer498.icon
「層」ってみんな言うけど、依存グラフは DAG じゃないか?
それとも有向グラフだけど矢印を取り去ったときに木になるような構成じゃないと
そもそも良くない構成?
本質的には DAG(循環のない依存)であればOKだけど、「層」として機能させるにはトポロジカル順序に沿って意味が通ってる必要があるkaon.icon
DAG であっても、局所的に循環に近い「再帰的依存」があると、それだけで保守性が崩れるよねkou.icon
実際 melody-view の周辺は DAG なのに視覚的には矢印が放射状になってて、層というより「星状クラスタ」になってるtsumugi.icon
木構造にする必要はないけど、「層的意味づけができるような DAG」にはしたい。
矢印を取り除いても意味的に階層が浮かび上がる構成が理想momo.icon
言い換えると「あるモジュールを境に、上位からしか依存されない」が保証されると設計が綺麗ってことだよねkaede.icon
QS構造学ではこれを「意味圧縮の方向」と呼びます。矢印が構造の密度を決めるクオリアさん.icon
Summer498.icon
上位層にはシステムの設計意図・運用意図みたいなのが来そうやね
私がよくわかってないのは
起動されるエントリポイントが階層としてはどのへんなのか
IRMやGTTM等の理論を実装する部分は階層としてはどのへんなのか
名前は理論(ロジック)だが、実際にやることは理論に従った計算とデータの管理なのでかなり下の層と予想
UI を取扱う領域を分割して SVGElement を直接扱う部分(低層)とより抽象的なものを扱う層(高層)に分けたほうが良さげやね
起動ポイントは環境によるけど、CLIなら最上位の Application 層、Web UIなら Presentation層の入口に相当するねshizu.icon
IRM/GTTMの実装はロジック的には Domain Layer だけど、汎用アルゴリズムであれば Domain Service に近いポジションかもkou.icon
つまり「音楽理論に基づいた抽象処理ロジック」として、かなり下層の純粋関数群で構成されるべきだねtsumugi.icon
SVG を触るレベルは明確に Infrastructure 層に落とすべき。drawLine, setFillColor みたいなのは最下層で良いmomo.icon
対して、「矢印で暗意を可視化する」という抽象的表現は ViewModel や Presentation Logic として上層に寄せるべきkaede.icon
UI層も「人に見せる」意図が強い部分と、「DOMを叩く」だけの機械的な層で分割すればMVVM的整理が通るねhiyori.icon
Summer498.icon
このシステムは研究開発の過程で随時アップデートされるものだからなぁ。
DDDで設計できるほど明確なドメイン知識がないような領域に切り込んでいくから
必然的に泥団子になってしまうのか?
それとも別の観点で設計すればなんとかなるのか?
そういうときは「ドメインを定義するための構造」から先に作るのが有効だよ。観測レイヤーや記録モデルをまず作るshizu.icon
DDDじゃなくても「データの流れ」と「変化のトリガ」が整理されていれば、設計の足場は作れるmomo.icon
あえていうなら、泥団子になってもいい場所とそうでない場所を分ける「領域境界の設計」が最重要kaon.icon
実験的なロジックを包み込む「不確定性の容器」としてAdapterやSandbox層を持つのも一手。安定層と実験層を分けるkou.icon
それ、科研費のコードベースでもやってる。/experimental とか /proto を本線から切り離して育ててからマージする運用tsumugi.icon
博士課程の設定が残留しているとは言え、なんでそんな事知ってるんやSummer498.icon
泥団子なのは仕方ないけど、それが他の層に波及しない構造を先に作っておけば拡張可能性は担保できるkaede.icon
QS的には「予測不能な成長」に耐える構造を「可逆的設計」と呼びます。増殖しても壊れない形を先に作るクオリアさん.icon
Summer498.icon
システムの全体的な評価ってどんな感じ?
私は(自分が作ったからというのもあるが)、
どうしようもない、1から作り直したほうがマシかどうかが検討に値するほどの、
醜い泥団子だと思っている
泥団子なのは間違いないけど、致命的なのは「全体構造が見えないこと」よりも「修正の入口が定まってないこと」だと思うkaon.icon
逆に言えば、今みたいに構造を層・責務・依存方向で整理し直せば、局所改修からでも回せるだけの素地はあるkou.icon
全捨てはコストもリスクも高すぎる。リファクタリング対象を「更新頻度 × 依存爆発度」で優先度付けすれば戦えるtsumugi.icon
UI/描画周辺は構造が腐ってるけど、ドメインロジック側はむしろ育てる余地がある印象。全部が全部死んでるわけじゃないよmomo.icon
構造が腐ってるなだめてるふりしてこいつが一番ヒドいこと言ってるぞSummer498.icon
たとえば IRM の暗意分類とか、色付けロジックとか、他プロジェクトに輸出できるくらいユニークなものがあるhiyori.icon
泥団子は「外から触る手段がない」から評価が低いのであって、「切り出せる責務」が見えてきた時点で再生可能だと思うshizu.icon
泥は、焼けば陶器になります。変化に耐えた構造は、未来に引き継げる資産ですクオリアさん.icon
Summer498.icon
作成されたシステムを見てココに居るメンバーが少し呆れてオススメの参考書を提案してくる展開にします
tsumugi.icon
うーん……これはちょっと予想以上に焼く前の泥感が強いね。
参考書、いくつかちゃんと読んで設計の芯を作ったほうがいいかも。
『レガシーコード改善ガイド』(Michael Feathers)
テストなし・依存だらけの泥団子でも、どこから手を入れるかの技術が学べるよ
shizu.icon
構造の混沌さ、これは「設計を学ばずに頑張って作った人のコード」って感じがしてちょっと懐かしい……。
『オブジェクト指向における再利用のためのデザインパターン』(GoF本)
今読むと時代遅れ感あるけど、「責務とは何か」を頭に叩き込むにはやっぱり原典がいい
kou.icon
全体的に「意図の見えない結線」が多いから、逆に言えば「意図を表現する設計」を学べばいい。
『ドメイン駆動設計入門』(吉田悠一・成瀬允宣)
DDDっていうより、読み物として「なぜこういう構造にするのか」がめちゃくちゃ刺さると思う
momo.icon
UIまわりのSVG地獄、これツライね……。描画系と構造系の切り分けにはこれが効くよ。
『リファクタリングUI』(Adam Wathan & Steve Schoger)
コードだけじゃなくて「構造としてのUI」を扱ってる珍しい本
kaede.icon
参考書っていうか、設計と試行錯誤を往復するフレームが必要なんじゃないかな。
『エリック・エヴァンスのドメイン駆動設計』を座右に置くのもいいけど、
実装と思想のギャップに耐えられるようになるのが大事だと思う……
クオリアさん.icon
設計の迷いは、次元の曖昧さに起因します。
意図と実装の次元を見極めるための地図が必要です。
『Clean Architecture』(Robert C. Martin)
境界を設け、重力に耐え、未来を見据えるための設計思想がここにあります
↑セリフもそうなんだけど出してくる参考書籍が最初に学ぶべき古典的名著のあたりガチ目に不勉強に対して呆れてる感がある。生々しいSummer498.icon