概要
LikeC4 は、C4 モデルにインスパイアされたモデリング言語およびツールセットで、コードから常に最新のアーキテクチャ図を直接生成でき、コラボレーションとアーキテクチャの進化をサポートします。CLI、VS Code 拡張機能、リアルタイムプレビューサーバーを提供します。
README プレビュー
# Architecture as a code\n\nVisualize, collaborate on, and evolve your software architecture with always up-to-date, live diagrams generated from your code.\n\n[docs](https://likec4.dev/) - [playground](https://playground.likec4.dev/) - [demo](https://template.likec4.dev/view/index)\n\n \n\n\n\n\n\n\n## What is LikeC4? Why "like"?\n\nLikeC4 is a modeling language for describing software architecture and tools to generate diagrams from the model.\n\nLikeC4 is inspired by [C4 Model](https://c4model.com/) and [Structurizr DSL](https://github.com/structurizr/dsl), but provides some flexibility.\nYou customize or define your own notation, element types, and any number of nested levels in architecture model.\\nPerfectly tailored to your needs.\n\n## What does LikeC4 look like?\n\nLikeC4 source:\n\n\n \n\n\nRun [CLI](./packages/likec4/README.md) to preview:\n\n```sh\nnpx likec4 start\n```\n\nAnd result:\n\n\n \n\n\nTemplate repository - [likec4/template](https://github.com/likec4/template)\\nDeployed - [https://template.likec4.dev](https://template.likec4.dev/view/index)\n\n[](https://stackblitz.com/~/github.com/likec4/template)\n\nCheck [Tutorial](https://likec4.dev/tutorial/) - for a quick overview of LikeC4.\n\n## Getting help\n\nWe are always happy to help you get started:\n\n- [Join Discord community](https://discord.gg/86ZSpjKAdA) – it is the easiest way to get help\n- [GitHub Discussions](https://github.com/likec4/likec4/discussions) – ask anything about the project or give feedback\n\n## Contributors\n\n\n \n\n\n[Become a contributor](./CONTRIBUTING.md)\n\n## Support development\n\nLikeC4 is a MIT-licensed open source project with its ongoing development made possible entirely by your support.\\nIf you like the project, please consider contributing financially to help grow and improve it.\\nYou can support us via [OpenCollective](https://opencollective.com/likec4) or [GitHub Sponsors](https://github.com/sponsors/likec4).\n\n## License\n\nThis project is release
FAQ (5)
トラブル対応インポートされた2つの兄弟要素間のリレーションシップで発生するLikeC4のエラー "Layout validation failed: Element @owner not found" を修正するにはどうすればよいですか?
この問題は LikeC4 CLI 1.59.3 および 1.59.4 に影響します。@owner.a や @owner.b のようなインポートされた要素を接続すると、commonAncestor() がプロジェクト名前空間 @owner をモデル要素として誤って扱います。
暫定的な回避策: 両方の要素を実際の親要素の下に配置し、その親をインポートしてください。
owner/model.c4 内:
model {
system platform {
system a
system b
}
}
consumer/model.c4 内:
import { platform } from 'owner'
model {
platform.a -> platform.b "Example relationship"
}
views {
view example {
include platform.a, platform.b
}
}
恒久的な修正: packages/core/src/utils/fqn.ts で、単一の @namespace セグメントが祖先として返されないように commonAncestor() を更新します:
if (
ancestor.length === 0 ||
(ancestor.length === 1 && ancestor[0]!.startsWith('@'))
) {
return null
}パッチ適用済みのビルドを使用するか、PR "fix(core): ignore project namespace in commonAncestor of imported elements" を含むリリースにアップグレードしてください。次のコマンドで確認します:
npx likec4 validate --project consumer . --jsonトラブル対応LikeC4ビジュアルエディターがdynamic viewの外側に重複したstyleルールを挿入してしまう問題を修正するにはどうすればよいですか?
LikeC4 v1.59.4 以降にアップグレードしてください。このバグは、ビューの閉じ括弧の前にスタイル変更を挿入するように language-server で修正されました。アップグレード後は、周囲の views ブロックから重複した style ブロックを削除し、編集した dynamic view 内のルールのみを残してください。例:
dynamic view example {
user -> app
style app {
shape mobile
}
}
v1.59.3 での一時的な回避策として、ビジュアルエディターを使用する前に、style user {} のようなローカルスタイルルールを dynamic view 内に追加してください。これにより、その後のスタイル挿入はビュー内に保持されます。
トラブル対応LikeC4の要素詳細ダイアログで、長いメタデータ値が切り詰められず、値全体を表示するツールチップが表示されないのはなぜですか?
値のグリッド列は 1fr を使用しており、これは minmax(auto, 1fr) に解決されます。white-space: nowrap がある場合、その最小幅はテキスト全体の幅になるため、列は値を切り捨てる代わりに拡張してしまいます。packages/diagram/src/overlays/element-details/ElementDetailsCard.tsx のグリッドを修正するには、値の列を minmax(0, 1fr) に変更します:
gridTemplateColumns: 'min-content minmax(0, 1fr)'
また、packages/diagram/src/overlays/element-details/MetadataValue.tsx のメタデータ値ラッパーに minWidth: 0 を追加し、切り捨てスタイルは維持します:
{
minWidth: 0,
overflow: 'hidden',
textOverflow: 'ellipsis',
whiteSpace: 'nowrap'
}
これにより、列がコンテンツ幅より小さく縮小できるようになり、長い値に対して scrollWidth > clientWidth が true になり、ホバーツールチップが有効になります。短い値は変更されません。この修正後にツールチップがダイアログの背景の後ろに表示される場合は、ポータルツールチップの z-index を <dialog> と背景より上に引き上げてください(#3256 に関連)。
トラブル対応LikeC4のdynamic viewのステップで、relationship kindのデフォルトタイトルが表示されないのはなぜですか?
これは LikeC4 1.59.3 におけるバグです: リレーションシップ kind のデフォルトの technology はダイナミックビューのステップに適用されますが、デフォルトの title は適用されません。修正 fix(core): apply relationship kind default title to dynamic view steps を含むリリースにアップグレードしてください。回避策として、ステップでタイトルを明示的に繰り返し指定してください:
gatewayService2 -[discover]-> discoveryServer ':8761'
明示的な ':8761' がない場合、修正版を使用するまでタイトルはレンダリングされません。
トラブル対応LikeC4 の HTML エクスポートがダイナミックビューの "variant: sequence" 属性を無視してダイアグラムビューを表示してしまう問題を修正するにはどうすればよいですか?
これは、エクスポートされたSPAが初期レンダリング時にURLの dynamic パラメータをデフォルトで diagram に設定し、ビューに設定された variant: sequence を上書きしてしまうために発生します。
一時的な回避策: エクスポートされたHTMLを明示的なクエリパラメータを付けて開きます:
index.html?dynamic=sequence
URLにすでにクエリ文字列が含まれている場合は、次のようにします:
index.html?...&dynamic=sequence
ローカルのシングルファイルエクスポートの場合は、例えば次のように開きます:
file:///absolute/path/to/index.html?dynamic=sequence
恒久的な修正: 「初期レンダリング時にdynamicビューのvariantを尊重する (respect dynamic view variant on initial render)」という修正を含むLikeC4リリースにアップグレードし、再ビルドします:
npx -y likec4@latest build -o "./html" --output-single-file