كيف تخلّصت شركة Cybozu من تكاليف توافق المتصفّح الإضافية باستخدام Baseline؟

Sakura Adachi
Sakura Adachi
Yuriko Hirota
Yuriko Hirota

تاريخ النشر: 7 نوفمبر 2025

إنّ إدارة توافق المتصفّح لأكثر من 38,000 عميل مؤسسي في جميع أنحاء اليابان ليس بالأمر البسيط. عندما يتيح Kintone إجراء عمليات تجارية مهمة لأكثر من 1.5 مليون تطبيق يوميًا، يصبح كل قرار بشأن توافق المتصفح مهمًا.

واجهت شركة Cybozu، وهي شركة رائدة في مجال برامج العمل الجماعي في اليابان، تحديًا أساسيًا: كيف يمكن الحفاظ على معايير الويب المتسقة في جميع المنتجات مع تجنُّب عبء الصيانة الناتج عن مصفوفات توافق المتصفحات المخصّصة؟

ما الحل إذًا؟ اعتماد Baseline كمعيار للتطوير، وهو إجراء غيّر أسلوبهم في اعتماد ميزات منصة الويب.

التحدي: التوافق مع المتصفّحات بدون الحاجة إلى التخمين

قبل استخدام Baseline، كانت شركة Cybozu تحتفظ بمعايير توافق المتصفّح الخاصة بها استنادًا إلى سجلّات الوصول وتتبُّع الإصدارات يدويًا. وكان معيارهم هو إتاحة المتصفّحات التي تغطّي% 98 من سجلّات الوصول، وكان يتم عرض طلب تحديث المتصفّح للمستخدمين الذين يستخدمون متصفّحات خارج هذا الحدّ.

في كل ربع سنة، كانت فرق الهندسة في Cybozu تستغرق ساعة واحدة تقريبًا في إجمالي عمليات تعديل المعايير. ومع ذلك، لم يكن دمج المعايير مع فريق التطوير سلسًا، وكان من الشائع جدًا طرح أسئلة مثل: متى يمكن استخدام ميزات CSS الجديدة؟ متى يمكن إزالة الرموز البرمجية polyfill لواجهات برمجة تطبيقات JavaScript الجديدة؟ ما هي الميزات التي يمكن استخدامها الآن؟

لم تكن المعايير المخصّصة التي وضعتها شركة Cybozu سهلة الصيانة والاستخدام بالنسبة إلى المطوّرين، كما أدركت الشركة أنّ الاعتماد على رصد وكيل المستخدم وتتبُّع الإصدارات يدويًا لن يواكب سرعة تطوّر الويب الحديث.

هل يمكن الاعتماد على السلسلة User-Agent؟

كانت الطريقة السابقة التي تتّبعها شركة Cybozu تستند إلى استخلاص أسماء المتصفّحات وإصداراتها من سلاسل User-Agent، ثم تجميع هذه النتائج كبيانات "المستخدم"، ولكن هل يعكس ذلك حقًا واقع المستخدمين؟

User-Agent هو عنوان طلب HTTP، أي معلومات يمكن لأي عميل الادعاء بأنّها أي شيء. تحتوي سجلات الوصول إلى المنتجات على كميات هائلة من الطلبات الواردة من برامج التتبّع وبرامج الزحف والمهاجمين والمصادر الأخرى. ترسل بعض البرامج سلاسل User-Agent قديمة عن قصد لأغراض مختلفة، مثل فحص الثغرات الأمنية. لذلك، لا يمكن أن تمثّل سجلّات الوصول المستخدمين الذين يجب تقديم الدعم لهم.

لا يمكن أن يعكس User-Agent الميزات المتاحة

لا يتم ربط إصدارات المتصفّح بالميزات. قد يتضمّن رقم الإصدار نفسه إمكانات مختلفة استنادًا إلى القناة (ثابتة أو تجريبية أو خاصة بالمطوّرين أو Canary) أو علامات الميزات أو تجارب Finch أو سياسات المؤسسة، على سبيل المثال. بالإضافة إلى ذلك، تنفّذ المتصفحات المختلفة الميزات في أطر زمنية مختلفة. على سبيل المثال، تم إطلاق ميزة CSS Nesting في Safari 16.5 (أيار/مايو 2023) ولكن في Chrome 112 (نيسان/أبريل 2023). لا تشير السلسلة User-Agent إلى توفّر الميزة.

مسؤولية توفير الدعم لإصدارات المتصفّح بأنفسنا

لا تتعلّق تحديثات المتصفّح بالميزات الجديدة فقط، بل تتضمّن إصدارات المتصفّح المنتظمة رموز تصحيح للأمان وإصلاحات للأخطاء إلى جانب إمكانات جديدة. عندما تكون الإصدارات القديمة متوافقة، لا يكون تجنُّب استخدام الميزات الجديدة هو المشكلة الوحيدة، بل هو قرار يؤثّر بشكل مباشر في أمان المستخدمين في الوقت نفسه. في بيئات المؤسسات، قد يواجه بعض المستخدمين قيودًا مشروعة. على سبيل المثال:

  • قد تفرض المؤسسات سياسات صارمة على المتصفّحات تمنع التحديثات.
  • لا تتوافق الأجهزة القديمة مع تحديث المتصفّحات الحديثة.
  • المستخدمون في القطاعات الخاضعة للرقابة الذين لديهم عمليات موافقة بطيئة على التغييرات

ومع ذلك، فإنّ تقديم الدعم لهؤلاء المستخدمين يعني أيضًا أنّه يسمح لهم بالبقاء عرضة للخطر.

إذا وقع حادث أمني من خلال استغلال ثغرة أمنية معروفة في إصدار قديم من المتصفّح، لن يكون من المنطقي تقديم تفسير مثل "كان هذا المتصفّح متوافقًا لأنّ المستخدمين طلبوا ذلك". إذا انتشر الهجوم إلى مستخدمين آخرين يحرصون على تحديث المتصفّحات بانتظام، يتحمّل المطوّرون والأطراف المعنية الأخرى في المشروع مسؤولية عدم إيقاف المتصفّحات غير الآمنة.

أدركت شركة Cybozu أنّ هذا النهج يشكّل مخاطر على معظم المستخدمين الذين يحرصون على تحديث متصفّحاتهم. إنّ دعم المتصفّحات استنادًا إلى عدد السجلات فقط لا يوفّر التحقّق من الأمان بشكلٍ سليم. لا يتعلّق الأمر فقط بعدم الاستفادة من الميزات الجديدة، بل أيضًا بعدم تحمّل المسؤولية عن حماية المستخدمين.

يتغيّر السؤال من "كم عدد المستخدمين الذين يستخدمون هذا الإصدار؟" إلى "هل يجب أن نقدّم الدعم للمستخدمين استنادًا إلى إصدارات المتصفّح؟"

لماذا كانت Baseline هي الحلّ المناسب لشركة Cybozu؟

كانت شركة Cybozu بحاجة إلى اتّباع نهج جديد لا يعالج فقط التكاليف التشغيلية لصيانة معايير توافق المتصفّح، بل يعالج أيضًا العيوب الأساسية في المنهجية القديمة. وفّرت Baseline لشركة Cybozu ما تحتاجه بالضبط.

معايير متطوّرة يتم الحفاظ عليها خارجيًا

بدلاً من إعادة تقييم إصدارات المتصفّح يدويًا كل ثلاثة أشهر، توفّر Baseline هدفًا متحركًا يحتفظ به فريق WebDX Community Group التابع لاتحاد شبكة الويب العالمية (W3C)، وليس من خلال شركات فردية تتّخذ قرارات عشوائية. وهذا يعني أنّ المعايير تتطوّر تلقائيًا بناءً على المعلومات الواردة من مورّدي المتصفّحات وهيئات المعايير.

لم يعُد على Kintone إدارة حدود الإصدارات بنفسها، بل تتطوّر Baseline بدون أي إجراء. تُجيب حالة "الحدّ الأدنى" للميزات بشكل قاطع عن أسئلة التوفّر، ويتم تعديل الإجابة تلقائيًا مع تطوّر المنصة.

الدقة على مستوى الميزة

بدلاً من محاولة تتبُّع حالة متصفّح فردي، تتّبع Baseline نهجًا مختلفًا تمامًا.

تمثّل Baseline Widely available ميزات الويب المتوفّرة لمدة 30 شهرًا أو أكثر على المتصفّحات الرئيسية. تم تحديد هذا الإطار الزمني "لتقريب إشارات المطوّرين، ومعدّل استخدام إصدارات المتصفّح بمرور الوقت، وتقدير إجمالي حصة السوق العالية التي يمكن الاستفادة منها، وأفضل تقدير لمجموعة WebDX Community Group". من خلال ضبط هذا الحدّ، تلغي Baseline مهمة تتبُّع حالات المتصفّح الفردية غير القابلة للملاحظة.

باستخدام Baseline، يحصل المطوّرون على إجابة مباشرة حول مدى توفّر هذه الميزة المحدّدة على جميع المتصفّحات. أصبح السؤال "هل يمكننا استخدام طلبات البحث في حاويات CSS؟" قابلاً للإجابة. يمكن للمطوّرين الاطّلاع على حالة Baseline على شبكة مطوّري Mozilla أو مستندات أخرى على الفور، بدون الرجوع إلى مصفوفات التوافق.

تصميم يراعي الأمان

من خلال اعتماد Baseline Widely available كمعيار، ربطت Cybozu سياسة الدعم بإطار زمني يرتبط بشكل طبيعي بدورات حياة الدعم التي توفّرها الشركات المصنّعة للمتصفّحات. ستتيح المتصفّحات التي لا يزال يتم صيانتها بشكل نشط جميع الميزات المتاحة على نطاق واسع، كما ستتلقّى تحديثات الأمان المهمة.

كانت المعايير المستندة إلى سجلّ الوصول قد تؤدي إلى إتاحة الدعم للمتصفّحات القديمة، ما يزيل الحافز لدى المستخدمين لتحديثها. من خلال اعتماد Baseline، لن نتمكّن من استخدام الميزات الحديثة بثقة فحسب، بل سيواجه المستخدمون الذين يستخدمون متصفّحات قديمة الحاجة إلى التحديث بشكل طبيعي مع تقدّم منصة الويب.

لا تستبعد Baseline المتصفّحات المعرَّضة للخطر بشكل صريح، بل تقدّم حوافز طبيعية للمستخدمين لإبقاء متصفّحاتهم محدَّثة.

اعتماد المرجع

تطلّب اعتماد Baseline تغييرًا في إدارة الإصدارات القديمة في Cybozu. هذا يعني أنّ شركة Cybozu كانت بحاجة إلى التأكّد من أنّ Baseline ستعمل بدون عيوب كبيرة. كان من الضروري معرفة النسبة المئوية للمستخدمين الذين سيتأثرون بهذا التغيير من أجل اعتماده على مستوى المؤسسة.

أداة التحقّق من التوافق الأساسي في "إحصاءات Google" هي أداة تحلّل البيانات التي يتم تصديرها من "إحصاءات Google" لعرض النسبة المئوية للمستخدمين الذين تتوافق أجهزتهم مع الميزات من كل سنة من سنوات التوافق الأساسي. ساعدت هذه الأداة شركة Cybozu في التحقّق من التأثير الفعلي لاختيار استهداف "المستخدمين الأساسيين" على مستخدميها. بعد تشغيل أداة Baseline Checker، اكتشفت شركة Cybozu ما يلي:

تأخذ أداة "التحقّق من خط الأساس في إحصاءات Google" عملية تصدير بتنسيق TSV من "إحصاءات Google" وتقدّم بيانات الدعم لكلّ من حدود خط الأساس.

كشف Baseline Checker أنّ ‫98.8% من مستخدمي Cybozu يستخدمون متصفّحات تتوافق مع هدف Baseline Widely available. وهذه التغطية أوسع من معيار Cybozu الداخلي السابق الذي كان يبلغ% 98 على الأقل من المستخدمين. يمكن تحليل ثلاث نقاط رئيسية استنادًا إلى البيانات المقدَّمة:

  • لن تتأثر المتصفّحات المتوافقة سابقًا بهذا التغيير.
  • المتصفّحات غير المتوافقة سابقًا: تمثّل حوالي% 0.8 من المتصفّحات التي تستوفي معايير Baseline Widely available، ولكن لم يعُد يظهر لها طلب تحديث المتصفّح.
  • ستستمر المتصفّحات المتبقية في تلقّي طلب تحديث المتصفّح كما كان من قبل.

والجدير بالذكر أنّ هذا الإجراء أدّى إلى إزالة النتائج الإيجابية الخاطئة، أي نسبة% 0.8 تقريبًا من المستخدمين الذين تم عرض تحذيرات لهم بدون داعٍ على الرغم من استخدامهم متصفحات متوافقة. في الوقت نفسه، لا يمكن أن تحدث نتائج سلبية خاطئة من خلال تحذير المستخدمين الذين كانت أجهزتهم متوافقة في السابق.

باستخدام هذه البيانات، تمكّنت شركة Cybozu من اعتماد Baseline Widely available كهدف بثقة.

تأثير "الأداء الأساسي" في الممارسة

كان اعتماد "الخطة الأساسية" كسياسة أمرًا سهلاً، ولكنّ تنفيذها عمليًا تطلّب إنشاء أدوات وعمليات. كان من الضروري التأكّد من عدم استخدام المطوّرين للميزات غير المتوافقة عن طريق الخطأ بدون التحقّق يدويًا من حالة Baseline.

التحليل الثابت المستند إلى إعدادات ESLint

@cybozu/eslint-config هو إعداد استنادًا إلى برامج مفتوحة المصدر ويتم استخدامه في جميع منتجات Cybozu. كانت هذه الميزة متاحة بدءًا من الإعداد المُسبَق css-baseline الذي يتحقّق من ميزات CSS مقارنةً بـ Baseline في وقت الإنشاء:

// eslint.config.mjs
import cybozuEslintConfigBaseline from '@cybozu/eslint-config/flat/presets/css-baseline.js';

export default [
  ...cybozuEslintConfigBaseline.map((config) => ({
    ...config,
    files: ['**/*.css']
  })),
];

عندما يستخدم المطوّرون ميزات غير متاحة بعد على نطاق واسع في Baseline، يتلقّون ملاحظات فورية من ESLint:

لم يكن CSS Nesting متاحًا على نطاق واسع في Baseline، ولكن تم استخدامه في رمز الإنتاج. يُصدر ESLint هنا تحذيرًا من استخدامه.

ويمنع ذلك حدوث مشاكل في التوافق في مرحلة الإنتاج. يمكن للمطوّرين اتّخاذ قرارات مستنيرة في مرحلة مبكرة من عملية التطوير: إما الانتظار إلى أن تصبح الميزة متاحة على نطاق واسع، أو تنفيذ التحسين التدريجي مع معرفة المستخدمين الذين سيتأثرون بذلك بالضبط. (مزيد من المعلومات حول توافق ESLint مع CSS وBaseline)

ضبط المحوّلات البرمجية لاستهداف Baseline Widely available

بدأت أدوات الإنشاء الحديثة في إتاحة استخدام Baseline كهدف. على سبيل المثال، يستهدف Vite تلقائيًا Baseline Widely Available في مرحلة الإنتاج بدون الحاجة إلى إعدادات إضافية. أصبحت Browserslist متوافقة الآن مع Baseline أيضًا.

يضمن استخدام إعدادات مختلفة للمترجم البرمجي عدم تحويل JavaScript وCSS إلا عند الضرورة، ما يؤدي إلى تجنُّب عمليات التحويل ورموز polyfills غير الضرورية للميزات التي تتوافق معها معظم المتصفّحات.

إلغاء الصيانة اليدوية للمعايير ونظام رصد المتصفّح للحصول على ملاحظات المستخدمين

كانت أكبر فائدة للصيانة هي إلغاء عملية تتبُّع إصدار المتصفح يدويًا. بدلاً من الاجتماعات الفصلية لمناقشة إصدارات المتصفّح التي يجب توفير الدعم لها، تعتمد شركة Cybozu الآن على حزمة @web-platform-dx/baseline-browser-mapping التي تتم صيانتها بشكل مفتوح للإجابة عن هذه الأسئلة.

أنشأت شركة Cybozu أيضًا ميزة رصد المتصفّح المبرمَجة لعرض طلبات الترقية للمستخدمين الذين يستخدمون متصفّحات قديمة.

تظهر طلبات ترقية المتصفّح لمستخدمي Kintone الذين يستخدمون متصفّحات أقل من "الحد الأدنى المتاح على نطاق واسع".

رصد المتصفّح يجلب إصدارات المتصفّح المتوافقة مباشرةً من حزمة @web-platform-dx/baseline-browser-mapping.

يتم تشغيل هذا البرنامج أثناء عملية الإنشاء، وهو ينشئ بانرات تحذيرية تتم مشاركتها مع جميع فِرق المنتجات. مع انتقال فترة العرض الأساسية المتاحة على نطاق واسع لتشمل متصفحات أحدث، يرصد نظامنا التغييرات تلقائيًا بدون الحاجة إلى أي تدخل يدوي.

التواصل بشكلٍ سلس

كانت إحدى أهم الفوائد غير المتوقّعة هي الطريقة التي سهّلت بها أداة Baseline التواصل بين الفِرق. في السابق، كانت مناقشات توافق المتصفّح تتطلّب معرفة خاصة بالنطاق على مستوى الشركة، مثل المتصفّحات التي تتوافق معها، والإصدارات، والميزات المتاحة حاليًا. كان الموظفون الجدد يحتاجون إلى وقت للتعرّف على معاييرنا الداخلية. باستخدام Baseline، أصبحنا نعتمد معايير التوافق نفسها التي تحظى بالاعتراف على نطاق واسع في منتدى الويب.

يؤدي ذلك أيضًا إلى إنشاء مجموعة مشتركة من المصطلحات بين فِرق الهندسة لدينا وبين منتدى الويب الأوسع نطاقًا. عند مناقشة استخدام الميزات، يشير الجميع إلى البيانات نفسها من المصدر نفسه، ما يلغي الحاجة إلى شرح السياسات الداخلية أو الترجمة بين أُطر التوافق المختلفة.

وقد تم أيضًا تحديث أدوات التطوير: يعرض كلّ من Visual Studio Code ولوحة الأنماط في "أدوات مطوّري البرامج في Chrome" الآن معلومات "التوافق الأساسي" مباشرةً. لم يعُد على المطوّرين التحقّق باستمرار من MDN أو Can I use للتأكّد من أنّ إحدى الميزات آمنة للاستخدام. وتُعلمهم الأدوات بذلك على الفور.

توفير منتج يلبّي احتياجات الجميع بثقة

باستخدام Baseline، يمكننا تغيير طريقة تفكيرنا بشأن توافق المتصفحات بشكل جذري، من عبء نتحمّله إلى أساس نثق به. استندت استراتيجية التنفيذ لدينا إلى التشغيل الآلي في كل مرحلة:

  1. الملاحظات أثناء التطوير: التحليل الثابت وبطاقة حالة "خط الأساس"
  2. التحقّق من الصحة في وقت الإنشاء: تستهدف أدوات الترجمة تلقائيًا Baseline Widely available.
  3. الرصد أثناء التشغيل: تحذيرات تظهر للمستخدمين عند استخدام متصفحات غير متوافقة مع baseline-browser-mapping.
  4. التحديثات المستمرة: تتيح المزامنة التلقائية مع بيانات Baseline إمكانية الاستغناء عن الصيانة اليدوية.

وتتحدّث النتائج عن نفسها:

  • صفر ساعة تم قضاؤها في صيانة إصدار المتصفّح
  • يتم الحفاظ على تغطية أكثر من% 98.8 من المستخدمين بمستوى يقين على مستوى الميزة.
  • إجابات فورية وتلقائية عن الأسئلة الشائعة، ما يجيب عن السؤال "هل يمكننا استخدام هذه الميزة على إصدار المتصفّح هذا؟"
  • المفردات المشتركة بين الفِرق الهندسية
  • مسار أكثر وضوحًا لاعتماد الميزات: يشجّع الفرق على مناقشة دمج الميزات الجديدة وتحديد توقيت إزالة polyfills، إذا لزم الأمر.

بالنسبة إلى المؤسسات التي تفكّر في استخدام Baseline، من المهم معرفة كيف سيؤثر هذا التغيير في المستخدمين. تسهّل أدوات مثل Google Analytics Baseline Checker عملية القياس هذه وتجعلها أكثر وضوحًا. بعد أن تثق في البيانات وتقرّر استخدام Baseline، يمكنك الاستفادة من النظام المتكامل المتزايد لـ Baseline من أجل تنظيم سير عمل التطوير.

أصبحت منصة الويب أكثر فعالية وتوافقًا وموثوقية، كما أنّها تتطوّر بشكل أسرع من السابق. باستخدام Baseline، يمكننا الاستفادة من هذه الإمكانات في مرحلة الإنتاج بثقة.

الموارد