মোবাইল অ্যাপ ডেভেলপমেন্ট

Published by SNNAFI on

মোবাইল অ্যাপ ডেভেলপমেন্ট নিয়ে কিছু বলার চেষ্টা করব।বর্তমানে মোবাইল অ্যাপ ডেভেলপমেন্ট কাজ করতে চাইলে প্রথমেই আমাদের মনে যে প্রশ্ন আসে সেটা হল কি প্রোগ্রামিং ল্যাঙ্গুয়েজ শিখব কোন ফিল্ডে কাজ করব অ্যান্ড্রয়েড না আইওএস।কিভাবে শুরু করব?

তো যখন কেউ এসব নিয়ে ঘাটাঘাটি শুরু করে তখন সামনে আসে নেটিভ , ক্রস প্লাটফর্ম দুইটা শব্দ।পরে আবার গোলকধাঁধায় হারিয়ে যায় মানুষ।

মূলত নেটিভ হল ঐ নিদিষ্ট প্লাটফর্মের নির্ধারিত ফ্রেইমওয়ার্ক দিয়ে কাজ করা।যেমন অ্যান্ড্রয়েডের ক্ষেত্রে হল জাভা, কটলিন প্রোগ্রামিং ল্যাঙ্গুয়েজ দিয়ে অ্যাপ ডেভেলপ করা।অ্যান্ড্রয়েডের শুরু থেকেই জাভা দিয়ে অ্যাপ ডেভেলপ করা হয়ে থাকে।IDE হিসেবে অ্যান্ড্রয়েড স্টুডিও ব্যবহার করা হয় যা মূলত জেটব্রেইনের ডেভেলপ করা এবং গুগল সেটাকে কিছু কাস্টমাইজ করে অ্যান্ড্রয়েড স্টুডিও নামে ছেড়ে দিয়েছে।এটা আসল নাম Intellij IDEA।কয়েক বছর আগে গুগল কটলিনকে অ্যান্ড্রয়েডের দ্বিতীয় নেটিভ প্রোগ্রামিং ল্যাঙ্গুয়েজ হিসেবে এড করে।এটাও জেটব্রেইনের ডেভেলপ করা যা JVM এ রান করে।বর্তমানে কটলিন জনপ্রিয় হচ্ছে।

তবে, কেউ বিগিনার হিসেবে জাভা দিয়ে শুরু করাই ভাল।কেন?

কারণ, অ্যান্ড্রয়েডের উপর অনলাইন রিসোর্সের ৭০% উপরেই(আরও বেশি হতে পারে) জাভা দিয়ে।যেহেতু এক দশকের বেশি সময় এটা দিয়ে কাজ করা হচ্ছে।অন্যদিকে বিগিনার লেভেলে কটলিনের অনলাইন রিসোর্স খুবি কম।ফলে বিগিনার লেভেলে কোন সমস্যায় পড়লে অনলাইনে সেটা খুঁজে পাওয়ার সম্ভাবনাও কম।এডভান্স লেভেল কটলিনের রিসোর্স অনেক।জাভারও আছে।ফলে কেউ শুরুতে জাভা দিয়ে কাজ করার কয়েক মাস পর যখন কিছুটা দক্ষতা আসবে তখন কটলিনে সুইচ করতে পারে।এবং এটা কিছু ক্ষেত্রে করা উচিত।বর্তমানে কটলিন অধিক জনপ্রিয় হচ্ছে।জাভা থেকে তুলনামূলক কম কোড লিখতে হয়, নুল সেফটি আছে।উইন্ডোজ ,ম্যাক, লিনাক্স যেকোনো প্লাটফর্মেই অ্যান্ড্রয়েড অ্যাপ ডেভেলপমেন্ট করা যায়।তবে রেম এক্ষেত্রে ৮ জিবি কমপক্ষে থাকা ভাল।উইন্ডোজের ক্ষেত্রে ৮ জিবির চেয়ে বেশি থাকা ভাল।ম্যাক বা লিনাক্সে ৮ জিবি দিয়ে ভাল চলে।আমি আজ পর্যন্ত কোন লেগ পাই নাই।

এখন আসা যাক আইওএস নেটিভ অ্যাপ ডেভেলপমেন্টে।আইওএস ডেভেলপমেন্টের শুরুতে অব্জেকটিভ সি ব্যবহার হত।তবে ২০১৪ সাল থেকে এর সাথে সাথে সুইফট ল্যাঙ্গুয়েজ ব্যবহার হচ্ছে।এটা অ্যাপলের ডেভেলপ করা অ্যাপল ডিভাইসের সফটওয়্যার ডেভেলপমেন্টের জন্য।বর্তমানে কেউ আইওএস নেটিভ অ্যাপ ডেভেলপ করতে চাইলে সুইফট শিখার বিকল্প নেই।ল্যাগেসি কিছু প্রোজেক্টের ক্ষেত্রে এখনো অনেক কোম্পানি অব্জেকটিভ সি ব্যবহার করছে। তবে আস্তে আস্তে এর পরিমাণ কমে আসছে।সবাই, সুইফট এ শিফট করছে। এখানে আরেকটা বিষয় খেয়াল রাখা দরকার।আইওএস ডেভেলপ করতে চাইলে ম্যাকবুক, আইম্যাক অর্থাৎ অ্যাপল ওএসএক্স চালিত কম্পিউটার থাকা আবশ্যক।কারণ, আইওএস অ্যাপ ডেভেলপ করার জন্য এক্সকোড IDE , যা অ্যাপল ডেভেলপ করেছে এবং কেবল মাত্র ওএসএক্সের জন্যই।অন্য প্লাটফর্মের জন্য এক্সকোড নেই।অন্যদিকে, বর্তমানে আইওএস অ্যাপের কোডবেস দিয়ে কিছু টুইক করে ম্যাক অ্যাপ ব্লিড দেয়া যাচ্ছে।ফলে , প্রায় একই কোডবেস দিয়ে দুইটা ভিন্ন প্লাটফর্মে অ্যাপ হয়ে যাচ্ছে।পারফরমেন্স একই রকম।সামনের বছর কাস্টম সিলিকন ম্যাক রিলিজ হলে সব আইওএস কোন প্রকার মোডিফিকেশন ছাড়াই ম্যাক রান হবে।আইওএস ডেভেলপারদের জন্য এটা একটা বড় সুখবর।

এবার আসা যাক, ক্রস প্লাটফর্ম অ্যাপ ডেভেলপমেন্টে।মূলত কেউ যদি একি সাথে অ্যান্ড্রয়েড, আইওএস দুইটার জন্য সিঙ্গেল কোড দিয়ে অ্যাপ বানাতে চায় তাহলে ক্রস প্লাটফর্ম ব্যবহার করে।তবে নেটিভ অ্যাপের মতো স্মুথ বা রেস্পন্সিভ অ্যাপ ক্রস প্লাটফর্ম দিয়ে সম্ভব না।পারফর্মমেন্স ভাল করা সম্ভব বাট টিভ অ্যাপের মতো হবে না কখনো।কিছু জনপ্রিয় ক্রস প্লাটফম হল React Native, Xamarin, এবং বর্তমানে জনপ্রিয় হচ্ছে এমন হল Flutter।

React Native ফেইসবুকের ডেভেলপ করা।জি ফেইসবুক অ্যাপ React Native দিয়েই তৈরি।আমার দেখা অ্যান্ড্রয়েডের সবচে ভারি অ্যাপ হল ফেইসবুক অ্যাপ।প্রচুর মেমোরি খায়।ফোনকে স্লো করে ফেলে।Xamarin হল মাইক্রোসফটের ডেভেলপ করা।এই দুইটা নিয়ে আমি বিস্তারিত যাচ্ছি না।আমারও নিজেরে এইগুলা সম্বন্ধে সম্যক আইডিয়া নেই।

এখন আসি Flutter এ।ধারনা করা হয়, ভবিষ্যতে ক্রস প্লাটফর্মে রাজত্ব করবে Flutter।এটা প্রথমত গুগলর ডেভেলপ করা।ফলে ফাস্ট ইন ক্লাস সাপোর্ট পাওয়া যাবে।মাঝখানে Flutter নিয়ে কয়েকমাস কাজ করেছিলাম।মাস কয়েক কাজ করার পর যা মনে হল, তা হল Flutter আরও অনেক দূর যেতে হবে।Flutter এসেছে মাত্র ২-৩ বছর হল।গুগল বর্তমানে Flutter কে ডেভেলপার বেইজে করার চেষ্টা করছে।মানে Flutter কাজ করার জন্য ডেভেলপার নিজেকেই বিভিন্ন দরকারি প্যাকেজ ডেভেলপ করতে হচ্ছে।ফলে, কিছু ক্ষেত্রে এটা একক ডেভেলপার বা একটা ছোট টিমের জন্য এটা খানিকটা অসুবিধাই। সেজন্য Flutter কে আরও কয়েক বছর সময় দেয়া দরকার।বৃহৎ ফার্মের জন্য এটা তেমন সমস্যা না।তবুও, ডেভেলপমেন্টে Flutter এর বহুমুখী সুবিধার জন্য বর্তমানে Flutter দ্রুতই পপুলার হচ্ছে।কারণ, সিঙ্গেল কোডবেস দিয়ে মোবাইল অ্যাপ, ডেক্সটপ অ্যাপ থেকে ওয়েবসাইটও বানানো যাচ্ছে।যদিও বর্তমানে, Flutter ওয়েব বা ডেক্সটপ বেটা পর্যায়ে আছে।প্রডাকশনে আসতে আরো কিছুদিন লাগবে।এছাড়া, অ্যাপ ইউ আই এর ক্ষেত্রে Flutter জুড়ি মেলা ভার।অনেক সুন্দর আকর্ষণীয় ইউজার ইন্টারফেস খুব সহজেই তৈরি করা যাচ্ছে।

আমি ব্যক্তিগত মনে করি, ক্রস প্লাটফর্মের চেয়ে যেকোনো নেটিভ অ্যাপ ডেভেলপমেন্ট তুলনামূলক ভাল।কারণ, কেউ যদি লো লেভেলে কাজ করতে চায় কোন অ্যাপে বা খুবই কমপ্লেক্স কোন অ্যাপ বানাতে চায়, তাহলে তাকে অবশ্যই নেটিভে কাজ করতে হবে।সেকেন্ড, মিলিসেকেন্ড লেভেলে পারফর্মমেন্স মেইনটেইন করতে চাইলে নেটিভের বিকল্প নেই।এছাড়া , যখন কোন প্লাটফর্মে নতুন নতুন ফিচার রিলিজ হয়, তখন নেটিভে সেটা নিয়ে শুরু থেকেই কাজ করা যায়।বাট ক্রস প্লাটফর্মে ডেভেলপারদেরকে সেই বিষয়ে কিছুদিন অপেক্ষা করতে হয়, সেটা ইমপ্লিমেন্ট করার জন্য।

তবে, ডে টু ডে অ্যাপে ক্রস প্লাটফর্ম ভালো পারফর্মমেন্স গেইন করছে।স্টার্ট আপ কোম্পানির জন্য এটা খুবই ভালো একটা দিক। সিঙ্গেল কোডবেস দিয়ে অ্যান্ড্রয়েড না আইওএস দুই প্লাটফর্মই কভার করা যাচ্ছে।সময়, রিসোর্স কম লাগছে। Flutter এই ক্ষেত্রে অন্যদের চেয়ে এগিয়ে আছে।

কিন্তু, একজন ক্রস প্লাটফর্ম ডেভেলপারের জন্যে নেটিভ ডেভেলপমেন্ট সম্বন্ধে ধারনা থাকা দরকার।যেমন, Flutter এ ভিন্ন ভিন্ন ফিচারের জন্য ভিন্ন ভিন্ন প্যাকেজ ব্যবহার হচ্ছে।এখন ধরা যাক, কেউ যদি এমন একটা ফিচার নিয়ে কাজ শুরু করল যার জন্য কোন প্যাকেজ ডেভেলপ করা হয় নাই।সেক্ষেত্রে তাকে জাভা/কতলিন/সুইফট এ কোড করে প্যাকেজ ডেভেলপ করতে হবে।প্লাটফর্ম চ্যানেলে ব্যবহার করতে হবে। তখন যদি নেটিভ ডেভেলপমেন্ট সম্বন্ধে ধারনা না থাকে, তাহলে, অন্য কোন ডেভেলপার এই ধরণের প্যাকেজ পাবলিশ করার আগ পর্যন্ত বসে থাকা ছাড়া উপায় নেই।

সব শেষে, কেউ যেই ওয়েতেই কাজ করুক না কেন, তার সেই বিষয়ে স্কিলের পরিমাণ ভালো থাকা লাগবে। নতুন নতুন চ্যালেঞ্জ নেয়ার মানসিকতা থাকা লাগবে।সব সময় নতুন টেক সম্বদ্ধে ধারনা রাখা লাগবে।নিজেকে ফ্লোর বাইরে নেয়া চলবে না।

বোনাস পার্টঃ এতক্ষণ যদি, আপনি এই বোরিং লেখাটা পড়ে থাকেন, তাহলে আপনাকে অভিনন্দন এবং সেই সাথে এই বোনাস পার্ট। এখন আমি একটা সিম্পল অ্যাপ নেটিভ অ্যান্ড্রয়েড , নেটিভ আইওএস ও ফ্লাটারে ডেভেলপ করলে কোড কেমন হতে পারে, সেই বিষয়ে ধারণা দেয়া চেষ্টা করবো।

একটা সিম্পল নোট অ্যাপ ।দুই স্ক্রিনের।প্রথম স্ক্রিনে সকল নোটর লিস্ট, এবং এড বাটনে ক্লিক করলে নতুন নোট করার স্ক্রিন ও লিস্টের কোন নোটে ক্লিক করলে টা এডিট করার স্ক্রিন।খুবই সিম্পল অ্যাপ।আমি গিটহাবের লিঙ্ক দিয়ে দিলাম।যারা আগ্রহী তারা দেখতে পারেন।

নেটিভ অ্যান্ড্রয়েডঃ https://rl.snnafi.com/note-app-android

নেটিভ আইওএসঃ https://rl.snnafi.com/note-app-ios

ফ্লাটারেঃ https://rl.snnafi.com/note-app-flutter

আজ এই পর্যন্তই।


0 Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.