D2
نشط ومستقريعمل محلياً ✓بدون اشتراك APIحوّل وصف بنية النظام إلى رسوم تلقائية قابلة للمراجعة في Git والتصدير إلى SVG وPNG وPDF وPPTX.
brew install d2الاستخدام المثالي لهذه الأداة
يناسب مطورًا أو فريقًا صغيرًا يريد إبقاء رسوم المعمارية وتدفق البيانات قريبة من المستودع وقابلة للمراجعة كنص. استخدمه عندما تكون العلاقات أهم من التموضع بالبكسل؛ ولا تختَره لتصميم تسويقي حر أو تحكم يدوي دقيق بكل عنصر.
التفاصيل والميزات المصورة
ترسم بنية نظامك مرة، ثم تتغير خدمة أو علاقة وتبدأ الصورة بالابتعاد عن الواقع؟ D2 يحوّل الرسم إلى ملف نصي يمكن مراجعته مع الكود في Git، ثم يرتب العقد والعلاقات تلقائيًا ويصدره بصيغ مناسبة للتوثيق والعرض. فائدته العملية ليست «صورة أجمل» فقط؛ بل مصدر رسم واضح يستطيع فرد أو فريق صغير تعديله ومراجعته وإعادة إنتاجه دون سحب كل مربع يدويًا.
🧭 ما D2 وكيف ستستخدمه؟
D2 لغة وصف للرسوم وأداة سطر أوامر مفتوحة المصدر. تكتب أسماء المكونات والعلاقات في ملف امتداده .d2، ثم تشغّل الأمر d2 لإنتاج SVG افتراضيًا أو صيغة أخرى مدعومة. الأداة ليست محررًا رسوميًا سحابيًا، ولا وكيل ذكاء اصطناعي، ولا تستنتج معمارية مشروعك تلقائيًا؛ أنت تحدد المعلومات التي يجب أن تظهر وهي تتولى تحليل النص وترتيب الرسم.
مثال صغير:
users -> api: HTTPS
api -> database: SQL
api -> queue: jobs
worker -> queue: consume
worker -> database: update
احفظه باسم architecture.d2 ثم شغّل d2 architecture.d2 architecture.svg. يصبح ملف المصدر جزءًا من التوثيق، ويمكن مراجعة تغيير علاقة مثل مراجعة أي سطر آخر. المثال تعليمي ولم ننفذه على نظام إنتاجي.

🎯 الاستخدام المثالي والقيمة المضافة
يناسب D2 مطورًا، مهندس منصة، أو فريقًا صغيرًا يريد إبقاء رسوم المعمارية وتدفق البيانات قريبة من المستودع. استخدمه عندما تكون العلاقات أهم من التموضع بالبكسل: مخطط خدمات، تدفق طلب، نموذج بيانات، تسلسل، أو رسم يرافق قرارًا تقنيًا. لا تختَره إذا كان المطلوب تصميمًا تسويقيًا حرًا أو تحكمًا يدويًا دقيقًا في كل عنصر؛ فالتخطيط التلقائي مقصود وقد يختلف ترتيب العناصر بعد تعديل المصدر.
القيمة المضافة تظهر في ثلاث نقاط: مصدر نصي قابل للمقارنة في Git، إخراج متكرر من الأمر نفسه، وفصل بين المعلومة وترتيبها البصري. هذا لا يمنع الرسوم القديمة تلقائيًا؛ ما زال على الفريق تحديث ملف .d2 عندما يتغير النظام.
🌟 الميزات وطريقة العمل
1. صف العلاقات بدل تحريك الصناديق
الصياغة الأساسية قصيرة: a -> b تنشئ عقدتين وعلاقة موجهة، ويمكن إضافة تسمية وشكل ونمط. تستطيع تجميع العناصر داخل حاويات، وإعادة استخدام أنماط، وكتابة تعليقات في المصدر. عندما تُراجع التغييرات، ترى إضافة خدمة أو حذف اتصال كنص بدل محاولة اكتشاف اختلاف بصري بين صورتين.
- كيف تستخدمها؟ ابدأ بالعقد الأساسية، أضف العلاقات، ثم شغّل المولّد وشاهد النتيجة.
- الفائدة: يصبح الرسم قابلًا للبحث والنسخ والمراجعة مع الكود.
- القيد: المصدر النصي لا يثبت أن المعمارية حقيقية؛ راجعه مع أصحاب النظام.

2. اختر محرك التخطيط المناسب
تضم النسخة المتحقق منها ثلاثة محركات تخطيط: Dagro افتراضيًا، وELK، وTALA المضمّن مع تفعيل اختياري. يعرض d2 layout المحركات المتاحة، ويمكن الاختيار عبر --layout=elk أو إعداد vars.d2-config.layout-engine داخل المصدر. يفيد Dagro للرسوم الهرمية العامة، بينما تصف الوثائق ELK بأنه مناسب لرسوم العقد والروابط ذات الاتجاه والمنافذ، وتوجّه TALA نحو رسوم معمارية البرمجيات.
هذه اختيارات ترتيب، وليست ضمانًا أن كل رسم سيظهر مثاليًا. جرّب المحرك على الرسم الفعلي، وثبّت الاختيار في المصدر أو أمر البناء حتى لا تتغير النتيجة بين أعضاء الفريق دون قصد.

3. صدّر الرسم حسب مكان استخدامه
توثق D2 التصدير إلى SVG وPNG وGIF وPDF وPPTX، وتصف الوثائق تصدير ASCII بأنه تجريبي. SVG مناسب لمستندات الويب لأنه متجهي، وPNG مناسب لسطح لا يتعامل جيدًا مع SVG، وPDF أو PPTX يفيدان في المستندات والعروض. لا تفترض أن كل خصائص الصيغة متطابقة؛ الروابط والخطوط والحركة تتعامل معها الصيغ بطرق مختلفة، وASCII محدود مقارنة بالرسم الرسومي.
أمثلة:
d2 architecture.d2 architecture.svg
d2 architecture.d2 architecture.png
d2 architecture.d2 architecture.pdf
وفق وثائق v0.9.0 الحالية، تصدير PNG مباشر ولا يحتاج Chromium. راجع الملف الناتج بصريًا قبل النشر، خصوصًا الخطوط والنصوص الطويلة.

4. نسّق وتحقق وشاهد التغيير حيًا
يوفر سطر الأوامر d2 fmt لتنسيق المصدر، وd2 validate لفحصه، و--watch لإعادة التوليد وفتح معاينة تتحدث عند الحفظ. يبدأ خادم المراقبة على localhost افتراضيًا. في CI، اعتمد على رمز خروج الأمر: تحذر الوثائق من أن وجود ملف إخراج لا يثبت نجاح العملية، فقد يبقى ملف جزئي أو سابق بعد خطأ.
مسار بسيط للفريق:
d2 fmt architecture.d2
d2 validate architecture.d2
d2 architecture.d2 architecture.svg
أثناء التحرير يمكنك استخدام d2 --watch architecture.d2 architecture.svg. لا تعرّض خادم المراقبة على شبكة غير موثوقة دون فهم إعدادات الربط والحماية.

🪜 مثال عملي: رسم خدمة طلبات
- أنشئ
orders.d2واكتب الخدمات والعلاقات الأساسية. - شغّل
d2 --watch orders.d2 orders.svgوعدّل النص حتى يصبح الرسم واضحًا. - أضف تسمية لكل اتصال يحتاج القارئ إلى فهمه، ولا تحوّل الرسم إلى قائمة بكل التفاصيل الداخلية.
- شغّل
d2 fmtوd2 validateقبل الالتزام. - أضف
orders.d2والملف المولّد الذي يحتاجه موقع التوثيق وفق سياسة المستودع، ثم راجع الفرق النصي والصورة. - في CI، أعد التوليد أو تحقق من أن المصدر صالح، واستخدم حالة خروج الأمر بدل فحص وجود الملف فقط.
هذا مسار توضيحي، لا تجربة أداء ولا إثبات توافق مع مستودع بعينه.
⚖️ مقارنة بالعمل اليدوي
| المهمة | رسم يدوي في محرر رسومي | باستخدام D2 |
|---|---|---|
| إضافة خدمة وعلاقتين | إنشاء أشكال وأسهم وإعادة المحاذاة | إضافة أسطر وترك التخطيط للمحرك |
| مراجعة التغيير | مقارنة صورتين أو ملف محرر خاص | فرق نصي قابل للمراجعة في Git |
| تكرار التصدير | اختيار إعدادات التصدير كل مرة | أمر قابل للتكرار في الطرفية أو CI |
| التحكم بالبكسل | قوي ومباشر | أقل دقة لأن التخطيط آلي |
| التعاون غير التقني | واجهة السحب قد تكون أسهل | يحتاج تعلّم الصياغة أو مساعدة مطور |
D2 لا يلغي أدوات الرسم اليدوي. اجعله مصدرًا للرسوم التي تتغير مع النظام، واستخدم محررًا بصريًا حين تكون الهوية البصرية أو التموضع الحر أهم من قابلية المراجعة.
🚀 التثبيت والتوافق
توصي الوثائق باستخدام مدير حزم نظام التشغيل مباشرة للأمان. على جهاز فيه Homebrew مسبقًا:
brew install d2
d2 version
توجد خيارات موثقة لـ macOS وLinux وWindows، وحزم إصدار جاهزة، وتثبيت من المصدر عبر Go. يعرض المستودع أيضًا سكربت تثبيت مع --dry-run، لكن تنزيل سكربت وتشغيله يمنحه صلاحيات حسابك؛ افحصه واتبع سياسة مؤسستك. لم نثبت الأداة في هذا التحقق، لذلك لا ندعي نجاح الأمر على جهاز محدد.
آخر إصدار مستقر تحققنا منه هو v0.9.0 بتاريخ 7 سبتمبر 2026. أظهر المستودع 25.8 ألف نجمة و777 تفرعًا وقت الفحص، وآخر التزام ظاهر على الفرع الرئيسي بتاريخ 12 أكتوبر 2026. الأرقام تتغير وليست تقييمًا للجودة.
💰 التكلفة والعمل المحلي
أداة CLI مجانية ومفتوحة المصدر بترخيص MPL-2.0 ولا تحتاج اشتراكًا أو API مدفوعًا لإنتاج الرسوم محليًا. لا يعني ذلك أن كل خدمة أو خط أو صورة تستخدمها مجانية أو مفتوحة المصدر.
تنص الأسئلة الشائعة على أن D2 لا يجمع telemetry، وأن اتصاله بعد التثبيت يقتصر افتراضيًا على فحص دوري لتحديثات GitHub. لكن المصدر قد يشير إلى صور أو أيقونات مستضافة؛ عندها يلزم جلبها من الشبكة. استخدم أصولًا محلية إذا كانت السرية أو البناء القابل للتكرار يتطلبان ذلك.
🔐 الخصوصية والصلاحيات والأمان
D2 يعمل بصلاحيات المستخدم الذي يشغله: يقرأ ملفات .d2 المستوردة، ويكتب ملفات الإخراج، وقد يجلب موارد بعيدة أو يفحص التحديثات. الاستيراد يدعم مسارات نسبية ومطلقة لملفات D2؛ لذلك لا تشغّل مصدرًا غير موثوق داخل مجلد يحوي ملفات حساسة قبل مراجعته وتقييد بيئة التنفيذ. العزل بحاوية أو حساب محدود مناسب في CI للمحتوى غير الموثوق.
راجع الروابط والموارد المضمّنة قبل نشر SVG أو PDF، ولا تضع أسرارًا أو عناوين داخلية في رسم سيصبح عامًا. خادم --watch مخصص للمعاينة المحلية افتراضيًا، وليس منصة تعاون آمنة. وترخيص MPL-2.0 يحدد التزامات التوزيع للملفات المرخصة؛ راجع مستشارك إن كنت تعيد توزيع نسخة معدلة ضمن منتج تجاري.

⚠️ الحدود ومتى لا تستخدمه
- التخطيط التلقائي يوفر الوقت لكنه لا يمنح تحكمًا حرًا كاملًا في موضع كل عنصر.
- الرسم الكبير جدًا قد يحتاج تقسيمًا إلى طبقات أو لوحات أصغر ليبقى مقروءًا.
- تصدير ASCII تجريبي وأقل تعبيرًا من الصيغ الرسومية.
- وجود ملف ناتج لا يساوي نجاح الأمر؛ افحص رمز الخروج والسجل.
- الخطوط والنصوص والروابط قد تظهر بصورة مختلفة بين الصيغ، لذلك يلزم فحص بصري.
- لا توجد مزامنة حسابات أو تعليقات مراجعة مدمجة في CLI؛ يعتمد التعاون على Git وأدوات الفريق.
- لم نتحقق من دعم واجهة عربية رسمية. الرسوم العربية في هذه البطاقة شرح أصلي وليست دليلًا على تعريب المنتج.
📚 المصادر وتاريخ التحقق
تم التحقق في 30 أكتوبر 2026 بالرجوع إلى المصادر الأصلية:
- المستودع الرسمي d2lang/d2 — النجوم والتفرعات والنشاط والترخيص والخصائص.
- الإصدار v0.9.0 — الإصدار المستقر وتاريخه.
- وثائق التثبيت — خيارات الأنظمة ومديري الحزم وسكربت التثبيت.
- دليل سطر الأوامر —
fmtوvalidateوwatchوصيغ الإخراج وحالة الخروج. - وثائق التصدير والاستيراد والأيقونات — الصيغ ومسارات الملفات والموارد البعيدة.
- README والأسئلة الشائعة — عدم جمع telemetry وفحص التحديثات.
للمقارنة، راجعنا Ruff من مجال جودة Python عبر مستودعه ووثائقه الرسمية؛ آخر إصدار ظاهر وقت البحث كان 0.17.3 بتاريخ 26 أكتوبر 2026. اخترنا D2 لأنه يضيف مجال التوثيق والرسوم ككود بعد بطاقة أتمتة، بينما تتقاطع Ruff أكثر مع أدوات الجودة المنشورة حديثًا ومع منظومة Astral التي ظهرت سابقًا في الدليل. كما استخدمنا GitHub Topics/Trending وفهارس claudeskills.info وdshmarket.com للاكتشاف فقط، ولم ننقل منها حقائق المنتج بدل المصدر الأصلي.
نطاق التحقق: قراءة المستودع والوثائق وصفحات الإصدار وفحص الصور التوضيحية. لم نثبت D2، ولم ننفذ الأمثلة، ولم نجر اختبار أداء أو تدقيقًا أمنيًا مستقلًا.