السلام عليكم ورحمة الله وبركاته،
أنا إبراهيم، مطوّر تطبيقات iPhone مقيم في النرويج. أعلم أن تركيز المجتمع هنا على تقنيات القرآن والمصادر المفتوحة، وما أعرضه اليوم ليس تطبيقاً قرآنياً، لكنه يقع في الدائرة نفسها: أدوات تخدم المسلم في يومه. أعرض عليكم مسألتين تقنيتين، ثم طلباً صغيراً في آخر المنشور.
تطبيق «عزيزة» لأوقات الصلاة والقبلة موجود على App Store منذ مدة:
https://apps.apple.com/us/app/aziza-b%C3%B8nnetider/id6458982872
والجديد أنني نقلته أخيراً إلى الأندرويد، وهذه أول مرة أخوض فيها هذا العالم.
أولاً: النقل بين المنصّات لم يعد بالصعوبة كما كان
خبرتي كلها في Swift وSwiftUI، ولم يسبق لي أن نشرت تطبيقاً على Google Play. قبل سنتين كان معنى «أريد نسخة أندرويد» إمّا تعلّم منصّة كاملة من الصفر، أو دفع أجرة مطوّر، أو إعادة كتابة كل شيء بإطار عمل متعدد المنصات والتضحية بجزء من التجربة. وبالفعل استخدمت Flutter ولكنه لم يعطيني النتيجة التي أوجوها.
اليوم، وبفضل أدوات الذكاء الاصطناعي، صار نقل تطبيق من نظام إلى آخر عملاً في متناول مطوّر منفرد: المنطق البرمجي يُترجم، والواجهات تُعاد بناؤها حسب لغة المنصّة الجديدة، ودورك أنت أن تفهم وتراجع وتصحّح — لا أن تكتب كل سطر بيدك. هذا في رأيي خبر مهم لهذا المجتمع تحديداً: كثير من المشاريع الإسلامية مفتوحة المصدر تبقى حبيسة منصّة واحدة لأن لا أحد يملك وقت تعلّم الثانية. هذا الحاجز انخفض كثيراً.
وبالمقابل، ما لا يُترجم تلقائياً هو سلوك النظام نفسه: الأذونات، الإشعارات، تشغيل الصوت في الخلفية، قيود البطارية. وهنا بالضبط أحتاج مساعدتكم، طبعا بالإضافة إلى أن جوجل تشترط ذلك.
ثانياً: لماذا تفشل أوقات الصلاة في الشمال — ولماذا الحلّ ليس خوارزمياً
النرويج تمتد بين خطّي عرض ٥٨° و٧١° شمالاً، وهذا يكسر معظم ما تعتمد عليه تطبيقات أوقات الصلاة:
- في الصيف لا يتحقق الشرط أصلاً. الفجر يُحسب بانحطاط الشمس تحت الأفق بزاوية معيّنة، والعشاء كذلك. في أشهر الصيف لا تنحطّ الشمس إلى تلك الزاوية إطلاقاً، فلا يوجد حلّ رياضي للمعادلة. ليست المسألة أن الحساب صعب، بل أن الجواب غير موجود في المعادلة نفسها.
- في الشتاء تتقارب الأوقات حتى تكاد صلوات النهار تتلاصق، فتصير الإشعارات نفسها مسألة تصميم.
- والبدائل المطروحة للحالة الأولى فقهية لا حسابية: أقرب البلاد، أقرب الأيام، نصف الليل، سُبع الليل. الفرق بين واحدة وأخرى قد يبلغ ساعات، لا دقائق.
وهنا الخلاصة التي أخذت منّي وقتاً حتى استقرّت عندي: الاختيار بين هذه البدائل ليس قراراً يخصّ المبرمج. أن أكتب في الكود highLatitudeRule = .seventhOfTheNight معناه أنني رجّحت رأياً فقهياً على آخر ثم شحنته إلى آلاف الهواتف بلا سند. والمستخدم لن يرى خياري في الكود؛ سيرى فقط أن تطبيقه يخالف مسجده.
الحلّ: تصميم هجين
فبنيت التطبيق على مسارين:
داخل النرويج — لا حساب آلي إطلاقاً. الأوقات مُدخلة يدوياً وفق ما تعتمده الرابطة الإسلامية في النرويج. أي أن التطبيق هنا لا يجتهد، بل ينقل عن جهة معتبرة. النتيجة أن ما يظهر على شاشة المستخدم هو نفسه ما يُقام به في مسجده — وهذا وحده يحسم أكثر شكاوى تطبيقات المواقيت في الشمال.
خارج النرويج — حساب فلكي بمكتبة Adhan. لم أكتب حسابات فلكية بنفسي، ولا أنصح أحداً بذلك. اعتمدت مكتبة Adhan من Batoul Apps:
https://github.com/batoulapps/Adhan
رخصتها MIT، وتبني حساباتها على خوارزميات Jean Meeus الفلكية، ومتوفّرة بـ Swift وObjective-C وJava وJavaScript، ولها تنفيذات مجتمعية بـ Dart وPython وRust وC# وGo وC — أي أنها تصلح لأي مشروع تقريباً، مهما كانت منصّته. وتعالج خطوط العرض العالية صراحةً عبر HighLatitudeRule بثلاثة خيارات:
middleOfTheNight — لا يسبق الفجرُ منتصفَ الليل ولا يتأخر العشاء عنه (وهو الافتراضي، منعاً لتجاوز الحدود)
seventhOfTheNight — الفجر لا يسبق بداية السُبع الأخير من الليل، والعشاء لا يتأخر عن نهاية السُبع الأول
twilightAngle — يُقسَّم الليل إلى أثلاث تقريباً، والقيمة مشتقّة من قسمة زاويتَي الفجر والعشاء على ٦٠
فالتطبيق إذن يعمل في أي بلد في الدنيا، لكن للنرويج فيه خصوصية: هي البلد الوحيد الذي لا يُحسب فيه شيء آلياً.
ثمن هذا التصميم
لا أريد أن أعرضه وكأنه بلا كلفة، فللمسار اليدوي ثمن حقيقي: جدول يحتاج صيانة. الحساب الفلكي يعمل إلى الأبد بلا تدخّل، أمّا الجدول المُدخل يدوياً فيحتاج تحديثاً ومتابعةً لما تعتمده الجهة المرجعية، وأي إهمال فيه يعني أوقاتاً خاطئة بصمت. قبلت هذه الكلفة لأن البديل — أن أُفتي بالكود — أسوأ منها.
وما يقدّمه التطبيق:
- أوقات الصلاة (في أي مكان أيضا، حيث يمكنك وضع العديد من المدن كنوع من المعرفة، أي أنك مثلا على موعد مع شخص في القاهرة، يقول لك سأتصل بك بعد المغرب، بينما أنت مقيم في نيوزلاندا، ساعتها ستعرف أنه يقصد مثلا الساعة ١٢ ظهرا عندك)
- بوصلة القبلة
- دليل المساجد
- التاريخ الهجري
- أذان كامل عند دخول كل صلاة، لا مجرّد إشعار صامت
الطلب: ١٢ مختبِراً لمدة أسبوعين متصلين
Google تشترط على حسابات المطوّرين الأفراد الجديدة أن يمرّ التطبيق باختبار مغلق بـ ١٢ مختبِراً على الأقل، منضمّين بشكل متصل لمدة ١٤ يوماً، قبل السماح بنشره للناس. التطبيق جاهز، والعقبة الوحيدة بيني وبين النشر هي هذا العدد — وهي عقبة لم أواجه شبيهاً لها في App Store.
إن كان لديكم هاتف أندرويد ودقيقتان، فمشاركتكم هي ما يُخرج التطبيق إلى النور.
خطوتان — ولا بدّ منهما معاً
الخطوة الأولى — انضم إلى المجموعة
https://groups.google.com/g/aziza-testers
الانضمام مفتوح للجميع بلا موافقة مسبقة، والعضوية في هذه المجموعة هي ما يمنحك الأهلية للاختبار.
⚠️ انضم بحساب Google نفسه الذي تستخدمه على هاتف أندرويد. هذا أكثر سبب يفشل به الأمر، وأصعبه اكتشافاً: ينضم أحدهم بحساب العمل، ثم يفتح الرابط الثاني فلا يجد شيئاً، ولا يعرف السبب.
الخطوة الثانية — فعّل الاختبار وثبّت التطبيق
https://play.google.com/apps/testing/com.qraiqe.aziza_bonnetider
افتح الرابط، اضغط Become a tester، ثم ثبّت التطبيق من Google Play.
⚠️ الانضمام للمجموعة وحده لا يُحتسب. Google تَعُدّ من فعّل الاختبار وثبّت التطبيق، لا من صار عضواً في المجموعة. الخطوة الثانية ليست اختيارية.
وأمر أخير
الأسبوعان يجب أن يكونا متصلين. من يغادر المجموعة أو يحذف التطبيق في منتصف المدة يُنقص العدّاد ويُهدّد المهلة كلها. فإن قررت المشاركة، أرجو أن تُبقيه على جهازك أربعة عشر يوماً — وبعدها أنت في حلّ. (المجموعة عامة، ويمكنك مغادرتها متى شئت بعد انتهاء الاختبار.)
ما الملاحظات المفيدة لي حقاً
لن أطلب منكم «رأيكم في التطبيق» فحسب. وبما أن أندرويد أرض جديدة عليّ، فهذه المواضع تحديداً هي ما أحتاج عيوناً عليه:
- أوقات الصلاة في بلدكم أنتم، مقارنةً بما يعتمده مسجدكم. هذا أثمن ما يمكن أن تعطوني إياه: مسار Adhan خارج النرويج هو الجزء الذي لم يُجرَّب عملياً إلا قليلاً، لأن تغطيتي الفعلية للاختبار خارج النرويج شبه معدومة. وإن كان بلدكم في خطوط عرض عالية أيضاً — كندا أو شمال أوروبا — فملاحظتكم أثمن.
- دقة اتجاه القبلة على جهازك، ومقارنتها بما تعرفه في مدينتك
- سلوك الأذان في الخلفية: هل يعمل بعد إعادة تشغيل الهاتف؟ هل تقتله قيود البطارية على أجهزة Samsung وXiaomi وHuawei؟
- توقيت الإشعارات عند تغيّر التوقيت الصيفي أو الانتقال بين مناطق زمنية
- التاريخ الهجري ومطابقته لما تعتمده أنت
- سلامة الواجهة العربية واتجاه RTL على أحجام شاشات مختلفة
أرسل أي خلل أو ملاحظة على: ibo2001@gmail.com
وإن كان أحدكم يشتغل على مسألة أوقات الصلاة في المناطق شبه القطبية، أو على نقل مشروع إسلامي مفتوح المصدر بين المنصّات، فأنا سعيد بمناقشة ذلك هنا في الموضوع — وأنا في الحالتين ما زلت أتعلّم.
جزاكم الله خيراً، وبارك في وقتكم.
بالمناسبة ، قمت بتطوير SKILL يمكن استخدامها في Claude لتصبح هذه العملية سهلة جدا