38

مشروع تطبيق للقرآن الكريم للهواتف الذكية مبني بلغات الويب

مشروع تطبيق للقرآن الكريم للهواتف الذكية مبني بلغات الويب

لماذا؟

جربت عدة تطبيقات للقرآن الكريم على نظام أندرويد، ولم تكن النتائج تعجبني دوماً، لعل أفضلها كان [Quran Android](

https://play.google.com/sto...

لكن مشكلته كانت في كونه يعرض __صورًا للصفحات من مصحف المدينة بدلاً من النصوص__، الأمر الذي يجعلها صعبة القراءة على الشاشات الصغيرة وفي وضع الشاشة الشاقولي (portrait) وكذلك فإن الصور تجعل عرض الترجمة مرافقاً للأية غير ممكن، بل يجب النقر مطولاً على كل آية للاطلاع على تفسيرها أو ترجمتها، بعض التطبيقات الأخرى لا توفر ميزة البحث، وبعضها لا يراعي قابلية الاستخدام.

قررت البدء بتصميم التطبيق في البداية ليكون تطبيق Chrome يعمل بلا اتصال وبدأت ببناءه بالاعتماد على إطار العمل Bootstrap 3، ثم أدركت أن من الأفضل بناءه على أنه تطبيق للهواتف أولاً (mobile first) ثم الانتقال إلى سطح المكتب إن كان الأمر ممكناً.

لذا قمت بالانتقال إلى إطار العمل _ionic_ (وهو حديث نسبياً) أولاً لكونه موجهاً للهواتف الذكية، وثانياً لأنه مبنيّ على إطار عمل _Angular JS_ الذي أعشقه وأعتقد أن خبرتي به لا بأس بها.

ما الذي يقدمه التطبيق؟

التطبيق حالياً يوفر المميزات التالية:

  • عرض النص القرآن مع تلوين الحركات وعلامات الوقف بلونين مختلفين لتسهيل القراءة

  • دعم كل الترجمات التي يقدمها [مشروع ذكر](

http://zekr.org/resources.h...
  • دعم كل التلاوات التي يقدمها مشروع [EveryAyah](
http://everyayah.com/)
  • البحث باستخدام الواجهة البرمجية [لمشروع الفانوس](
http://alfanous.org/)
  • البحث بلا اتصال عند غياب الاتصال بالإنترنت، والمعتمد على التعابير النظامية (Regular Expressions) الذي يوفر إمكانية تجاهل الأخطاء في الهمزات والحركات

الجوانب التقنية

المشروع مبني على إطار العمل [Ionic](

http://ionicframework.com/)

الذي يستخدم Angular JS، النصوص البرمجية مكتوبة بلغة [CoffeeScript](

http://coffeescript.org/)

وملفات العرض مكتوبة بلغة [Jade](

http://jade-lang.com

)، ملفات التنسيق مكتوبة بلغة [LESS](

http://lesscss.org

) (وأفكر في الانتقال إلى Sass لاحقاً لتكون أكثر توافقاً مع منهج ionic).

بالنسبة لنمط التصميم (Design Pattern) فهو بالطبع MVC، وملفات .coffee منسقة ضمن مجلدات وكل منها مسؤول عن خدمة أو متحكم... بما يسهل تطوير وتعديل الوحدات بشكل منصفل.

ما الأنظمة التي سيستهدفها المشروع؟

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

صور للتطبيق

حالياً هكذا يبدو التطبيق: (إن تعذر عرض الصور أدناه [فشاهدها هنا](

http://imgur.com/a/zL9g5))

![الصفحة الرئيسية](

http://i.imgur.com/xH9iWiU....

![البحث باستخدام الواجهة البرمجية لمشروع الفانوس](

http://i.imgur.com/UDhVLXR....

![البحث بلا اتصال](

http://i.imgur.com/OEVoJLO....

![صفحة التفضيلات](

http://i.imgur.com/ekO9UYj....

![صفحة البحث](

http://i.imgur.com/IjqMQPD....

![نتائج البحث](

http://i.imgur.com/HK5M9zf....

![عرض آية مفردة مع ترجمتها (إمكانية اختيار أكثر من ترجمة)](

http://i.imgur.com/hl8tsPF....

![الترجمات المتوفرة](

http://i.imgur.com/l1kqI3j....

![عرض أية مفردة مع ترجمتها (إمكانية اختيار اكثر من ترجمة)](

http://i.imgur.com/2pxbeMz....

![نتائج البحث](

http://i.imgur.com/4bEwPzY....

![تلاوة الصفحة](

http://i.imgur.com/DwMuKR6....

المشكلات الحالية

  • أحتاج إلى خط عربي ملائم لعرض النصوص القرآنية ومتوفر برخصة حرّة وبصورة خط ويب (Web font)، من الضروري أن يُغير الخط شكل الحرف عند إضافة الحركات إليه، لأن تلوين الحركات وعلامات الوقف يعتمد على إضافة طبقتين من النص ثم نص الآية فوقهما، ويجب أن تتوافق مواضع الحروف تماماً. لم أجد رخصة الخط المستخدم (اسمه Nabi) حالياً أو صيغة خط ويب منه.

كيف يمكنني المساعدة؟

إن كنت تجيد التعامل مع مشاريع الويب فانسخ المشروع إلى جهازك وابنه باستخدام الأمر gulp download_translations translations build ثم جربه بفتح ملف index.html في المجلد dist/chrome باستخدام Firefox وفي منظور التصميم المستجيب (Responsive Design View). لن يعمل الملف على Chrome لانه يمنع طلبات HTTP من الملفات المحلية.

هل بإمكانك الترجمة أو التوثيق؟ أنشئ فرعاً عن المشروع على GitHub وأجر تعديلاتك ثم ادفعها إليّ!

[المشروع على GitHub](

https://github.com/forabi/a...
يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

17

أرى أن المشروع جيد فكرة وتطبيقا، لكن عليك الصبر قليلا على تنفيذ البنية الأساسية لها لكي تجد له صدى يفيه حقه لأن المجتمع العربي ليس نشطا بما يكفي في تطوير البرمجيات الحرة.

عذرًا لم أفهم ما تعنيه بتنفيذ البنية الأساسية؟

أعتقد أنه يقصد Minimum Viable Product

14

فكرة أكثر من رائعة و اختيار موفق ل AngularJS و Jade

يوجد اطار عمل ممتاز لتطبيقات الويب: yeoman

أنصحك بالاستفادة من التوثيق لأي تقنية تستخدمها حاليا أو تنوي استخدامها في المستقبل.

و اذا لم تجد كاتريد في التوثيق الرسمي ابحث في google او stackoverflow

و اذا كنت تريد أنت تتعمق في البرمجة و علوم الحاسب:

coursera.org

edx.org

class.stanford.edu

udacity.org

Yeoman على حد علمي هو مولّد للمشاريع، يعطيك بذرة لمشروعك تحتوي بعض الملفات والإعدادات وما إلى ذلك، وقد استخدمته بالفعل في بداية الأمر لتوليد المشروع على أساس أنه تطبيق Chrome ثم تحولت إلى تطبيق ويب للهواتف الذكية كما ذكرت.

StackOverflow هو مرجعي الأول للمشاكل التي تعترضني :) يليه التوثيق الرسمي للتقنية التي أستخدمها

شكراً على الروابط :)

مجهود موفق ... بالنسبة للخط ماذا عن خط حفص

أشكرك، سأجربه

mandooox
  • حذف بواسطة المستخدم

أشكرك بشدة، وأقدر الحهود المبذولة لتصميم الخط، لكنني أرى أن خط فلات ملائم للعناوين أكثر منه للمتون؛ ما أحتاجه هو خط نسخ واضح وملائم للنص القرآني. على أية حال سأجرب خط فلات وأقيم النتيجة.

mandooox
  • حذف بواسطة المستخدم

هل جربت الخط الأميري:

؟

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

أعتقد أن تلوين الحركات فكرة تجارية أكثر منها وسيلة تعليمية، فأحكام التجويد تلقَّن تلقيناً من قارئ مجاز، وما إن تتقنها ستكون بغنى عن تلوين الحركات.

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

الأميري جميل و لقد استعملته في آيات قرآنية من قبل.

فكرة أكثر من رائعة لكن المهم ان تحذر من الاخطأ في الايات القرانية وتأكد من عرضه على من له دراية في الدين الاسلامي لتقيمه فالامر ليس بالهين

على عانقك امر كبير يجب ان تحذر

جميل جداً، و مجهود رائع. سأحاول مساعدتك ان استطعت (مع أنك تستخدم كل ما لم أقتنع به، angular و coffee script و قريباً sass :D ) و لكن لدي تعليق.

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

لا ترتكب نفس الخطأ و تجعل الواجهات باللغة الإنجليزية، لأن هذا بصراحة سبب كاف لي لكي لا أستخدم التطبيق.

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

على أية حال أقترح نشره كتطبيق ويب WebApp بدلاً من استخدام فونغاب.

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

شكراً جزيلاً على ردك... هل لي أن أعرف ما اعتراضاتك على Angular وCoffeScript وٍSass؟

بالنسبة للأداء فانا أدرك تماماً أن تطبيقات الويب على الهواتف المحمولة لم تبلغ حتى الآن أداء قريباً من أداء التطبيقات الأصلية (native)، على العموم المشروع الذي أبنيه لا يتطلب الكثير من الموارد كما أرى، وقد راعيت استخدام التخزين المؤقت في الذاكرة (caching) للترجمات المٌفعلة، وعدم تحميل ترجمات جديدة إلا عند طلبها... وكذلك فإن طلبات http تُخزن بنفس الطريقة باستخدام $cacheFactory في Angular.

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

في النهاية التطبيق يبقى حتى الآن اختباراً لما تعلمته ومحاولة قد تصيب وقد تخطئ.

مجرد قصة تفضيل شخصي، أحب less و knockout أكثر، و أعتقد أن كوفيسكربت معقدة.

لا مشكلة أبداً في طلبات http بل المشكلة هي في الذاكرة. تطبيقات الويب تسمح لك بذاكرة عشوائية لا تتجاوز ١٠ ميغابايت و ذاكرة تخزين localStorage لا تتجاوز ٥ ميغابايت. بالإضافة إلى بطء شديد عند استعمال عدد كبير من عناصر html. عليك أخذ هذا بالحسبان فقط.

على كل حال فتطبيقات الويب في متصفح سفاري أسرع من تطبيقات فونغاب و تمكنك من استخدام خصائص متقدم أكثر مثل Web Worker و صناديق الرمل في iframe (أنظر تطبيق فاستبوك من سنشا).

بخصوص البحث فأعتقد أن استخدام نموذجين مختلفين سيعني نتائج مختلفة و بالتالي بعض الإرتباك عند المستخدم. لهذا اقترحت الإعتماد على حل واحد.

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

ما يمنعني من البدء بترجمة الواجهات هو فقط عدم اعتمادي للمكتبة التي ساستخدمها للترجمة، هناك angular-translate وMozilla l20n ومكتبات أخرى، أحتاج بعض الوقت لتجربة الخيارات المتاحة ومقارنتها.

طبعاً الأمر صحيح، و لكن لم لا تكون العربية هي الأساس ريثما يتم حل مشكلة تعدد اللغات؟ المقصد هنا أن المستخدمين في المرحلة الأولية سيكون معظمهن من متحدثي العربية (إن لم يكن جميعهم).

كما أخبرتك فمع الإستخدام اليومي و عندما تكون أسماء السور بالإنجليزية فإن تجربة الإستخدام سيئة للغاية. جرب بنفسك البحث عن بعض السور دون أن تعرف كيف تمت كتابتها بالإنجليزية لتفهم قصدي.

رائع جدا هذا التعليق / بكل صراحة اسعدني للغاية.

بصراحة اتمنى لو كنت اتقن الجافا الخاصة باندرويد . ولكن عندما اقراء عن انه بال HTML تستطيع ان تبني تطبيق اقول في نفسي مرحى....

قمت ببرمجة تطبيق كامل للعبة عبر الفون غاب ولكن كل تجاربي للعبة كانت عبر المتصفح Chrome والمصيبة عندما ارسلت اللعبة على الجوال... بطء مرعب في الاداء .

وصلت لقناعة ، بعد البحث الشديد . ان ال HTML لن تكون مفيدة في حال انها لا تستطيع الوصول الى مسرعات الجهاز بمعنى اخر html css Hardware acceleration

فعزفت عن الاكمال في المشروع / ومهما حاولت ان تجعل تجربة ال phonegap قريبة من تطبيق الاندرويد . فلن تنجح. مهما خففت من المحتويات. فاقل عملية animation سوف تفضح امرك.

لعبة! بالنسبة لي تطبيق بسيط لجدول مباريات لم يحتمله الجهاز.

هنالك العديد من المشاكل في هذه البيئة أسوؤها الأداء، و لقد كرهتها بشدة.

أنت تستطيع استخدام أيّ خط حاسوب كخط ويب بكل سهولة،

لا أعرف الكثير عن خطوط الويب، لكنني أفترض أنه لا يمكن استخدام خط عادي في تطبيق ويب على هاتف ذكي... هل هذا صحيح؟

غير صحيح، استخدم هذه (مع خط ttf أو otf على أندرويد و آيفون.)

سؤال مستطرد: أعجبني الخط الذي استخدمته، ممكن ترسل إلي رابط التحميل المباشر.. لقد بحثت عنه بـ nabi في جوجل، فلم يفلح بحثي.. واضطررت إليك

رائع جدا ما تفعله وأسأل الله أن يثيبك على عملك

هل جربت corona labs من قبل

ماذا عن هذا التطبيق للقرآن الكريم للأندرويد والآي فون والذي من أهم مميزاته أنه يستخدم الخطوط وليس الصور لعرض النص القرآني ويتميز كذلك بجمال التصميم للواجهه وكذلك عرض الواجهه باللغة العربية

لم أرَ هذا التطبيق من قبل ويبدو جميلاً، لكن فيه العيب ذاته الذي ذكرته في Quran Android وهو صعوبة القراءة في الوضع الشاقولي لأنه يصر على احتواء الصفحة كلها ضمن الشاشة

هناك خدمة ستساعدك ان شاء الله في مشاكل الاداء ومشاكل اخرى مثل دعم عدة منصات وغيرها, في السابق كانت هذه الخدمة للالعاب فقط, ولكن قبل فترة تم دعم التطبيقات

هذه صفحة مميزات الخدمة

/features/


قبل فترة جربت لعبة مبنية بلغات وتقنيات الويب html5/js وكان اداء اللعبة علي الاندرويد ممتاز باستخدام هذه الخدمة, بحيث لاتميز بينها وبين لعبة native

اخي جزاك الله خيرا ، انا اتقن ionic ايضا و سوف اساعد ان شاء الله في تطوبر التطبيق . و لكن ما هي الخدمة التي تاتي منها بنص القرءان الكريم ؟

-1

اخي الكريم مشكور على مجهودك الرائع بارك الله فيه لكن لدي نقطة بسيطة

انتبه من ان يكون القرأن بغير العربية يجوز وضع الاية والترجمة تحتها والله اعلم

مرجع