মোবাইল অ্যাপের ধরন ও কখন কোনটি ব্যবহার করবেন
এই পাঠে যা শিখবেন
- নেটিভ, PWA ও হাইব্রিড — এই তিন ধরনের মোবাইল অ্যাপের সংজ্ঞা ও পার্থক্য
- PWA ঠিক কী, এবং এটি কীভাবে অ্যাপ স্টোর ছাড়াই ইনস্টলযোগ্য অভিজ্ঞতা দেয়
- অফলাইন সক্ষমতা, অ্যাপ-স্টোর ডিসট্রিবিউশন ও ইনস্টল-friction — এই তিনটি মানদণ্ডে একটি ওয়েটেড-স্কোরিং তুলনা
- কেন স্কোরিং মডেলের ওজন (weights) বদলালে "সেরা পছন্দ"-ও বদলে যেতে পারে
১ · মোবাইল অ্যাপের তিনটি ধরন
L02-এ আমরা দেখেছি নেটিভ, ক্রস-প্ল্যাটফর্ম ও হাইব্রিড — এই তিনটি আর্কিটেকচারাল অ্যাপ্রোচ, যেগুলো দিয়ে তৈরি অ্যাপ সাধারণত অ্যাপ স্টোর থেকে ডাউনলোড করে ইনস্টল করা হয়। কিন্তু বিতরণ ও ইনস্টলেশনের দৃষ্টিকোণ থেকে দেখলে একটি চতুর্থ ধরনও আছে যা সম্পূর্ণ ভিন্নভাবে কাজ করে — PWAProgressive Web App — একটি ওয়েব অ্যাপ যা সার্ভিস ওয়ার্কারের মাধ্যমে অফলাইন ক্যাশিং সমর্থন করে এবং ব্রাউজার থেকে সরাসরি "Add to Home Screen" দিয়ে ইনস্টল করা যায়, কোনো অ্যাপ স্টোরের প্রয়োজন ছাড়াই। — যা কোনো অ্যাপ স্টোর ছাড়াই সরাসরি ব্রাউজার থেকে ইনস্টল করা যায়।
অ্যাপ স্টোর/প্লে স্টোর থেকে ডাউনলোড ও ইনস্টল করা — L02-এর নেটিভ ও ক্রস-প্ল্যাটফর্ম উভয় অ্যাপ্রোচেই তৈরি অ্যাপ এখানে পড়ে, কারণ ব্যবহারকারীর কাছে উভয়ই একইভাবে ইনস্টল হয়। সর্বোচ্চ ডিভাইস অ্যাক্সেস ও পারফরম্যান্স।
একটি ওয়েবসাইট যা সার্ভিস ওয়ার্কার দিয়ে অফলাইন ক্যাশিং সমর্থন করে এবং ব্রাউজার থেকে সরাসরি হোম স্ক্রিনে "ইনস্টল" করা যায় — কোনো অ্যাপ স্টোর রিভিউ বা ডাউনলোড ধাপ ছাড়াই তাৎক্ষণিক অ্যাক্সেস, কিন্তু ডিভাইস API অ্যাক্সেস সবচেয়ে সীমিত।
L02-এর হাইব্রিড অ্যাপ্রোচেই তৈরি — একটি ওয়েব কোডবেস নেটিভ শেলে wrap করে অ্যাপ স্টোরে বিতরণ করা হয়, তাই নেটিভের মতোই ইনস্টল হয় কিন্তু ভেতরে PWA-এর কাছাকাছি সীমিত ডিভাইস অ্যাক্সেস থাকে।
গভীর ডিভাইস ইন্টিগ্রেশন ও সর্বোচ্চ পারফরম্যান্স দরকার হলে (যেমন একটি ক্যামেরা-হেভি বা গেমিং অ্যাপ) — নেটিভ। দ্রুত, কম-খরচে একটি বিস্তৃত অডিয়েন্সে পৌঁছাতে চাইলে এবং অ্যাপ স্টোরে থাকা মুখ্য না হলে (যেমন একটি সংবাদ বা ব্লগ সাইট) — PWA। বিদ্যমান একটি ওয়েব কোডবেস দ্রুত অ্যাপ স্টোরে তুলতে চাইলে, গভীর ডিভাইস ইন্টিগ্রেশন ছাড়াই — হাইব্রিড।
২ · একটি ওয়েটেড-স্কোরিং তুলনা
L02-এর কোড-খরচ হিসাবকে সম্প্রসারিত করে, এবার PWA-কে চতুর্থ অপশন হিসেবে যোগ করে তিনটি মানদণ্ডে — অফলাইন সক্ষমতা, অ্যাপ-স্টোর ডিসট্রিবিউশন, এবং ইনস্টল-friction (কম friction = বেশি স্কোর) — একটি ওয়েটেড-স্কোরিং হিসাব করা যাক। প্রতিটি মানদণ্ডে ১ (সবচেয়ে খারাপ) থেকে ৫ (সেরা) স্কোর দেওয়া হয়েছে, এবং প্রতিটি মানদণ্ডের একটি ওজন (গুরুত্ব) আছে যার যোগফল ১.০।
# L02-এর তুলনাকে সম্প্রসারিত করে PWA-কে চতুর্থ অপশন হিসেবে যোগ করা হলো
# ওয়েটেড স্কোরিং: ৫ = সেরা, ১ = সবচেয়ে খারাপ; ওজনের (weight) যোগফল = ১.০
CRITERIA_WEIGHTS = {
"offline_capability": 0.40,
"app_store_distribution": 0.35,
"install_friction": 0.25, # বেশি স্কোর মানে কম friction (সহজ ইনস্টল)
}
SCORES = {
"নেটিভ": {"offline_capability": 5, "app_store_distribution": 5, "install_friction": 2},
"ক্রস-প্ল্যাটফর্ম": {"offline_capability": 5, "app_store_distribution": 5, "install_friction": 2},
"হাইব্রিড": {"offline_capability": 3, "app_store_distribution": 4, "install_friction": 2},
"PWA": {"offline_capability": 3, "app_store_distribution": 1, "install_friction": 5},
}
def weighted_score(scores, weights):
return sum(scores[criterion] * weight for criterion, weight in weights.items())
print(f"{'টাইপ':16s} | অফলাইন | অ্যাপ-স্টোর | ইনস্টল-friction | ওয়েটেড স্কোর")
for name, scores in SCORES.items():
total = weighted_score(scores, CRITERIA_WEIGHTS)
print(f"{name:16s} | {scores['offline_capability']:6d} | {scores['app_store_distribution']:10d} | {scores['install_friction']:15d} | {total:.2f}")
ranked = sorted(SCORES.items(), key=lambda kv: weighted_score(kv[1], CRITERIA_WEIGHTS), reverse=True)
print("\nক্রমানুসারে (সর্বোচ্চ ওয়েটেড স্কোর প্রথমে):")
for name, scores in ranked:
print(f" {name}: {weighted_score(scores, CRITERIA_WEIGHTS):.2f}")
5×0.4 + 5×0.35 + 2×0.25 = 4.25,
হাইব্রিডের 3×0.4 + 4×0.35 + 2×0.25 = 3.10, এবং PWA-এর
3×0.4 + 1×0.35 + 5×0.25 = 2.80। এই নির্দিষ্ট ওজনে নেটিভ ও ক্রস-প্ল্যাটফর্ম সমান স্কোরে
শীর্ষে থাকে, কারণ install_friction-এর ওজন (০.২৫) তুলনামূলকভাবে কম রাখা হয়েছে।
একটি নির্দিষ্ট ওয়েটেড স্কোরিং মডেলের ফলাফল সবসময় "সর্বজনীন সত্য" নয় — এটি নির্ভর করে কোন মানদণ্ডকে কতটা গুরুত্ব দেওয়া হচ্ছে তার ওপর। যে প্রকল্পে ইনস্টল-friction সবচেয়ে গুরুত্বপূর্ণ (যেমন একটি ক্যাম্পেইন-ভিত্তিক অ্যাপ যেখানে ব্যবহারকারীকে তাৎক্ষণিক অ্যাক্সেস দিতে হবে), সেখানে ওজন বদলালে PWA-ও শীর্ষে উঠে আসতে পারে — নিচের অনুশীলনে এটি নিজে যাচাই করুন।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১
PWA-এর install_friction স্কোর সবচেয়ে বেশি (৫) কেন — এখানে "কম friction" বলতে ঠিক কী বোঝানো হচ্ছে?
একজন ব্যবহারকারী কোনো অ্যাপ স্টোর ভিজিট, ডাউনলোড অপেক্ষা, বা ইনস্টল অনুমতির ধাপ ছাড়াই সরাসরি ব্রাউজার থেকে "Add to Home Screen" চেপে PWA ব্যবহার শুরু করতে পারে — এই তাৎক্ষণিকতাই কম friction বোঝাচ্ছে। নেটিভ ও ক্রস-প্ল্যাটফর্ম অ্যাপে অ্যাপ স্টোর ডাউনলোড ও ইনস্টল ধাপ পার হতে হয়, তাই সেগুলোর স্কোর কম (২)।
প্র ০২
PWA-এর app_store_distribution স্কোর সবচেয়ে কম (১) — এটি বাস্তবে কীভাবে অসুবিধা তৈরি করে?
বেশিরভাগ ব্যবহারকারী নতুন অ্যাপ খুঁজে পান অ্যাপ স্টোর সার্চ বা ব্রাউজ করে। PWA সাধারণত মূল অ্যাপ স্টোরে লিস্টেড থাকে না — এটি খুঁজে পেতে ব্যবহারকারীর সরাসরি ওয়েবসাইটের URL বা একটি সার্চ ইঞ্জিন লিংক দরকার হয়, যা ডিসকভারেবিলিটি কমিয়ে দেয় এবং নতুন ব্যবহারকারী অর্জন (user acquisition) কঠিন করে তোলে।
প্র ০৩ কোড সেলে নেটিভ ও ক্রস-প্ল্যাটফর্মের ওয়েটেড স্কোর সমান (৪.২৫) — এই তিনটি মানদণ্ডে এই দুটোর মধ্যে আসলে কোনো পার্থক্য কি নেই?
এই নির্দিষ্ট তিনটি মানদণ্ডে (অফলাইন, অ্যাপ-স্টোর উপস্থিতি, ইনস্টল-friction) উভয়েই কার্যত সমান — কারণ ব্যবহারকারীর দৃষ্টিকোণ থেকে ইনস্টলেশন ও ডিসট্রিবিউশন একই রকম। কিন্তু L02-এ দেখা "কতটি আলাদা কোডবেস বজায় রাখতে হয়" এর মতো মানদণ্ড এখানে যোগ করা হয়নি — সেটি যোগ করলেই দুটো আলাদা স্কোর পেত, যা দেখায় স্কোরিং মডেলের ফলাফল কোন মানদণ্ড বেছে নেওয়া হচ্ছে তার ওপরও নির্ভরশীল।
অনুশীলন
-
চিন্তা করুন: একটি সংবাদ (news) ওয়েবসাইটের লক্ষ্য হলো সর্বোচ্চসংখ্যক পাঠকের কাছে দ্রুত ও
সহজে পৌঁছানো — অ্যাপ স্টোরে থাকা তাদের কাছে মুখ্য নয়। এই ক্ষেত্রে কোন অ্যাপ টাইপ সবচেয়ে উপযোগী মনে হয়,
এবং কেন?
PWA সবচেয়ে উপযোগী মনে হয় — কম ইনস্টল-friction থাকায় পাঠক কোনো ডাউনলোড ছাড়াই তাৎক্ষণিক অ্যাক্সেস পান, এবং সার্চ ইঞ্জিন থেকেও সরাসরি পাওয়া যায়। এই ব্যবহারক্ষেত্রে অ্যাপ-স্টোর উপস্থিতি গুরুত্বপূর্ণ না হওয়ায় PWA-এর সেই দুর্বলতা তেমন বাধা তৈরি করে না।
-
পরীক্ষা করুন: উপরের কোড সেলে
CRITERIA_WEIGHTS-এinstall_friction-এর ওজন0.25থেকে0.50-এ বাড়ান, এবংapp_store_distribution-এর ওজন0.35থেকে0.10-এ কমান (offline_capabilityঅপরিবর্তিত থাকবে0.40, যোগফল এখনো ১.০)। নতুন র্যাঙ্কিং দেখুন।নতুন স্কোর: নেটিভ ও ক্রস-প্ল্যাটফর্ম
5×0.4 + 5×0.1 + 2×0.5 = 3.5, হাইব্রিড3×0.4 + 4×0.1 + 2×0.5 = 2.6, আর PWA3×0.4 + 1×0.1 + 5×0.5 = 3.8। এবার PWA-ই সবচেয়ে বেশি স্কোর পায় এবং র্যাঙ্কিংয়ে শীর্ষে চলে আসে — দেখাচ্ছে ওজন বদলালে "সেরা পছন্দ"-ও সম্পূর্ণ বদলে যেতে পারে, তাই এই ওজনগুলো সবসময় প্রকল্প-নির্দিষ্ট বিচার-বিবেচনার (judgment call) বিষয়।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- কোর্সের সম্পূর্ণ সিলেবাস দেখুন ৫৭টি পাঠ অ্যাপ লাইফসাইকেল, মোবাইল UI/UX, MVVM/MVI আর্কিটেকচার, নেটিভ বনাম ক্রস-প্ল্যাটফর্ম, নেভিগেশন, স্টেট ম্যানেজমেন্ট, লোকাল স্টোরেজ, ডিভাইস ফিচার ও ডিপ্লয়মেন্ট — বাকি পাঠগুলো শীঘ্রই যুক্ত হবে।
- Full-Stack Web Frameworks কোর্স সহোদর কোর্স MVC/MVVM, স্টেট ম্যানেজমেন্ট, টেস্টিং ও CI/CD-র সাধারণ আর্কিটেকচারাল ভিত্তি সেই কোর্সেই তৈরি হয়েছে — এই কোর্স মোবাইল-নির্দিষ্ট পার্থক্য শেখায়।
- সব Courses দেখুন ABCL TECH C, C++, Python, Java, JavaScript, DSA, DBMS, Discrete Mathematics, System Design, Cybersecurity, Cloud Computing & DevOps, Computer Networks, Operating Systems, Computer Architecture, Programming Languages & Compiler Design, Software Engineering & Git, Theory of Computation, Engineering Economics, Full-Stack Web Frameworks ও Mobile App Development — সব এক জায়গায়।