
TOPOS-Ξ を学ぼう!その7「他人の手柄も横取りするべき」オープンソースはジャイアニズム?
「他人のふんどしで楽して仕事がしたい。さらにコピペみたいなダサいこともしたくない。」
TOPOS-Ξでは、ファイル間の参照と依存関係を管理するための仕組みがあります。`import`と`export`の機能を使用して、他のファイルで定義された`space`、`shape`、`mapping`を参照できます。
実際の例で見てみましょう:
// blackboard.xi
space Blackboard {
properties {
continuous: Topology<Boolean> = true
dimension: Topology<Number> = 2
}
shape Surface {
properties {
width: Number
height: Number
clean: Boolean = true
}
// エクスポートする機能を明示
export mapping clean_surface() {
properties {
continuous: Boolean = true
}
path {
verify_state ->
perform_cleaning ->
verify_cleanliness
}
}
}
// このshapeをエクスポート
export shape Content {
properties {
text: String
position: Vector2D
}
}
}
// classroom.xi
// 他のファイルからの参照
import { Surface, Content } from "blackboard.xi"
space Classroom {
properties {
continuous: Topology<Boolean> = true
dimension: Topology<Number> = 3
}
// インポートしたSurfaceを使用
shape ClassroomBoard extends Surface {
properties {
mounted: Boolean = true
content: Collection<Content> // インポートしたContentを使用
}
mapping write_content(text: String, pos: Vector2D) {
path {
verify_position(pos) ->
clean_surface() -> // インポートした機能を使用
add_new_content(text, pos)
}
}
}
}
重要なポイント:
エクスポートの方法
`export`キーワードを使用
shape、mapping、typeなどをエクスポート可能
部分的なエクスポートも可能
インポートの方法
`import`文をファイル先頭で使用
中括弧`{}`で必要な要素を指定
相対パスまたは絶対パスでファイルを指定
依存関係の管理
循環参照を避ける
明確な依存関係の階層を維持
バージョン互換性の考慮
このように、ファイルを適切に分割し、必要な機能を参照することで、より管理しやすく、再利用可能なコードを書くことができます。
汎用性の高い写像をたくさん作って(他人様から譲り受けて)、組み立てる。あぁ、楽しいな、クラフトライフ!